         TITLE ' IHJQCP31  MVT CHECKMAIN  IGC0G06C  '                   00300018
         COPY  LCGASMSW                                                 00350000
         AIF   ('&LIB' EQ 'LIB1').LIB1BA1  TEST FOR LIB1(OS)            00500000
CP31     TITLE 'IHJQCP31 AOS/2 CHECKMAIN 2 ROUTINE - IGC0G06C'          00550000
*                                                                       00560000
*        RELEASE 3.0 DELETIONS/CHANGES                                  00560537
*A019171                                                        ZA05247 00560937
*0000                                                           ZA03227 00561037
*        RELEASE 3.7 CHANGES                                            00564037
*A021949-021950,A022507,A022644-022659                         @ZA14558 00567037
*A022652,A022661,D022655,D022656,D022657                       @ZA19627 00568037
*A265800                                                       @ZA27110 00569037
* STATUS                                                                00570000
*                                                                       00580000
*    CHANGE LEVEL = 0                                                   00590000
*                                                                       00592000
* FUNCTION                                                              00594000
*                                                                       00596000
*    MODULE NAME - IHJQCP31                                             00598000
*                                                                       00598400
*    THIS MODULE CREATES RECORDS  (SUR) OF CERTAIN VIRTUAL STORAGE      00598800
*    MANAGEMENT, CONTENTS SUPERVISION, TASK MANAGEMENT, AND PAGING      00599200
*    SUPERVISOR CONTROL BLOCKS AND OUTPUTS THESE RECORDS TO THE         00599600
*    CHECKPOINT DATA SET. THESE CONTROL BLOCKS, ALONG WITH              00599700
*    PERTINENT INFORMATION NECESSARY FOR THEIR RECREATION ARE           00599800
*    CONTAINED IN MULTIPLE 400 BYTE SUR RECORDS.                 YM7049 00599902
*                                                                       00649900
* ENTRY POINTS                                                          00659900
*                                                                       00669900
*    CHECKMAIN 2 (IGC0G06C) IS ENTERED FROM CHECKMAIN 1          Y02076 00679902
*    (IGC0F06C) TO CHECKPOINT THE SUPERVISOR CONTROL BLOCKS      Y02076 00689902
*                                                                       00691900
* INPUT                                                                 00693900
*                                                                       00695900
*    GPR 12 CONTAINS THE ADDRESS OF THE CHECKPOINT WORK AREA            00697900
*    (CHKWA).                                                           00698300
*                                                                       00698700
* OUTPUT                                                                00699100
*    SAME AS THE ENTRY PARAMETERS FOR NORMAL EXIT                       00699500
*                                                                       00699600
*    FOR ERROR EXIT GPR 1 CONTAINS ADDRESS OF CHKWA AND AN ERROR        00699700
*    CODE  IS PASSED IN THE LAST BYTE OF THE CKRETCOD FIELD.            00699800
*                                                                       00733200
* EXTERNAL REFERENCES                                                   00743200
*                                                                       00753200
*    NONE                                                               00763200
*                                                                       00765200
* EXITS,NORMAL                                                          00765600
*                                                                       00766000
*    TO CHECKMAIN 3 AT ENTRY IGC0H06C VIA XCTL TO                       00766400
*    CHECKPOINT USER INFORMATION AS SUR'S.                              00766500
*    UPON EXIT THE PARAMETERS ARE AS FOLLOWS.                           00777600
*    GPR12 CONTAINS ADDRESS OF CHKWA.                                   00787600
*    DECB USED FOR WRITING SURS.                                        00788000
*    ADDRESS OF NEXT BYTE AVAILABLE IN OUTPUT BUFFER                    00788400
*    AND NUMBER OF BYTES LEFT IN BUFFER IN CHECKPOINT                   00788800
*    WORK AREA. (CKBFSTAD, CKBFLWA).                                    00792500
*                                                                       00794500
* EXITS, ERROR                                                          00794900
*                                                                       00795300
*    -1) TO RESUME I/O ROUTINE AT ENTRY IGC0N06C VIA XCTL               00795700
*    TO PROVIDE ITS NORMAL FUNCTIONS AND TO PASS AN                     00796100
*    ERROR CODE TO THE CHECKPOINT EXIT ROUTINE                          00796200
*    INDICATING THAT AN I/O ERROR HAS OCCURRED.                         00846200
*    UPON EXIT THE PARAMETERS ARE AS FOLLOWS-                           00856200
*    GPR 1 - ADDRESS OF CHKWA                                           00866200
*    CHKWA - AN ERROR CODE OF X'0C' IS PASSED IN THE                    00876200
*    .       LAST BYTE OF THE CKRETCOD FIELD.                           00886200
*                                                                       00888200
*    2) TO RESUME I/O ROUTINE (IGC0N06C) VIA XCTL TO                    00890200
*    PERFORM ITS NORMAL FUNCTIONS AND TO PASS AN                        00892200
*    ERROR CODE TO THE CHECKPOINT EXIT ROUTINE THAT                     00894200
*    AN END OF VOLUME CONDITION (TWO RETRIES HAVE BEEN                  00894600
*    ATTEMPTED ON TAPE, OR THE PRIMARY DEB EXTENT                       00895000
*    HAS BEEN EXHAUSTED FOR DASD) HAS OCCURRED.                         00895400
*    UPON EXIT THE PARAMETERS ARE THE SAME AS FOR                       00895800
*    CASE 1 EXCEPT THAT THE LAST BYTE OF CKRETCOD                       00895900
*    IS AN X'08'.                                                       00896000
*                                                                       00896100
*    3) TO CHECKPOINT HOUSEKEEPING ROUTINE (IGC0206C) TO                00912800
*    ATTEMPT REPROCESSING ON A NEW TAPE WHEN AN EOV                     00922800
*    HAS OCCURRED FOR THE FIRST TIME ON TAPE.                           00924800
*    UPON EXIT THE PARAMETERS ARE AS FOLLOWS-                           00926800
*    GPR 1 - ADDRESS OF CHKWA                                           00928800
*    CHKWA - FIRST TAPE EOV FLAG IS SET.                                00929200
*                                                                       00929300
* TABLES/WORK AREAS                                                     00929400
*                                                                       00939000
*    DEB   DEBNMEXT                                                     00939400
*                                                                       00940300
*    CVT   CVTABEND                                              Y02076 00940402
*    .     CVTLINK                                               Y02076 00941402
*                                                                       00942402
*    SCVT  SCVTSVCT                                                     00955300
*                                                                       00965300
*    TCB   TCBMSS                                                       00969700
*    .     TCBLLS                                                       00970100
*    .     TCBJPQ                                                       00970200
*    .     TCBNSTAE                                                     00970300
*    .     TCBFOEA                                               Y02076 00971302
*    .     TCBOTC                                                Y02076 00972302
*    .     TCBRBP                                                Y02076 00973302
*    .     TCBSTABB                                              Y02076 00974302
*                                                                       00975200
*    RB    RBSIZE                                                       00977200
*    .     RBSTAB1                                               Y02076 00978202
*    .     RBSTAB2                                                      00979600
*    .     RBINTCOD                                              Y02076 00979802
*    .     RBEP                                                  Y02076 00980002
*    .     RBCDE1                                                Y02076 00980102
*    .     RBLINK                                                       00980202
*                                                                       00985100
*    CDE   CDATTR                                                Y02076 00987102
*    .     CDATTR2                                               Y02076 00989102
*    .     CDCHAIN                                                      00989500
*    .     CDRRBP                                                Y02076 00989902
*    .     CDENTPT                                                      00990000
*    .     CDNAME                                                       00990100
*    .     CDXLMJP                                                      01032000
*                                                                       01072000
*    XL    EXLLNTH                                                      01074000
*                                                                       01074100
*    LLE   LLECDPT                                               Y02076 01074202
*    .     LLECHN                                                Y02076 01088202
*                                                                       01098200
*    DCB   DCBDEBAD                                                     01100200
*    .     DCBSYNA                                               Y02076 01100602
*                                                                       01101000
*    SCB   SCBCHAIN                                                     01101400
*    .     SCBOWNRA                                                     01101800
*                                                                       01101900
*    SPQE  SPQEAD                                                Y02076 01102002
*    .     SPDQEPTR                                              Y02076 01102102
*    .     SPQEFLGS                                              Y02076 01106802
*                                                                       01108800
*    DQE   DQFQEPTR                                                     01110800
*    .     DQEPTR                                                       01111200
*                                                                       01111300
*    FQE   FQEPTR                                                       01111400
*                                                                       01123000
*    FOE   FOEFLINK                                                     01133000
*    .     FOEVINDX                                              Y02076 01133202
*                                                                       01133400
* ATTRIBUTES                                                            01133800
*                                                                       01134200
*    KEY 0, SUPERVISOR STATE, ENABLED                                   01134600
*                                                                       01134700
*  CHARACTER CODE DEPENDENCIES                                          01134800
*                                                                       01138700
*    NONE                                                               01140700
*                                                                       01141100
*  NOTES                                                                01141500
*                                                                       01141900
*    APPLICABILITY                                                      01142300
*                                                                       01142400
*    AOS/2                                                              01142500
*                                                                       01146400
*    MODULE CHARACTERISTICS                                             01148400
*                                                                       01148800
*    TYPE - LOAD MODULE                                                 01149200
*    RESIDENCE - SYSTEM LINK PACK AREA                                  01149600
*                                                                       01150000
*    DEPENDENCIES                                                       01150100
*                                                                       01150200
*    -SIZE OF CONTROL BLOCKS TO BE CHECKPOINTED                         01160100
*    -A CDE EXISTS FOR THE JOB PACK AREA OF THE REGION                  01170100
*                                                                       01170200
*    INTERFACES                                                         01208500
*                                                                       01218500
*    -WRITE/CHECK MACRO                                                 01228500
*    -STANDARD DSECTS USED TO REFERENCE CONTROL BLOCKS                  01238500
*                                                                       01240500
*                                                                       01242500
*    OPERATION                                                          01244500
*                                                                       01246500
*    THE CHECKMAIN2 ROUTINE RECEIVES CONTROL AFTER ALL ALLOCATED        01246600
*    REGION BLOCKS HAVE BEEN CHECKPOINTED. UPON ENTRY,                  01246700
*    INITIALIZATION PROCESSING IS INVOKED. THIS INITIALIZATION          01259500
*    CONSISTS OF THE FOLLOWING.                                         01269500
*                                                                       01271500
*    .     - PLACING ADDRESS OF SYNAD ROUTINE IN DCB                    01271900
*    .     - SETTING THE NORMAL XCTL EXIT MODULE NAME TO                01272000
*    .       IGC0H06C (CHECKMAIN 3).                                    01272100
*    .     - SETTING THE BUFFER CONTROL PARAMETERS FOR THE SUR          01272200
*    .       BUFFER CONTAINED IN THE CHECKPOINT WORK AREA.              01276500
*                                                                       01278500
*    PROCESSING THEN CONTINUES AS DESCRIBED UNDER THE HEADING           01280500
*    'CHECKPOINTING THE VIRTUAL STORAGE CONTROL BLOCKS'.                01280600
*                                                                       01280700
*    'CHECKPOINTING THE VIRTUAL STORAGE CONTROL BLOCKS'                 01291300
*                                                                       01301300
*    THE VSM CONTROL BLOCKS CHECKPOINTED BY THIS ROUTINE ARE            01301700
*    THE SPQE, DQE, AND FQE CONTROL BLOCK CHAINS FOR THE STC,           01302100
*    INITIATOR, AND PROBLEM PROGRAM TASKS. THE SPQE, DQE, AND    Y02076 01305602
*    FQE ARE EACH 16 BYTES LONG. THE CHECKCODE VALUES ASSIGNED   Y02076 01307602
*    TO THESE BLOCKS ARE                                         Y02076 01308002
*    .         - SPQE - X'06'                                           01308400
*    .         - DQE  - X'07'                                           01308800
*    .         - FQE  - X'02'                                           01309200
*    THE ORDER OF PROCESSING IS TO CHECKPOINT THE CHAIN AS FOLLOWS      01312700
*    .         SPQE1, DQE1, FQE1,FQE1,DQE1,FQE1,FQE1,SPQE2,DQE2,        01314702
*    .         FQE2, ETC.                                               01315100
*                                                                       01315500
*                                                                       01315900
*    CHECKPOINTING THE JOB PACK AREA CDE QUEUE                          01316300
*                                                                       01325300
*    THE CDE'S AND THEIR ASSOCIATED EXTENT LISTS ARE CHECKPOINTED.      01327300
*    THE ORDER OF PROCESSING IS TO CHECKPOINT THE CHAIN AS FOLLOWS      01329300
*    .         MAJCDE1, EXTENT LIST1, MINOR CDE1, MAJOR CDE2,           01331300
*    .         EXTENT LIST2, ETC.                                       01333300
*    CDE'S WHICH HAVE BEEN CREATED OR USED FOR THE LINK OR XCTL         01333700
*    FUNCTIONS WILL CONTAIN A POINTER TO THE RB WHICH USED THE          01334100
*    FUNCTION. THE RB FOR THE CDE WILL BE CHECKPOINTED AT A LATER       01334500
*    TIME. SINCE THE RB IS CREATED IN LSQA, THE RB ADDRESS IN THE       01334600
*    CDE WILL HAVE TO BE RELOCATED A 'RESTART TIME'. TO DO THIS,        01345500
*    CHECKPOINT MUST NOTE THE POSITION OF THE REQUESTING RB ON THE      01355500
*    P/P TCB RB QUEUE AND PASS IT TO THE RESTART FUNCTION WITH THE      01355900
*    CDE. THE CHECKCODES ASSIGNED TO THE BLOCKS ARE                     01356300
*    .         - CDE - X'09'                                            01358100
*    .         - EXTENT LIST - X'17'                                    01360100
*    WHEN ALL CDE'S AND EXTENT LISTS HAVE BEEN WRITTEN TO THE           01360500
*    CHECK POINT DATA SET PROCESSING CONTINUES WITH CHECKPOINTING       01360900
*    THE P/P LOAD LIST ELEMENT QUEUE.                                   01361300
*                                                                       01361400
*                                                                       01361500
*    'CHECKPOINTING THE P/P LOAD LIST ELEMENT QUEUE'                    01361600
*                                                                       01365700
*    THE LOAD LIST ELEMENT (LLE) QUEUE IS CREATED WHENEVER A LOAD       01367700
*    MACRO INSTRUCTION IS ISSUED BY OR FOR THE JOB STEP TASK. THE       01369700
*    LLE CONTAINS A POINTER TO A CDE, AND ANOTHER FIELD INDICATING      01369800
*    THE NUMBER OF TIMES LOAD HAS BEEN ISSUED FOR THE MODULE. IF        01369900
*    THE MODULE HAD TO BE FETCHED INTO THE USER REGION, THE CDE         01373700
*    WILL BE ON THE 'JOB PACK AREA CDE QUEUE'. IF THE MODULE            01375700
*    RESIDES IN THE SYSTEM LINK PACK AREA, THE CDE WILL BE ON THE       01376100
*    'ACTIVE LPA CDE QUEUE'.                                            01376500
*                                                                       01376900
*    FOR THOSE LLE'S WHOSE CDE IS ON THE ACTIVE LPAQ, IT IS             01377300
*    NECESSARY TO CHECKPOINT NOT ONLY THE LLE, BUT ALSO THE             01377400
*    MODULE NAME AND ENTRY POINT ADDRESS. THIS ADDITIONAL               01377500
*    INFORMATION IS UED TO RECREATE THE LPA CDE QUEUE AT RESTART        01377600
*    TIME AND TO VERIFY THAT THE MODULE OCCUPIES THE SAME VIRTUAL       01377800
*    ADDRESS SPACE AS IT DID AT CHECKPOINT TIME.                        01377900
*                                                                       01378000
*    FOR LLE'S WHOSE CDE'S ARE ON THE JPQ, IT IS NECESSARY TO NOTE      01378100
*    THE POSITION OF THE CDE ON THE JPQ AS THE CDE'S WILL BE            01381700
*    RELOCATED DURING RESTART.                                          01383700
*                                                                       01384100
*    THE CHECKCODES USED FOR THE LLE'S ARE                              01384500
*    .         - LLE WHOSE CDE IS ON JPQ - X'0A'                        01384900
*    .         - LLE WHOSE CDE IS ON THE ACTIVE LPAQ - X'0E'            01385300
*                                                                       01385400
*                                                                       01385500
*    'CHECKPOINTING THE P/P TASK REQUEST BLOCK (RB) QUEUE'              01386700
*                                                                       01388700
*    AT CHECKPOINT TIME THE P/P RB QUEUE CAN ONLY CONTAIN PRB'S         01388800
*    AND SVRB'S. THE SVRB ALWAYS DESCRIBES AN SVC WHICH IS              01388900
*    RESIDENT IN EITHER THE MODIFIED LINK PACK AREA, FIXED LINK         01389000
*    PACK AREA, PAGED LINK PACK AREA, OR THE RESIDENT NUCLEUS.          01419100
*    INTERRUPT SUPERVISION CREATES THE SVRB FOR ALL TYPE 2,3, AND       01429100
*    THE INITIAL LOAD OF ALL TYPE 4 SVC'S. CONTENTS SUPERVISION         01439100
*    CREATES THE SVRB FOR ALL SUBSEQUENT LOADS OF TYPE 4 SVC'S.         01449100
*    THE SVC TABLE RESIDENT IN THE NUCLEUS CONTAINS THE ENTRY           01449200
*    POINT ADDRESSES FOR ALL TYPE 2, 3, AND 4 SVC'S, WHILE ANY          01449300
*    SUBSEQUENT LOADS OF A TYPE 4 SVC MUST BE FOUND THROUGH A           01449400
*    CDE ON THE ACTIVE LPA CDE QUEUE, WHEN THE MODULE HAS BEEN          01459400
*    FIX'ED OR MODIFIED, OR THROUGH THE LINK PACK DIRECTORY FOR         01469400
*    PAGED LPA MODULES. IN THIS CASE, THE SVRB WILL CONTAIN THE         01469500
*    ADDRESS OF THE CDE OR LPDE FOR THE REQUESTED MODULE.               01472800
*                                                                       01474800
*    PRB'S ARE CREATED FOR THE USER WHENEVER A LINK, SYNCH, OR          01475200
*    XCTL MACRO INSTRUCTION IS EXECUTED BY THE PROBLEM PROGRAM.         01475600
*    THE PRB IS CREATED BY CONTENTS SUPERVISION, AND, IN THE            01476000
*    CASE OF LINK OR XCTL, A CDE IS USED TO RELATE THE RB TO THE        01476100
*    REQUESTED MODULE. THE CDE MAY BE ON THE JPQ AND, IF SO, ITS        01476200
*    POSITION MUST BE NOTED FOR RESTART, OR, THE CDE MAY BE FOR         01484500
*    A MODULE RESIDENT IN THE LPA IN WHICH CASE THE MODULE NAME         01486500
*    AND ENTRY POINT ADDRESS MUST BE SAVED FOR RESTART. NOTE THAT       01488500
*    ANY TIME A LINK, LOAD OR XCTL IS ISSUED BY THE P/P FOR A           01490500
*    MODULE IN THE LPA, A CDE IS CREATED AND PLACED ON THE ACTIVE       01492500
*    LPA CDE QUEUE (UNLESS ONE ALREADY EXISTS IN WHICH CASE THE         01492900
*    CDE IS USED AGAIN), AND WHENEVER A DELETE OR EXIT SVC IS           01493000
*    ISSUED, THE CDE IS REMOVED FROM THE LPAQ IF THERE IS NO MORE       01502300
*    USE FOR IT.                                                        01504300
*                                                                       01506300
*    THE CHECKCODES USED FOR THE RB QUEUE ARE                           01508300
*    .         - SVRB FOR TYPE 2, 3, AND 1ST LOAD OF 4 - X'1F'          01510300
*    .         - SVRB FOR SUBSEQUENT LOADS OF TYPE 4 - X'1E'            01510700
*    .         - EOV SVRB - X'1D'                                Y02076 01510902
*    .         - SYNCH'ED PRB - X'05'                                   01511100
*    .         - PRB WITH CDE IN JPQ - X'0B'                            01511500
*    .         - PRB WITH CDE ON LPAQ - X'0C'                           01511600
*                                                                       01511700
*                                                                       01511800
*    'CHECKPOINTING THE STAE CONTROL BLOCKS'                            01521400
*                                                                       01531400
*    STAE CONTROL BLOCKS (SCB'S) ARE CREATED TO ALLOW THE               01534200
*    PROGRAMMER TO RECOVER FROM AN ABEND CAUSED BY A ROUTINE            01536200
*    INVOKED BY LINK OR SYNCH. THESE CONTROL BLOCKS POINT TO            01538200
*    THE PROGRAM (RB) TO RECEIVE CONTROL SHOULD AN ABEND OCCUR.         01538600
*    SINCE THE RB'S WILL BE RELOCATED AT RESTART, THE POSITION          01539000
*    OF THE STAE RB ON THE P/P RB QUEUE HAS TO BE PASSED TO             01539400
*    RESTART. ALSO, THE TCB CONTAINS FLAGS WHICH MUST BE                01539500
*    RESTORED AT RESTART TIME. THE CHECKCODES ASSIGNED ARE              01539600
*    .         - TCBNSTAE FLAGS - X'0D'                                 01539700
*    .         - SCB - X'11'                                            01548300
*                                                                       01550300
*    'CHECKPOINTING THE P/P FOE CONTROL BLOCKS'                         01552300
*                                                                       01554300
*    A FIX OWNERSHIP ELEMENT (FOE) IS CREATED FOR EACH PAGE             01556300
*    FIXED BY A TASK THROUGH THE PGFIX SVC FUNCTION. THIS CHAIN         01556700
*    IS ADDRESS ORDERED FROM LOW ADDRESS TO HIGH AND IS ANCHORED        01556800
*    BY THE TCBFOE FIELD OF THE JOB STEP TCB. EACH FOE HAS A            01556900
*    COUNT RELATING THE NUMBER OF TIMES THE PAGE HAS BEEN FIXED.        01558000
*    ONLY THOSE FOE'S DESCRIBING SPACE WITHIN THE USER'S         Y02076 01559002
*    PRIVATE REGION AND NOT IN LSQA WILL BE SAVED IN THE         Y02076 01559202
*    CHECKPOINT DATA SET.                                        Y02076 01559402
*                                                                       01560000
*    - FOE CHECKCODE = X'08'                                            01560100
*                                                                       01560200
         EJECT                                                          01562600
IGC0G06C CSECT                                                          01564600
*                                                                YM2776 01565001
         BALR  RB,N0               ESTABLISH BASE FOR CODE              01566600
         USING *,RB                CODE                                 01567000
         USING CHKWA,RC            BASE FOR CHKPT WORK AREA             01567400
         L     R2,CKDCBAD          GET @ CHECKPOINT DCB                 01596400
         USING IHADCB,R2           DCB                                  01606400
         LA    R7,SYNAD            GET @ OF SYNAD ROUTINE               01616400
         STCM  R7,M7,DCBSYNA       PUT @ IN DCB                         01618400
         DROP  R2                  DCB                                  01620400
         L     R5,CKTCBAD          GET @ OF TCB                         01622400
         USING TCB,R5              TCB                                  01624400
         MVC   CKMN40(N8),CKMN3NM  SET DEFAULT XCTL MODULE NAME TO CM3. 01624800
         LA    R4,SURL             GET LENGTH OF A SUR BUFFER           01625200
         STH   R4,CKLNGTH1         INITIALIZE DECB FOR RECORD LENGTH    01625600
         ST    R4,CKBFLWA          INIT. NO. BYTES LEFT IN BUFFER       01625700
         L     R8,CKBFOFST         CALCULATE                            01625800
         AR    R8,RC               START ADDR OF SUR BUFFER             01625900
         ST    R8,CKBFSTAD         INIT. PTR TO NEXT AVAIL. BYTE        01637600
         ST    R8,CMBUF            SAVE BUFFER ADDRESS FOR LATER        01639600
         TM    CKFLAG1,CKVEQR      IS THIS TASK V=R?             YM2776 01639701
CKVEQR   EQU   8                   V=R FLAG IN W.A.             YA00258 01639802
         BNO   CKNOVEQR            NO, GO ON                     YM2776 01639901
         LRA   R8,0(,R8)           GET REAL ADDRESS OF BUFFER    YM2776 01642001
CKNOVEQR DS    0H                                                YM2776 01644002
         ST    R8,CKAREA1          INIT. DECB FOR WRITE AREA ADDRESS    01646801
         SR    R3,R3               ZERO OUT REG FOR LATER               01648901
         XC    CKAPPLNT,CKAPPLNT   SET APPENDAGE LENGTH = 0             01651001
         SPACE 3                                                        01653101
*                                                                       01655201
*        START OF CHECKPOINTING THE VIRTUAL STORAGE CONTROL BLOCKS.     01657301
*                                                                       01659401
         SPACE                                                          01661501
         L     R5,TCBOTC           GET ADDR OF INITIATOR TCB            01663601
         LA    R6,N2               SET LOOP COUNTER TO 2                01665701
C7A4     L     R5,TCBOTC           GET ORIGINATING TCB                  01667801
         SPACE 3                                                        01669901
*        START OF SPQE PROCESSING FOR THIS TASK                         01672001
         SPACE                                                          01674101
C7B3     ICM   R3,M7,TCBMSSB       GET ADDR OF FIRST SPQE               01676201
         USING SPQESECT,R3         SPQE                                 01678301
C7H6     LTR   RA,R3               SEE IF ANYMORE SPQE'S AND SAVE @     01680401
         BZ    C7B7                NO MORE, DO NEXT TCB                 01682501
         MVI   CKCODE,SPQECODE     SET CHECK CODE                       01684601
         LA    RF,SPQESIZE         SET LENGTH OF BLOCK           Y02076 01686702
         ST    RF,CKLNT            *                                    01688801
         BAL   RD,WRITESUR         CHECKPOINT THE SPQE                  01690901
         TM    SPQEFLGS,SPSHARE    IS SPQE OWNED                        01693001
         BO    C7H4                NO - SHARED SO NO DQE'S.             01695101
C7F3     L     R3,SPDQEPTR         YES- GET DQE POINTER          Y02076 01697202
         LA    RF,DQFQLEN                                               01699301
         ST    RF,CKLNT            PLACE DQE/FQE LENGTH FOR WRITESUR    01701401
         DROP  R3                  SPQE                                 01703500
         USING DQESECT,R3          DQE                                  01706600
CKDQE    LTR   R9,R3               SEE IF ANYMORE DQE'S AND SAVE @      01708600
         BZ    C7H4                NO, GO GET NEXT SPQE                 01710600
         MVI   CKCODE,DQECODE      SET THE CHECKCODE                    01712600
         BAL   RD,WRITESUR         CHECKPOINT THE DQE                   01712700
         SPACE 3                                                        01712800
*              FQE PROCESSING                                           01712900
         SPACE                                                          01721200
         ICM   R3,M7,DQFQEPTR+N1   GET ADDRESS OF FQE                   01723200
         DROP  R3                  DQE                                  01725200
         USING FQESECT,R3          FQE                                  01727200
         MVI   CKCODE,FQECODE      SET SUR CODE FOR FQE                 01729200
CKFQE    LTR   R3,R3               ANYMORE FQE'S                        01729300
         BZ    NXTDQE              NO, DO NEXT DQE                      01729400
         BAL   RD,WRITESUR         YES, CHECKPOINT THE FQE              01730400
         ICM   R3,M7,FQEPTR+N1     GET @ NEXT FQE                       01730800
         B     CKFQE               DO NEXT FQE, IF ANY                  01731200
         SPACE 3                                                        01731600
NXTDQE   LR    R3,R9               RESTORE DQE POINTER                  01732000
         DROP  R3                  FQE                                  01732100
         USING DQESECT,R3          DQE                                  01732200
         ICM   R3,M7,DQEPTR+N1     GET @ OF NEXT DQE                    01732300
         B     CKDQE               GO PROCESS NEXT DQE                  01734700
         SPACE 3                                                        01736700
C7H4     LR    R3,RA               RESTORE SPQE POINTER                 01738700
         DROP  R3                  DQE                                  01739100
         USING SPQESECT,R3         SPQE                                 01739500
         L     R3,SPQEAD           GET @ OF NEXT SPQE            Y02076 01747002
         B     C7H6                GO PROCESS NEXT SPQE                 01749000
         DROP  R3                  SPQE                                 01751000
         SPACE 3                                                        01753000
C7B7     L     R5,CKTCBAD          GET P/P TCB @                        01753400
         BCTR  R6,R0               DECREMENT LOOP COUNT BY 1.           01753800
         LTR   R6,R6               DETERMINE WHICH TASK IS NEXT         01754200
         BZ    C7B3                DO P/P TASK NEXT                     01754600
         BP    C7A4                DO INIT TASK NEXT                    01754700
         EJECT                                                          01754800
*                                                                       01754900
*        START OF CHECKPOINTING THE JPA CDE QUEUE.                      01756800
*                                                                       01758800
         SPACE 3                                                        01759200
         ICM   R3,M7,TCBJPQB       GET @ OF FIRST JPA CDE.              01759600
C9E2     LTR   R9,R3               ANY MORE CDE'S, AND SAVE ADDR        01760000
         BZ    C7H8A               NO, GO DO THE LLE'S.                 01760400
         MVI   CKCODE,CDECODE      SET SUR CODE FOR A CDE               01760500
         LA    RF,CDELEN           MOVE IN LENGTH                       01760600
         ST    RF,CKLNT            *                                    01760700
         USING CDENTRY,R3          CDE                                  01761300
         L     RA,CDRRBP           GET @ OF RB ASSOC. WITH CDE   Y02076 01761702
*                                  NOTE-- BYTE 0 GPR 10 =0 FROM SPQE    01762100
*                                         PROCESSING                    01762200
         BAL   RD,SRCHRBQ          CHECKPOINT THE CDE                   01762300
         TM    CDATTR,CDMIN        IS IT A MINOR CDE                    01762400
         BO    C9K4                YES, BYPASS EXTENT LIST PROC.        01764100
         SPACE                                                          01766100
*        START OF EXTENT LIST PROCESSING                                01766500
         SPACE                                                          01766900
         OC    CDXLMJP+1(3),CDXLMJP+1  IS EXTENT ADDR ZERO      ZA03227 01767037
         BZ    C9K4                BYPASS EXTENT LIST PROCESS   ZA03227 01767237
         TM    CDATTR2,CDXLE       IS EXTENT BLOCK BUILT        ZA03227 01767337
         BNO   C9K4                BYPASS EXTENT LIST PROCESS   ZA03227 01767437
         L     R3,CDXLMJP          @ OF EXTENT LIST FROM CDE     Y02076 01767837
         DROP  R3                  CDE                                  01767937
         MVI   CKCODE,XLCODE       MOVE IN CHECKCODE FOR EXT. LIST      01768037
         USING XTLST,R3            EXTENT LIST                          01768100
         MVC   CKLNT(N4),XTLLNTH   CHECK THE LENGTH                     01768500
         DROP  R3                  EXTENT LIST                          01768900
         BAL   RD,WRITESUR         CHECKPOINT THE EXTENT LIST           01769300
C9K4     LR    R3,R9               RESTORE CDE POINTER                  01794900
         USING CDENTRY,R3          CDE                                  01804900
         L     R3,CDCHAIN          GET ADDR NEXT CDE             Y02076 01814902
         B     C9E2                PROCESS NEXT CDE                     01816900
         DROP  R3                  CDE                                  01818900
         EJECT                                                          01819300
*                                                                       01819700
*        START OF CHECKPOINTING THE P/P LLE QUEUE                       01820100
*                                                                       01820500
C7H8A    L     R3,TCBLLS           GET ADDR OF FIRST LLE         Y02076 01820602
         LA    RF,LLELEN           MOVE IN LENGTH OF LLE                01820700
         ST    RF,CKLNT            *                                    01829200
C7H8     LTR   R3,R3               IS THERE AN LLE                      01831200
         BZ    C7H7A               NO- GO CHECKPOINT THE RB'S           01833200
         USING LLE,R3              LLE                                  01835200
         L     RA,LLECDPT          GET @ OF CDE ASSOC. WITH LLE  Y02076 01837202
         USING CDENTRY,RA          CDE                                  01837600
         TM    CDATTR,CDNIP        IS CDE FOR LPA MODULE                01837700
         BO    C7H81               YES, CHECKPOINT NAME AND ENTRY PT.   01837800
         MVI   CKCODE,LLEJCODE     NO, CHECKPOINT CDE POSITION          01846300
         BAL   RD,SRCHJPQ          CHECKPOINT THE LLE                   01848300
C7H82    L     R3,LLECHN           GET ADDR OF NEXT LLE          Y02076 01850302
         B     C7H8                PROCESS NEXT LLE                     01852300
         SPACE 3                                                        01854300
C7H81    MVI   CKCODE,LLELCODE     LLE WITH CDE ON LPAQ (SET CODE)      01854700
         MVI   CKAPPLEN,LLEAPLEN   SET SUR APPEDAGE LENGTH FOR LLE      01854800
         BAL   RD,WRITESUR         CHECKPOINT THE LLE                   01854900
         B     C7H82               GO GET NEXT LLE                      01863400
         DROP  R3,RA               LLE,CDE                              01865400
         EJECT                                                          01867400
*                                                                       01869400
*        START OF CHECKPOINTING THE P/P TASK RB QUEUE                   01871400
*                                                                       01871800
C7H7A    ICM   R3,M7,TCBRBP+N1     GET @ OF CHECKPOINT SVRB             01871900
         SH    R3,CMPFXLN          BACK UP TO START OF PREFIX           01872000
         USING RBPRFXST,R3         RB                                   01880500
         SPACE 3                                                        01882500
CKSVRB   TM    RBSTAB2,RBTCBNXT    IS THIS THE LAST RB                  01884500
         BO    C11H5               YES, GO DO THE STAE BLOCKS           01886500
         ICM   R3,M7,RBLINKB       GET @ NEXT RB                        01888500
         SH    R3,CMPFXLN          BACK UP TO START OF PREFIX           01888900
         LH    RF,RBSIZE           GET SIZE OF RB IN DBL WDS            01889000
         SLL   RF,N3               MULT. BY 8 TO COMPUTE NO OF BYTES    01889100
         ST    RF,CKLNT            SET LENGTH FOR WRITE SUR             01891900
         ICM   RA,M7,RBCDE1        GET @ OF CDE/LPDE FOR RB             01893900
         TM    RBSTAB1,RBFTSVRB    IS RB AN SVRB                        01895900
         BO    C7H71               YES, GO HANDLE SVRB                  01896300
*                                                                       01896700
*        PRB PROCESSING                                                 01897100
*                                                                       01897500
         MVI   CKCODE,PRBSCODE     SET CODE FOR SYNCHED PRB             01904800
         LTR   RA,RA               IS RBCDE FIELD=0.                    01906800
         BZ    C7H72               YES - CHECKPOINT SYNCHED PRB         01908800
         MVI   CKCODE,PRBLCODE     SET CODE FOR PRB W/CDE ON LPAQ       01910800
         USING CDENTRY,RA          CDE                                  01911200
         TM    CDATTR,CDNIP        IS CDE ON LPAQ (LOADED BY NIP)       01911600
         BO    C7H73               YES, GO CHECKPOINT NAME AND EP. TOO  01912000
         MVI   CKCODE,PRBJCODE     SET CODE FOR PRB W/CDE ON JPQ        01912100
         BAL   RD,SRCHJPQ          CHECKPOINT RB WITH CDE POSITION      01912200
         B     CKSVRB              GO SEE IF THIS WAS LAST RB           01913000
         SPACE 3                                                        01913400
*        SVRB PROCESSING                                                01913800
         SPACE                                                          01914200
C7H71    L     RD,RBLINK           GET RB @                      Y02076 01914402
         DROP  R3                  RB                            Y02076 01914602
         SH    RD,CMPFXLN          BACK UP TO PREFIX             Y02076 01914802
         USING RBPRFXST,RD         ADDRESS RB                    Y02076 01915002
         CLI   RBINTCOD+N1,EOVSVC  Q - EOV SVRB                  Y02076 01915202
         DROP  RD                  RB                            Y02076 01915402
         BNE   C7H71A              BR NO                         Y02076 01915602
         MVI   CKCODE,SVRBEOVC     SET SUR CODE AND              Y02076 01915802
         MVI   CKAPPLEN,N0         APP. LNGTH TO ZERO            Y02076 01916002
         B     C7H72               COMPLETE EOV SVRB ENTRY       Y02076 01916202
C7H71A   MVI   CKCODE,SVRB234C     TYPE 2,3,4 SVRB APP. LEN.     Y02076 01916702
         MVI   CKAPPLEN,SVRB234A   SET APPENDAGE LENGTH         ZA05247 01917137
         LTR   RA,RA               IS CDE ADDRESS=0                     01918700
         BZ    C7H72               YES- IT IS A TYPE 2,3,4 SVRB         01920700
         MVI   CKCODE,SVRB4NCD     NO - IT IS THE NTH LOAD OF TYPE4 SVC 01920800
C7H73    MVI   CKAPPLEN,RBLPALEN   SET APP. LENGTH FOR 4N OR LPA PRB    01920900
C7H72    BAL   RD,WRITESUR         CHECKPOINT THE RB                    01921000
         B     CKSVRB              GO SEE IF THIS WAS LAST RB           01927600
         DROP  RA                  CDE                           Y02076 01929602
         EJECT                                                          01931600
*                                                                       01933600
*        START OF CHECKPOINTING THE STAE CONTROL BLOCKS                 01934000
*                                                                       01934400
         SPACE 3                                                        01934500
C11H5    LA    R3,TCBNSTAE         GET @ OF STAE FLAGS                  01934600
         MVI   CKCODE,NSTAECOD     SET CHECKCODE FOR TCBNSTAE FIELD     01934700
         LA    RF,NSTAELEN         SET LENGTH OF TCBNSTAE FIELD         01936400
         ST    RF,CKLNT            FOR WRITESUR                         01938400
         BAL   RD,WRITESUR         CHECKPOINT TCBNSTAE                  01938800
         ICM   R3,M7,TCBSTABB      GET @ OF FIRST SCB                   01939200
         MVI   CKCODE,SCBCODE      SET CHECKCODE FOR SCB                01939600
         LA    RF,SCBLEN           SET LENGTH OF SCB                    01939700
         ST    RF,CKLNT            FOR WRITESUR                         01940200
         USING SCB,R3              SCB                                  01940600
CKSCB0   LTR   R3,R3               ANY SCB'S                            01941000
         BZ    CKFOE1              GO PROCESS FOE'S IF ANY              01941100
         ICM   RA,M7,SCBOWNRA      GET @ OF RB FROM SCB                 01941200
         BAL   RD,SRCHRBQ          CHECKPOINT SCB WITH RB POSITION      01941300
         ICM   R3,M7,SCBCHAIN+N1   GET @ OF NEXT SCB                    01942800
         B     CKSCB0              GO PROCESS NEXT SCB                  01944800
         DROP  R3                  SCB                                  01945200
         EJECT                                                          01945600
*        CHECKPOINTING THE P/P FOE CONTROL BLOCKS                       01945700
*                                                                       01946200
         SPACE 3                                                        01946600
CKFOE1   MVI   CKCODE,FOECODE      PUT X'08' IN SUR CODE (CODE FOR FOE) 01947000
         LA    RF,FOELEN           SET LENGTH FOR A FOE                 01947400
         ST    RF,CKLNT            FOR WRITESUR                         01953200
         ICM   R3,M7,TCBFOEA       GET @ OF  FIRST FOE                  01955200
CKFOE    BZ    C11H7               NO FOE'S LEFT, SO XCTL TO CHECKMAIN3 01957200
         SR    RF,RF               CLEAR HI AND LO BYTES         Y02076 01957402
         USING FOE,R3              FOE                           Y02076 01957602
         ICM   RF,M6,FOEVINDX      LOAD 2ND & 3RD BYTES WITH     Y02076 01957802
*                                  VIRTUAL INDEX.  THIS WILL     Y02076 01958002
*                                  GENERATE A VIRTUAL ADDRESS.   Y02076 01958202
         C     RF,CKPPM            IS ADDR BELOW USER REGION     Y02076 01958402
         BL    CKFOE2              BR YES, DON'T SAVE FOE        Y02076 01958602
         C     RF,CKPPE            IS ADDR ABOVE USER REGION     Y02076 01958802
         BNL   CKFOE2              BR YES, DON'T SAVE FOE        Y02076 01959002
         BAL   RD,WRITESUR         SAVE (CHKPT) FOE              Y02076 01959202
CKFOE2   DS    0H                                                Y02076 01959402
         ICM   R3,M7,FOEFLINK      GET ADDR OF NEXT FOE          Y02076 01959602
         B     CKFOE               SEE IF ALL DONE                      01960300
         DROP  R3                  FOE                                  01960700
         EJECT                                                          01961100
*                                                                       01962700
*        XCTL PROCESSING TO NEXT LOAD                                   01964700
*                                                                       01965100
C11H7    LA    RF,CKMN40           GET @ OF NAME OF NEXT MODULE         01965500
         LR    R1,RC               RESTORE @ OF CHKWA TO GPR 1          01965900
         ST    RF,CK40XCTL         PUT IT IN PARAM LIST                 01966000
         LA    RF,CK40XCTL         GET @ OF PARAM LIST                  01966100
         XCTL  SF=(E,(15))         XCTL TO NEXT LOAD                    01967700
         EJECT                                                          01969700
*                                                                       01970100
*        ROUTINE TO DETERMINE POSITION OF A CDE ON TCBJPQ               01970500
*                                                                       01970900
*        INPUT - @ OF CDE TO BE FOUND IN GPR 10.                        01971000
*                                                                       01971100
*              - RETURN @ IN GPR 13. ROUTINE BRANCHES TO WRITESUR.      01993900
*                                                                       02003900
         SPACE 3                                                        02013900
SRCHJPQ  DS    0H                  LABEL                                02015900
C13A2    L     R8,TCBJPQ           GET @ OF FIRST CDE ON JPQ            02016300
         LA    R6,N1               SET POSITION INDEX TO 1.             02016700
         LA    R8,N0(R8)           CLEAR HI BYTE FOR COMPARES           02017100
C13A3    CR    R8,RA               CDE=CDE OF BLOCK                     02017500
         BE    WRITESUR            YES, CDE FOUND GO CHECKPOINT BLOCK   02025100
         USING CDENTRY,R8          CDE                                  02027100
         L     R8,CDCHAIN          GET ADDRESS OF NEXT CDE       Y02076 02029102
         LA    R6,N1(R6)           INCREMENT INDEX BY 1                 02031100
         B     C13A3               SEE IF THIS IS THE ONE               02031500
         DROP  R8                  CDE                                  02031900
         EJECT                                                          02032300
*                                                                       02032700
*        ROUTINE TO DETERMINE POSITION OF AN RB ON P/P TCB RB CHAIN     02040300
*                                                                       02042300
*        INPUT - @ OF RB TO BE FOUND IN GPR 10.                         02044300
*                                                                       02046300
*              - RETURN @ IN GPR 13. ROUTINE BRANCHES TO WRITESUR.      02046700
*                                                                       02047100
*                                                                       02047500
         SPACE 3                                                        02047900
SRCHRBQ  SR    R6,R6               INIT. POSITION INDEX = 0.            02055500
         LTR   RA,RA               IS RB @ = 0                          02057500
         BZ    WRITESUR            YES, NO RB SO LEAVE                  02059500
         L     R8,TCBRBP           GET FIRST RB @ FROM TCB              02061500
         LA    R8,N0(R8)           CLEAR HI BYTE FOR COMPARES.          02061900
SRCHRB2  LA    R6,N1(R6)           INCR. POSITION INDEX BY 1.           02062300
         CR    R8,RA               RB=RB OF BLOCK                       02062700
         BE    WRITESUR            YES, RB FOUND GO CHECKPOINT BLOCK    02063100
         USING RBSECT,R8           RB                                   02070700
         TM    RBSTAB2,RBTCBNXT    IS THIS LAST RB                      02072700
         BO    SRCHRBQ1            YES, RB NOT FOUND                    02074700
         ICM   R8,M7,RBLINKB       GET @ OF NEXT RB                     02076700
         B     SRCHRB2             GO SEE IF THIS IS THE ONE            02077100
SRCHRBQ1 SR    R6,R6               RB NOT FOUND SO RESET INDEX TO 0.    02077500
*        FALL THROUGH TO WRITESUR                                       02077900
         DROP  R8                  RB                                   02078300
         EJECT                                                          02085900
*                                                                       02087900
*        ROUTINE TO FORMAT THE SUR BUFFER                               02089900
*                                                                       02091900
*        INPUT-SIZE OF CONTROL BLOCK IN CKLNT                           02092300
*             -@ OF CONTROL BLOCK TO CHECKPOINT IN GPR 3                02092700
*             -APPENDAGE LENGTH FOR SUR IN CKAPPLNT (2 BYTES)           02093100
*             -CHECKCODE FOR CONTROL BLOCK IN CKCODE                    02093500
*             -@ OF NEXT BYTE OF BUFFER IN CKBFSTAD                     02101100
*             -@ OF START OF SUR BUFFER IN CMBUF                        02103100
*             -NUMBER OF BYTES LEFT IN BUFFER IN CKBFLWA                02105100
*             -@ OF CDE/LPDE IF NECESSARY IN GPR 10                     02107100
*             -POSITION OF CDE/RB ON QUEUE IF NECESSARY IN GPR 6.       02107500
*             -RETURN ADDRESS IN GPR 13.                                02107900
*                                                                       02108300
*                                                                       02108700
*        OUTPUT-CKAPPLNT SET TO 0 (2 BYTES)                             02116300
*              -CKBFSTAD UPDATED TO @ OF NEXT AVAIL. BYTE               02118300
*              -CKBFLWA UPDATED TO NO OF BYTES LEFT IN BUFFER           02120300
*                                                                       02122300
*                                                                       02122700
         SPACE 3                                                        02123100
WRITESUR DS    0H                  BUFFER HANDLER ROUTINE               02123500
C13A1    STM   R2,RD,CKOBHSAV      SAVE REGS                            02123900
         LH    R4,CKAPPLNT         GET APPENDAGE LENGTH IF ANY          02131500
         A     R4,CKLNT            INCREMENT BY BLOCK LENGTH            02133500
         LA    R4,N1(R4)           ADD 1 FOR CHECKCODE                  02135500
*        R4 NOW CONTAINS # OF BYTES  NEEDED TO CHECKPOINT THIS BLOCK    02137500
         C     R4,CKBFLWA          IS THERE ENOUGH ROOM IN BUFFER       02137900
         BNH   C13C1               YES, GO MOVE THE BLOCK               02138300
         CLC   CMBUF+N1(N3),CKBFSTAD+N1 IS SUR BUFFER EMPTY             02138700
         BE    C13C1               YES, MOVE AS MUCH AS POSSIBLE        02139100
         L     R7,CKBFLWA          GET LENGTH AVAIL.                    02162800
         LTR   R7,R7               IS SUR BUFFER FULL                   02172800
         BZ    C13A22              YES, BYPASS SETTING NEXT BYTE TO 0   02182800
         L     R8,CKBFSTAD         GET @ OF NEXT AVAIL. BYTE            02184800
         MVI   N0(R8),N0           SET NEXT BYTE OF BUFFER TO 0 TO      02185200
*                                  INDICATE END OF DATA                 02185600
C13A22   BAL   R7,WRITERTN         WRITE OUT CURRENT SUR BUFFER         02186000
C13C1    L     R8,CKBFSTAD         GET @ NEXT AVAIL. BYTE               02186400
         MVC   N0(N1,R8),CKCODE    MOVE IN CHECKCODE FOR BLOCK          02186500
         BCTR  R4,R0               DECR. BLKLEN BY LENGTH OF CHECKCODE  02186600
         LA    R8,N1(R8)           UPDATE @ OF NEXT AVAIL. BYTE         02188500
         ST    R8,CKBFSTAD         *                                    02190500
         L     RF,CKBFLWA          UPDATE REMAINING BYTE COUNT          02190900
         BCTR  RF,R0               *                                    02191300
         ST    RF,CKBFLWA          *                                    02191700
C13C2    C     R4,CKBFLWA          BLKLEN > # BYTES LEFT                02192100
         BH    C13C3               YES, GO MOVE AS MUCH AS POSSIBLE     02192200
         LR    RF,R4               COMPUTE LENGTH TO BE MOVED           02192300
         SH    RF,CKAPPLNT         REMOVE APPENDAGE SIZE IF ANY         02194800
         C     RF,HUNDRED          MOVING MORE THAN FF BYTES ? @ZA14558 02195437
         BNL   CMVCL               YES BRANCH TO MVCL          @ZA14558 02196037
         BCTR  RF,R0               ADJUST FOR EXECUTE OF MOVE           02196800
         EX    RF,MOVEBLK          MOVE THE BLOCK TO SUR BUFFER         02198800
         CLI   CKCODE,XLCODE       IS IT AN EXTENT LIST                 02199200
         BE    C13D1               YES, GO UPDATE BUFFER POINTERS       02199600
         L     RD,CKLNT            GET LENGTH OF BLOCK                  02199700
         A     RD,CKBFSTAD         COMPUTE @ OF APPENDAGE AREA IN BUF   02199800
         CLI   CKCODE,PRBLCODE     IS IT PRB W/CDE ON LPAQ              02199900
         BE    APNDEP              YES, GO PUT IN MODULE NAME AND EP    02203400
         CLI   CKCODE,LLELCODE     IS IT LLE W/CDE ON LPAQ              02205400
         BE    APNDEP              YES, GO PUT IN MODULE NAME AND EP    02205800
         CLI   CKCODE,PRBJCODE     IS IT PRB W/CDE ON JPQ               02206200
         BE    CKPRB               YES, GO PUT CDE POSITION IN RBCDE    02206600
         CLI   CKCODE,LLEJCODE     IS IT LLE W/CDE ON JPQ               02206700
         BE    CKLLE               YES, GO PUT CDE POSITION IN LLCDPTR  02206800
         CLI   CKCODE,SCBCODE      IS IT A STAE CONTROL BLOCK           02213600
         BE    CKSCB               YES, GO PUT RB POSITION IN SCBOWNRA  02215600
         CLI   CKCODE,SVRBEOVC     IS IT AN EOV SVRB             Y02076 02216102
         BE    C13D1               BR YES                        Y02076 02216602
         CLI   CKCODE,SVRB234C     IS IT T2,3,4 SVRB                    02217600
         BE    CKT234              YES, GO APPEND EP AND SVC NO.        02219600
         CLI   CKCODE,SVRB4NCD     IS IT N'TH LOAD OF T4 SVC.           02220000
         BE    APNDEP              YES, GO PUT IN MODULE NAME AND EP    02220400
         CLI   CKCODE,CDECODE      IS IT A CDE                          02227800
         BNE   C13D1               NO, JUST UPDATE BUFFER POINTERS      02229800
         USING CDENTRY,R8          CDE                                  02231800
         ST    R6,CDRRBP           RB POS. INDEX IN CDE IN BUF   Y02076 02231902
         TM    CDATTR2,CDOLY       Q - OVERLAY PROGRAM           Y02076 02232002
         BZ    C13D1               BR NO                         Y02076 02232102
         L     R2,CDXLMJP          GET EXTENT LIST ADDR          Y02076 02232202
         USING XTLST,R2            XTLST                         Y02076 02232302
         L     R2,XTLMSBAA         GET SEGTAB ADDR               Y02076 02232402
         DROP  R2                  XTLST                         Y02076 02232502
         L     RF,CVTPTR           GET CVT ADDR                  Y02076 02232602
         USING CVTMAP,RF           CVT                           Y02076 02232702
         CLC   N1(N3,R2),CVTLINK+N1 LINKLIB DCB                  Y02076 02232802
         BNE   C13D1               BR NO                         Y02076 02233002
         OI    CDRRBP,LINKLIB      SET LINKLIB INDICATOR         Y02076 02233102
         DROP  RF                  CVT                           Y02076 02233202
C13D1    L     R8,CKBFSTAD         GET @ OF NEXT AVAIL. BYTE OF BUFFER  02234200
         AR    R8,R4               UPDATE NEW START @ FOR NEXT BLOCK    02234600
         ST    R8,CKBFSTAD         * SAVE IT FOR NEXT CALL              02235000
         L     RF,CKBFLWA          GET OLD BYTES REMAINING              02235400
         SR    RF,R4               COMPUTE NEW BYTES REMAINING          02235500
         ST    RF,CKBFLWA          SAVE IT FOR NEXT CALL                02243100
C13D2    XC    CKAPPLNT,CKAPPLNT   CLEAR APPENDAGE LENGTH CELL          02245100
         LM    R2,RD,CKOBHSAV      RESTORE REGS                         02247100
         BR    RD                  RETURN TO CALLER                     02249100
         SPACE 3                                                        02249500
*        BLOCK IS TOO LONG FOR THE BUFFER SO IT MUST BE SEGMENTED       02249900
         SPACE 3                                                        02250300
C13C3    L     RF,CKBFLWA          GET LENGTH AVAIL. IN BUFFER          02250700
         C     RF,HUNDRED          LENGTH GREATER THAN FF HEX  @ZA14558 02250837
         BNL   CMVCL               YES BRANCH                  @ZA14558 02251237
         BCTR  RF,R0               ADJUST FOR EXECUTE OF MOVE           02251637
         EX    RF,MOVEBLK          FILL THE BUFFER                      02252037
         A     R3,CKBFLWA          UPDATE BLOCK POINTER                 02252437
         S     R4,CKBFLWA          UPDATE BLOCK LENGTH                  02253200
         BAL   R7,WRITERTN         WRITE OUT FILLED BUFFER              02255200
         L     R8,CKBFSTAD         RESTORE BUFFER POINTER               02257200
         LTR   R4,R4               ANY MORE TO BE MOVED                 02257600
         BP    C13C2               YES, GO MOVE IT                      02257700
         B     C13D2               NO, GO RESET APP. LEN AND RETURN     02264400
* USE MVCL AS LENGTH IS TOO LONG FOR MVC INSTRUCTION           @ZA14558 02264537
CMVCL    EQU   *                                               @ZA14558 02264637
         L     R8,CKBFSTAD         GET STARTING ADDRESS OF SUR @ZA14558 02264737
         LR    RE,R8               GET SUR ADDRESS INTO REG E  @ZA14558 02264837
         LR    R6,R3               GET FIELD ADDRESS IN REG 6  @ZA14558 02264937
         LR    R7,RF               PUT LENGTH INTO REG      7  @ZA14558 02265037
         MVCL  RE,R6               MOVE BIG BLOCK              @ZA14558 02265137
         L     RF,CKBFLWA          RELOAD REG F                @ZA14558 02265237
         CR    R4,RF               COMPARE REG 4 WITH F        @ZA19627 02265337
         BL    AHEAD               BRANCH IF 4 IS LESS         @ZA19627 02265437
         SR    R4,RF               DECREMENT LENGTH IN REG  4  @ZA14558 02265537
         AR    R3,RF               POINT R3 TO NEW FIELD ADDR  @ZA14558 02265637
         BAL   R7,WRITERTN         WRITE SUR BUFFER OUT        @ZA14558 02265737
         L     R8,CKBFSTAD         RELOAD SUR STARTING ADDRESS @ZA27110 02265837
         LTR   R4,R4               ALL DATA PUT OUT ???        @ZA14558 02266037
         BP    C13C2               NOT YET GO FINISH           @ZA14558 02266237
         B     C13D2               YES END OF PROCESSING       @ZA14558 02266437
AHEAD    EQU   *                                               @ZA19627 02266637
         AR    R8,R4               POINT TO NEXT SUR RECORD    @ZA19627 02266837
         ST    R8,CKBFSTAD         SET UP ADDRESS OF NEXT SUR  @ZA19627 02267037
         SR    RF,R4               DECREMENT BYTE COUNT LEFT   @ZA19627 02267237
         ST    RF,CKBFLWA          SAVE COUNT IN WORK AREA     @ZA19627 02267437
         B     C13D2               BRANCH TO PROCESS NEXT SUR  @ZA19627 02267637
*                                                              @ZA14558 02267837
         SPACE 3                                                        02268037
*        THE BLOCK IS A PRB WITH CDE ON JPA QUEUE                       02268400
         SPACE                                                          02270400
         USING RBPRFXST,R8         RB                                   02270800
CKPRB    STCM  R6,M7,RBCDE1        PUT CDE INDEX INTO RB IN BUFFER      02271200
         B     C13D1               GO UPDATE BUFFER POINTERS            02271600
         DROP  R8                  RB                                   02272300
         SPACE 3                                                        02272700
*        THE BLOCK IS AN LLE WITH CDE ON JPA QUEUE                      02273100
         SPACE                                                          02273500
         USING LLE,R8              LLE                                  02273600
CKLLE    ST    R6,LLECDPT          CDE INDEX IN LLE IN BUFFER    Y02076 02273702
         B     C13D1               GO UPDATE BUFFER POINTERS            02273800
         DROP  R8                  LLE                                  02275700
         SPACE 3                                                        02277700
*        THE BLOCK IS AN SCB                                            02278100
         SPACE                                                          02278500
         USING SCB,R8              SCB                                  02278900
CKSCB    STCM  R6,M7,SCBOWNRA      PLACE RB INDEX INTO SCB IN BUFFER    02279300
         B     C13D1               GO UPDATE BUFFER POINTERS            02279400
         DROP  R8                  SCB                                  02279500
         SPACE 3                                                        02285600
*        THE BLOCK IS AN SVRB FOR A TYPE 2, 3, OR 1ST LOAD OF A         02287600
*              TYPE 4 SVC.                                              02289600
         SPACE                                                          02291600
         USING RBPRFXST,R3         RB                                   02292000
CKT234   L     RF,RBLINK           GET @ OF PREV. RB.                   02292100
         DROP  R3                  RB                                   02292200
         SH    RF,CMPFXLN          BACKUP TO PREFIX                     02293700
         USING RBPRFXST,RF         RB (PREVIOUS)                        02295700
         LH    R0,RBINTCOD         GET SVC NO. FOR THIS SVRB            02296100
         STC   R0,N4(RD)           PUT SVC NO. INTO SUR APPENDAGE AREA  02296500
         DROP  RF                  RB (PREVIOUS)                        02296900
         L     RE,CVTPTR           GET @ OF CVT                         02297400
         USING CVT,RE              CVT                                  02297800
         L     RE,CVTABEND         GET @ OF SECONDARY CVT               02298200
         DROP  RE                  CVT                                  02298300
         USING SCVTSECT,RE         SCVT                                 02299600
         L     RE,SCVTSVCT         GET @ OF SVC TABLE (IBMORG)          02301600
         DROP  RE                  SCVT                                 02302000
CKT234EP SLL   R0,N3               MAKE SVC NO. AN INDEX FACTOR  Y02076 02303802
         AR    RE,R0               GET @ OF SVC TABLE ENTRY             02303900
         MVC   N0(N4,RD),N0(RE)    MOVE ENTRY POINT @ TO SUR APPENDAGE  02309300
         B     C13D1               GO UPDATE BUFFER POINTERS            02311300
         SPACE 3                                                        02316600
*        THE BLOCK IS A SUBSEQUENT LOAD OF A TYPE 4 SVC, A PRB          02318100
*        WITH THE CDE ON THE LPAQ, OR AN LLE WITH THE CDE ON THE LPAQ   02320100
         SPACE                                                          02320500
         USING CDENTRY,RA          CDE                                  02320900
APNDEP   MVC   N0(N8,RD),CDNAME    MOVE MODULE NAME TO SUR APPENDAGE    02321000
         MVC   N8(N4,RD),CDENTPT   MOVE IN ENTRY POINT ADDRESS          02321100
         DROP  RA                  CDE                                  02321200
         B     C13D1               GO UPDATE THE POINTERS               02322700
*                                                                       02324700
*        THE FOLLOWING INSTRUCTION IS THE SUBJECT OF EXECUTE            02325100
*        INSTRUCTIONS TO MOVE A CONTROL BLOCK INTO THE SUR BUFFER.      02325500
*                                                                       02325600
         SPACE                                                          02325700
MOVEBLK  MVC   N0(N0,R8),N0(R3)    MOVES BLOCK TO SUR BUFFER            02325800
         EJECT                                                          02330800
*                                                                       02332800
*        ROUTINE TO OUTPUT THE SUR RECORD                               02334800
*                                                                       02335200
*        INPUT - RETURN ADDRESS IN GPR 7.                               02335600
*                                                                       02336000
*        OUTPUT - SUR BUFFER WRITTEN TO CHECKPOINT DATA SET             02336100
*               - SUR BUFFER POINTERS REINITIALIZED.                    02336200
*                                                                       02336300
*                                                                       02337600
         SPACE 3                                                        02339600
WRITERTN L     R5,CKDCBAD          GET DCB @ FOR CHECKPOINT DATA SET    02340000
         LA    RD,CKREGSAV         GET @ OF STD SAVE AREA FOR BSAM      02340400
         WRITE CKDECB1,SF,(5),,MF=E     WRITE OUT THE SUR BUFFER        02340700
         CHECK CKDECB1             COMPLETE THE WRITE                   02341100
         TM    CKFLAG1,CKTAPE      IS DATA SET ON TAPE                  02341200
         BZ    CMEOVDA             NO THEN CHECK FOR EOV ON DASD        02342400
         L     RF,CKTSTEOV         GET @ VOL SEQ NO IN UCB              02344400
         CLC   N0(N4,RF),CKEOVCMR  DID EOV OCCUR (IS SEQ NO CHANGED)    02344500
         BNE   CMEOV               YES, EOV IS INDICATED                02344600
CMTIOTST CLI   CKRETIO,CKIOERR     WAS THERE AN I/O ERROR               02344700
         BE    CKEROUT             YES, GO XCTL TO I/O RESUME           02345100
C13B1    L     RF,CMBUF            RE-INITIALIZE THE CURRENT BUFFER     02345500
         ST    RF,CKBFSTAD         POINTER TO START OF SUR BUFFER       02345600
         LA    RF,SURL             RE-INITIALIZE THE NUMBER OF BYTES    02345700
         ST    RF,CKBFLWA          AVAILABLE TO LENGTH OF SUR           02345802
         BR    R7                  RETURN TO CALLER                     02345900
         SPACE 3                                                        02347000
         USING IHADCB,RF           DCB                                  02349000
CMEOVDA  L     RF,CKDCBAD          GET @ OF CHKPT DCB                   02349100
         L     RF,DCBDEBAD         GET @ OF DEB                         02349200
         DROP  RF                  DCB                                  02349700
         USING DEBBASIC,RF         DEB                                  02350100
         CLC   DEBNMEXT(N1),CKTSTEOV    IS IT EOV ON DASD               02350500
         DROP  RF                  DEB                                  02350600
         BE    CMTIOTST            NO, CHECK FOR I/O ERROR              02350700
CMEOVER  MVI   CKRETIO,N8          SET RETURN CODE TO 8                 02355100
         LA    RF,CKERIO7          INDICATE EOV MESSAGE CODE            02357100
         STH   RF,CKMSGCOD         PUT IT IN WORK AREA                  02359100
CKEROUT  MVI   CKXCTL,CHARN        SET TO XCTL TO IGC0N06C              02359500
         B     C11H7               GO XCTL                              02359900
         SPACE                                                          02360300
CMEOV    TM    CKFLAG2,CKEOV       IS IT 2ND EOV FOR THIS REQUEST       02360600
         BO    CMEOVER             YES, GO TERMINATE CHECKPOINT         02361000
         OI    CKFLAG2,CKEOV       1ST EOV SO TRY AGAIN                 02361100
         MVI   CKXCTL,CHAR2        SET TO XCTL TO IGC0206C              02361200
         B     C11H7               GO XCTL                              02362400
         SPACE 3                                                        02364400
*                                                                       02364800
*        CHECKMAIN 2 SYNAD ROUTINE                                      02364900
*                                                                       02365000
         SPACE                                                          02366200
SYNAD    LA    R0,X317             GET MESSAGE CODE FOR I/O ERROR       02368200
         STH   R0,CKMSGCOD         PUT IT IN CHKWA.                     02368600
         MVI   CKRETIO,CKIOERR     SET I/O ERROR FLAG                   02368700
         BR    RE                  RETURN TO CALLER                     02368800
         DROP  R5,RB,RC            TCB,CODE,CHKWA                       02368900
         EJECT                                                          02369000
*                                                                       02369100
*              CONSTANTS AND EQUATES                                    02370300
*                                                                       02372300
         SPACE 3                                                        02372400
         DS    0F                                                       02372537
HUNDRED  DC    X'00000100'         HEX VALUE OF 100 DEC 256    @ZA14558 02372637
ONE8FOX  DC    X'0000018F'         HEX VALUE OF FULL SUR       @ZA14558 02372737
CKMN3NM  DC    C'IGC0H06C'         NAME OF CHECKMAIN 3.                 02372837
         DS    0H                  ALIGNMENT                            02372937
CMPFXLN  DC    AL2(RBPRFLNA)       LENGTH OF THE RB PREFIX              02373037
CKMH4    DC    H'4'                USED TO GET @ OF SVCTABLE-4, HI IBM  02373300
*                                  SVC NUMBER, LO USER SVC NUMBER.      02373400
         SPACE 3                                                        02373500
EOM      EQU   *                   END OF MODULE                        02392300
MODLEN   EQU   EOM-IGC0G06C        LENGTH OF MODULE                     02402300
AREALEN  EQU   MODLEN/10           LENGTH OF PATCH AREA                 02404300
PAREA    DS    CL(AREALEN)         PATCH AREA FOR MAINT. OF 10%         02406300
         SPACE 3                                                        02408300
N0       EQU   0                   0                                    02410300
N1       EQU   1                   1                                    02410700
N2       EQU   2                   2                                    02411100
N3       EQU   3                   3                                    02411500
N4       EQU   4                   4                                    02411900
N8       EQU   8                   8                                    02418200
LINKLIB  EQU   B'10000000'         LINKLIB IND FOR CDE           Y02076 02419202
         SPACE                                                          02420200
M3       EQU   3                   MASK FOR BYTES 2 AND 3 OF REG        02422200
M6       EQU   6                   REG MASK FOR BYTES 1 & 2      Y02076 02422502
M7       EQU   7                   MASK FOR BYTES 1-3 OF REG            02424200
NOTEQ    EQU   7                   MASK TO BRANCH ON UNEQUAL COMPARE    02424300
         SPACE                                                          02424400
CHARN    EQU   C'N'                EBCDIC N                             02430700
CHAR2    EQU   C'2'                ECBDIC 2                             02432700
X317     EQU   X'317'              ERROR MSG NUMBER FOR I/O ERROR       02434700
CKERIO7  EQU   X'31B'              INDICATES EOV ERROR                  02436700
         SPACE                                                          02436800
SURL     EQU   400                 LENGTH OF A SUR RECORD        YM7049 02436902
         SPACE                                                          02443200
SPQECODE EQU   6                   CHECKCODE FOR SPQE                   02445200
SPQESIZE EQU   16                  LENGTH OF AN SPQE             Y02076 02447202
DQECODE  EQU   7                   CHECKCODE FOR DQE                    02449200
FQECODE  EQU   2                   CHECKCODE FOR FQE                    02449300
DQFQLEN  EQU   16                  LENGTH OF A DQE OR FQE               02449400
CDECODE  EQU   9                   CHECKCODE FOR CDE                    02449500
CDELEN   EQU   32                  LENGTH OF CDE                 Y02076 02455702
XLCODE   EQU   X'17'               CHECKCODE FOR EXTENT LIST            02457700
LLEJCODE EQU   X'0A'               CHECKCODE FOR LLE W/CDE ON JPQ       02459700
LLELCODE EQU   X'0E'               CHECKCODE FOR LLE W/CDE ON LPAQ      02461700
LLELEN   EQU   12                  LENGTH OF AN LLE              Y02076 02462102
LLEAPLEN EQU   12                  LENGTH OF SUR APPENDAGE FOR LLE      02462200
PRBSCODE EQU   5                   CHECKCODE FOR SYNCHED PRB            02462300
PRBLCODE EQU   X'0C'               CHECKCODE FOR PRB W/CDE ON LPAQ      02464300
PRBJCODE EQU   X'0B'               CHECKCODE FOR PRB W/CDE ON JPQ       02466300
SVRB234C EQU   X'1F'               CHECKCODE FOR TYPE 2, 3, 4 SVRB      02468300
SVRB4NCD EQU   X'1E'               CHECKCODE FOR TYPE 4N SVRB           02473600
SVRB234A EQU   5                   SUR APP. LEN. FOR TYPE 2,3,4 SVRB    02475600
RBLPALEN EQU   12                  SUR APP. LEN. FOR 4N SVRB, LPAQ PRB  02477600
NSTAECOD EQU   X'0D'               CHECKCODE FOR TCBNSTAE FIELD         02478000
NSTAELEN EQU   4                   LENGTH OF TCBNSTAE FIELD OF TCB      02478400
SCBCODE  EQU   X'11'               CHECKCODE FOR SCB                    02478800
FOECODE  EQU   X'08'               CHECKCODE FOR FOE                    02479300
EOVSVC   EQU   55                  SVC 55 (EOV)                  Y02076 02479402
SVRBEOVC EQU   X'1D'               EOV SVRB CODE FOR SUR         Y02076 02479502
         EJECT                                                          02479602
         IEEVCHWA VER=3            AOS2 VERSION OF WA                   02479900
         EJECT                                                          02480300
*        CHECKMAIN WORK AREA PORTION OF CHECKPOINT WORK AREA            02480700
         SPACE                                                          02480800
CKRETIO  EQU   CKRETCOD+1          BYTE FOR ERROR RETURN CODE           02480900
CKTSTEOV EQU   CKUNIT              @ OF VOL SEQ NO IN UCB (TAPE)        02482400
*                                  CURRENT EXTENT NO. (DASD)            02484400
CKEOVCMR EQU   CKUNIT+4            VOL SEQ NO OF CURRENT VOL. (TAPE)    02484800
CMADEOV  DS    F                   SAVE AREA FOR INFO NEEDED            02485200
CMNEOV   DS    F                   TO TEST IF EOV OCCURRED              02485600
CKBFLWA  DS    F                   REMAINING BYTES IN BUFFER            02490500
CKBFSTAD DS    F                   NEXT BYTE IN BUFFER TO BE FILLED     02492500
CMBUF    DS    F                   BUFFER ADDRESS                       02494500
CKMN40   DS    2F                  SAVE AREA FOR XCTL ADDRESS           02494900
CK40XCTL DS    F                   SAVE AREA FOR XCTL                   02495300
CKOBHSAV DS    12F                 SAVE AREA FOR SUBROUTINES            02496600
CME2     DS    CL1                 BIG BLOCK SWITCH                     02498600
CKCODE   DS    CL1                 SUR CODE FOR THIS BLOCK              02499000
CKLNT    DS    F                   SUR LENGTH FOR THIS BLOCK            02499100
CMSYSA   DS    F                   SYSTEM WORK CELL                     02499200
CKXCTL   EQU   CKMN40+4            ALLOWS FOR CHANGE OF XCTL ADDRESS    02499300
SWITCH   DS    F                   SWITCH WORD                          02499600
CKAPPLNT DS    H                   APPENDAGE LENGTH FOR THIS BLOCK      02500000
CKAPPLEN EQU   CKAPPLNT+N1         OFFSET TO SECOND BYTE                02500100
         EJECT                                                          02500200
         CVT   DSECT=YES,PREFIX=NO                                      02501300
         EJECT                                                          02503300
         IHASCVT                                                        02503700
         EJECT                                                          02504000
         IKJTCB                                                         02504400
         EJECT                                                          02504800
         IKJRB                                                          02509100
         EJECT                                                          02511100
         IHASCB                                                         02513100
         EJECT                                                          02513200
         IHACDE                                                         02513300
         EJECT                                                          02513400
         IHAXTLST                                                       02513900
         EJECT                                                          02514300
         IHALLE                                                         02514700
         EJECT                                                          02514800
         IHASPQE                                                        02514900
         EJECT                                                          02516100
         IHADQE                                                         02518100
         EJECT                                                          02518500
         IHAFQE                                                         02518600
         EJECT                                                          02519800
         IHAFOE                                                         02521800
         EJECT                                                          02522200
         IHADCB DSORG=(PO,PS),DEVD=(DA,TA)                              02522300
         EJECT                                                          02526300
         IEZDEB                                                         02528300
.LIB1BA1 ANOP                                                           02530300
         AIF   ('&LIB' EQ 'LIB2').LIB2BA1  TEST FOR LIB2(AOS)           02530400
*                                                                       02530700
*                                                                     * 02534400
* STATUS - CHANGE LEVEL 001                                           * 02538400
*                                                                     * 02542400
*                                                                     * 02546400
* FUNCTION...                                                         * 02550400
*   WRITES SUPERVISOR RECORDS ON CHKPT DATA SET. THESE CONTAIN THE    * 02554400
*   MAIN STORAGE SUPERVISOR'S CONTROL BLOCKS, AND SOME OF THE CONTENTS* 02558400
*   SUPERVISOR'S CONTROL BLOCKS,INCLUDING RB'S AND LLE'S.             * 02562400
*                                                                     * 02581200
*                                                                     * 02600017
* ENTRY...                                                            * 02800017
*   IGC0G06C                                                          * 03000017
*                                                                     * 03200017
*                                                                     * 03400017
* INPUT...                                                            * 03600017
*   N/A                                                               * 03800017
*                                                                     * 04000017
*                                                                     * 04200017
* OUTPUT...                                                           * 04400017
*   CHKPT DATA SET SUPERVISOR RECORDS                                 * 04600017
*                                                                     * 04800017
*                                                                     * 05000017
* EXITS                                                               * 05200017
*   NORMAL- XCTL TO IGC0H06C (NEXT LOAD OF RESTART)                   * 05400017
*   ERROR                                                             * 05600017
*   (1)UNRECOVERABLE EOV ON CKPT DATA SET- XCTL TO IGC0N06C WITH      * 05800017
*      RETURN CODE OF 8                                               * 06000017
*   (2)RECOVERABLE EOV ON CKPT DATA SET- XCTL TO IGC0206C             * 06200017
*   (3)I/O ERROR- XCTL TO IGC0N06C WITH RETURN CODE OF 12             * 06400017
*                                                                     * 06600017
*                                                                     * 06800017
         EJECT                                                          07000017
*                                                                       07200017
*       THIS LOAD OF CHKMAIN WRITES OUT THE FOLLOWING                   07400017
*       CONTROL BLOCKS.                                                 07600017
*                                                                       07800017
*                                            CODE      LENGTH           07880017
*                                            IN HEX    IN BYTES         07960017
*                                                                       08040017
*        DQE   DESCRIPTOR QUEUE ELEMENT        7          16            08120017
*        LLE   LOAD LIST ELEMENT                                        08200017
*              LLE WITH CDE IN JPA             A           8            08280017
*              LLE WITH CDE IN LPA             E           8            08360017
*        PQE   PARITION QUEUE ELEMENT          4          32            08440017
*              PQE WITH FBQE                   3          32            08520017
*        PRB   PROGRAM REQUEST BLOCK                                    08600017
*              PRB WITH CDE IN JPA             B          32            08680017
*              PRB WITH CDE IN LPA             C          32            08760017
*              PRB WITH NO CDE (SYNCH)         5          32            08840018
*        SCB   STAE CONTROL BLOCK             11          16     A37977 08920020
*        SPQE  SUB-POOL QUEUE ELEMENT          6           8            09000017
*        STAE  TCB STAE                        D           4     A37977 09050020
*        SVRB  SUPERVISOR REQUEST BLOCK                                 09080017
*              RESIDENT SVRB                  1F         FROM           09160017
*              TRANSIENT SVRB                 1E       RBSIZE BYTE      09240017
*        USER  USER FIELD IN TCB               F           4            09320017
*                                                                       09400017
*        ORDER IN WHICH CONTROL BLOCKS ARE WRITTEN OUT           A37977 09450020
*        (READ ACROSS)                                           A37977 09460020
*                                                                A37977 09470020
*        PQE     SPQE         DQE    RB     LLE    TCBNSTAE      A37977 09500020
*        SCB     TCBUSER      CDE    TCBFIELDS     G.P. REGS     A37977 09550020
*        DEB     IRB          F.P. REGS            TIOT          A37977 09560020
         SPACE 2                                                        09600018
IGC0G06C CSECT                                                          09800017
*3050004000,010000,088400,096000-097000,116000,132000,168000,182000,    09820018
*    192000,198000,214000,224000-231000,234000,248000,257000,           09840018
*    266000-268000,270000,278000,294000,308000,310000,319000-338200,    09860018
*    346000,349500,352800-354000,359000,366000-368000,374000,382000,    09880018
*    386000,388000,392000,408000-432000,434000,456000-460000,462000,    09900018
*    472000,482000-496000,508000,514000-526000,532000-575000,           09920018
*    614000-615000,630000-632000,680000,686300,904000-910000            09940018
*470500                                                           M3721 09950019
*089200,390370-390800,390920-391840                              A37977 09952020
*0417604000,622000-636000,652000-656000                          A38515 09956021
         EJECT                                                          09960018
C7A1     BALR  RB,N0          ESTABLISH BASE                            10000017
         USING *,RB                                                     10200017
         USING CHKWA,RC                                                 10400017
         USING IHADCB,R2                                                10500017
         USING TCBSECT,R5                                               10550018
         L     R2,CKDCBAD     CHKPT. DCB ADDRESS                        10600017
         LA    R7,C13B5       ADDRESS OF SYNAD ROUTINE                  10800017
         ST    R7,CMSYSA      STORE ADDRESS IN W.A.                     11000017
         MVC   SYNADCB(N3),CMSYS1       AND CHKPT DCB                   11200017
         L     R5,CKTCBAD     TCB ADDRESS                               11400017
         DROP  R2                                                       11500017
         MVC   CKMN40(N8),CKMN32A       SET UP XCTL PARM LIST           11600018
         LA    R4,SURL        BUFFER LENGTH.                            11800017
         STH   R4,CKLNGTH1    INITIALIZE DECB1                          12000017
         ST    R4,CKBFLWA     INIT.NO. OF REMAINING                     12100017
*                             BYTES IN BUFFER                           12200017
         L     R8,CKBFOFST    BUFFER ADDRESS                            12400017
         AR    R8,RC                                                    12600017
         ST    R8,CKBFSTAD    INIT. STARTING ADDRESS OF BUFFER          12800017
         ST    R8,CMBUF       SAVE BUFFER ADDRES                        13000017
*                                                                       13250017
*        ROUTINE TO PROCESS PQE'S                                       13300017
*                                                                       13350017
         L     R3,TCBPQE      DUMMY PQE                                 13400017
         L     R3,PQENXT(R3)  GET FIRST PQE                             13600017
C7B1A    EQU   *                                                        13800017
         C     R3,N0(R3)      ANY FBQES                                 14000017
         BNE   C7B1B               BRANCH IF YES                        14200017
         MVI   CKCODE,N4      PQE WITH NO FBQE PTR CODE                 14400017
         B     C7B1C          NO  FBQES                                 14600017
C7B1B    EQU   *                                                        14800017
         MVI   CKCODE,N3      PQE WITH FBQE PTRS CODE                   15000017
C7B1C    EQU   *                                                        15200017
         MVI   CKLNT,N32      PQE=LENGTH 32                             15400017
         BAL   RD,C13A1       GO TO WRITE SUP RECORDS ROUTINE           15600017
         L     R3,PQENXT(R3)       GET NEXT PQE                         15800017
         LTR   R3,R3          Q. LAST PQE                               16000017
         BNE   C7B1A          PROCESS NEXT FBQE                         16060017
         EJECT                                                          16090018
*                                                                       16120017
*        ROUTINE TO PROCESS SPQE'S AND DQE'S FOR                        16180017
*              (1)  L-SHAPED PROGRAM                                    16240017
*              (2)  INITIATOR                                           16300017
*              (3)  PROBLEM PROGRAM                                     16360017
*                                                                       16420017
*                                                                       16480017
         L     R5,TCBOTC      INITIATOR'S TCB                           16580017
         LA    R6,N2          SET COUNT TO 2                            16780018
C7A4     EQU   *                                                        17000017
         L     R5,TCBOTC      GET ORIGINATING TCB                       17200017
C7B3     EQU   *                                                        17400017
         L     R3,TCBMSS      GET SPQE POINTER                          17600017
C7D3     EQU   *                                                        17800017
         LA    R3,N0(R3)                                                18000017
         LTR   RA,R3          Q.  LAST SPQE      ALSO SAVE R3           18200018
         BZ    C7H6           GO TO   PP TCB                            18400017
         MVI   CKCODE,N6      SPQE CODE = 6                             18600017
         MVI   CKLNT,N8       LENGTH=8                                  18800017
         BAL   RD,C13A1       WRITE SUP RECORDS ROUTINE                 19000017
         TM    N0(R3),X80     Q. OWNED SPQE                             19400017
         BO    C7H4           NO- SKIP CODE TO SAVE DQES.               19600017
C7F3     EQU   *                                                        19700018
         L     R3,SPQEDQE(R3) YES  GET DQE POINTER                      19800018
         LA    R3,N0(R3)                                                20000017
         LTR   R3,R3          Q.  ANY DQE'S                             20200017
         BZ    C7H4           NO                                        20400017
         MVI   CKCODE,N7      DQE = CODE 7                              20600017
         MVI   CKLNT,N16      LENGTH =16                                20800017
         BAL   RD,C13A1       TO OUTPUT BUFFER HANDLER                  21000017
         B     C7F3           SAVE DQES                                 21200017
C7H4     EQU   *                                                        21300018
         L     R3,N0(RA)      RESTORE R3                                21400018
         B     C7D3           PROCESS NEXT SPQE                         21600017
C7H6     EQU   *                                                        21800017
         L     R5,CKTCBAD     GET PP TCB                                22000017
         BCTR  R6,N0          DECREMENT COUNT                           22200017
         LTR   R6,R6          Q. HAVE INITIATOR SPQE'S BEEN SAVED       22500018
         BH    C7A4           A. NO -GO TO SAVE THEM                    22800018
         BE    C7B3           A. YES SAVE P/P SPQE'S                    23100018
         EJECT                                                          23300018
*                                                                       23600017
*                                                                       23800017
*        ROUTINE TO SAVE PRB'S                                          24000017
*                                                                       24200017
*                                                                       24400017
C10A1    EQU   *                                                        24600017
         L     R3,N0(R5)      CHKPT SVRB                                25000017
         USING RBSECT,R3                                                25200017
         L     R3,NEXTRB      GET FIRST PRB                             25400017
         LA    R2,C10H4       RETURN ADDR                               25600017
C10A2    EQU   *                                                        25700018
         TM    RBSTAB,TRANS   Q.  SVRB FOR TRANS SVC                    25800017
         BO    C10J1          YES                                       26000017
         TM    RBSTAB,RBFTP   Q.  SVRB FOR TYPE 2 SVC                   26200017
         BO    C10K1          YES                                       26400017
         LH    RF,PRBCDE      CODE FOR PRB WITH CDE IN JPA              26500018
         LA    RD,N1(RF)      CODE FOR PRB WITH CDE IN LPA              26600018
         L     R4,RBEP        GET THE CDE FOR THIS PRB                  27000018
         LA    R4,N0(R0,R4)   CLEAR HI ORDER BYTE                       27200017
         LTR   R4,R4          IS THERE A CDE FOR THIS PRB               27400017
         BP    C10D1          YES                                       27600017
         MVI   CKCODE,N5      CODE FOR SYNCHED PRB IS 5                 27800018
         B     C10K2          TO SVRB ROUTINE                           28000017
C10D1    EQU   *                                                        28200017
         L     R7,TCBJPQ      FIRST CDE OFF TCB                         28400017
         USING CDESECT,R7                                               28600017
         LA    R6,N1          FIRST CDE INDICATOR                       28800017
         LA    R7,N0(R7)      CLEAR HI BYTE                             29000017
C10F1    EQU   *                                                        29100017
         CR    R7,R4          Q.  CDE OFF TCB = CDE OFF PRB             29200017
         BE    C10F2          CDE IN JOB PACK AREA                      29400018
         L     R7,CDATTR1          NEXT CDE OFF TCB                     29600017
         LA    R7,N0(R7)                                                29800017
         LTR   R7,R7          Q.  LAST CDE                              30000017
         BZ    C10H1          YES                                       30200017
         LA    R6,N1(R6)      INCREMENT THE COUNTER                     30400017
         B     C10F1          PROCESS NEXT CDE                          30600017
         EJECT                                                          30680018
*                                                                       30760018
*        SPECIAL HANDLING FOR SVRB'S                                    30840018
*                                                                       30920018
C10J1    EQU   *                                                        30930018
         L     R6,CVTPTR      GET ADR. OF CVT                           30940018
         USING CVTSECT,R6                                               30950018
         L     R6,CVTABEND    GET ADR. OF 2NDARY CVT                    30960018
         USING SCVTSECT,R6                                              30970018
         L     R6,SCVTTACT    GET ADR. OF TRANS. CONTROL TABLE          30980018
         DROP  R6                                                       30990018
         AH    R6,RBTABNO     ADR OF TACT ENTRY FOR SVRB                31000018
         L     R6,N0(R6)      ADR OF BEGINNING OF XSNT AREA             31010018
         LA    R6,N0(R6)      CLEAR HI BYTE                             31020018
         L     R4,OLDPSW5     INSTR CTR FROM PSW IN SVRB                31030018
         SR    R4,R6          GET RELATIVE OFFSET                       31040018
*                             INTO TRANSIENT AREA                       31050018
         ST    R4,CMSYSA      SAVE RELATIVE OFFSET                      31060018
         MVI   CKCODE,N30     CODE FOR XSNT SVRB IS 30                  31070018
         B     C10K2          TO GET SIZE AND SET UP BUFFER             31080018
C10K1    EQU   *                                                        31090018
         MVI   CKCODE,N31     RESIDENT SVC                              31100018
C10K2    EQU   *                                                        31110018
         IC    R4,RBSIZE                                                31120018
         SLL   R4,N3          GET LENGTH OF SVRB,                       31200017
         STC   R4,CKLNT       INCLUDING EXTENDED SAVE AREA              31400017
         BAL   RD,C13A1       WRITE OUT SUR                             31600017
         BR    R2             RETURN TO CALLER                          31800017
*                                                                       33840017
*                                                                       33860017
*        INTERFACE WITH OUTPUT BUFFER ROUTINE SET UP FOR                33880017
*        PRB OR LLE WITH CDE IN LINK PACK AREA                          33900017
*                                                                       33920017
*        REGISTER INPUT                                                 33940017
*                                                                       33960017
*        R2    RETURN ADDRESS                                           33980017
*        R3    ADDRESS OF BLOCK TO BE WRITTEN                           34000017
*        R6    NUMBER OF BLOCK                                          34020017
*        RD    LENGTH AND CODE FOR BLOCK ADDRESSED IN R3                34040017
*                                                                       34060017
*        ON RETURN RD WILL NOT CONTAIN ORIGINAL INPUT                   34080017
*                                                                       34100017
C10H1    EQU   *                                                        34200017
         LA    RD,LPACDE(RD)  INCREMENT LENGTH BY 12 BYTES TO           34260018
*                             ACCOMMODATE MODULE NAMES                  34320018
*                             AND ENTRY POINTS                          34360018
         STH   RD,CKLNT       PRB OR LLE WITH CDE IN LPA                34400017
         BAL   RD,C13A1       WRITE OUT SUR                             34800017
         BR    R2             RETURN                                    34830017
         EJECT                                                          34840018
*                                                                       34860017
*                                                                       34890017
*        INTERFACE WITH OUTPUT BUFFER ROUTINE SET UP FOR                34920017
*        PRB OR LLE WITH CDE IN JOB PACK AREA                           34940018
*        TCB STAE AND USER FIELDS AND SCB'S                             34960018
*                                                                       34980017
*        REGISTER INPUT                                                 35010017
*                                                                       35040017
*        R2    RETURN ADDRESS                                           35070017
*        R3    ADDRESS OF BLOCK TO BE WRITTEN                           35100017
*        R6    NUMBER OF BLOCK                                          35130017
*        RF    LENGTH AND CODE FOR BLOCK ADDRESSED IN R3                35140018
*                                                                       35160017
*        ON RETURN RD WILL NOT CONTAIN ORIGINAL INPUT                   35190017
*                                                                       35220017
C10F2    EQU   *                                                        35250017
         STH   RF,CKLNT       STORE CODE AND LENGTH.                    35350018
         BAL   RD,C13A1       WRITE OUT SUR                             35600017
         BR    R2             RETURN TO CALLER                          35800017
*                                                                       35980017
*        UPDATES PRB POINTER                                            36060017
*                                                                       36140017
C10H4    EQU   *                                                        36220017
         L     R3,NEXTRB      GET NEXT PRB ON CHAIN                     36300017
         LA    R3,N0(R3)      CLEAR HIGH BYTE                           36380017
         CR    R3,R5          Q.  LAST PRB                              36460017
         BNE   C10A2          A.  NO   LOOP TO PROCESS                  36660018
*                                                                       37000017
*                                                                       37200017
*        ROUTINE TO SAVE LLE'S                                          37400018
*                                                                       37600017
*                                                                       37800017
         L     R3,TCBLLS      FIRST LLE OFF TCB                         38000017
C11H4    EQU   *                                                        38200018
         LTR   R3,R3          Q.  ARE THERE ANY LLE'S                   38400017
         BNH   C11H5               DO STAE AND USER FIELD               38500018
         L     R4,LLECOUNT(R3)     FIRST CDE OFF LLE                    38600018
         LA    R4,N0(R0,R4)                                             38630018
         LA    RF,LLECOD     CODE= 10 FOR LLE                           38660018
         LA    RD,LLECDE     CODE= 14 FOR LLE WITH CDE IN LPA           38690018
         BAL   R2,C10D1            FIND THE CDE                         38720018
         L     R3,LLECHAIN(R3)     GET THE NEXT LLE                     38750018
         B     C11H4               PROCESS IT                           38780018
         EJECT                                                          38810018
*                                                                       38840018
*        ROUTINE TO SAVE TCB STAE AND USER FIELDS AND SCB'S             38870018
*                                                                       38900018
C11H5    EQU   *                                                        39000017
         LA    R8,C10F2       QUEUE POSITIONAL RTN ADRS FOR PRB         39004018
         LA    R3,TCBNSTAE    GET ADR OF STAE FIELD                     39008017
         LA    RF,STAECODE    GET CODE FOR STAE                         39016017
         BALR  R2,R8          WRITE OUT STAE FIELD                      39024017
         L     R3,TCBNSTAE    GET ADR OF FIRST SCB               A37977 39026020
C11J1    EQU   *                                                 A37977 39042020
         LA    R3,N0(R3)      CLEAR FLAG BYTE                    A37977 39044020
         LTR   R3,R3          IF NO SCB'S                        A37977 39049020
         BZ    C11H7          PROCESS USER FIELD                 A37977 39056020
         LA    R6,N1          INITIALIZE POSITIONAL POINTER      A37977 39063020
         CLC   N1(N3,R5),SCBRB(R3)  Q.  IS IT THE FIRST RB       A37977 39072020
         BE    C11J4                A.  YES PUT IT IN BUFFER     A37977 39074020
         L     R7,N0(R5)            A.  NO GET ADDR.OF NEXT RB   A37977 39076020
*                                                                A37977 39078020
         USING RBSECT,R7                                         A37977 39080020
*                                                                A37977 39082020
C11J2    EQU   *                                                        39086017
         TM    STAB2,LASTRB        Q.  IS THIS THE LAST RB       A37977 39088020
         BO    C11J3               A.  YES PUT SCB IN BUFFER     A37977 39090020
         LA    R6,N1(R6)           INCREMENT POSITONAL PTR       A37977 39090420
         CLC   RBLINK(N3),SCBRB(R3)   Q.  IS IT THIS RB          A37977 39092020
         BE    C11J4               A.  YES PUT SCB IN BUFFER     A37977 39094020
         L     R7,NEXTRB           A.  NO GET NEXT RB            A37977 39096020
         B     C11J2               AND PROCESS IT                A37977 39098020
C11J3    EQU   *                                                 A37977 39104020
         SR    R6,R6               SHOW RB NOT ON ACTIVE QUEUE   A37977 39104420
C11J4    EQU   *                                                 A37977 39104820
         MVI   CKLNT,SCBSIZE       SET UP LENGTH AND CODE        A37977 39106020
         MVI   CKCODE,SCBCODE      FOR BUFFER ROUTINE            A37977 39108020
         BAL   RD,C13A1            LINK TO BUFFER HANDLER        A37977 39108420
         L     R3,N0(R3)           GET NEXT SCB                  A37977 39108820
         B     C11J1               AND PROCESS IT                A37977 39110020
C11H7    EQU   *                                                        39185017
         LA    R3,TCBUSER          GET ADRS OF USER FIELD               39186017
         LA    RF,USERCODE         GET CODE FOR USER FIELD              39188017
         BALR  R2,R8               AND WRITE IT OUT                     39190017
*                                                                       39240018
*        XCTL  INTERFACE                                                39290018
*                                                                       39340018
C11H6    EQU   *                                                        39400017
         LR    R1,RC          PUT W.A. ADDR IN PARM REG                 39500018
         LA    RF,CKMN40           SET UP XCTL PARM LIST                39600017
         ST    RF,CK40XCTL                                              39800017
         LA    RF,CK40XCTL                                              40000017
         XCTL  SF=(E,(15))   XCTL TO NEXT LOAD                          40400017
         EJECT                                                          41400018
*                                                                       43600017
*                                                                       43800017
*        ROUTINE TO HANDLE OUTPUT BUFFER                                43820017
*                                                                       43840017
*                                                                       43860017
*        REGISTER INPUT TO THIS ROUTINE                                 43880017
*                                                                       43900017
*        R3    ADR OF BLOCK TO BE WRITTEN                               43920017
*        R6    NUMBER OF BLOCK FOR PRB'S AND LLE'S                      43940017
*        RD    RETURN ADR                                               43960017
*                                                                A37977 43970020
*        POSITIONAL POINTERS ARE MOVED FROM THE REGISTER         A37977 43972020
*        SAVE AREA (CKOBHSAV) TO THE POINTER FIELD               A37977 43974020
*        FIELD IN THE CONTROL BLOCK IN THE BUFFER                A37977 43976020
*                                                                       43980017
*                                                                       44000017
*        REGISTERS R2 THRU RD ARE SAVED ON ENTRY AND RESTORED           44020017
*              BEFORE RETURNING                                         44040017
*                                                                       44060017
*                                                                       44080017
*                                                                       44200017
*                                                                       44400017
C13A1    EQU   *                                                        44600017
         STM   R2,RD,CKOBHSAV  SAVE GPRS.                               44800017
         SR    R4,R4          CLEAR REGISTER 4                          45000017
         LA    RD,CKREGSAV                                              45200017
         IC    R4,CKLNT       PLACE LENGTH INTO REG 4                   45400017
         L     R6,CKBFLWA     REMAINING BYTES IN BUFFER                 46400017
         LA    R4,N1(R4)      ALLOW FOR CODE BYTE                       46600017
         L     RA,CKBFSTAD    NEXT BYTE IN BUFFER TO BE FILLED          46800017
         CR    R4,R6        Q. ARE THERE ENOUGH BYTES LEFT FOR SUR      47000017
         BL    C13C1          YES MOVE SUR TO BUFFER              M3721 47050019
         BAL   R7,C13B2       NO THEN WRITE OUT BUFFER                  47100018
         ST    R8,CKBFSTAD    INITIALIZE TO START OF BUFFER             47150018
         LR    RA,R8                                                    47200018
         LA    R6,SURL        LENGTH OF BUFFER                          47250018
         ST    R6,CKBFLWA     SAVE BUFFER LENGTH                        47320018
C13C1    EQU   *                                                        47400017
         MVC   N0(N1,RA),CKCODE                                         47600017
         SH    R4,CMTWO                                                 47800017
         EX    R4,CKMVTOBF    EXECUTE MVC INSTRUCTION                   48000017
         LA    R7,N1          CODE FOR CDE IN LPA                       48100018
         CLI   CKCODE,CODEC   Q. PRB WITH CDE IN LPA                    48200018
         BE    CKPRBC         YES BRANCH TO PROCESS                     48300018
         CLI   CKCODE,CODEE   Q. LLE WITH CDE IN LPA                    48400018
         BE    CKLLEC         YES BRANCH TO PROCESS                     48500018
         SR    R7,R7          NO CDE IN LPA                             48600018
         CLI   CKCODE,CODEB   Q  PRB WITH CDE IN JPA                    48700018
         BE    CKPRB          YES BRANCH TO PROCESS                     48800018
         CLI   CKCODE,CODEA   Q. LLE WITH CDE IN JPA                    48900018
         BE    CKLLE          YES BRANCH TO PROCESS                     49000018
         CLI   CKCODE,SCBCODE     Q.  STAE CONTROL BLOCK         A37977 49050020
         BE    CKSCB              A.  YES SET UP RB PTR          A37977 49060020
         CLI   CKCODE,CODE1E  Q TRANSIENT SVRB                          49100018
         BNE   C13D1          NO ADDITIONAL PROCESSING                  49200018
*                             IS NOT NECESSARY                          49300018
         MVC   N22(N3,RA),CMSYS1   SET RELATIVE ENTRY                   49400018
*                                  OFFSET IN XSNT AREA                  49500018
C13D1    AH    R4,CMTWO       ADJUST NEW ADDRESS                        49800017
         AR    RA,R4          ADJUST NEW START ADDRESS FOR NEXT MOVE    50000017
         ST    RA,CKBFSTAD    STORE ADDRESS                             50200017
         SR    R6,R4          ADJUST NEW REMAINING BYTE AMOUNT          50400017
         ST    R6,CKBFLWA     STORE IN WORK AREA                        50600017
         LM    R2,RD,CKOBHSAV  RESTORE GPRS.                            51000017
         BR    RD             RETURN TO CALLER                          51200017
CKMVTOBF MVC   N1(N1,RA),N0(R3)                                         52800017
*                                                                       53000017
CKPRBC   EQU   *                                                        53300018
         L     RE,N12(R3)          GET CDE                              53600018
         MVC   N33(N12,RA),N8(RE)  ADD NAME AND ENTRY POINT             53900018
CKPRB    EQU   *                                                        54200018
         STC   R7,N15(RA)          CDE INDICATOR                        54500018
         MVC   N16(N1,RA),CHSAV6   POSITIONAL POINTER                   54800018
         B     C13D1               ADJUST POINTERS AND RETURN           55100018
CKLLEC   EQU   *                                                        55400018
         L     RE,N4(R3)           GET CDE                              55700018
         MVC   N9(N12,RA),N8(RE)   ADD NAME AND ENTRY POINT             56000018
CKLLE    EQU   *                                                        56300018
         STC   R7,N7(RA)           CDE INDICATOR                        56600018
         MVC   N8(N1,RA),CHSAV6    POSITIONAL POINTER                   56900018
         B     C13D1               ADJUST POINTERS AND RETURN           57200018
CKSCB    EQU   *                                                        57250020
         MVC   N16(N1,RA),CHSAV6    POSITIONAL POINTER           A37977 57350020
         B     C13D1               ADJUST POINTERS AND RETURN    A37977 57400020
         EJECT                                                          57505017
*                                                                       57510017
*                                                                       57515017
*        ROUTINE TO WRITE OUT SUPERVISOR RECORDS                        57520017
*                                                                       57525017
*                                                                       57530017
*        REGISTER INPUT TO THIS ROUTINE                                 57535017
*                                                                       57540017
*        RA    POINTS TO FIRST UNUSED BYTE IN OUTPUT BUFFER             57545017
*        R7    RETURN ADDRESS FOR NORMAL COMPLETION                     57550017
*                                                                       57555017
*                                                                       57560017
*        REGISTER OUTPUT FROM THIS ROUTINE                              57565017
*                                                                       57570017
*        R8    POINTS TO START OF FREE BUFFER AREA                      57575017
*                                                                       57580017
C13B2    MVI   N0(RA),N0      SET END OF SUR BYTE                       57600017
         L     R8,CKBFOFST         INIT. START OF BUFFER                58200017
         AR    R8,RC                                                    58400017
         L     R5,CKDCBAD     DCB ADDRESS                               58600017
*                                                                       58700017
         WRITE CKDECB1,SF,(5),(8),MF=E                                  58800017
*                                                                       59000017
         CHECK CKDECB1                                                  59200017
*                                                                       59400017
         TM    CKFLAG1,CKTAPE   Q. CHKPT DATA SET ON TAPE               59600017
         BZ    CMEOVDA            NO THEN CHECK FOR EOV ON DA           59800017
         L     RF,CKTSTEOV                                              60000017
         CLC   N0(N4,RF),CKEOVCMR       DID EOV OCCUR                   60200017
         BE    CMTIOTST            NO - GO CHECK FOR I/O ERRS    A38515 60280021
         MVI   CKRETCOD+N1,X'14'   YES - SET EOV ERR CODE - 14   A38515 60360021
         LA    RF,CKTPEOV     SET UP FOR TAPE ERROR              A38515 60440021
         B     CMEOVER             GO TO EXIT ROUTINE            A38515 60520021
CMTIOTST EQU   *                                                        60600017
         CLI   CKRET1,CKIOERR      Q.  I/O ERROR                        60800017
         BCR   NOTEQ,R7                 A.  NO  RETURN                  61000017
CKEROUT  EQU   *                                                        61200017
         MVI   CKXCTL,CHARN        TO GIVE CONTROL TO I/O               61600017
*                                       RESUME                          61700017
         B     C11H6                    XCTL INTERFACE                  61800017
CMEOVDA  EQU   *                                                        63800017
         USING IHADCB,RF                                                64000017
         L     RF,CKDCBAD    GET ADR. OF CHKPT DCB                      64200017
         L     RF,DCBDEBAD   GET ADR. OF CHKPT DEB                      64400017
         DROP  RF                                                       64600017
         CLC   DEBNMEXT(N1,RF),CKTSTEOV    Q. EOV  ON DA DEVICE         64800017
         BE    CMTIOTST                NO -  CONTINUE PROCESSING        65000017
         MVI   CKRET1,CKPGMERR     SET RETURN CODE TO 8          A38515 65100021
         LA    RF,CKERIO7     INDICATE DISK ERROR                A38515 65300021
CMEOVER  EQU   *                                                 A38515 65500021
         STH   RF,CKMSGCOD                                              65800017
         B     CKEROUT                  XCTL  FOR IORESUME              66000017
*                                                                       66200017
*                                                                       66400017
*        CHECKMAIN SYNAD ROUTINE                                        66600017
*                                                                       66800017
C13B5    EQU   *                                                        67000017
         LA    R0,X317                                                  67200017
         STH   R0,CKMSGCOD                                              67400017
         MVI   CKRETCOD+N1,CKIOERR      I/O ERROR                       67600017
         BR    RE                       RETURN TO CALLER                67800017
         EJECT                                                          67900018
*                                                                       68050017
*        GENERAL CONSTANTS                                              68100017
*                                                                       68150017
CKMN32A  DC    CL8'IGC0H06C'            XCTL NAME                       68200017
CMTWO    DC    H'2'                     FOR CHANGING                    68600017
PRBCDE   DC    X'200B'        PRB WITH CDE IN JPA                       68630018
*                                                                       68660017
*        GENERAL EQUATES                                                68690017
*                                                                       68720017
USERCODE EQU   X'040F'             TCB USER CODE                        68750017
STAECODE EQU   X'040D'             TCBSTAE CODE                         68800017
LLECOD   EQU   X'080A'             LOAD LIST ENTRY                      68900017
LLECDE   EQU   X'080E'             LLE WITH CDE IN LPA                  69000017
CKERIO7  EQU   X'031B'             INDICATES EOV ERROR                  69100017
CKTPEOV  EQU   X'031C'        TAPE EOV ERROR                     A38515 69120021
LPACDE   EQU   X'0C00'             TO INCREMENT BLOCK LENGTH            69150018
X317     EQU   X'317'              SYNAD CONSTANT                       69200017
SCBSIZE  EQU   16                  SCB SIZE                      A37977 69210020
SCBRB    EQU   13                  RB PTR. IN SCB                A37977 69250020
X80      EQU   X'80'               MASK FOR OWNED SPQE                  69300017
CHARN    EQU   C'N'                FOR XCTL ON UNRECOVERABLE ERROR      69400017
CHAR2    EQU   C'2'                FOR EOV XCTL                         69500017
LASTRB   EQU   X'80'               INDICATES LAST RB ON CHAIN           70250017
EQ       EQU   8                   MASK FOR BRANCH ON EQUAL             70270017
NOTEQ    EQU   7                   MASK FOR BRANCH ON NOT EQUAL         70290017
DEBNMEXT EQU   16                  NUMBER EXTENTS FOR DEB               70310017
SURL     EQU   200                 LENGTH OF SUR                        70330017
SCBCODE  EQU   X'11'               STAE CONTROL BLOCK            A37977 70332020
CODEA    EQU   X'0A'               LLE WITH CDE IN JPA                  70333018
CODEB    EQU   X'0B'               PRB WITH CDE IN JPA                  70336018
CODEC    EQU   X'0C'               PRB WITH CDE IN LPA                  70339018
CODEE    EQU   X'0E'               LLE WITH CDE IN LPA                  70342018
CODE1E   EQU   X'1E'               TRANSIENT SVRB                       70345018
          EJECT                                                         70350017
*                                                                       70400017
CKTSTEOV EQU CKUNIT                                                     70800017
CKEOVCMR EQU CKUNIT+4                                                   71000017
CMADEOV  DS    F    SAVE AREA FOR INFORMATION NEEDED                    71200017
CMNEOV   DS    F    TO TEST IF EOV OCCURRED                             71400017
CKBFLWA  DS    F              REMAINING BYTES IN THE BUFFER             71600017
CKBFSTAD DS    F              NEXT BYTE IN BUFFER TO BE FILLED          71800017
CMBUF    DS    F              BUFFER ADDRESS                            72000017
CKMN40   DS    2F           CHECKMAIN                                   72200017
CK40XCTL DC    F'0'    XCTL  PARM                                       72400017
SWITCH   EQU   CK40XCTL     SWITCH                                      72600017
CKOBHSAV DS    12F      SAVE AREA                                       72800017
CKLNT    DS    CL1            SUR LENGTH                                73000017
CKCODE   DS    CL1            SUR CODE                                  73200017
CMSYSA   DS    F     SYSTEM                                             73400017
CMSYS1   EQU   CMSYSA+1                                                 73420017
CHSAV6   EQU   CKOBHSAV+19         POSITIONAL POINTER FOR               73440017
*                                  LLE AND PRB INPUT IN REG 6           73460017
CKXCTL   EQU   CKMN40+4            ALLOWS FOR CHANGE OF XCTLEE          73480017
CKRET1   EQU   CKRETCOD+1                                               73500017
         EJECT                                                          73520017
         IHBABCTL                                                       73600017
         EJECT                                                          73620017
*                                                                       73640017
*        FURTHER DEFINITIONS FOR RB DSECT                               73660017
*                                                                       73680017
NEXTRB   EQU   RBLINK-1       FULL WORD BOUNDARY FOR LINK FIELD         73700017
OLDPSW5  EQU   RBOPSW+4       SECOND WORD OF PSW IN RB                  73720017
STAB2    EQU   RBSTAB+1            SECOND RB STAB BYTE                  73740017
TRANS    EQU   X'D0'               MASK FOR TRANSIENT SVC               73760017
*                                                                       73800017
*     OFFSETS FOR PQE                                                   74000017
*                                                                       74200017
FWDPTR   EQU   0                                                        74400017
BCKPTR   EQU   4                                                        74600017
PQENXT   EQU   8                                                        74800017
PQEPREV  EQU   12                                                       75000017
PQETCB   EQU   16                                                       75200017
PQESTAD  EQU   20                                                       75400017
PQERGSZ  EQU   24                                                       75600017
         EJECT                                                          75800017
        DCBD    DSORG=(PO,PS),DEVD=(DA,TA)                              76000017
SYNADCB  EQU   DCBSYNAD+1                                               76200017
         EJECT                                                          76400017
         SPACE                                                          83200017
*                                                                       83800017
*    EQUATES USED FOR DISPLACEMENTS                                     84400017
*                                                                       85000017
N0       EQU   0                                                        85600017
N1       EQU   1                                                        86200017
N2       EQU   2                                                        86500018
N3       EQU   3                                                        86800017
N4       EQU   4                                                        87400017
N5       EQU   5                                                        87700018
N6       EQU   6                                                        88000017
N7       EQU   7                                                        88600017
N8       EQU   8                                                        89200017
N9       EQU   9                                                        89800017
N12      EQU   12                                                       91600017
N15      EQU   15                                                       92200017
N16      EQU   16                                                       92800017
N22      EQU   22                                                       94000017
N30      EQU   30                                                       94600017
N31      EQU   31                                                       95200017
N32      EQU   32                                                       95800017
N33      EQU   33                                                       96400017
.LIB2BA1 ANOP                                                           96450000
         END                                                            98200017
