DSN8MPM

THIS MODULE PRODUCES SECONDARY SELECTION SCREEN FOR OBJECTS IN MAJOR SYSTEM 'P' (PROJECTS) CALLED BY DSN8IP2 (SQL2 MAINLINE) .

 DSN8MPM: PROC; /* SECONDARY SELECTION FOR MAJSYS 'P' - PROJECTS     */ 00010000
                                                               %PAGE;   00020000
 /********************************************************************* 00030000
 *                                                                    * 00040000
 *   MODULE NAME = DSN8MPM                                            * 00050000
 *                                                                    * 00060000
 *   DESCRIPTIVE NAME = DB2  SAMPLE APPLICATION                       * 00070000
 *                      SQL 2 SECONDARY SELECTION                     * 00080000
 *                      PL/I                                          * 00090000
 *                      PROJECTS                                      * 00100000
 *                                                                    * 00110000
 *                                                                    * 00120000
 *     COPYRIGHT = 5740-XYR (C) COPYRIGHT IBM CORP 1982, 1988         * 00130000
 *     REFER TO COPYRIGHT INSTRUCTIONS FORM NUMBER G120-2083          * 00140000
 *                                                                    * 00150000
 *     STATUS = VERSION 2 RELEASE 1, LEVEL 0                          * 00160000
 *                                                                    * 00170000
 *   FUNCTION = THIS MODULE PRODUCES SECONDARY SELECTION SCREEN       * 00180000
 *              FOR OBJECTS IN MAJOR SYSTEM 'P' (PROJECTS)            * 00190003
 *              CALLED BY DSN8IP2 (SQL2 MAINLINE)                     * 00200000
 *                                                                    * 00210000
 *   NOTES = NONE                                                     * 00220000
 *                                                                    * 00230000
 *                                                                    * 00240000
 *   MODULE TYPE = BLOCK OF PL/I CODE                                 * 00250000
 *      PROCESSOR   = DB2  PRECOMPILER, PL/I OPTIMIZER                * 00260000
 *      MODULE SIZE = SEE LINKEDIT                                    * 00270000
 *      ATTRIBUTES  = REUSABLE                                        * 00280000
 *                                                                    * 00290000
 *   ENTRY POINT = DSN8MPM                                            * 00300000
 *      PURPOSE = SEE FUNCTION                                        * 00310000
 *      LINKAGE = NONE                                                * 00320000
 *                                                                    * 00330000
 *      INPUT =                                                       * 00340000
 *              SYMBOLIC LABEL/NAME = NONE                            * 00350000
 *              DESCRIPTION         = POINTER TO COMMAREA             * 00360000
 *                                    (COMMUNICATION AREA)            * 00370000
 *                                                                    * 00380000
 *      OUTPUT =                                                      * 00390000
 *              SYMBOLIC LABEL/NAME = NONE                            * 00400000
 *              DESCRIPTION         = POINTER TO COMMAREA             * 00410000
 *                                    (COMMUNICATION AREA )           * 00420000
 *                                                                    * 00430000
 *   EXIT-NORMAL =                                                    * 00440000
 *                                                                    * 00450000
 *   EXIT-ERROR = IF SQLERROR OR SQLWARNING, SQL WHENEVER CONDITION   * 00460000
 *                SPECIFIED IN DSN8IP2 WILL BE RAISED AND PROGRAM     * 00470000
 *                WILL GO TO THE LABEL  DB_ERROR.                     * 00480000
 *                                                                    * 00490000
 *                                                                    * 00500000
 *      RETURN CODE = NONE                                            * 00510000
 *                                                                    * 00520000
 *      ABEND CODES = NONE                                            * 00530000
 *                                                                    * 00540000
 *      ERROR-MESSAGES =                                              * 00550000
 *         DSN8067E - UNSUPPORTED SEARCH CRITERIA FOR OBJECT          * 00560003
 *         DSN8069E - NO VALID SELECTIONS QUALIFY FOR THIS REQUEST    * 00570000
 *         DSN8070E - VITAL DATA MISSING IN TABLE 'TOPTVAL'           * 00580000
 *         DSN8074E - DATA IS TOO LONG FOR SEARCH CRITERIA            * 00590000
 *         DSN8076E - VITAL DATA MISSING IN TABLE 'TDSPTXT'           * 00600000
 *                                                                    * 00610000
 *   EXTERNAL REFERENCES =                                            * 00620000
 *      ROUTINES/SERVICES =                                           * 00630000
 *         DSN8MPG             - ERROR MESSAGE ROUTINE                * 00640000
 *                                                                    * 00650000
 *      DATA-AREAS =  NONE                                            * 00660000
 *                                                                    * 00670000
 *      CONTROL-BLOCKS =                                              * 00680000
 *         SQLCA               - SQL COMMUNICATION AREA               * 00690000
 *                                                                    * 00700000
 *   TABLES =  NONE                                                   * 00710000
 *                                                                    * 00720000
 *   CHANGE-ACTIVITY =  NONE                                          * 00730000
 *                                                                    * 00740000
 *  *PSEUDOCODE*                                                      * 00750000
 *                                                                    * 00760000
 *              /* SECONDARY SELECTION FOR MAJSYS 'P' - PROJECTS      * 00770000
 *      1. PS - PROJECT STRUCTURE                                     * 00780000
 *      2. AL - PROJECT ACTIVITY LISTING                              * 00790000
 *      3. PR - INDIVIDUAL PROJECTS                                   * 00800000
 *      ALL THREE OBJECTS REQUIRE THAT THE SECONDARY SELECT PROCESS   * 00810003
 *      DISPLAY THE PROJECT NO AND NAME AND RESPONSIBLE PERSON        * 00820000
 *      NO AND NAME IN PROJECT NO SEQUENCE. ALTHOUGH THE SECONDARY    * 00830000
 *      SELECTION SEARCH CRITERIA IS NOT PRECISELY THE SAME IN ALL    * 00840000
 *      THREE SITUATIONS IT IS POSSIBLE TO USE THE SAME CURSOR FOR    * 00850000
 *      ALL THREE CASES.                                              * 00860000
 *      4. AE - ACTIVITY ESTIMATES                                    * 00870000
 *      5. AS - ACTIVITY STAFFING                                     * 00880000
 *      THESE LAST TWO OBJECTS EACH HAVE THEIR OWN INDIVIDUAL         * 00890003
 *      CURSOR.                                                       * 00900000
 *                                                                    * 00910000
 *     THERE ARE TWO SITUATIONS UNDER WHICH THIS MODULE CAN BE CALLED * 00920000
 *     1. THE SYSTEM FIELDS HAVE CHANGED - NEW REQUEST                * 00930000
 *     2. AN ANSWER TO A PREVIOUS REQUEST                             * 00940000
 *     IF COMPARM.NEWREQ='Y' THEN SYSTEM FIELDS CHANGED AND           * 00950000
 *     THIS IS A NEW REQUEST                                          * 00960000
 *                                                                    * 00970000
 *    THIS MODULE SHOULD SET THE FOLLOWING TWO FIELDS BEFORE EXITING  * 00980000
 *     1. PCONVSTA.PREV='S'   (FOR NEXT TIME AROUND)                  * 00990000
 *     2. PCONVSTA.MAXSEL= NO OF ENTRIES ON SEC SEL SCREEN BUILT      * 01000000
 *                                                                    * 01010000
 *  PROCEDURE                                                         * 01020000
 *    INITIALIZE TWO CONTROL FIELDS                                   * 01030000
 *                                                                    * 01040000
 *    CASE(NEW REQUEST)                                               * 01050000
 *          INITIALIZE MINIMUM VALUES                                 * 01060000
 *          ASSIGN FIELD VALUES FOR 'LIKE' IN SQL SELECT              * 01070000
 *          RETRIEVE HEADING LINE,PFK DESC,AND MESSAGE INFO           * 01080000
 *          RETRIEVE TEXT DESCRIPTION LINES                           * 01090000
 *    ENDCASE                                                         * 01100000
 *                                                                    * 01110000
 *    ASSIGN DATA VALUE FROM SCREEN FOR 'LIKE' PROCESSING             * 01120000
 *                                                                    * 01130000
 *    IF 'EM' SEARCH CRITERIA THEN                                    * 01140000
 *          OPEN EMPLOYEE CURSOR ASCENDING                            * 01150000
 *    ELSE                                                            * 01160000
 *          OPEN ADMIN ST CURSOR ASCENDING                            * 01170000
 *                                                                    * 01180000
 *    SET UP 'DO LOOP' VALUES                                         * 01190000
 *                                                                    * 01200000
 *    'FETCH' FROM THE APPROPRIATE CURSOR UP TO MAX OF 13 TIMES       * 01210000
 *                                                                    * 01220000
 *    IF NO VALID ENTRIES THEN                                        * 01230000
 *          SEND MESSAGE                                              * 01240000
 *                                                                    * 01250000
 *    SAVE MIN VALUE FOR POSSIBLE SCROLLING REQUEST                   * 01260000
 *                                                                    * 01270000
 *    RETURN                                                          * 01280000
 *                                                                    * 01290000
 * END.                                                               * 01300000
 *-------------------------------------------------------------------*/ 01310000
     /********************************************************/         01320000
     /*          **  FIELDS SENT TO MESSAGE ROUTINE          */         01330000
     /********************************************************/         01340000
                                                                        01350000
 DCL  MODULE            CHAR (07) INIT ('DSN8MPM');                     01360000
 DCL  OUTMSG            CHAR (69);                                      01370000
                                                                        01380000
   /*****************************************************************/  01390000
   /*      **SET MODULE IDENTIFICATION FIELDS                       */  01400000
   /*****************************************************************/  01410000
                                                                        01420000
    DSN8_MODULE_NAME.MAJOR='DSN8MPM';          /* GET MODULE NAME   */  01430000
    DSN8_MODULE_NAME.MINOR=' ';                /* CLEAR ROUTINE NAME*/  01440000
                                                                        01450000
   DCL LOW BUILTIN;                                                     01460000
   DCL HIGH BUILTIN;                                                    01470000
   DCL PERCENTS CHAR(36) INIT( (36) '%' );                              01480000
   DCL PERCENT_PADDED_INDATA VAR CHAR(36);                              01490000
   DCL DSN8MPG EXTERNAL ENTRY;                                          01500000
                                                                        01510000
                                                                        01520000
   /*****************************************************************/  01530000
   /*      **INITIALIZE CONTROL FIELDS                              */  01540000
   /*****************************************************************/  01550000
                                                                        01560000
   PCONVSTA.PREV='S';    /* FOR NEXT TIME AROUND */                     01570000
   PCONVSTA.MAXSEL=0;    /* MAX NO OF CHOICES    */                     01580000
   PCONVSTA.OUTPUT=' ';      /* BLANKS OUT LINE  */                     01590000
                                                                        01600000
   /****************************************************************/   01610000
   /*       **DETERMINE IF NEW REQUEST                             */   01620000
   /****************************************************************/   01630000
  /* IF NEW REQUEST THEN                                  */            01640000
  /*  1. INITIALIZE MINIMUM VALUES                        */            01650000
  /*  2. ASSIGN FIELD VALUES FOR 'LIKE' IN SQL SELECT     */            01660000
                                                                        01670000
  IF COMPARM.NEWREQ='Y' THEN    /* NEW REQUEST?           */            01680000
    MPM000: DO;                                                         01690000
                                                                        01700000
     PIMIN=LOW(6);              /* INITIALIZE MINIMUM     */            01710000
                                /* VALUE                  */            01720000
                                                                        01730000
                             /* ASSIGN FIELD VALUES FOR*/               01740000
                             /* 'LIKE' IN SQL SELECT   */               01750000
     LPROJNO =PERCENTS;      /* PROJECT NO           */                 01760000
     LPROJNAM=PERCENTS;      /* PROJECT NAME         */                 01770000
     LRESPEMP=PERCENTS;      /* RESPONSIBLE EMP NO   */                 01780000
     LRESPNAM=PERCENTS;      /* RESPONSIBLE EMP NAME */                 01790000
     LPROJDEP=PERCENTS;      /* DEPARTMENT NO        */                 01800000
     LDEPTNAM=PERCENTS;      /* DEPARTMENT NAME      */                 01810000
     LEMPNO  =PERCENTS;      /* EMPLOYEE NO          */                 01820000
     LEMPNAME=PERCENTS;      /* EMPLOYEE NAME        */                 01830000
    END MPM000;                                                         01840000
                                                                        01850000
   /***************************************************************/    01860000
   /*   **RETRIEVES HEADING LINE, PFKEY DESCRIPTION, INFO MESSAGE,*/    01870000
   /*   **& POINTER INTO TABLE OF DETAIL HEADING TEXT             */    01880000
   /***************************************************************/    01890000
                                                                        01900000
                                  /*RETRIEVE HEADING, PFK*/             01910000
                                  /*DESC, INFO MESSAGE   */             01920000
                                                                        01930000
     EXEC SQL SELECT HEADTXT, INFOTXT, PFKTXT, DSPINDEX                 01940000
          INTO :POPTVAL.HEADTXT, :POPTVAL.INFOTXT, :POPTVAL.PFKTXT,     01950000
               :POPTVAL.DSPINDEX                                        01960000
          FROM VOPTVAL                                                  01970000
          WHERE MAJSYS  = :INAREA.MAJSYS AND ACTION   = :INAREA.ACTION  01980000
            AND OBJFLD  = :INAREA.OBJFLD AND SRCHCRIT = :INAREA.SEARCH  01990003
            AND SCRTYPE = 'S';                                          02000000
                                                                        02010000
                                               /*ERROR?*/               02020000
     IF SQLCODE=+100 THEN                                               02030000
       DO;                                                              02040000
                                /* TABLE ENTRY MISSING */               02050000
                                /* PRINT ERROR MESSAGE */               02060000
                                                                        02070000
         PCONVSTA.PREV = ' ';   /* NOT SEC SELECT, ERROR */             02080000
         CALL DSN8MPG (MODULE, '070E', OUTMSG);                         02090000
         PCONVSTA.MSG=OUTMSG||                                          02100000
          COMPARM.MAJSYS || '  ' || COMPARM.ACTION || '  '              02110000
          || COMPARM.OBJFLD || '  '                                     02120002
          || COMPARM.SEARCH || '  S' ;                                  02130000
         RETURN;                                                        02140000
       END;                                                             02150000
                                                                        02160000
                                      /*  OBTAIN INFORMATION      */    02170000
     PCONVSTA.TITLE = POPTVAL.HEADTXT;/*  OBTAIN HEADING          */    02180000
     PCONVSTA.MSG   = POPTVAL.INFOTXT;/*  OBTAIN MESSAGE INFO.    */    02190000
     PCONVSTA.PFKTEXT=POPTVAL.PFKTXT; /*  OBTAIN PFKEY DESCRIPTION*/    02200000
                                                                        02210000
   /*************************************************************/      02220000
   /*  **RETRIEVES TEXT DESCRIPTION LINES                       */      02230000
   /*************************************************************/      02240000
                                                                        02250000
                                                    /*TRY TO*/          02260000
                                              /*RETRIEVE INFORMATION*/  02270000
     EXEC SQL SELECT DSPLINE                                            02280000
     INTO :PDSPTXT.DSPLINE                                              02290000
     FROM VDSPTXT                                                       02300000
     WHERE DSPINDEX = :POPTVAL.DSPINDEX AND LINENO ='01';               02310000
                                                                        02320000
                                                          /* ERROR? */  02330000
     IF SQLCODE=+100 THEN                                               02340000
       DO;                                                              02350000
                                          /* MISSING ENTRY IN TABLE */  02360000
                                          /* PRINT ERROR MESSAGE    */  02370000
                                                                        02380000
        PCONVSTA.PREV=' ';      /* WILL NOT ACCEPT ANSWER NEXT TIME */  02390000
        CALL DSN8MPG (MODULE, '076E', OUTMSG);                          02400000
        PCONVSTA.MSG= OUTMSG||                                          02410000
                   POPTVAL.DSPINDEX  || ' LINE 01';                     02420000
        RETURN;                                                         02430000
     END;                                                               02440000
                                                                        02450000
   PCONVSTA.OUTPUT.LINE(1) = PDSPTXT.DSPLINE;   /* RETRIEVAL  */        02460000
                                                                        02470000
                                                                        02480000
   /**************************************************************/     02490000
   /*  ** ASSIGN DATA VALUE FROM SCREEN FOR 'LIKE' PROCESSING    */     02500000
   /*  **NOTE THAT ALL THE FOLLOWING SEARCH CRITERIA MAY NOT BE  */     02510000
   /*  **SUPPORTED IN ALL SITUATIONS - HOWEVER SQL 1 WILL ONLY   */     02520000
   /*  **PERMIT VALID ENTRIES TO BE PASSED.                      */     02530000
   /**************************************************************/     02540000
                                                                        02550000
     DO I = LENGTH(COMPARM.DATA) TO 1 BY -1                             02560000
             UNTIL(SUBSTR(COMPARM.DATA,I,1)^='');                       02570000
     END;                                                               02580000
                                                                        02590000
     PERCENT_PADDED_INDATA =                                            02600000
                    SUBSTR(COMPARM.DATA,1,I);                           02610000
                                                                        02620000
     SELECT (PCONVSTA.SEARCH);                                          02630000
                                                                        02640000
       WHEN ('PI')                               /* PROJECT ID */       02650000
        DO;                                                             02660000
           LPROJNO = PERCENT_PADDED_INDATA;                             02670000
           IF I > LENGTH(LPROJNO) THEN GOTO MPM003;                     02680000
        END;                                                            02690000
                                                                        02700000
       WHEN ('PN')                               /* PROJECT NAME */     02710000
        DO;                                                             02720000
           LPROJNAM = PERCENT_PADDED_INDATA;                            02730000
           IF I > LENGTH(LPROJNAM) THEN GOTO MPM003;                    02740000
        END;                                                            02750000
                                                                        02760000
       WHEN ('DI')                            /* PROJECT DEPT ID */     02770000
        DO;                                                             02780000
           LPROJDEP = PERCENT_PADDED_INDATA;                            02790000
           IF I > LENGTH(LPROJDEP) THEN GOTO MPM003;                    02800000
        END;                                                            02810000
                                                                        02820000
       WHEN ('DN')                               /* DEPT NAME     */    02830000
        DO;                                                             02840000
           LDEPTNAM = PERCENT_PADDED_INDATA;                            02850000
           IF I > LENGTH(LDEPTNAM) THEN GOTO MPM003;                    02860000
        END;                                                            02870000
                                                                        02880000
       WHEN ('RI')                               /* RESPONSIBLE ID */   02890000
        DO;                                                             02900000
           LRESPEMP = PERCENT_PADDED_INDATA;                            02910000
           IF I > LENGTH(LRESPEMP) THEN GOTO MPM003;                    02920000
        END;                                                            02930000
                                                                        02940000
       WHEN ('RN')                               /* RESPONSIBLE NAME */ 02950000
        DO;                                                             02960000
           LRESPNAM = PERCENT_PADDED_INDATA;                            02970000
           IF I > LENGTH(LRESPNAM) THEN GOTO MPM003;                    02980000
        END;                                                            02990000
                                                                        03000000
       WHEN ('EI')                               /* EMPLOYEE ID     */  03010000
        DO;                                                             03020000
           LEMPNO   = PERCENT_PADDED_INDATA;                            03030000
           IF I > LENGTH(LEMPNO) THEN GOTO MPM003;                      03040000
        END;                                                            03050000
                                                                        03060000
       WHEN ('EN')                               /* EMPLOYEE NAME   */  03070000
        DO;                                                             03080000
           LEMPNAME = PERCENT_PADDED_INDATA;                            03090000
           IF I > LENGTH(LEMPNAME) THEN GOTO MPM003;                    03100000
        END;                                                            03110000
                                                                        03120000
       OTHERWISE                                                        03130000
                                                /*NOT DEPARTMENT OR  */ 03140000
                                                /*EMPLOYEE OR MANAGER*/ 03150000
                                                /*PRINT ERROR MESSAGE*/ 03160000
        DO;                                                             03170000
           CALL DSN8MPG (MODULE, '067E', OUTMSG);                       03180000
           PCONVSTA.MSG =                                               03190000
                 PCONVSTA.SEARCH||                                      03200000
                 OUTMSG||                                               03210000
                 PCONVSTA.OBJFLD||' IN MAJOR SYSTEM '||                 03220002
                 PCONVSTA.MAJSYS;                                       03230000
           PCONVSTA.PREV = ' ';   /* NOT SEC SELECT, ERROR */           03240000
           RETURN;                                                      03250000
        END;                                                            03260000
                                                                        03270000
                                                                        03280000
                                                                        03290000
     END;                  /*  OF SELECT CLAUSE       */                03300000
     GO TO MPM003E;       /* SKIP PAST THE ERROR CODE */                03310000
                                                                        03320000
                              /* DATA TOO LONG        */                03330000
     MPM003:                  /* PRINT ERROR MESSAGE  */                03340000
       DO;                                                              03350000
          CALL DSN8MPG (MODULE, '074E', OUTMSG);                        03360000
          PCONVSTA.MSG = OUTMSG;                                        03370000
          PCONVSTA.PREV = ' ';   /* NOT SEC SELECT, ERROR */            03380000
          RETURN;                                                       03390000
       END;                                                             03400000
                                                                        03410000
     /************************************************************/     03420000
     /*  ** OPEN CURSORS AND GET PROJECTS LIST                   */     03430000
     /*  ** FETCH FROM THE APPROPRIATE CURSORS                   */     03440000
     /************************************************************/     03450000
                                                                        03460000
     MPM003E:                                                           03470000
     SELECT(COMPARM.OBJFLD);                                            03480002
                                                                        03490000
       WHEN('PS','AL') DO;  /* PROJECT STRUCTURE & ACTIVITY LISTING */  03500000
         EXEC SQL OPEN PLA;                         /* OPEN CURSOR  */  03510000
                                                                        03520000
         DO I=1 TO 13;                                                  03530000
           EXEC SQL FETCH PLA        /* FETCH THE SPECIFIED FIELDS  */  03540000
           INTO :PPROJRES.PROJNO,   :PPROJRES.PROJNAME,                 03550000
                :PPROJRES.RESPEMP,  :FINITIAL,                          03560000
                :PPROJRES.MIDINIT,  :PPROJRES.LASTNAME;                 03570000
                                                                        03580000
           IF SQLCODE=100 THEN GOTO MPM004;            /* ERROR ?   */  03590000
                                                                        03600000
           DSN8MP2_POS.PROJNUM(I) = PPROJRES.PROJNO;                    03610000
           DSN8MP2_POS.PROJNA(I)  = PPROJRES.PROJNAME;                  03620000
           DSN8MP2_POS.RESPNUM(I) = PPROJRES.RESPEMP;                   03630000
           DSN8MP2_POS.RESFIN(I)  = FINITIAL;                           03640000
           DSN8MP2_POS.RESSIN(I)  = PPROJRES.MIDINIT;                   03650000
           DSN8MP2_POS.RESLNAM(I) = PPROJRES.LASTNAME;                  03660000
           DSN8MP2_POS.LINENO(I)  = I;                                  03670000
           MAXSEL=MAXSEL + 1;                                           03680000
         END;                                                           03690000
       END;                                                             03700000
                                                                        03710000
       WHEN('PR') DO;                  /*  INDIVIDUAL PROJECTS      */  03720000
         EXEC SQL OPEN PLA;                         /* OPEN CURSOR  */  03730000
                                                                        03740000
         DO I=1 TO 13;                                                  03750000
           EXEC SQL FETCH PLA        /* FETCH THE SPECIFIED FIELDS  */  03760000
           INTO :PPROJRES.PROJNO,   :PPROJRES.PROJNAME,                 03770000
                :PPROJRES.RESPEMP,  :FINITIAL,                          03780000
                :PPROJRES.MIDINIT,  :PPROJRES.LASTNAME;                 03790000
                                                                        03800000
           IF SQLCODE=100 THEN GOTO MPM004;            /* ERROR ?   */  03810000
                                                                        03820000
           DSN8MP2_POS.PROJNUM(I) = PPROJRES.PROJNO;                    03830000
           DSN8MP2_POS.PROJNA(I)  = PPROJRES.PROJNAME;                  03840000
           DSN8MP2_POS.RESPNUM(I) = PPROJRES.RESPEMP;                   03850000
           DSN8MP2_POS.RESFIN(I)  = FINITIAL;                           03860000
           DSN8MP2_POS.RESSIN(I)  = PPROJRES.MIDINIT;                   03870000
           DSN8MP2_POS.RESLNAM(I) = PPROJRES.LASTNAME;                  03880000
           DSN8MP2_POS.LINENO(I)  = I;                                  03890000
           MAXSEL=MAXSEL + 1;                                           03900000
         END;                                                           03910000
       END;                                                             03920000
                                                                        03930000
       WHEN('AE') DO;                         /* ACTIVITY ESTIMATES */  03940000
         EXEC SQL OPEN PEA;                         /* OPEN CURSOR  */  03950000
                                                                        03960000
         DO I=1 TO 13;                                                  03970000
           EXEC SQL FETCH PEA        /* FETCH THE SPECIFIED FIELDS  */  03980000
           INTO :PPROJRES.PROJNO,   :PPROJRES.PROJNAME,                 03990000
                :PACT.ACTKWD,       :PACT.ACTDESC,                      04000000
                :PPROJACT.ACSTDATE:SNULL_IND1;                          04010000
                                                                        04020000
           IF SQLCODE=100 THEN GOTO MPM004;            /* ERROR ?   */  04030000
                                                                        04040000
           DSN8MP3_POS.PROJNUM(I) = PPROJRES.PROJNO;                    04050000
           DSN8MP3_POS.PROJNA(I)  = PPROJRES.PROJNAME;                  04060000
           DSN8MP3_POS.ACTKW(I)   = PACT.ACTKWD;                        04070000
           DSN8MP3_POS.ACTDESC(I) = PACT.ACTDESC;                       04080000
                                                                        04090000
 /********************************************************************/ 04100000
 /* IF THE NULL INDICATOR FOR THE START DATE IS 0, THE VALUE IS NOT  */ 04110000
 /* NULL. SET THE START DATE TO THE RETRIEVED VALUE.  IF THE NULL    */ 04120000
 /* INDICATOR IS -1 THEN THE VALUE IS NULL.  SET THE START DATE TO   */ 04130000
 /* BLANKS.                                                          */ 04140000
 /********************************************************************/ 04150000
                                                                        04160000
           IF SNULL_IND1 = 0 THEN                                       04170000
             DSN8MP3_POS.ESTDAT(I)  = PPROJACT.ACSTDATE;                04180000
           ELSE                                                         04190000
             DSN8MP3_POS.ESTDAT(I) = BLKDATE;                           04200000
           DSN8MP3_POS.LINENO(I)  = I;                                  04210000
           MAXSEL=MAXSEL + 1;                                           04220000
         END;                                                           04230000
       END;                                                             04240000
                                                                        04250000
       WHEN('AS') DO;                     /* ACTIVITY STAFFING      */  04260000
         EXEC SQL OPEN PSA;                         /* OPEN CURSOR  */  04270000
                                                                        04280000
         DO I=1 TO 13;                                                  04290000
           EXEC SQL FETCH PSA        /* FETCH THE SPECIFIED FIELDS  */  04300000
           INTO :PPROJRES.PROJNO,   :PPROJRES.PROJNAME,                 04310000
                :PACT.ACTKWD,       :PEMPPROJACT.EMPNO,                 04320000
                :FINITIAL,          :PEMP.MIDINIT,                      04330000
                :PEMP.LASTNAME,     :PEMPPROJACT.EMSTDATE:SNULL_IND1;   04340000
                                                                        04350000
           IF SQLCODE=100 THEN GOTO MPM004;            /* ERROR ?   */  04360000
                                                                        04370000
           DSN8MP4_POS.PROJNUM(I) = PPROJRES.PROJNO;                    04380000
           DSN8MP4_POS.PROJNA(I)  = PPROJRES.PROJNAME;                  04390000
           DSN8MP4_POS.ACTKW(I)   = PACT.ACTKWD;                        04400000
           DSN8MP4_POS.EMPNUM(I)  = PEMPPROJACT.EMPNO;                  04410000
           DSN8MP4_POS.EMPFIN(I)  = FINITIAL;                           04420000
           DSN8MP4_POS.EMPSIN(I)  = PEMP.MIDINIT;                       04430000
           DSN8MP4_POS.RESLNAM(I) = PEMP.LASTNAME;                      04440000
                                                                        04450000
 /********************************************************************/ 04460000
 /* IF THE NULL INDICATOR FOR THE START DATE IS 0, THE VALUE IS NOT  */ 04470000
 /* NULL. SET THE START DATE TO THE RETRIEVED VALUE.  IF THE NULL    */ 04480000
 /* INDICATOR IS -1 THEN THE VALUE IS NULL.  SET THE START DATE TO   */ 04490000
 /* BLANKS.                                                          */ 04500000
 /********************************************************************/ 04510000
                                                                        04520000
           IF SNULL_IND1 = 0 THEN                                       04530000
             DSN8MP4_POS.ESTDAT(I)  = PEMPPROJACT.EMSTDATE;             04540000
           ELSE                                                         04550000
             DSN8MP4_POS.ESTDAT(I)  = BLKDATE;                          04560000
           DSN8MP4_POS.LINENO(I)  = I;                                  04570000
           MAXSEL=MAXSEL + 1;                                           04580000
         END;                                                           04590000
       END;                                                             04600000
     END;                                                               04610000
                                                                        04620000
                             /* IF MORE DATA, SAVE MIN PROJ NO */       04630000
     PIMIN = PPROJRES.PROJNO;                                           04640000
     GOTO MPM005;                                                       04650000
                                                                        04660000
 MPM004:                         /* CHECK FOR NO VALID ENTRIES */       04670000
     PIMIN = HIGH(6);         /* NO MORE SCROLLING CAN BE MADE */       04680000
                                                                        04690000
     IF MAXSEL=0 THEN                                                   04700000
       DO;                                                              04710000
          CALL DSN8MPG (MODULE, '069E', OUTMSG);                        04720000
          PCONVSTA.MSG = OUTMSG;                                        04730000
          PCONVSTA.PREV = ' ';   /* NOT SEC SELECT, ERROR */            04740000
       END;                                                             04750000
                                                                        04760000
 MPM005:                                  /*  CLOSE CURSORS    */       04770000
     SELECT(COMPARM.OBJFLD);                                            04780002
       WHEN('PS','AL','PR') EXEC SQL CLOSE PLA;                         04790000
       WHEN('AE')      EXEC SQL CLOSE PEA;                              04800000
       WHEN('AS')      EXEC SQL CLOSE PSA;                              04810000
     END;                                                               04820000
                                                                        04830000
   END DSN8MPM;                                                         04840000