         TITLE 'IEDQNO-CHECKPOINT I/O QUEUE MANAGER'                    00500020
IEDQNO   CSECT                                                          01000020
         SPACE 3                                                        01010056
*CHANGE ACTIVITY AS FOLLOWS                                             01020056
******************** MICROFICHE FLAGS *********************** SUPT CODE 01030056
*A680000                                                         A44868 01500021
*A680000                                                         A44868 01500156
*C395000-400000                                                  A44868 01500256
*A445000,453200                                                @SA71964 01500356
*A755000                                                       @SA73560 01500458
*A755400                                                      @ZA03099  01500500
*A542000                                                       @Y17XACL 01560500
*A 370500,371000,758600                                        @OZ30932 01580500
*C 755800-756600                                               @OZ30932 01600500
* $01=OZ41946  JTC2202  79.12.14 726652:                           @01A 01610512
         EJECT                                                 @Y17XACL 01620500
*********************************************************************** 02000020
*                                                                     * 02500020
* $MOD(IEDQNO) COMP(C@) PROD(TCAM):                                @01A 02550012
*                                                                     * 03500020
*        MODULE NAME = IEDQNO                                         * 04000056
*                                                                     * 04070056
*        DESCRIPTIVE NAME = CHECKPOINT I/O QUEUE MANAGER              * 04140056
*                                                                     * 04210056
*        COPYRIGHT = 'NONE'                                           * 04280056
*                                                                     * 04350056
*        STATUS:  CHANGE LEVEL 5                                      * 04420056
*                                                                     * 04500020
*FUNCTION:THIS MODULE PUTS DISK RECORDS ON THE CHECKPOINT I/O         * 05000020
*   QUEUE.IT UPDATES THE LAST REQUEST ELEMENT FOR WHICH A DISK        * 05500020
*   RECORD WAS BUILT. WHEN IT ENQUEUES AN ENVIRONMENT RECORD          * 06000020
*   SEGMENT,IT DEQUEUES ALL INCIDENT RECORDS AND DOES A FREEMAIN      * 06500020
*   FOR EACH.THEY ARE NOT WRITTEN ON DISK. AN INCIDENT OVERFLOW BIT   * 07000020
*   IN THE INCIDENT REQUEST ELEMENT IS TURNED ON TO INDICATE THAT     * 07500020
*   THE REQUEST WILL BE SATISFIED WHEN THE ENVIRONMENT RECORD(S) IS   * 08000020
*   WRITTEN.                                                          * 08500020
*                                                                     * 09000020
*ENTRY POINT                                                          * 09500020
*        IEDQNO                                                       * 10000020
*                                                                     * 10500020
*INPUT:REGISTERS 2,3,4,9,12,14,15 CONTAIN THE FOLLOWING VALUES:       * 11000020
*                                                                     * 11500020
*   2-ADDRESS OF CHECKPOINT WORK AREA                                 * 12000020
*   3-ADDRESS OF LAST REQUEST ELEMENT FOR WHICH DISK RCD WAS BUILT    * 12500020
*   4-ADDRESS OF LAST DISK RECORD BUILT                               * 13000020
*   9-ADDRESS OF AVT                                                  * 13500020
*   12-BASE REG FOR IEDQNF-CHECKPOINT EXECUTOR                        * 14000020
*   14-RETURN POINT-IN IEDQNF                                         * 14500020
*   15-ENTRY POINT FOR THIS MODULE                                    * 15000020
*                                                                     * 15500020
*OUTPUT:THE CHECKPOINT I/O QUEUE IS UPDATED.THE ABOVE REGISTERS       * 16000020
*   REMAIN UNCHANGED.                                                 * 16500020
*                                                                     * 17000022
*EXTERNAL ROUTINES:                                                   * 17100022
*        SVC 5 (FREEMAIN)                                             * 17200022
*                                                                     * 17500020
*EXITS-NORMAL:THIS MODULE BRANCHES TO 4 PLUS THE ADDRESS IN R14.      * 18000020
*                                                                     * 18500020
*EXITS-ERROR:NONE                                                     * 19000020
*                                                                     * 19500020
*TABLES/WORK AREAS:                                                   * 20000020
*                                                                     * 20500020
*   AVT(AVTCKELF,AVTCKPTB)                                            * 21000020
*   CHECKPOINT WORK AREA                                              * 21500020
*                                                                     * 22000020
*                                                                     * 22500020
*ATTRIBUTES:REENTERABLE                                               * 23000020
*                                                                     * 23500020
*NOTES:THE OPERATION OF THIS MODULE DEPENDS UPON AN INTERNAL REPRE-   * 24000020
*   SENTATION OF THE EXTERNAL CHARACTER SET WHICH IS EQUIVALENT TO    * 24500020
*   THE ONE USED AT ASSEMBLY TIME. THE CODING HAS BEEN ARRANGED SO    * 25000020
*   THAT REDEFINITION OF 'CHARACTER' CONSTANTS,BY REASSEMBLY, WILL    * 25500020
*   RESULT IN A CORRECT MODULE FOR THE NEW DEFINITIONS.               * 26000020
*                                                                     * 26500020
*********************************************************************** 27000020
         EJECT                                                 @Y17XACL 27200000
*REGISTER ASSIGNMENTS                                                   28000020
         SPACE                                                          28500020
R0       EQU   0                                                        29000020
R1       EQU   1                                                        29500020
R2       EQU   2                        ADDR OF CKPT WORK AREA          30000020
R3       EQU   3                        ADDRESS REQUEST ELEMENT         30500020
R4       EQU   4                        ADDR OF DISK RECORD             31000020
R5       EQU   5                                                        31500020
R6       EQU   6                        ADDR OF PREVIOUS RCD-I/O Q      32000020
R7       EQU   7                                                        32500020
R8       EQU   8                                                        33000020
R9       EQU   9                        ADDRESS OF AVT                  33500020
R10      EQU   10                                                       34000020
R11      EQU   11                                                       34500020
R12      EQU   12                                                       35000020
R13      EQU   13                       ADDR OF SAVE AREA               35500020
R14      EQU   14                       RETURN REG                      36000020
R15      EQU   15                       ENTRY POINT                     36500020
         SPACE 3                                                        37000020
*             EQUATES                                          @OZ30932 37050000
PRF0     EQU   X'F0'                    PRIORITY               @OZ30932 37100000
*STANDARD LINKAGE                                                       37500020
         SPACE                                                          38000020
         USING IEDQNO,R15                                               38500020
IEDQNO   IEDHJN QNO00                                            S99240 39000022
         USING IEDQAVTD,R9              BASE FOR AVT                    41000020
         USING IEDQCKPD,R2              BASE FOR CKPT WORK AREA         41500020
         EJECT                                                 @Y17XACL 42000000
*PUT DISK RECORD ON I/O QUENE                                           42500020
         SPACE                                                          43000020
         L     R4,CKPLDRB               ADDRESS OF LAST DISK RCD       X43500020
                                        WHICH WAS BUILT                 44000020
         L     R5,CKPIOQL               LAST RECORD ON IO QUENE         44500020
         LA    R4,0(R4)                 CLEAR HIGH ORDER BYTE  @SA71964 44700056
         LR    R6,R4                    SET THIS RECORD AS LAST  S99240 45000022
         USING IEDQCDRD,R4              BASE FOR DISK RECORD     S99240 45040022
         CLI   CDRKEY,CDROPC            IS THIS AN OP CTL RECORD S99240 45080022
         BNE   QNO05                    NO, ONLY ONE             S99240 45120022
         USING IEDQCDRD,R6                                       S99240 45160022
QNO03    OC    CDRDATE+1(3),CDRDATE+1   CHECK FOR LAST RECORD    S99240 45200022
         BZ    QNO05                    YES, INSERT ALL RECORDS  S99240 45240022
*                                        ON I/O QUEUE            S99240 45280022
         L     R6,CDRDATE               GET NEXT RECORD ADDR.    S99240 45320022
         LA    R6,0(R6)                 CLEAR HIGH ORDER BYTE  @SA71964 45340056
         B     QNO03                    AND RELOOP               S99240 45360022
         DROP  R6                                                S99240 45400022
QNO05    XC    1(3,R6),1(R6)            CLEAR LINK FIELD OF LAST S99240 45440022
         NC    CKPIOQF+1(3),CKPIOQF+1   CHECK FOR EMPTY QUEUE           45500020
         ST    R6,CKPIOQL               PUT ADDR ON I/O QUEUE    S99240 46000022
         BZ    QNO10                    BRANCH IF EMPTY QUENE           46500020
         SPACE                                                          47000020
         IC    R6,CDRDATE-IEDQCDRD(R5)  SAVE HIGH ORDER BYTE     S99240 47500022
         ST    R4,CDRDATE-IEDQCDRD(R5)  CHAIN NEW RECORDS TO LASTS99240 47600022
         STC   R6,CDRDATE-IEDQCDRD(R5)  RESTORE HIGH ORDER BYTE  S99240 47700022
         B     QNO20                    SKIP IOQF UPDATE         S99240 48000022
QNO10    EQU   *                                                        48500020
         ST    R4,CKPIOQF               PTR TO FIRST RECORD ON QUE      49000020
         EJECT                                                 @Y17XACL 49500000
*UPDATE LAST REQUEST ELEMENT FOR WHICH A RECORD HAS BEEN BUILT          50000020
         SPACE                                                          50500020
QNO20    EQU   *                                                        51000020
         ST    R3,CKPLREB               UPDATE FIELD FOR LAST REB       51500020
         MVI   CKPLREB,X'0'             CLEAR UNSATISFIED FIELD         52000020
         USING IEDQCRED,R3              BASE FOR REQUEST ELEMENT        52500020
         TM    CREKEY,X'50'             CHECK FOR TOTAL OR MCPLOSE      53000020
         BNO   4(R14)                   BRANCH IF NOT                   53500020
         SPACE                                                          54000020
         TM    AVTCKELF,AVTCINCN        CHECK FOR INCIDENT OVERFLOW0807 54100020
         BZ    QNO25                    BRANCH IF NOT REACHED YET  0807 54200020
         CLI   CKPINCNO,AVTEZERO        ARE THERE INCIDENT     @Y17XACL 54270000
*                                       RECORDS AVAILABLE      @Y17XACL 54340000
         BNE   QNO25                    YES, BRANCH            @Y17XACL 54410000
         MVC   CKPINCNO(1),CKPINCNT     INITIALIZE COUNT OF INCIDTS     54500020
         XC    CKPTTRLI(3),CKPTTRLI     INITIALIZE INCIDENT TTR         55000020
         MVC   CKPSECLI,CKPSECIN        DATA ON TRK BEFORE 1ST INCD0416 55200000
         EJECT                                                 @Y17XACL 55500000
*AN ENVIRONMENT RECORD HAS JUST BEEN PUT ON THE I/O QUENE. REMOVE       56000020
*ANY INCIDENT RECORDS ALREADY ON I/O QUENE.                             56500020
         SPACE                                                          57000020
QNO25    EQU   *                                                   0807 57200020
         LA    R6,CKPIOQF               INIT-ADDR I/O QUENE             57500020
         SPACE 3                                                        58000020
*BEGINNING OF LOOP THROUGH RECORDS ON DISK I/O  QUENE                   58500020
         SPACE                                                          59000020
QNO30    EQU   *                                                        59500020
         L     R4,0(0,R6)               GET NEXT RECORD ON I/O Q        60000020
         USING IEDQCDRD,R4              BASE FOR DISK RECORD            60500020
         NC    1(3,R6),1(R6)            CHECK FOR END OF CHAIN          61000020
         BZ    QNO50                    BRANCH IF END                   61500020
         SPACE                                                          62000020
         CLI   CDRKEY,CDROPC            CHECK FOR INCIDENT RECORD       62500020
         BH    QNO40                    BRANCH IF NOT INCIDENT          63000020
         SPACE                                                          63500020
         OI    AVTCKELF,AVTCINCN        TURN ON INCIDENT OVERFLOW       64000020
         MVC   1(3,R6),1(R4)            REMOVE RECORD FROM CHAIN        64500020
         ST    R4,CKPLDRB               ADDR OF RCD FOR FREEMAIN        65000020
         SPACE                                                          65500020
         LH    R7,CKPINCLN              LENGTH OF INCIDENT RCD          66000020
         LA    R8,CKPLDRB               RECORD ADDRESS LOCATION         66500020
         LR    R10,R15                  SAVE BASE REG                   67000020
         FREEMAIN E,LV=(R7),A=(R8),MF=(E,CKPGETML)                      67500020
         LR    R15,R10                  RESTORE BASE REG                68000020
         B     QNO30                    BEGINNING OF LOOP        A44868 68200021
         SPACE 3                                                        68500020
QNO40    EQU   *                                                        69000020
         LR    R6,R4                    SAVE ADDR OF REQUEST ELEMT      69500020
         B     QNO30                    BEGINNING OF LOOP               70000020
         SPACE                                                          70500020
*END OF LOOP THROUGH I/O QUENE                                          71000020
         SPACE 3                                                        71500020
QNO50    EQU   *                                                        72000020
         TM    AVTCKELF,AVTCINCN        CHECK INCIDENT OVERFLOW         72500020
         BZ    4(R14)                   RETURN IF NOT ON                73000020
         SPACE 3                                                        73500020
*LOOP THROUGH REQUEST ELEMENTS AND TURN ON INCIDENT OVERFLOW IN         74000020
*EACH REQUEST ELEMENT FOR AN INCIDENT CHECKPOINT.                       74500020
         SPACE                                                          75000020
         L     R5,AVTCKPTB              GET FIRST ELEMENT ON QCB        75500020
         USING IEDQCRED,R5              BASE FOR REQUEST ELEM  @ZA03099 75540058
QNO52    EQU   *                                               @OZ30932 75580000
         CLI   CREPRI,PRF0              CHECKPOINT REMOVAL OR  @OZ30932 75600000
*                                       SYNCHRONIZE REQUEST    @OZ30932 75660000
         BL    QNO55                    NO BRANCH                  @01C 75700012
         L     R5,4(0,R5)               GET NEXT ELEMENT       @SA73560 75820058
         B     QNO52                    GET NEXT REQUEST       @OZ30932 75860000
QNO55    EQU   *                                               @SA73560 75900058
         NC    CKPEXCP,CKPEXCP          CHECK CURRENT EXCP SLOT         76000020
         BNZ   QNO70                    BRANCH IF A  RECORD IS         X76500020
                                        BEING WRITTEN                   77000020
         SPACE 3                                                        77500020
*BEGINNING OF LOOP THROUGH REQUEST ELEMENTS IN QCB CHAIN.               78000020
         SPACE                                                          78500020
QNO60    EQU   *                                                        79000020
         LA    R5,0(0,R5)               CLEAR HIGH ORDER BYTE           79500020
         C     R5,CKPLREB               CHECK LAST REQUEST ELEMENT     X80000020
                                        THAT HAS A RECORD BUILT FOR    X80500020
                                        IT                              81000020
         BE    4(R14)                   RETURN IF EQUAL                 81500020
         SPACE                                                          82000020
QNO70    EQU   *                                                        82500020
         USING IEDQCRED,R5              BASE FOR REQ ELEMENT       0416 82700000
         L     R5,4(0,R5)               GET NEXT ELEMENT IN CHAIN       83000020
         CLI   CREKEY,CREOPC            CHECK FOR INCIDENT REQUEST      83500020
         BH    QNO60                    BRANCH IF NOT INCIDENT          84000020
         SPACE                                                          84500020
         OI    CREKEY,CREINCOF          INDICATE INCIDENT OVERFLOW      85000020
         B     QNO60                    CHECK FOR END OF CHAIN          85500020
         SPACE                                                          86000020
*END OF LOOP THROUGH REQUEST ELEMENTS                                   86500020
         EJECT                                                 @Y17XACL 87000000
         TAVTD                                                          88000020
         EJECT                                                 @Y17XACL 88200000
         TCKPD 3330                     MERLIN VERSION OF DSECT    0419 88500000
         END                                                            89000020
