DSN8CP6

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

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