DSN8MC3

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

      **********DSN8MC3 - VALIDATION MODULE FOR ACTION - COBOL ******** 00010000
      *                                                               * 00020000
      *      MODULE NAME = DSN8MC3                                    * 00030000
      *                                                               * 00040000
      *      DESCRIPTIVE NAME = DB2 SAMPLE APPLICATION                * 00050000
      *                         VALIDATION MODULE FOR ACTION          * 00060000
      *                         COBOL                                 * 00070000
      *   LICENSED MATERIALS - PROPERTY OF IBM                        * 00072000
      *   5615-DB2                                                    * 00074000
      *   (C) COPYRIGHT 1995, 2013 IBM CORP.  ALL RIGHTS RESERVED.    * 00077000
      *                                                               * 00080000
      *   STATUS = VERSION 11                                         * 00090001
      *                                                               * 00100000
      *                                                               * 00120000
      *      FUNCTION = THIS MODULE VALIDATES SPECIFIC INPUT          * 00140000
      *                AND MOVES IT TO THE OUTPUT MESSAGE             * 00150000
      *                TOGETHER WITH A TEXT FIELD.                    * 00160000
      *                                                               * 00170000
      *      NOTES =   NONE                                           * 00180000
      *                                                               * 00190000
      *                                                               * 00200000
      *      MODULE TYPE = BLOCK OF COBOL CODE                        * 00210000
      *      PROCESSOR   = DB2  PRECOMPILER, COBOL COMPILER           * 00220000
      *      MODULE SIZE = SEE LINKEDIT                               * 00230000
      *      ATTRIBUTES  = REUSABLE                                   * 00240000
      *                                                               * 00250000
      *      ENTRY POINT = DSN8MC3                                    * 00260000
      *      PURPOSE = SEE FUNCTION                                   * 00270000
      *      LINKAGE = INCLUDED BY MODULE DSN8CC1                     * 00280000
      *                                                               * 00290000
      *     INPUT = PARAMETERS EXPLICITLY PASSED TO THIS FUNCTION:    * 00300000
      *             SYMBOLIC LABEL/NAME =  NONE                       * 00310000
      *             DESCRIPTION = NONE                                * 00320000
      *                                                               * 00330000
      *      OUTPUT = PARAMETERS EXPLICITLY RETURNED:                 * 00340000
      *               SYMBOLIC LABEL/NAME =  NONE                     * 00350000
      *               DESCRIPTION = NONE                              * 00360000
      *                                                               * 00370000
      *   EXIT-NORMAL = THIS CODE IS "PERFORMED", SO IT EXITS TO CODE * 00380000
      *                 FOLLOWING THE "PERFORM" STATEMENT             * 00390000
      *                                                               * 00400000
      *   EXIT-ERROR = IF SQLERROR OR SQLWARNING, SQL WHENEVER CON-   * 00410000
      *                DITION  SPECIFIED IN DSN8CC1/IC1 WILL BE RAISED* 00420000
      *                AND PROGRAM WILL GO TO THE LABEL DB-ERROR.     * 00430000
      *                                                               * 00440000
      *                                                               * 00450000
      *      RETURN CODE = NONE                                       * 00460000
      *                                                               * 00470000
      *      ABEND CODES = NONE                                       * 00480000
      *                                                               * 00490000
      *      ERROR MESSAGES =                                         * 00500000
      *       DSN8070E - VITAL DATA IS MISSING IN TABLE 'TOPTVAL'     * 00510000
      *                                                               * 00520000
      *   EXTERNAL REFERENCES = MOST VARIABLES ARE GLOBAL AND DEFINED * 00530000
      *                         IN DSN8CC1/IC1.                       * 00540000
      *      ROUTINES/SERVICES =                                      * 00550000
      *         DSN8MCG            - ERROR MESSAGE ROUTINE            * 00560000
      *                                                               * 00570000
      *      DATA-AREAS        =  NONE                                * 00580000
      *                                                               * 00590000
      *      CONTROL-BLOCKS    =                                      * 00600000
      *         SQLCA               - SQL COMMUNICATION AREA          * 00610000
      *                                                               * 00620000
      *   TABLES =  NONE                                              * 00630000
      *                                                               * 00640000
      *   CHANGE-ACTIVITY = NONE                                      * 00650000
      *                                                               * 00660000
      *                                                               * 00670000
      *  *PSEUDOCODE*                                                 * 00680000
      *                                                               * 00690000
      *    PROCEDURE                                                  * 00700000
      *      INITIALIZE RETURNCODE TO '0'.                            * 00710000
      *                                                               * 00720000
      *      FILL IN THE DISPLAY AREA                                 * 00730000
      *          FROM VOPTVAL (ACTION,SELTXT)                         * 00740000
      *               DEPENDING ON REQUIRED MAJSYS AND ACTION         * 00750000
      *          RETURN.                                              * 00760000
      *                                                               * 00770000
      *      IF ACTION NOT FOUND                                      * 00780000
      *          RETRIEVE A LIST OF ACTION WHICH EXISTS,              * 00790000
      *          HEADTXT, INFOTXT AND PFKTXT FILL IN DISPLAY AREA     * 00800000
      *          FROM VOPTVAL                                         * 00810000
      *          DEPENDING ON MAJSYS = MAJSYS AND ACTION = BLANK      * 00820000
      *          SET RETURNCODE TO '1'.                               * 00830000
      *                                                               * 00840000
      * END.                                                          * 00850000
      *                                                               * 00860000
      *---------------------------------------------------------------* 00870000
                                                                        00880000
       DSN8MC3.                                                         00890000
                                                                        00900000
      **************************************************************    00910000
      *                 ** INITIALIZE RETURN CODE                       00920000
      **************************************************************    00930000
           MOVE '0' TO RETCODE.                                         00940000
           MOVE 'DSN8MC3' TO MAJOR IN DSN8-MODULE-NAME.                 00950000
                                                                        00960000
      **************************************************************    00970000
      *       ** LET'S SEE IF THE ACTION SPECIFIED ON INPUT EXISTS      00980000
      *       **BY TRYING TO RETRIEVE ACTION AND TEXT.                  00990000
      **************************************************************    01000000
                                                                        01010000
      *                                             **RETRIEVAL         01020000
           EXEC SQL SELECT SELTXT                                       01030000
                INTO  :POPTVAL.SELTXT                                   01040000
                FROM  VOPTVAL                                           01050000
                WHERE MAJSYS   = :INAREA.MAJSYS                         01060000
                AND   ACTION   = :INAREA.ACTION                         01070000
                AND   ACTION  <> ' '                                    01080000
                AND   OBJFLD   = '  '                                   01090000
                END-EXEC.                                               01100000
                                                                        01110000
      *                                          **ACTION EXISTS        01120000
      *                                          **FILL IN DISPLAY AREA 01130000
               MOVE ACTION IN INAREA  TO ACTION IN OUTAREA.             01140000
               MOVE SELTXT IN POPTVAL TO DESC2  IN OUTAREA.             01150000
                                                                        01160000
      *                                           **RETURN              01170000
           IF   SQLCODE = +0  THEN                                      01180000
               GO TO END-DSN8MC3.                                       01190000
      **************************************************************    01200000
      *          ** ACTION NOT FOUND                                    01210000
      *          ** PROVIDE A LIST OF ACTIONS WHICH EXIST               01220000
      **************************************************************    01230000
           MOVE SPACE TO ACTION IN OUTAREA.                             01240000
           MOVE SPACE TO DESC2  IN OUTAREA.                             01250000
                                                                        01260000
      *                                      **   OPEN CURSOR           01270000
           EXEC SQL OPEN VO2 END-EXEC.                                  01280000
      *                                                                 01290000
           MOVE +1 TO I.                                                01300000
      *                                    **RETRIEVE LIST OF ACTIONS   01310000
       MC3-10.                                                          01320000
           IF I NOT > 15                                                01330000
              THEN EXEC SQL FETCH VO2 INTO :POPTVAL.ACTION ,            01340000
                        :POPTVAL.SELTXT END-EXEC                        01350000
                                                                        01360000
                   IF SQLCODE NOT = +100 THEN                           01370000
                         MOVE SPACES            TO FIELD-1(I)           01380000
                         MOVE ACTION IN POPTVAL TO FIELD-2(I)           01390000
                         MOVE SELTXT IN POPTVAL TO FIELD-3(I)           01400000
                         ADD 1 TO I                                     01410000
                         GO TO MC3-10.                                  01420000
       MC3-20.                                                          01430000
      *                                               **CLOSE CURSOR    01440000
           EXEC SQL CLOSE VO2 END-EXEC.                                 01450000
      *                                                                 01460000
           MOVE I TO J.                                                 01470000
                                                                        01480000
      *                                               **PUT BLANKS AT   01490000
      *                                               **END OF LINE     01500000
       MC3-30.                                                          01510000
           IF J NOT > 15 THEN MOVE SPACE TO LINE0(J)                    01520000
                ADD 1 TO J                                              01530000
                GO TO MC3-30.                                           01540000
      *                                                                 01550000
      **************************************************************    01560000
      *      **  CHECK FOR CONDITION WHERE THERE ARE NO VALID ENTRIES */01570000
      **************************************************************    01580000
                                                                        01590000
      *                                         **NO VALID ENTRY IN     01600000
      *                                         **OPTION VALIDATION     01610000
      *                                         **BASE TABLE (TOPTVAL)  01620000
      *                                         **TRY TO GET ERROR TEXT 01630000
           IF   I = 1 THEN MOVE '1' TO RETCODE                          01640000
                                                                        01650000
                     MOVE '070E' TO MSGCODE                             01660000
                     CALL 'DSN8MCG' USING MAJOR MSGCODE OUTMSG          01670000
                     MOVE OUTMSG TO MSGTEXT IN MSG                      01680000
                                                                        01690000
      *                                             **RETURN            01700000
                     GO TO END-DSN8MC3.                                 01710000
      *                                                                 01720000
      **************************************************************    01730000
      *           **  IF ONLY THE ACTION EXISTS THEN USE AS DEFAULT     01740000
      *           **  SET UP ACTION AND DESCRIPTION IN OUTPUT           01750000
      **************************************************************    01760000
                                                                        01770000
           IF I = 2 AND ACTION IN INAREA = ' ' THEN                     01780000
              MOVE '0' TO RETCODE                                       01790000
              MOVE FIELD-2(1) TO ACTION IN INAREA                       01800000
              MOVE FIELD-2(1) TO ACTION IN OUTAREA                      01810000
              MOVE FIELD-3(1) TO DESC2  IN OUTAREA                      01820000
              MOVE SPACE       TO LINE0 (1)                             01830000
      *                                             **RETURN            01840000
              GO TO END-DSN8MC3.                                        01850000
                                                                        01860000
      **************************************************************    01870000
      *           **   ACTION WAS NOT FOUND                             01880000
      **************************************************************    01890000
                                                                        01900000
           MOVE '1' TO RETCODE.                                         01910000
                                                                        01920000
           EXEC SQL SELECT *                                            01930000
                INTO  :POPTVAL                                          01940000
                FROM  VOPTVAL                                           01950000
                WHERE MAJSYS   = :INAREA.MAJSYS                         01960000
                AND   ACTION   = ' '                                    01970000
                END-EXEC.                                               01980000
                                                                        01990000
      *                                          **FILL DISPLAY AREA    02000000
      *                                          **WITH HEADING, PFKEY, 02010000
      *                                          **& MESSAGE INFO.      02020000
                                                                        02030000
              MOVE HEADTXT IN POPTVAL TO HTITLE  IN OUTAREA.            02040000
              MOVE INFOTXT IN POPTVAL TO MSG     IN OUTAREA.            02050000
              MOVE PFKTXT  IN POPTVAL TO PFKTEXT IN OUTAREA.            02060000
      *                                                                 02070000
                                                                        02080000
      *                                              **RETURN TO        02090000
      *                                              **DSN8MC1 MODULE   02100000
       END-DSN8MC3.                                                     02110000