DSN8MP3

THIS MODULE VALIDATES SPECIFIC INPUT AND MOVES IT TO THE OUTPUT MESSAGE TOGETHER WITH A TEXT FIELD.

 DSN8MP3:  PROC;                                                        00010000
 /********************************************************************* 00020000
 *                                                                    * 00030000
 *   MODULE NAME = DSN8MP3                                            * 00040000
 *                                                                    * 00050000
 *   DESCRIPTIVE NAME = DB2 SAMPLE APPLICATION PROGRAM                * 00060000
 *                      VALIDATION MODULE FOR ACTION                  * 00070000
 *                      PL/I                                          * 00080000
 *                                                                    * 00090000
 *                                                                    * 00100000
 *    COPYRIGHT = 5740-XYR (C) COPYRIGHT IBM CORP 1982, 1985          * 00110000
 *    REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083           * 00120000
 *                                                                    * 00130000
 *    STATUS = RELEASE 8                                              * 00140001
 *                                                                    * 00150000
 *   FUNCTION = THIS MODULE VALIDATES SPECIFIC INPUT                  * 00160000
 *              AND MOVES IT TO THE OUTPUT MESSAGE                    * 00170000
 *              TOGETHER WITH A TEXT FIELD.                           * 00180000
 *                                                                    * 00190000
 *   NOTES =    NONE                                                  * 00200000
 *                                                                    * 00210000
 *                                                                    * 00220000
 *   MODULE TYPE = BLOCK OF PL/I CODE                                 * 00230000
 *      PROCESSOR   = DB2  PRECOMPILER, PL/I OPTIMIZER                * 00240000
 *      MODULE SIZE = SEE LINKEDIT                                    * 00250000
 *      ATTRIBUTES = NONE                                             * 00260000
 *                                                                    * 00270000
 *   ENTRY POINT = DSN8MP3                                            * 00280000
 *      PURPOSE = SEE FUNCTION                                        * 00290000
 *      LINKAGE = INCLUDED BY MODULE DSN8MP1                          * 00300000
 *      INPUT = PARAMETERS EXPLICITLY PASSED TO THIS FUNCTION:        * 00310000
 *             SYMBOLIC LABEL/NAME =  NONE                            * 00320000
 *             DESCRIPTION         = NONE                             * 00330000
 *                                                                    * 00340000
 *      OUTPUT = PARAMETERS EXPLICITLY RETURNED:                      * 00350000
 *             SYMBOLIC LABEL/NAME =  NONE                            * 00360000
 *             DESCRIPTION         = NONE                             * 00370000
 *                                                                    * 00380000
 *                                                                    * 00390000
 *   EXIT-NORMAL = DROP THRU TO NEXT LINE OF CODE IN DSN8MP1          * 00400000
 *                                                                    * 00410000
 *   EXIT-ERROR = IF SQLERROR OR SQLWARNING, SQL WHENEVER CONDITION   * 00420000
 *                SPECIFIED IN DSN8CP1/IP1 WILL BE RAISED AND PROGRAM * 00430000
 *                WILL GO TO THE LABEL  DB_ERROR.                     * 00440000
 *                                                                    * 00450000
 *                                                                    * 00460000
 *      RETURN CODE = NONE                                            * 00470000
 *                                                                    * 00480000
 *      ABEND CODES = NONE                                            * 00490000
 *                                                                    * 00500000
 *      ERROR-MESSAGES =                                              * 00510000
 *            DSN070E - VITAL DATA MISSING IN TABLE 'TOPTVAL'         * 00520000
 *                                                                    * 00530000
 *   EXTERNAL REFERENCES = MOST VARIABLES ARE GLOBAL AND DEFINED      * 00540000
 *                         IN DSN8CP1/IP1.                            * 00550000
 *      ROUTINES/SERVICES =                                           * 00560000
 *         DSN8MPG             - ERROR MESSAGE ROUTINE                * 00570000
 *                                                                    * 00580000
 *      DATA-AREAS   =         NONE                                   * 00590000
 *                                                                    * 00600000
 *      CONTROL-BLOCKS =                                              * 00610000
 *         SQLCA               - SQL COMMUNICATION AREA               * 00620000
 *                                                                    * 00630000
 *   TABLES =   NONE                                                  * 00640000
 *                                                                    * 00650000
 *   CHANGE-ACTIVITY =   NONE                                         * 00660000
 *                                                                    * 00670000
 *                                                                    * 00680000
 *  *PSEUDOCODE*                                                      * 00690000
 *                                                                    * 00700000
 *     PROCEDURE                                                      * 00710000
 *      INITIALIZE RETURNCODE TO '0'.                                 * 00720000
 *                                                                    * 00730000
 *      FILL IN THE DISPLAY AREA                                      * 00740000
 *          FROM VOPTVAL (ACTION,SELTXT)                              * 00750000
 *               DEPENDING ON REQUIRED MAJSYS AND ACTION              * 00760000
 *          RETURN.                                                   * 00770000
 *                                                                    * 00780000
 *      IF ACTION NOT FOUND                                           * 00790000
 *          RETRIEVE A LIST OF ACTION WHICH EXISTS,                   * 00800000
 *          HEADTXT, INFOTXT AND PFKTXT FILL IN DISPLAY AREA          * 00810000
 *          FROM VOPTVAL                                              * 00820000
 *          DEPENDING ON MAJSYS = MAJSYS AND ACTION = BLANK           * 00830000
 *          SET RETURNCODE TO '1'.                                    * 00840000
 *                                                                    * 00850000
 *     END.                                                           * 00860000
 *-------------------------------------------------------------------*/ 00870000
                                                                        00880000
 DCL  1 OUTPUT_REDEF(15)    BASED (ADDR(PCONVSTA.OUTPUT)),              00890000
        4 FIELD_1       CHAR (3),                                       00900000
        4 FIELD_2       CHAR (6),                                       00910000
        4 FIELD_3       CHAR (70);                                      00920000
                                                                        00930000
     /**************************************************************/   00940000
     /*                 ** INITIALIZE RETURN CODE                  */   00950000
     /**************************************************************/   00960000
                                                                        00970000
         RETCODE = '0';                                                 00980000
         DSN8_MODULE_NAME.MAJOR = 'DSN8MP3';                            00990000
         MODULE = 'DSN8MP3';                                            01000000
                                                                        01010000
     /*************************************************************/    01020000
     /*       ** LET'S SEE IF THE ACTION SPECIFIED ON INPUT EXISTS*/    01030000
     /*       **BY TRYING TO RETRIEVE ACTION AND TEXT.            */    01040000
     /*************************************************************/    01050000
                                                                        01060000
                                                    /*RETRIEVAL   */    01070000
    EXEC SQL SELECT SELTXT                                              01080000
         INTO  :POPTVAL.SELTXT                                          01090000
         FROM  VOPTVAL                                                  01100000
         WHERE MAJSYS   = :INAREA.MAJSYS                                01110000
         AND   ACTION   = :INAREA.ACTION                                01120000
         AND   ACTION  <> ' '                                           01130000
         AND   OBJFLD   = '  ';                                         01140000
0                                                                       01150000
    IF   SQLCODE = +0  THEN                                             01160000
       DO;                                                              01170000
                                            /*ACTION EXISTS        */   01180000
                                            /*FILL IN DISPLAY AREA */   01190000
0        OUTAREA.DESC2  = POPTVAL.SELTXT;                               01200000
0        OUTAREA.ACTION = INAREA.ACTION;                                01210000
         RETURN;                           /* RETURN               */   01220000
       END;                                                             01230000
                                                                        01240000
     /************************************************************/     01250000
     /*          ** ACTION NOT FOUND                             */     01260000
     /*          ** PROVIDE A LIST OF ACTIONS WHICH EXIST        */     01270000
     /************************************************************/     01280000
                                                                        01290000
         OUTAREA.ACTION = ' ';                                          01300000
         OUTAREA.DESC2  = ' ';                                          01310000
                                                                        01320000
0   EXEC SQL OPEN VO2;                       /* OPEN VO2 CURSOR */      01330000
                                                                        01340000
                                     /*RETRIEVE LIST OF ACTIONS */      01350000
0   DO   I = 1 TO 15;                                                   01360000
          EXEC SQL FETCH VO2 INTO :POPTVAL.ACTION , :POPTVAL.SELTXT;    01370000
          IF SQLCODE = +100 THEN GO TO MP3_10;                          01380000
          FIELD_1(I) = '';                                              01390000
          FIELD_2(I) = POPTVAL.ACTION;                                  01400000
          FIELD_3(I) = POPTVAL.SELTXT;                                  01410000
    END;                                                                01420000
                                                                        01430000
                                                                        01440000
 MP3_10:                                                                01450000
0   EXEC SQL CLOSE VO2;                     /* CLOSE VO2 CURSOR */      01460000
                                                                        01470000
                                            /* PUT BLANKS AT    */      01480000
                                            /* END OF LINE      */      01490000
0   DO   J = I TO 15;                                                   01500000
          LINE(J) = ' ';                                                01510000
    END;                                                                01520000
                                                                        01530000
     /************************************************************/     01540000
     /* **  CHECK FOR CONDITION WHERE THERE ARE NO VALID ENTRIES */     01550000
     /************************************************************/     01560000
                                                                        01570000
                                          /*NO VALID ENTRY IN    */     01580000
                                          /*OPTION VALIDATION    */     01590000
                                          /*BASE TABLE (TOPTVAL) */     01600000
                                          /*TRY TO GET ERROR TEXT*/     01610000
    IF   I = 1 THEN                                                     01620000
       DO;                                                              01630000
          RETCODE = '1';                                                01640000
                                             /*ERROR TEXT FOUND */      01650000
                                             /*PRINT ERROR TEXT */      01660000
          CALL DSN8MPG (MODULE, '070E', OUTMSG);                        01670000
          MESSAGE.MSGTXT = OUTMSG;                                      01680000
          RETURN;                                /* RETURN      */      01690000
       END;                                                             01700000
                                                                        01710000
     /***************************************************************/  01720000
     /*           **  IF ONLY THE ACTION EXISTS THEN USE AS DEFAULT */  01730000
     /*           **  SET UP ACTION AND DESCRIPTION IN OUTPUT       */  01740000
     /***************************************************************/  01750000
                                                                        01760000
    IF   I = 2 & INAREA.ACTION = ' ' THEN                               01770000
       DO;                                                              01780000
          RETCODE = '0';                                                01790000
          INAREA.ACTION  = FIELD_2(1);                                  01800000
          OUTAREA.ACTION = FIELD_2(1);                                  01810000
          OUTAREA.DESC2  = FIELD_3(1);                                  01820000
          LINE (1)       = ' ';                                         01830000
          RETURN;                                /* RETURN      */      01840000
       END;                                                             01850000
                                                                        01860000
     /***********************************************************/      01870000
     /*           **   ACTION WAS NOT FOUND                     */      01880000
     /***********************************************************/      01890000
                                                                        01900000
         RETCODE = '1';                                                 01910000
                                                                        01920000
0   EXEC SQL SELECT *                                                   01930000
         INTO  :POPTVAL                                                 01940000
         FROM  VOPTVAL                                                  01950000
         WHERE MAJSYS   = :INAREA.MAJSYS                                01960000
         AND   ACTION   = ' ';                                          01970000
                                                                        01980000
                                             /* FILL DISPLAY AREA   */  01990000
                                             /* WITH HEADING, PFKEY,*/  02000000
                                             /* & MESSAGE INFO.     */  02010000
0        OUTAREA.TITLE   = POPTVAL.HEADTXT;                             02020000
         OUTAREA.MSG     = POPTVAL.INFOTXT;                             02030000
         OUTAREA.PFKTEXT = POPTVAL.PFKTXT;                              02040000
                                                                        02050000
         END DSN8MP3;                         /* RETURN TO       */     02060000
                                              /* DSN8MP1 MODULE  */     02070000