DSN8CP0

THIS MODULE ISSUES A CICS® RECEIVE MAP TO RETRIEVE INPUT, CALLS DSN8CP1, AND ISSUES A CICS SEND MAP AFTER RETURNING.

 DSN8CP0: PROC  OPTIONS (MAIN);                                         00010000
 /********************************************************************* 00020000
 *                                                                    * 00030000
 *   MODULE NAME = DSN8CP0                                            * 00040000
 *                                                                    * 00050000
 *   DESCRIPTIVE NAME = DB2  SAMPLE APPLICATION                       * 00060000
 *                      SUBSYSTEM INTERFACE MODULE                    * 00070000
 *                      CICS                                          * 00080000
 *                      PL/I                                          * 00090000
 *                      ORGANIZATION APPLICATION                      * 00100000
 *                                                                    * 00110000
 *     LICENSED MATERIALS - PROPERTY OF IBM 5655-DB2                  * 00120000
 *     (C) COPYRIGHT 1982, 2010 IBM CORP.  ALL RIGHTS RESERVED.       * 00130000
 *                                                                    * 00140000
 *     STATUS = VERSION 10                                            * 00150000
 *                                                                    * 00160000
 *   FUNCTION = THIS MODULE ISSUES A CICS RECEIVE MAP TO RETRIEVE     * 00170000
 *              INPUT, CALLS DSN8CP1, AND ISSUES A CICS SEND          * 00180000
 *               MAP AFTER RETURNING.                                 * 00190000
 *                                                                    * 00200000
 *   NOTES =                                                          * 00210000
 *         1.THIS IS A CICS PSEUDO CONVERSATION PROGRAM WHICH         * 00220000
 *           INITIALIZES ITSELF WHEN TERMINAL OPERATOR ENTERS         * 00230000
 *           INPUT AFTER VIEWING THE SCREEN SENT BY PREVIOUS          * 00240000
 *           ITERATIONS OF THE PROGRAM.                               * 00250000
 *                                                                    * 00260000
 *      DEPENDENCIES = TWO CICS MAPS(DSECTS) ARE REQUIRED:            * 00270000
 *                              DSN8MCMG AND DSN8MCMD                 * 00280000
 *                     MODULES DSN8CP1 IS REQUIRED.                   * 00290000
 *                     DCLGEN STRUCTURE DSN8MPCS IS REQUIRED.         * 00300000
 *                     INCLUDED PLI STRUCTURE DSN8MPCA IS REQUIRED.   * 00310000
 *                                                                    * 00320000
 *      RESTRICTIONS = NONE                                           * 00330000
 *                                                                    * 00340000
 *                                                                    * 00350000
 *   MODULE TYPE = PL/I PROC OPTIONS(MAIN)                            * 00360000
 *      PROCESSOR   = DB2 PRECOMPILER, CICS TRANSLATOR, PL/I OPTIMIZE * 00370000
 *      MODULE SIZE = SEE LINK-EDIT                                   * 00380000
 *      ATTRIBUTES  = REUSABLE                                        * 00390000
 *                                                                    * 00400000
 *   ENTRY POINT = DSN8CP0                                            * 00410000
 *      PURPOSE = SEE FUNCTION                                        * 00420000
 *      LINKAGE = CICS/OS/VS ENTRY                                    * 00430000
 *                                                                    * 00440000
 *      INPUT = PARAMETERS EXPLICITLY PASSED TO THIS FUNCTION:        * 00450000
 *              SYMBOLIC LABEL/NAME =  DSN8CPDI                       * 00460000
 *              DESCRIPTION = CICS BMS MAP FOR DETAIL INPUT           * 00470000
 *                                                                    * 00480000
 *              SYMBOLIC LABEL/NAME =  DSN8CPGI                       * 00490000
 *              DESCRIPTION = CICS BMS MAP FOR GENERAL INPUT          * 00500000
 *                                                                    * 00510000
 *      OUTPUT = PARAMETERS EXPLICITLY RETURNED:                      * 00520000
 *               SYMBOLIC LABEL/NAME =  DSN8CPDO                      * 00530000
 *               DESCRIPTION = CICS BMS MAP FOR DETAIL OUTPUT         * 00540000
 *                                                                    * 00550000
 *               SYMBOLIC LABEL/NAME =  DSN8CPGO                      * 00560000
 *               DESCRIPTION = CICS BMS MAP FOR GENERAL OUTPUT        * 00570000
 *                                                                    * 00580000
 *   EXIT-NORMAL = CICS RETURN TRANSID(D8PS).                         * 00590000
 *                                                                    * 00600000
 *   EXIT-ERROR = DB_ERROR FOR SQL ERRORS.                            * 00610000
 *                NO PL/I ON CONDITIONS.                              * 00620000
 *                                                                    * 00630000
 *      RETURN CODE = NONE                                            * 00640000
 *                                                                    * 00650000
 *      ABEND CODES =                                                 * 00660000
 *                CICS ABEND FOR CICS PROBLEMS.                       * 00670000
 *                MAPI - LASTSCREEN IS WRONG NAME ON INPUT            * 00680000
 *                MAPO - SQL1 DID NOT PASS BACK VALID LASTSCREEN NAME * 00690000
 *                                                                    * 00700000
 *      ERROR-MESSAGES = NONE                                         * 00710000
 *                                                                    * 00720000
 *   EXTERNAL REFERENCES = COMMON CICS REQUIREMENTS                   * 00730000
 *      ROUTINES/SERVICES = DSN8CP1                                   * 00740000
 *                                                                    * 00750000
 *      DATA-AREAS        =                                           * 00760000
 *         DSN8MPCA            - PARAMETER TO BE PASSED TO DSN8CP1    * 00770000
 *                               COMMON AREA                          * 00780000
 *         DSN8MPCS            - DECLARE CONVERSATION STATUS          * 00790000
 *         DSN8MPMD            - CICS/OS/VS PL/I MAP, ORGANIZATION    * 00800000
 *         DSN8MPMG            - CICS/OS/VS PL/I MAP, ORGANIZATION    * 00810000
 *                                                                    * 00820000
 *      CONTROL-BLOCKS    =                                           * 00830000
 *         SQLCA               - SQL COMMUNICATION AREA               * 00840000
 *                                                                    * 00850000
 *   TABLES = NONE                                                    * 00860000
 *                                                                    * 00870000
 *   CHANGE-ACTIVITY = NONE                                           * 00880000
 *                                                                    * 00890000
 *                                                                    * 00900000
 *  *PSEUDOCODE*                                                      * 00910000
 *                                                                    * 00920000
 *   PROCEDURE                                                        * 00930000
 *      DECLARATIONS.                                                 * 00940000
 *      ALLOCATE PLI WORK AREA FOR COMMAREA.                          * 00950000
 *         PUT MODULE NAME 'DSN8CP0' IN AREA USED BY ERROR-HANDLER.   * 00960000
 *         PUT CICS EIBTRMID IN PCONVSTA.CONVID TO BE PASSED TO DSN8CP1 00970000
 *         RETRIEVE LASTSCR FROM VCONA USING THE CONVID TO DETERMINE  * 00980000
 *         WHICH OF THE TWO BMS MAPS SHOULD BE USED TO MAP IN DATA.   * 00990000
 *                                                                    * 01000000
 *      IF RETRIEVAL IS SUCCESSFUL, THEN DO.                          * 01010000
 *          EXEC CICS RECEIVE MAP ACCORDING TO SPECIFIED LASTSCR.     * 01020000
 *          IF MAPFAIL CONDITION IS RAISED* THEN DO.                  * 01030000
 *                  COMPARM.PFKIN = '00'                              * 01040000
 *                  GO TO CP0CP1                                      * 01050000
 *           END                                                      * 01060000
 *                                                                    * 01070000
 *          ELSE                                                      * 01080000
 *                  PUT DATA FROM MAP INTO COMPARM **                 * 01090000
 *      ELSE                                                          * 01100000
 *          IT IS A NEW CONVERSATION, AND NO EXEC CICS                * 01110000
 *          RECEIVE MAP IS ISSUED.                                    * 01120000
 *                                                                    * 01130000
 *      CP0CP1:                                                       * 01140000
 *      EXEC CICS LINK PROGRAM('DSN8CP1') COMMAREA(COMMAREA).         * 01150000
 *      UPON RETURN FROM DSN8CP1, EXEC CICS SEND MAP ACCORDING TO     * 01160000
 *          THE TYPE SPECIFIED IN PCONVSTA.LASTSCR.                   * 01170000
 *      EXEC CICS RETURN TRANSID(D8PS).                               * 01180000
 *                                                                    * 01190000
 *  END.                                                              * 01200000
 *                                                                    * 01210000
 *    *    I.E. LAST CONVERSATION EXISTS, BUT OPERATOR HAD ENTERED    * 01220000
 *              DATA FROM A CLEARED SCREEN OR HAD ERASED ALL DATA ON  * 01230000
 *              SCREEN AND PRESSED ENTER.                             * 01240000
 *                                                                    * 01250000
 *    **    COMPARM.PFKIN = PF KEY ACTUALLY USED I.E. '01' FOR        * 01260000
 *             PF1...                                                 * 01270000
 *-------------------------------------------------------------------*/ 01280000
                                                                %PAGE;  01290000
 /*------------------------------------------------------------------*/ 01300000
 /*                                                                  */ 01310000
 /*                                                                  */ 01320000
 /*                                                                  */ 01330000
 /*                                                                  */ 01340000
 /*                 SQL0 CICS  (DSN8CP0)                             */ 01350000
 /*                                                                  */ 01360000
 /*                                                                  */ 01370000
 /*                                                                  */ 01380000
 /*                                                                  */ 01390000
 /*                                                                  */ 01400000
 /*------------------------------------------------------------------*/ 01410000
 EXEC SQL INCLUDE DSN8MPCA;                         /*  COMMAREA  */    01420000
 EXEC SQL INCLUDE DSN8MPMG;     /*  1ST MAP, BUILT FROM DSN8CPG   */    01430000
 EXEC SQL INCLUDE DSN8MPMD;     /*  2ND MAP, BUILT FROM DSN8CPD   */    01440000
 EXEC SQL INCLUDE SQLCA;                     /*COMMUNICATION AREA */    01450000
 EXEC SQL INCLUDE DSN8MPCS;                         /*  PCONA     */    01460000
                                                                        01470000
     /****************************************************************/ 01480000
     /*       ** DCLGENS AND INITIALIZATIONS                         */ 01490000
     /****************************************************************/ 01500000
                                                                        01510000
 DCL STRING BUILTIN;                                                    01520000
 DCL J FIXED BIN;                                                       01530000
 DCL SAVE_CONVID CHAR(16);                                              01540000
                                         /* DECLARE CONTROL FLAGS */    01550000
 DCL ( SENDBIT, ENDBIT, NEXTBIT, ON, OFF) BIT(1);                       01560000
                                                                        01570000
     /********************************************************/         01580000
     /*          **  FIELDS SENT TO MESSAGE ROUTINE          */         01590000
     /********************************************************/         01600000
                                                                        01610000
 DCL  MODULE            CHAR (07);                                      01620000
 DCL  OUTMSG            CHAR (69);                                      01630000
                                                                        01640000
 DCL DSN8MPG EXTERNAL ENTRY;                                            01650000
0/*********************************************************************/01660000
 /*   SUBMAP REDEFINES THE PL/I STRUCTURE ASSOCIATED WITH THE         */01670000
 /*   CICS MAP DSN8CPD.                                               */01680000
 /*********************************************************************/01690000
0DCL MAP1PTR PTR,                                                       01700000
     MAP2PTR PTR;                                                       01710000
 DCL IOAREA AREA(2048);                                                 01720000
0DCL 1 SUBMAP(15) BASED (ADDR(DSN8CPDI.LINE1F1L)) UNALIGNED,            01730000
        2   COL1LEN      FIXED BIN (15,0) ,                             01740000
        2   COL1ATTR     CHAR (1) ,                                     01750000
        2   COL1DATA     CHAR (37) ,                                    01760000
        2   COL2LEN      FIXED BIN (15,0) ,                             01770000
        2   COL2ATTR     CHAR (1) ,                                     01780000
        2   COL2DATA     CHAR (40) ;                                    01790000
0/*********************************************************************/01800000
 /*   PFSTRG IS AN ARRAY OF 24 ELEMENTS REPRESENTING THE DIFFERENT    */01810000
 /*   PFKEYS AS THEY WOULD BE REPRESENTED IN EIBAID.                  */01820000
 /*********************************************************************/01830000
0DCL CONVID CHAR(16) ;                                                  01840000
 DCL PFSTRG CHAR(24) INIT ('123456789:#@ABCDEFGHI>.<') ,                01850000
0/*********************************************************************/01860000
 /*   PFK IS AN ARRAY OF 12 TWO-BYTE CHARS REPRESENTING THE PFKEYS    */01870000
 /*   ALLOWED AS INPUT TO DSN8CP1 AND DSN8CP2 ETC.                    */01880000
 /*********************************************************************/01890000
     PFK(12) CHAR(2) INIT ('01','02','03','04','05','06',               01900000
                           '07','08','09','10','11','12' ),             01910000
     N FIXED BIN;                                                       01920000
                                                                        01930000
                                                                        01940000
0/*********************************************************************/01950000
 /*   SQL RETURN CODE HANDLING                                        */01960000
 /*********************************************************************/01970000
 EXEC SQL WHENEVER SQLERROR GO TO DB_ERROR;                             01980000
 EXEC SQL WHENEVER SQLWARNING GO TO DB_ERROR;                           01990000
                                                                        02000000
0/*********************************************************************/02010000
 /*   ALLOCATE PL/I  WORK AREA / INITIALIZE VARIABLES                 */02020000
 /*********************************************************************/02030000
                                                                        02040000
0ALLOCATE COMMAREA SET(COMMPTR);           /*ALLOCATE COMMON AREA */    02050000
 MAP1PTR = ADDR(IOAREA);   /* SET THE POINTER FOR THE GENERAL MAP */    02060000
 MAP2PTR = ADDR(IOAREA);   /* SET THE POINTER FOR THE DETAIL  MAP */    02070000
 COMMAREA = '' ;                              /*CLEAR COMMON AREA */    02080000
 DSN8_MODULE_NAME.MAJOR = 'DSN8CP0 ';         /*GET MODULE NAME   */    02090000
                                                                        02100000
                                 /*CONSTRUCT CICS CONVERSATION ID */    02110000
                                       /*A 4 CHAR TERMINAL ID CON-*/    02120000
                                        /*CATENATED WITH 12 BLANKS*/    02130000
 CONVID,PCONVSTA.CONVID = EIBTRMID || '            ' ;                  02140000
 OUTAREA.MAJSYS = 'O';        /*SET MAJOR SYSTEM TO O-ORGANIZATION*/    02150000
 EXITCODE = '0';                                /*CLEAR EXIT CODE */    02160000
                                                                        02170000
 EXEC CICS HANDLE CONDITION MAPFAIL(CP0SEND);                           02180000
                                                                        02190000
0/*********************************************************************/02200000
 /*   TRY TO RETRIEVE LAST CONVERSATION. IF SUCCESSFUL, USE THE       */02210000
 /*   LAST SCREEN SPECIFIED TO RECEIVE INPUT FROM TERMINAL.           */02220000
 /*********************************************************************/02230000
                                                                        02240000
0     EXEC SQL SELECT LASTSCR                                           02250000
               INTO   :PCONA.LASTSCR                                    02260000
               FROM   VCONA                                             02270000
               WHERE  CONVID = :CONVID ;                                02280000
                                                                        02290000
0/*********************************************************************/02300000
 /*   IF LAST CONVERSATION DOES NOT EXIST, THEN DO NOT ATTEMPT TO     */02310000
 /*   RECEIVE INPUT MAP. GO DIRECTLY TO VALIDATION MODULES            */02320000
 /*   TO GET TITLE ETC. FOR OUTPUT MAP.                               */02330000
 /*********************************************************************/02340000
                                                                        02350000
0     IF SQLCODE = +100 THEN GO TO CP0SEND;                             02360000
                                                                        02370000
0/*********************************************************************/02380000
 /*   IF DATA IS RECEIVED FOR A FIELD, THEN .........MOVE THE DATA    */02390000
 /*   INTO THE CORRESPONDING FIELDS IN INAREA, OTHERWISE MOVE BLANKS. */02400000
 /*                                                                   */02410000
 /*   IF LAST CONVERSATION EXISTS, BUT OPERATOR HAS ENTERED DATA      */02420000
 /*   FROM A CLEARED SCREEN OR HAD ERASED ALL DATA ON A FORMATTED     */02430000
 /*   SCREEN AND PRESSED ENTER THEN .........                         */02440000
 /*   MOVE DATA INTO CORRESPONDING FIELDS IN INAREA AND GO TO         */02450000
 /*   VALIDATION MODULES.                                             */02460000
 /*********************************************************************/02470000
                                                                        02480000
      IF PCONA.LASTSCR = 'DSN8001 ' THEN                                02490000
        DO;                                                             02500000
                                                /*USING LAST SCREEN */  02510000
                                              /*SPECIFIED TO RECEIVE*/  02520000
                                               /*INPUT FROM TERMINAL*/  02530000
           EXEC CICS RECEIVE MAP ('DSN8CPG') MAPSET ('DSN8CPG') ;       02540000
                                                                        02550000
           IF AMAJSYSL ^= 0 THEN    COMPARM.MAJSYS = AMAJSYSI;          02560000
                            ELSE    COMPARM.MAJSYS = 'O';               02570000
           IF AACTIONL ^= 0 THEN    COMPARM.ACTION = AACTIONI;          02580000
                            ELSE    COMPARM.ACTION = ' ';               02590000
           IF AOBJECTL ^= 0 THEN    COMPARM.OBJFLD = AOBJECTI;          02600000
                            ELSE    COMPARM.OBJFLD = '  ';              02610000
           IF ASEARCHL ^= 0 THEN    COMPARM.SEARCH = ASEARCHI;          02620000
                            ELSE    COMPARM.SEARCH = '  ';              02630000
           IF ADATAL   ^= 0 THEN    COMPARM.DATA   = ADATAI  ;          02640000
                            ELSE    COMPARM.DATA = ' ';                 02650000
        END;                                                            02660000
                                                                        02670000
0     ELSE IF PCONA.LASTSCR = 'DSN8002 ' THEN                           02680000
        DO;                                                             02690000
                                           /*MOVE DATA INTO */          02700000
                                             /*INPUT FIELDS */          02710000
           EXEC CICS RECEIVE MAP ('DSN8CPD') MAPSET('DSN8CPD') ;        02720000
                                                                        02730000
           IF BMAJSYSL ^= 0 THEN    COMPARM.MAJSYS = BMAJSYSI;          02740000
                            ELSE    COMPARM.MAJSYS = 'O';               02750000
           IF BACTIONL ^= 0 THEN    COMPARM.ACTION = BACTIONI;          02760000
                            ELSE    COMPARM.ACTION = ' ';               02770000
           IF BOBJECTL ^= 0 THEN    COMPARM.OBJFLD = BOBJECTI;          02780000
                            ELSE    COMPARM.OBJFLD = '  ';              02790000
           IF BSEARCHL ^= 0 THEN    COMPARM.SEARCH = BSEARCHI;          02800000
                            ELSE    COMPARM.SEARCH = '  ';              02810000
           IF BDATAL   ^= 0 THEN    COMPARM.DATA   = BDATAI  ;          02820000
                            ELSE    COMPARM.DATA   = ' ';               02830000
                                                                        02840000
           DO I = 1 TO 15;                                              02850000
                IF SUBMAP.COL2LEN(I) ^= 0 THEN                          02860000
                   COMPARM.TRANDATA(I) = SUBMAP.COL2DATA(I) ;           02870000
                ELSE COMPARM.TRANDATA(I) = ' ';                         02880000
           END;                                                         02890000
        END;                                                            02900000
                                                                        02910000
0     ELSE                               /* WRONG LASTSCREEN NAME*/     02920000
        DO;                                                             02930000
           EXEC CICS ABEND ABCODE ('MAPI');                             02940000
        END;                                                            02950000
                                                                        02960000
0/*********************************************************************/02970000
 /*   CONVERT THE PFKEY INFO IN EIBAID TO THE FORM ACCEPTED           */02980000
 /*   BY DSN8CP1 AND DSN8CP2 ETC. EG. PF1 = '01' AND PF13 = '01'.     */02990000
 /*********************************************************************/03000000
                                                                        03010000
0     N = INDEX ( PFSTRG , EIBAID ) ;                                   03020000
                                                                        03030000
      IF N ^= 0 THEN                            /* IF PF KEY USED    */ 03040000
        DO;                                                             03050000
            IF N > 12 THEN N = N - 12 ;         /* PF13 = PF1 ETC.   */ 03060000
            COMPARM.PFKIN = PFK(N) ;                                    03070000
        END;                                                            03080000
                                                                        03090000
      ELSE COMPARM.PFKIN = '  ';                /* IF ENTER | PAKEYS */ 03100000
      GO TO CP0CP1;                                                     03110000
                                                                        03120000
 /*********************************************************************/03130000
 /*                                                                   */03140000
 /*    GO TO DSN8CP1, GET DCLGEN STRUCTURES AND TABLE DCL             */03150000
 /*                                                                   */03160000
 /*********************************************************************/03170000
 CP0SEND :                                                              03180000
0          INAREA = ' ' ;                       /*BLANK OUT INAREA */   03190000
           COMPARM.PFKIN = '00' ;               /*PUT '00' INTO PFKIN*/ 03200000
                                                                        03210000
 CP0CP1 :                                                               03220000
      INAREA.MAJSYS = 'O';      /*SET MAJOR SYSTEM TO O-ORGANIZATION */ 03230000
                                                                        03240000
                                                /*GO TO DSN8CP1      */ 03250000
      EXEC CICS LINK PROGRAM ('DSN8CP1') COMMAREA(COMMAREA)             03260000
                                         LENGTH(3000);                  03270000
                                                                        03280000
0     EXEC SQL INCLUDE DSN8MPXX;              /*GET DCLGEN STRUCTURES*/ 03290000
                                                                        03300000
 /*********************************************************************/03310000
 /*                                                                   */03320000
 /*    AFTER RETURN FROM DSN8CP1 (SQL1), THE PROGRAM EXAMINES DATA    */03330000
 /*    PASSED BACK IN PCONVSTA TO SEE WHAT KIND OF SCREEN SHOULD BE   */03340000
 /*    SENT.  PUT THAT DATA INTO THE OUTPUT MAP AND SEND OUTPUT.      */03350000
 /*    IF A SQL ERROR OR WARNING HAD OCCURRED PREVIOUSLY, THE ERROR   */03360000
 /*    MESSAGES ARE EXPECTED TO HAVE BEEN PUT INTO PCONVSTA.          */03370000
 /*                                                                   */03380000
 /*********************************************************************/03390000
                                                                        03400000
      IF PCONVSTA.LASTSCR = 'DSN8001 ' THEN        /*MOVE DATA INTO */  03410000
        DO;                                         /*OUTPUT FIELDS */  03420000
          ATITLEO = PCONVSTA.TITLE ;                                    03430000
          AMAJSYSO= PCONVSTA.MAJSYS;                                    03440000
          AACTIONO= PCONVSTA.ACTION;                                    03450000
          AOBJECTO= PCONVSTA.OBJFLD;                                    03460000
          ASEARCHO= PCONVSTA.SEARCH;                                    03470000
          ADATAO  = PCONVSTA.DATA  ;                                    03480000
          AMSGO   = PCONVSTA.MSG ;                                      03490000
          ADESCL2O= PCONVSTA.DESC2 ;                                    03500000
          ADESCL3O= PCONVSTA.DESC3 ;                                    03510000
          ADESCL4O= PCONVSTA.DESC4 ;                                    03520000
          APFKEYO = PCONVSTA.PFKTEXT;                                   03530000
                                                                        03540000
          DO I = 1 TO 15;                    /*SEND MAP ACCORDING TO */ 03550000
               ALINEO(I) = PCONVSTA.OUTPUT.LINE(I); /*PREVIOUS SCREEN*/ 03560000
          END;                                                          03570000
                                                                        03580000
0/*********************************************************************/03590000
 /*   CREATES A DYNAMIC CURSOR                                        */03600000
 /*********************************************************************/03610000
                                          /*SET CURSOR POSITION */      03620000
          CURSOR_VALUE = 0;               /*CLEAR CURSOR*/              03630000
          IF AACTIONO = ' ' THEN          /*CURSOR SET TO*/             03640000
            CURSOR_VALUE = 179;           /*ACTION POSITION*/           03650000
          ELSE                                                          03660000
            IF AOBJECTO = '  ' THEN       /*CURSOR SET TO*/             03670000
              CURSOR_VALUE = 259;         /*OBJFLD POSITION*/           03680000
            ELSE                                                        03690000
              IF ASEARCHO = '  ' THEN     /*CURSOR SET TO*/             03700000
                CURSOR_VALUE = 339;       /*SEARCH CRITERIA POSITION*/  03710000
              ELSE                                                      03720000
                IF ADATAO = '  ' |                                      03730000
                 ( AACTIONO = 'D' |                                     03740000
                   AACTIONO = 'E' ) THEN    /*CURSOR SET TO */          03750000
                       CURSOR_VALUE = 419;   /*DATA POSITION*/          03760000
                                                                        03770000
          IF CURSOR_VALUE = 0 THEN           /*SEND OUTPUT MAP */       03780000
            EXEC CICS SEND MAP('DSN8CPG') MAPSET('DSN8CPG') ERASE;      03790000
          ELSE                                                          03800000
            EXEC CICS SEND MAP('DSN8CPG') MAPSET('DSN8CPG') ERASE       03810000
                        CURSOR(CURSOR_VALUE);                           03820000
                                                                        03830000
          IF EXITCODE = '1' THEN             /*  FINISHED ?  */         03840000
            EXEC CICS RETURN ; /* EXIT, DON'T REINVOKE TRANSACTION */   03850000
          ELSE                                                          03860000
            EXEC CICS RETURN TRANSID('D8PS'); /* STANDARD EXIT     */   03870000
       END;                                                             03880000
                                                                        03890000
0/*********************************************************************/03900000
 /*   MOVES DATA FROM OUTPUT MAP AREA TO                              */03910000
 /*   RECEIVE MAP ACCORDING TO MAP SPECIFIED IN LASTSCR OF PCONVST    */03920000
 /*********************************************************************/03930000
0    ELSE IF PCONVSTA.LASTSCR = 'DSN8002 ' THEN                         03940000
       DO;                                                              03950000
                                                 /*MOVE DATA*/          03960000
                                                 /*FROM OUTPUT FIELDS*/ 03970000
          BTITLEO = PCONVSTA.TITLE ;                                    03980000
          BMAJSYSO= PCONVSTA.MAJSYS;                                    03990000
          BACTIONO= PCONVSTA.ACTION;                                    04000000
          BOBJECTO= PCONVSTA.OBJFLD;                                    04010000
          BSEARCHO= PCONVSTA.SEARCH;                                    04020000
          BDATAO  = PCONVSTA.DATA  ;                                    04030000
          BMSGO   = PCONVSTA.MSG ;                                      04040000
          BDESCL2O= PCONVSTA.DESC2 ;                                    04050000
          BDESCL3O= PCONVSTA.DESC3 ;                                    04060000
          BDESCL4O= PCONVSTA.DESC4 ;                                    04070000
          BPFKEYO = PCONVSTA.PFKTEXT;                                   04080000
                                                                        04090000
          DO I = 1 TO 15 ;                     /*RECEIVE MAP ACCORDING*/04100000
            SUBMAP.COL1DATA(I) = REOUT.FIELD1(I); /*TO PREVIOUS SCREEN*/04110000
0 /*-----------------------------------------------------------------*/ 04120000
  /*                                                                 */ 04130000
  /*        MODULES DSN8MPE, DSN8MPF ETC. IN SQL2 HAVE PUT THE       */ 04140000
  /*        ATTRIBUTE BYTE AND CURSOR CONTROL INFO IN IMS MFS        */ 04150000
  /*        FORM - HEX'C0' FOR DYNAMIC CURSOR WITH 2 BYTES OF        */ 04160000
  /*        ATTRIBUTE INFORMATION TO FOLLOW.  THIS PROGRAM CHECKS    */ 04170000
  /*        FOR THE HEX'C0' AND INSERTS  -1 INTO                     */ 04180000
  /*        THE LENGTH FIELD ASSOCIATED WITH THE DATA TO CONFORM     */ 04190000
  /*        WITH THE STANDARD WAY OF HANDLING DYNAMIC CURSORS IN     */ 04200000
  /*        CICS.  SIMILARLY, ONLY THE SECOND OF THE TWO ATTRIBUTE   */ 04210000
  /*        BYTES IS MOVED INTO THE CICS ATTRIBUTE BYTE.  THE        */ 04220000
  /*        FIRST TWO BITS OF THE ATTRIBUTE BYTE IS DIFFERENT        */ 04230000
  /*        BETWEEN IMS AND CICS STANDARD REPRESENTATIONS, HOWEVER   */ 04240000
  /*        3270 MANUALS INDICATE THAT ON OUTPUT, THE FIRST          */ 04250000
  /*        TWO BITS ARE IGNORED.  THUS THE SAME ATTRIBUTE BYTE      */ 04260000
  /*        IS USED BETWEEN IMS AND CICS MODULES.                    */ 04270000
  /*                                                                 */ 04280000
  /*-----------------------------------------------------------------*/ 04290000
0           IF UNSPEC(REOUT.ATTR1(I)) = '11000000'B   /*  X'C0' ATTR */ 04300000
               THEN SUBMAP.COL2LEN(I) = -1;                             04310000
            SUBMAP.COL2ATTR(I) = REOUT.ATTR2(I);                        04320000
            SUBMAP.COL2DATA(I) = REOUT.FIELD2(I);                       04330000
          END;                                                          04340000
0/*********************************************************************/04350000
 /*   CREATES A DYNAMIC CURSOR                                        */04360000
 /*********************************************************************/04370000
                                               /*SET CURSOR POSITION */ 04380000
          CURSOR_VALUE = 0;                    /*CLEAR CURSOR */        04390000
          IF BACTIONO = ' ' THEN               /*CURSOR SET TO*/        04400000
               CURSOR_VALUE = 179;             /*ACTION POSITION*/      04410000
          ELSE                                                          04420000
               IF BOBJECTO = '  ' THEN         /*CURSOR SET TO*/        04430000
                   CURSOR_VALUE = 259;         /*OBJFLD POSITION*/      04440000
               ELSE                                                     04450000
                   IF BSEARCHO = '  ' THEN     /*CURSOR SET TO*/        04460000
                        CURSOR_VALUE = 339;    /*SEARCH CRITERIA*/      04470000
                   ELSE                                                 04480000
                       IF BDATAO = '  ' |                               04490000
                         (BACTIONO = 'D' |                              04500000
                          BACTIONO = 'E' ) THEN   /*CURSOR SET TO */    04510000
                             CURSOR_VALUE = 419;   /*DATA POSITION*/    04520000
                                                                        04530000
          IF CURSOR_VALUE = 0 THEN                 /*SEND INPUT MAP */  04540000
            EXEC CICS SEND MAP('DSN8CPD') MAPSET('DSN8CPD') ERASE;      04550000
          ELSE                                                          04560000
            EXEC CICS SEND MAP('DSN8CPD') MAPSET('DSN8CPD') ERASE       04570000
                        CURSOR(CURSOR_VALUE);                           04580000
                                                                        04590000
          IF EXITCODE = '1' THEN                      /*FINISHED ? */   04600000
            EXEC CICS RETURN ; /* EXIT, DON'T REINVOKE TRANSACTION */   04610000
          ELSE                                                          04620000
            EXEC CICS RETURN TRANSID('D8PS'); /* STANDARD EXIT     */   04630000
       END;                                                             04640000
0                 /* SQL1 DID NOT PASS BACK VALID LASTSCREEN NAME */    04650000
     ELSE EXEC CICS ABEND ABCODE ('MAPO');                              04660000
  END;                                                                  04670000