*********************************************************************** 00000368
*                                                                     * 00000668
* MODULE NAME = BNGIREAD                                              * 00000968
*                                                                     * 00001268
* DESCRIPTIVE NAME =  IMS DEMF BDAM MODULE                            * 00001568
*                                                                     * 00001868
* COPYRIGHT = NONE                                                    * 00002168
*                                                                     * 00002468
* STATUS = RELEASE 1, LEVEL 1                                         * 00002768
*                                                                     * 00003068
* FUNCTION = 1) LINKS TO BNGIDCBA (ALIAS FOR BNGISIMS) FOR ADDRESS OF * 00003368
*               THE ADDRESS OF THE SYS1.DEMFLOG DCB;                  * 00003668
*            2) DETERMINES IF THE FILE IS OPENED;                     * 00003968
*            3) READS THE REQUESTED RECORD INTO HIS I/O AREA;         * 00004268
*            4) PASSES THE ADDRESS OF I/O AREA AND STATUS OF READ TO  * 00004568
*               CALLER.                                               * 00004868
*                                                                     * 00005168
* NOTES = NONE                                                        * 00005468
*                                                                     * 00005768
*    DEPENDENCIES = NONE                                              * 00006068
*                                                                     * 00006368
*    RESTRICTIONS = NONE                                              * 00006668
*                                                                     * 00006968
*    REGISTER CONVENTIONS :                                           * 00007268
*    --------------------                                             * 00007568
*                                                                     * 00007868
*    ALL DEMF RECORDING DISPLAY COMPONENTS USE STANDARD REGISTER      * 00008168
*    CONVENTIONS WITH THE EXCEPTION OF THE IMS DISPLAY COMPONENTS.    * 00008468
*    CERTAIN IMS MODULES USE ADDITIONAL REGISTERS AND THE LINK MACRO  * 00008768
*    FOR PASSING OR RETRIEVING DATA PARAMETER INFORMATION AND ARE     * 00009068
*    DETAILED BELOW:                                                  * 00009368
*                                                                     * 00009668
*     MODULE    REGISTER    CONTENTS.                                 * 00009968
*    --------   --------    ------------------------------------      * 00010268
*    BNGIDISP     R5        PASSES ADDRESS OF IMS PROGRAM             * 00010568
*                           COMMUNICATION BLOCK (PCB) TO              * 00010868
*                           BNGI3270, BNGIMENU, BNGILOCL, AND         * 00011168
*                           BNGIRMOT.                                 * 00011468
*                                                                     * 00011768
*                 R11       PASSES TO BNGIREAD THE ADDRESS OF A       * 00012068
*                           PARAMETER LIST CONTAINING:                * 00012368
*                                                                     * 00012668
*                          1) 4-BYTES - ADDRESS OF I/O AREA FROM      * 00012968
*                                       BNGIREAD                      * 00013268
*                                                                     * 00013568
*                          2) 3-BYTES - RELATIVE BLOCK ADDRESS TO     * 00013868
*                                       BE READ BY BNGIREAD           * 00014168
*                                                                     * 00014468
*                          3) 2-BYTES - STATUS OF READ FROM           * 00014768
*                                       BNGIREAD                      * 00015068
*                                                                     * 00015368
*                 R12      FOR BNGI3270, PASSES THE ADDRESS OF A      * 00015668
*                          COMMUNICATION AREA CONTAINING              * 00015968
*                          UP TO SIX EDITTED PARM FIELDS, SAVE        * 00016268
*                          AND WORK AREAS, AND THE INPUT MESSAGE.     * 00016568
*                                                                     * 00016868
*                          FOR BNGILOCL, BNGIRMOT, AND BNGIMENU;      * 00017168
*                          PASSES THE ADDRESS OF THE INPUT MESSAGE.   * 00017468
*                                                                     * 00017768
*    BNGIREAD    LINK TO BNGIDCBA       RETRIEVES THE ADDRESS OF THE  * 00018068
*                (ALIAS FOR BNGISIMS)   ADDRESS OF THE SYS1.DEMFLOG   * 00018368
*                                       DCB.                          * 00018668
*                                                                     * 00018968
*                 R11      RECEIVES ADDRESS OF PARAMETER LIST         * 00019268
*                          (SEE BNGIDISP R11 FOR LIST).               * 00019568
*                                                                     * 00019868
*    BNGI3270     R5      RECEIVES ADDRESS OF IMS PCB FROM BNGIDISP   * 00020168
*                                                                     * 00020468
*                 R11     PASSES TO BNGIREAD THE ADDRESS OF A         * 00020768
*                         PARAMETER LIST (SEE BNGIDISP R11 FOR LIST)  * 00021068
*                                                                     * 00021368
*                 R12     RECEIVES FROM BNGIDISP THE ADDRESS OF THE   * 00021668
*                         COMMUNICATION AREA (SEE BNGIDISP R12 FOR    * 00021968
*                         CONTENTS OF AREA).                          * 00022268
*                                                                     * 00022568
*    BNGIMENU     R5      RECEIVES ADDRESS OF IMS PCB FROM BNGIDISP   * 00022868
*                                                                     * 00023168
*                 R12     RECEIVES ADDRESS OF INPUT MESSAGE FROM      * 00023468
*                         BNGIDISP.                                   * 00023768
*                                                                     * 00024068
*    BNGILOCL     R5      RECEIVES ADDRESS OF IMS PCB FROM BNGIDISP   * 00024368
*                                                                     * 00024668
*                 R12     RECEIVES ADDRESS OF INPUT MESSAGE FROM      * 00024968
*                         BNGIDISP.                                   * 00025268
*                                                                     * 00025568
*    BNGIRMOT     R5      RECEIVES ADDRESS OF IMS PCB FROM BNGIDISP   * 00025868
*                                                                     * 00026168
*                 R12     RECEIVES ADDRESS OF INPUT MESSAGE FROM      * 00026468
*                         BNGIDISP.                                   * 00026768
*                                                                     * 00027068
*    PATCH LABEL = NONE                                               * 00027368
*                                                                     * 00027668
* MODULE TYPE =  IMS BDAM READ                                        * 00027968
*                                                                     * 00028268
*    PROCESSOR = ASSEMBLER H                                          * 00028568
*                                                                     * 00028868
*    MODULE SIZE = 4414 DECIMAL BYTES                                 * 00029168
*                                                                     * 00029468
*    ATTRIBUTES = SERIALLY REUSABLE                                   * 00029768
*                                                                     * 00030068
* ENTRY POINT = BNGIREAD                                              * 00030368
*                                                                     * 00030668
*    PURPOSE = SEE FUNCTION                                           * 00030968
*                                                                     * 00031268
*    LINKAGE = R1  LOADED WITH THE PARAM LIST POINTER                 * 00031568
*              R14 LOADED WITH THE RETURN ADDR (USED BY SUBROUTINE)   * 00031868
*              R15 LOADED WITH ENTRY POINT                            * 00032168
*                                                                     * 00032468
* INPUT = PARAM LIST ITEMS USED ARE :                                 * 00032768
*                                                                     * 00033068
*                      PARMADDR DS    0F                              * 00033368
*                      IOAREA   DC    A(0)                            * 00033668
*                      RELREC   DC    XL3'0'                          * 00033968
*                      STATUS   DC    CL2'  '                         * 00034268
*                                                                     * 00034568
* OUTPUT = PARAM LIST ITEMS USED ARE :                                * 00034868
*                                                                     * 00035168
*                      PARMADDR DS    0F                              * 00035468
*                      IOAREA   DC    A(0)                            * 00035768
*                      RELREC   DC    XL3'0'                          * 00036068
*                      STATUS   DC    CL2'  '                         * 00036368
*                                                                     * 00036668
* EXIT-NORMAL = REGISTER 15 RETURN CODE RETURNED TO CALLER :          * 00036968
*               00 - OPERATION PERFORMED AS REQUESTED                 * 00037268
*                                                                     * 00037568
* EXIT-ERROR  = NONE                                                  * 00037868
*                                                                     * 00038168
* EXTERNAL REFERENCE = NONE                                           * 00038468
*                                                                     * 00038768
*    ROUTINES = NONE                                                  * 00039068
*                                                                     * 00039368
*    DATA AREAS = NONE                                                * 00039668
*                                                                     * 00039968
*    CONTROL BLOCK = DCB                                              * 00040268
*                                                                     * 00040568
* TABLES = NONE                                                       * 00040868
*                                                                     * 00041168
* MACROS = SAVE, RETURN, LOAD, DELETE, READ, WAIT                     * 00041468
*                                                                     * 00041768
* CHANGE ACTIVITIES AS FOLLOWS:                                       * 00042068
* CHANGE 01   11/15/77  PROLOGUE ADDED                                * 00042368
*                                                                     * 00042668
*********************************************************************** 00042968
BNGIREAD TITLE '- DISPLAY EXCEPTION MONITORING FACILITY (DEMF) IMS BDAM,00050068
                READ PROGRAM'                                           00100068
*********************************************************************** 00150068
* THIS SECTION DOES PROGRAM INITIALIZATION, THEN GETS A RECORD        * 00200068
*********************************************************************** 00250068
         PRINT NOGEN                                                    00300068
PARMLIST DSECT                                                          00350068
         USING *,PARMREG                                                00400068
IOAREA   DS    F               ADDRESS OF I/O AREA FOR CALLER           00450068
RELREC   DS    CL3             RELATIVE BDAM BLOCK TO READ              00500068
STATUS   DS    CL2             STATUS OF READ FOR CALLER                00550068
BNGIREAD CSECT ,                   RE-DO OF CICS DEMF (ORIGINALLY FERS) 00600068
         SAVE  (14,12)             SAVE CALLER'S REGISTERS              00650068
         BALR  BASE1,0                                                  00700068
         USING *,BASE1,BASE2                                            00750068
         LA    BASE2,2048(BASE1)    SET SECOND BASE                     00800068
         LA    BASE2,2048(BASE2)       FROM THE FIRST                   00850068
         LA    4,SAVE              POINT TO OUR SAVE AREA               00900068
         ST    4,8(R13)            FORWARD CHAIN FROM OLD               00950068
         ST    R13,4(4)            BACKWARD CHAIN TO OLD                01000068
         LR    R13,4               FIRST BASE AND S/A FOR OUR REGS      01050068
         B     GO                                                       01100068
SAVEID   DC    C'BNGIREAD - DEMF READ PROGRAM'                          01150068
SAVE     DS    18F                 SAVE AREA                            01200068
GO       DS    0H                                                       01250068
A100     L     DCBREG,SAVEDCB      LOAD BDAM DCB ADDRESS                01300068
         LTR   DCBREG,DCBREG       TEST IF WE KNOW WHERE IT IS          01350068
         BNZ   READ                BYPASS LOAD IF WE ALREADY HAVE ADDR  01400068
         LOAD  EP=BNGIDCBA         ISSUE OS LOAD FOR DCB MODULE         01450068
         LR    DCBREG,0            SAVE ENTRY POINT ADDR                01500068
         DELETE EP=BNGIDCBA        DROP THE USE COUNT FOR THE MODULE    01550068
         L     DCBREG,0(DCBREG)    GET ADDR OF ADDR OF BDAM DCB         01600068
         L     DCBREG,0(DCBREG)    GET ADDR OF BDAM DCB                 01650068
         LTR   DCBREG,DCBREG       IF EQ 0, DCB WAS NOT OPENED OK       01700068
         BZ    NOTOPEN             GO HERE IF FILE NOT AVAILABLE        01750068
         ST    DCBREG,SAVEDCB      NOW WE SAVE THE DCB ADDR             01800068
READ     DS    0H                                                       01850068
         L     4,=A(INPUTA)        GET IOAREA INTO GPR 4                01900068
         ST    4,IOAREA            PASS I/O AREA ADDR TO CALLER         01950068
         MVC   READREL,RELREC      PRIME RELATIVE BLOCK ADDRESS         02000068
         XC    RDECB,RDECB         CLEAR THE DECB FOR BDAM READ         02050068
         READ  RDECB,DI,(DCBREG),(4),4096,0,READREL                     02100068
         WAIT  ECB=RDECB           WAIT FOR COMPLETION OF READ          02150068
         MVC   STATUS,RDECB+1                                           02200068
RETURN   L     13,SAVE+4                                                02250068
         RETURN (14,12)                                                 02300068
NOTOPEN  DS    0H                        OPEN FAILURE AND GO ON         02350068
         MVC   STATUS,=C'FF'                                            02400068
         B     RETURN                                                   02450068
* PROGRAM CONSTANTS                                                     02500068
         SPACE                                                          02550068
SAVEDCB  DC    F'0'                                                     02600068
READREL  DC    XL3'0'                                                   02650068
         EJECT                                                          02700068
* REGISTER EQUATES                                                      02750068
         SPACE                                                          02800068
R0       EQU   0                                                        02850068
R1       EQU   1                                                        02900068
BASE1    EQU   2                                                        02950068
BASE2    EQU   3                                                        03000068
PARMREG  EQU   11  PARAMETER REGISTER                                   03050068
DCBREG   EQU   5   DCB REGISTER POINTER                                 03100068
LINKREG  EQU   6   SUB-ROUTINE LINKAGE                                  03150068
OUTLOOP  EQU   7   OUTPUT LOOP CONTROL                                  03200068
OUTREG   EQU   8   OUTPUT DATA SCANNER                                  03250068
PCBREG   EQU   9   IMS PROGRAM COMMUNICATION BLOCK BASE                 03300068
TABLEREG EQU   10  HEADING-DATA TABLE BASE                              03350068
R11      EQU   11  PARMS PASSED IN THIS REGISTER FROM USER              03400068
R12      EQU   12  BASE REGISTER TWO - 4096-8191                        03450068
R13      EQU   13  BASE REGISTER ONE - 0000-4095                        03500068
R14      EQU   14                                                       03550068
R15      EQU   15                                                       03600068
         SPACE                                                          03650068
         LTORG                                                          03700068
INPUTA   DS    4096C                                                    03750068
         END   BNGIREAD                                                 03800068
