DSN8CLTC

Compares the data in the EMP_PHOTO_RESUME sample Db2 table to the data in the source data sets to ensure that the LOB columns are being populated and retrieved correctly.

      ***************************************************************** 00010000
      * MODULE NAME = DSN8CLTC (DB2 SAMPLE PROGRAM)                     00020000
      *                                                                 00030000
      * DESCRIPTIVE NAME = POPULATE LOB COLUMNS THAT EXCEED 32K WITH  * 00040000
      *                    DATA READ FROM SEQUENTIAL DATA SETS.       * 00050000
      *                                                               * 00060000
      *  Licensed Materials - Property of IBM                         * 00070000
      *  5635-DB2                                                     * 00080000
      *  (C) Copyright 1982, 2006 IBM Corp.                           * 00090000
      *                                                               * 00100000
      *  Status = Version 9                                           * 00110000
      *                                                               * 00120000
      * Function: Compares the data in the EMP_PHOTO_RESUME sample DB2* 00130000
      *           table to the data in the source data sets to ensure * 00140000
      *           that the LOB columns are being populated and        * 00150000
      *           retrieved correctly.                                * 00160000
      *                                                               * 00170000
      * Entry Point: CEESTART (Language Environment entry point)      * 00180000
      *     Purpose: See Function                                     * 00190000
      *     Linkage: Standard MVS program invocation, no parameters   * 00200000
      *                                                               * 00210000
      *       Input: Symbolic label/name = PSEGIN00                   * 00220000
      *              Description = PSEG photo image data              * 00230000
      *                                                               * 00240000
      *              Symbolic label/name = BMPIN00                    * 00250000
      *              Description = BMP photo image data               * 00260000
      *                                                               * 00270000
      *              Symbolic label/name = RESUME00                   * 00280000
      *              Description = Resume data                        * 00290000
      *                                                               * 00300000
      *              Symbolic label/name = PSEGIN01                   * 00310000
      *              Description = PSEG photo image data              * 00320000
      *                                                               * 00330000
      *              Symbolic label/name = BMPIN01                    * 00340000
      *              Description = BMP photo image data               * 00350000
      *                                                               * 00360000
      *              Symbolic label/name = RESUME01                   * 00370000
      *              Description = Resume data                        * 00380000
      *                                                               * 00390000
      *      Output: Symbolic label/name = SYSPRINT                   * 00400000
      *              Description = Report and messages                * 00410000
      *                                                               * 00420000
      * Normal Exit: Return Code = 0000                               * 00430000
      *              - Message: DSN8CLTC DB2 Sample Program           * 00440000
      *                         Results of LOB data validation        * 00450000
      *                         for employee number xxxxxx            * 00460000
      *                         follow:                               * 00470000
      *                                                                 00480000
      *              - Message: *** VALID: The PSEG BLOB column length* 00490000
      *                                   matches the PSEG file length* 00500000
      *                                   length                      * 00510000
      *              - Message: *** VALID: The PSEG BLOB column data  * 00520000
      *                                    matches the PSEG file data * 00530000
      *                                                               * 00540000
      *              - Message: *** VALID: The BMP BLOB column length * 00550000
      *                                    matches the BMP file length* 00560000
      *                                                               * 00570000
      *              - Message: *** VALID: The BMP BLOB column data   * 00580000
      *                                    matches the BMP file data  * 00590000
      *                                                               * 00600000
      *              - Message: *** VALID: The RESUME CLOB column     * 00610000
      *                                    length matches the RESUME  * 00620000
      *                                    file length                * 00630000
      *                                                               * 00640000
      *              - Message: *** VALID: The RESUME CLOB column data* 00650000
      *                                   matches the RESUME file data* 00660000
      *                                                               * 00670000
      *  Error Exit: Return Code = 0008                               * 00680000
      *              - Message: *** ERROR: The PSEG BLOB column data  * 00690000
      *                                 does not match the PSEG file  * 00700000
      *                                 data                          * 00710000
      *                                                               * 00720000
      *              - Message: *** ERROR: The PSEG BLOB column length* 00730000
      *                                    does not match the PSEG    * 00740000
      *                                    file length                * 00750000
      *                                  - PSEG BLOB length is: nnnnnn* 00760000
      *                                  - PSEG file length is: nnnnnn* 00770000
      *                                                               * 00780000
      *              - Message: *** ERROR: The BMP BLOB column data   * 00790000
      *                                    does not match the BMP     * 00800000
      *                                    file data                  * 00810000
      *                                                               * 00820000
      *              - Message: *** ERROR: The BMP BLOB column length * 00830000
      *                                    does not match the BMP     * 00840000
      *                                    file length                * 00850000
      *                                  - BMP BLOB length is: nnnnnn * 00860000
      *                                  - BMP file length is: nnnnnn * 00870000
      *                                                               * 00880000
      *              - Message:***ERROR: The RESUME CLOB column data  * 00890000
      *                                    does not match the RESUME  * 00900000
      *                                    file data                  * 00910000
      *                                                               * 00920000
      *              - Message: *** ERROR: The RESUME BLOB column     * 00930000
      *                                    length does not match the  * 00940000
      *                                    RESUME file length         * 00950000
      *                                  - RESUME BLOB length is: nnnn* 00960000
      *                                  - RESUME file length is: nnnn* 00970000
      *                                                               * 00980000
      *              - Message: *** ERROR: DSN8CLTC DB2 Sample Program* 00990000
      *                                 Unexpected SQLCODE encountered* 01000000
      *                                 at location xxxx              * 01010000
      *                                 Error detailed below          * 01020000
      *                                 Processing terminated         * 01030000
      *                                 (DSNTIAR-formatted message    * 01040000
      *                                 follows).                     * 01050000
      *                                                               * 01060000
      *  Pseudocode:                                                  * 01070000
      *   DSN8CLTC:                                                   * 01080000
      *     - Call B10000-READPSEGREC00 to read in an employee's photo* 01090000
      *       image in PSEGPSEG format from the data set associated   * 01100000
      *       with the PSEGIN00                                       * 01110000
      *     - Call C10000-READBMPREC00 to read in an employee's photo * 01120000
      *       image in BMPformat from the data set associated with    * 01130000
      *       the BMPIN00 DD.                                         * 01140000
      *     - Call G10000-READRESUMEREC00 to read in an employee's    * 01150000
      *       photo image from the data set associated with the       * 01160000
      *       RESUME00 DD                                             * 01170000
      *     - Call D10000-READEMPPHOTORESUMETABLE to Fetch the        * 01180000
      *       PSEG_PHOTO, BMP_PHOTO, and RESUME data for the employee * 01190000
      *       columns ofthe EMP_PHOTO_RESUME  images to the sample    * 01200000
      *       table.                                                  * 01210000
      *     - Call B30000-COMPAREDATA to compare the data for the     * 01220000
      *       photo images and the resume data for an employee from   * 01230000
      *       the EMP_PHOTO_RESUME table.                             * 01240000
      *                                                               * 01250000
      *     - Call B10001-READPSEGREC01 to read in an employee's      * 01260000
      *       photo image in PSEGPSEG format from the data set        * 01270000
      *       associated withthe PSEGIN01                             * 01280000
      *     - Call C10001-READBMPREC01 to read in an employee's photo * 01290000
      *       image in BMPformat from the data set associated with    * 01300000
      *       the BMPIN01 DD.                                         * 01310000
      *     - Call G10001-READRESUMEREC01 to read in an employee's    * 01320000
      *       photoimage from the data set associated with the        * 01330000
      *       RESUME01 DD                                             * 01340000
      *     - Call D10000-READEMPPHOTORESUMETABLE to fetch the        * 01350000
      *       PSEG_PHOTO, BMP_PHOTO, and RESUME data for the employee * 01360000
      *       columns of the EMP_PHOTO_RESUME  images to the sample   * 01370000
      *       table.                                                  * 01380000
      *     - Call B30000-COMPAREDATA to compare the data for the     * 01390000
      *       photoimages and the resume data for an employee from    * 01400000
      *       the EMP_PHOTO_RESUME table.                             * 01410000
      *   End DSN8CLTC                                                * 01420000
      *                                                               * 01430000
      *   B10000-READPSEGREC00:                                       * 01440000
      *   - Open the PSEGIN00 input file                              * 01450000
      *   - Read in bytes and concatenate them in a buffer until EOF  * 01460000
      *   - Close the PSEGIN00 input file                             * 01470000
      *                                                               * 01480000
      *   B10001-READPSEGREC01:                                       * 01490000
      *   - Open the PSEGIN01 input file                              * 01500000
      *   - Read in bytes and concatenate them in a buffer until EOF  * 01510000
      *   - Close the PSEGIN01 input file                             * 01520000
      *                                                               * 01530000
      *   C10000-READBMPREC00:                                        * 01540000
      *   - Open the BMPIN00 input file                               * 01550000
      *   - Read in bytes and concatenate them in a buffer until EOF  * 01560000
      *   - Close the BMPIN00 input file                              * 01570000
      *                                                               * 01580000
      *   C10001-READBMPREC01:                                        * 01590000
      *   - Open the BMPIN01 input file                               * 01600000
      *   - Read in bytes and concatenate them in a buffer until EOF  * 01610000
      *   - Close the BMPIN01 input file                              * 01620000
      *                                                               * 01630000
      *   G10000-READRESUMEREC00:                                     * 01640000
      *   - Open the RESUME00 input file                              * 01650000
      *   - Read in bytes and concatenate them in a buffer until EOF  * 01660000
      *   - Close the RESUME00 input file                             * 01670000
      *                                                               * 01680000
      *   G10001-READRESUMEREC01:                                     * 01690000
      *   - Open the RESUME01 input file                              * 01700000
      *   - Read in bytes and concatenate them in a buffer until EOF  * 01710000
      *   - Close the RESUME01 input file                             * 01720000
      *                                                               * 01730000
      *   D10000-READEMPPHOTORESUMETABLE:                             * 01740000
      *   - Extract the employee serial from bytes 10-15 of the PSEG  * 01750000
      *     buffer.                                                   * 01760000
      *   - Fetch the PSEG, BMP, and resume data for the employee     * 01770000
      *                                                               * 01780000
      *   B30000-COMPAREDATA:                                         * 01790000
      *   - Compare employee's PSEG photo image on DB2 to flatfile    * 01800000
      *     version                                                   * 01810000
      *   - Compare employee's BMP photo image on DB2 to flatfile     * 01820000
      *     version                                                   * 01830000
      *   - Compare employee's resume image on DB2 to flatfile version* 01840000
      *                                                               * 01850000
      * D31100-CHECK-SQLCODE:                                         * 01860000
      *  - Verify that the prior SQL call completed successfully      * 01870000
      * End D31100-CHECK-SQLCODE                                      * 01880000
      *              *                                                  01890000
      * E31110-DETAIL-SQL-ERROR:                                      * 01900000
      *  - call DSNTIAR to format the unexpected SQLCODE.             * 01910000
      * End E31110-DETAIL-SQL-ERROR                                   * 01920000
      *                                                               * 01930000
      * F31111-PRINT-SQL-ERROR-MSG:                                   * 01940000
      *  - Print the message text                                     * 01950000
      * End F31111-PRINT-SQL-ERROR-MSG                                * 01960000
      *                                                               * 01970000
      *                                                               * 01980000
      ***************************************************************** 01990000
       IDENTIFICATION DIVISION.                                         02000000
       PROGRAM-ID. DSN8CLTC.                                            02010000
                                                                        02020000
       ENVIRONMENT DIVISION.                                            02030000
       CONFIGURATION SECTION.                                           02040000
       SOURCE-COMPUTER.  IBM-370.                                       02050000
       OBJECT-COMPUTER.  IBM-370.                                       02060000
                                                                        02070000
         INPUT-OUTPUT SECTION.                                          02080000
         FILE-CONTROL.                                                  02090000
             SELECT PSEGFILE00 ASSIGN TO PSEGIN00                       02100000
                        ORGANIZATION IS SEQUENTIAL                      02110000
                        ACCESS IS SEQUENTIAL                            02120000
                        FILE STATUS IS PSEGFILE-STATUS.                 02130000
             SELECT BMPFILE00 ASSIGN TO BMPIN00                         02140000
                        ORGANIZATION IS SEQUENTIAL                      02150000
                        ACCESS IS SEQUENTIAL                            02160000
                        FILE STATUS IS BMPFILE-STATUS.                  02170000
             SELECT PSEGFILE01 ASSIGN TO PSEGIN01                       02180000
                        ORGANIZATION IS SEQUENTIAL                      02190000
                        ACCESS IS SEQUENTIAL                            02200000
                        FILE STATUS IS PSEGFILE-STATUS.                 02210000
             SELECT BMPFILE01 ASSIGN TO BMPIN01                         02220000
                        ORGANIZATION IS SEQUENTIAL                      02230000
                        ACCESS IS SEQUENTIAL                            02240000
                        FILE STATUS IS BMPFILE-STATUS.                  02250000
             SELECT RESUMEFILE00 ASSIGN TO RESUME00                     02260000
                        ORGANIZATION IS SEQUENTIAL                      02270000
                        ACCESS IS SEQUENTIAL                            02280000
                        FILE STATUS IS RESUMEFILE-STATUS.               02290000
             SELECT RESUMEFILE01 ASSIGN TO RESUME01                     02300000
                 ORGANIZATION IS SEQUENTIAL                             02310000
                 ACCESS IS SEQUENTIAL                                   02320000
                        FILE STATUS IS RESUMEFILE-STATUS.               02330000
                                                                        02340000
       DATA DIVISION.                                                   02350000
                                                                        02360000
       FILE SECTION.                                                    02370000
                                                                        02380000
       FD  PSEGFILE00                                                   02390000
           RECORDING MODE IS V                                          02400000
           BLOCK CONTAINS 1 RECORDS                                     02410000
           RECORD IS VARYING FROM 4 TO 8184                             02420000
           DEPENDING ON PSEGLEN0.                                       02430000
                                                                        02440000
       01  PSEGRECORD00  PIC X(8184).                                   02450000
                                                                        02460000
       FD  PSEGFILE01                                                   02470000
           RECORDING MODE IS V                                          02480000
           BLOCK CONTAINS 1 RECORDS                                     02490000
           RECORD IS VARYING FROM 4 TO 8184                             02500000
           DEPENDING ON PSEGLEN1.                                       02510000
                                                                        02520000
       01  PSEGRECORD01  PIC X(8184).                                   02530000
                                                                        02540000
       FD  BMPFILE00                                                    02550000
           RECORDING MODE IS V                                          02560000
           BLOCK CONTAINS 1 RECORDS                                     02570000
           RECORD IS VARYING FROM 4 TO 8184                             02580000
           DEPENDING ON BMPLEN0.                                        02590000
                                                                        02600000
       01  BMPRECORD00   PIC X(8184).                                   02610000
                                                                        02620000
       FD  BMPFILE01                                                    02630000
           RECORDING MODE IS V                                          02640000
           BLOCK CONTAINS 1 RECORDS                                     02650000
           RECORD IS VARYING FROM 4 TO 8184                             02660000
           DEPENDING ON BMPLEN1.                                        02670000
                                                                        02680000
       01  BMPRECORD01   PIC X(8184).                                   02690000
                                                                        02700000
                                                                        02710000
       FD  RESUMEFILE00                                                 02720000
           RECORDING MODE IS V                                          02730000
           BLOCK CONTAINS 1 RECORDS                                     02740000
           RECORD IS VARYING FROM 4 TO 8184                             02750000
           DEPENDING ON RESUMELEN0.                                     02760000
                                                                        02770000
       01  RESUMERECORD00   PIC X(8184).                                02780000
                                                                        02790000
       FD  RESUMEFILE01                                                 02800000
           RECORDING MODE IS V                                          02810000
           BLOCK CONTAINS 1 RECORDS                                     02820000
           RECORD IS VARYING FROM 4 TO 8184                             02830000
           DEPENDING ON RESUMELEN1.                                     02840000
                                                                        02850000
       01  RESUMERECORD01   PIC X(8184).                                02860000
                                                                        02870000
                                                                        02880000
       WORKING-STORAGE SECTION.                                         02890000
       77  PSEGLEN0         PIC 9(5) COMP.                              02900000
       77  BMPLEN0          PIC 9(5) COMP.                              02910000
       77  PSEGLEN1         PIC 9(5) COMP.                              02920000
       77  BMPLEN1          PIC 9(5) COMP.                              02930000
       77  RESUMELEN0       PIC 9(5) COMP.                              02940000
       77  RESUMELEN1       PIC 9(5) COMP.                              02950000
       01  PSEG-COLLEN      PIC S9(9) COMP VALUE  0.                    02960000
       01  BMP-COLLEN       PIC S9(9) COMP VALUE  0.                    02970000
       01  DB2IO-COMMAND    PIC X(35).                                  02980000
       01  PSEG-MORERECS    PIC XXX.                                    02990000
       01  BMP-MORERECS     PIC XXX.                                    03000000
       01  RESUME-MORERECS  PIC XXX.                                    03010000
                                                                        03020000
      * ++ Added the following structure *******************************03030000
      ***************************************************************** 03040000
      * File status indicators                                          03050000
      ***************************************************************** 03060000
       01  FILE-STATUS-FIELD.                                           03070000
           05 PSEGFILE-STATUS                PIC XX.                    03080000
           05 BMPFILE-STATUS                 PIC XX.                    03090000
           05 RESUMEFILE-STATUS              PIC XX.                    03100000
                                                                        03110000
      ***************************************************************** 03120000
      * Job status indicator                                            03130000
      ***************************************************************** 03140000
       01 STATUS1              PIC X(4).                                03150000
          88 NOT-OK  VALUE 'BAD '.                                      03160000
          88 OK      VALUE 'GOOD'.                                      03170000
                                                                        03180000
                                                                        03190000
                                                                        03200000
                                                                        03210000
      ******************** DB2 SQL COMMUNICATION AREA ******************03220000
      *     EXEC SQL INCLUDE SQLCA END-EXEC.                            03230000
                                                                        03240000
      **************************** DB2 TABLES **************************03250000
            EXEC SQL DECLARE  EMP_PHOTO_RESUME  TABLE                   03260000
               (        EMPNO  CHAR(06)     NOT NULL,                   03270000
                        EMP_ROWID  ROWID,                               03280000
                        PSEG_PHOTO  BLOB( 500K ),                       03290000
                        BMP_PHOTO  BLOB( 100K ),                        03300000
                        RESUME  CLOB(   5K )         )                  03310000
            END-EXEC.                                                   03320000
                                                                        03330000
                                                                        03340000
      ********** DB2 HOST AND NULL INDICATOR VARIABLES ***************  03350000
           EXEC SQL BEGIN DECLARE SECTION END-EXEC.                     03360000
       77  SQLCODE                PIC S9(9) COMP-4.                     03370000
       77  SQLSTATE               PIC X(5).                             03380000
       01  HVEMPNO     PIC X(6).                                        03390000
       01  PSEGINREC  USAGE IS SQL TYPE IS BLOB(500K).                  03400000
       01  HVPSEG-PHOTO  USAGE IS SQL TYPE IS BLOB(500K).               03410000
       01  NIPSEG-PHOTO  PIC S9(4) COMP-4 VALUE  0.                     03420000
       01  BMPINREC   USAGE IS SQL TYPE IS BLOB(100K).                  03430000
       01  HVBMP-PHOTO   USAGE IS SQL TYPE IS BLOB(100K).               03440000
       01  NIBMP-PHOTO  PIC S9(4) COMP-4 VALUE  0.                      03450000
                                                                        03460000
       01  RESUMEREC   USAGE IS SQL TYPE IS CLOB(5K).                   03470000
       01  HVRESUME    USAGE IS SQL TYPE IS CLOB(5K).                   03480000
           EXEC SQL END DECLARE SECTION END-EXEC.                       03490000
                                                                        03500000
      ***************************************************************** 03510000
      * Buffer for receiving SQL error messages                         03520000
      ***************************************************************** 03530000
       01 ERROR-MESSAGE.                                                03540000
          02  ERROR-LEN            PIC S9(4)   COMP VALUE +960.         03550000
          02  ERROR-TEXT           PIC X(120)  OCCURS 10 TIMES          03560000
                                                INDEXED BY ERROR-INDEX. 03570000
       77 ERROR-TEXT-LEN           PIC S9(9)   COMP VALUE +120.         03580000
                                                                        03590000
       PROCEDURE DIVISION.                                              03600000
       A10000-BLOBEXAMPLE.                                              03610000
            DISPLAY '****************************************'          03620000
                    '****************************************'.         03630000
            DISPLAY '* DSN8CLTC DB2 SAMPLE PROGRAM'.                    03640000
            DISPLAY '****************************************'          03650000
                    '****************************************'.         03660000
            MOVE 'GOOD' TO STATUS1.                                     03670000
                                                                        03680000
      ********************************************************          03690000
      *     GET PSEGREC00 AND BMPREC00                                  03700000
      ********************************************************          03710000
                                                                        03720000
            PERFORM B10000-READPSEGREC00.                               03730000
                                                                        03740000
            PERFORM C10000-READBMPREC00.                                03750000
                                                                        03760000
            PERFORM G10000-READRESUMEREC00.                             03770000
                                                                        03780000
            IF OK                                                       03790000
               PERFORM D10000-READEMPPHOTORESUMETABLE                   03800000
            END-IF                                                      03810000
                                                                        03820000
            IF OK                                                       03830000
               PERFORM B30000-COMPAREDATA                               03840000
            END-IF                                                      03850000
                                                                        03860000
                                                                        03870000
            PERFORM B10001-READPSEGREC01.                               03880000
                                                                        03890000
            PERFORM C10001-READBMPREC01.                                03900000
                                                                        03910000
            PERFORM G10001-READRESUMEREC01.                             03920000
                                                                        03930000
            IF OK                                                       03940000
               PERFORM D10000-READEMPPHOTORESUMETABLE                   03950000
            END-IF                                                      03960000
                                                                        03970000
            IF OK                                                       03980000
               PERFORM B30000-COMPAREDATA                               03990000
            END-IF                                                      04000000
                                                                        04010000
            DISPLAY '****************************************'          04020000
                    '****************************************'.         04030000
                                                                        04040000
            IF NOT-OK                                                   04050000
               MOVE 8 TO RETURN-CODE                                    04060000
            ELSE                                                        04070000
               MOVE 0 TO RETURN-CODE.                                   04080000
                                                                        04090000
            STOP RUN.                                                   04100000
                                                                        04110000
                                                                        04120000
       B10000-READPSEGREC00.                                            04130000
      ***********************************************************       04140000
      * OPEN THE PSEGIN00 DD DATA SET                           *       04150000
      ***********************************************************       04160000
            OPEN INPUT PSEGFILE00.                                      04170000
            MOVE "YES" TO PSEG-MORERECS.                                04180000
            MOVE 0 TO PSEGINREC-LENGTH.                                 04190000
            READ PSEGFILE00                                             04200000
                     AT END MOVE "NO" TO PSEG-MORERECS.                 04210000
            PERFORM UNTIL PSEG-MORERECS = "NO"                          04220000
              MOVE PSEGRECORD00(1 : PSEGLEN0) TO                        04230000
                PSEGINREC-DATA(PSEGINREC-LENGTH + 1 : PSEGLEN0)         04240000
              ADD PSEGLEN0 TO PSEGINREC-LENGTH                          04250000
              READ PSEGFILE00 AT END MOVE "NO" TO PSEG-MORERECS         04260000
              END-READ                                                  04270000
            END-PERFORM.                                                04280000
      *     DISPLAY 'PSEG FILE LENGTH0 =' PSEGINREC-LENGTH.             04290000
      **********************************************************        04300000
      * CLOSE DATA SETS FOR CURRENT PSEGIFILE00                   *     04310000
      **********************************************************        04320000
            CLOSE PSEGFILE00.                                           04330000
                                                                        04340000
       B10001-READPSEGREC01.                                            04350000
      ***********************************************************       04360000
      * OPEN THE PSEGIN01 DD DATA SET                           *       04370000
      ***********************************************************       04380000
            OPEN INPUT PSEGFILE01.                                      04390000
            MOVE "YES" TO PSEG-MORERECS.                                04400000
            MOVE 0 TO PSEGINREC-LENGTH.                                 04410000
            READ PSEGFILE01                                             04420000
                     AT END MOVE "NO" TO PSEG-MORERECS.                 04430000
            PERFORM UNTIL PSEG-MORERECS = "NO"                          04440000
              MOVE PSEGRECORD01(1 : PSEGLEN1) TO                        04450000
               PSEGINREC-DATA(PSEGINREC-LENGTH + 1 : PSEGLEN1)          04460000
              ADD PSEGLEN1 TO PSEGINREC-LENGTH                          04470000
              READ PSEGFILE01 AT END MOVE "NO" TO PSEG-MORERECS         04480000
              END-READ                                                  04490000
            END-PERFORM.                                                04500000
      *     DISPLAY 'PSEG FILE LENGTH1 =' PSEGINREC-LENGTH.             04510000
      **********************************************************        04520000
      * CLOSE DATA SETS FOR CURRENT PSEGFILE01                   *      04530000
      **********************************************************        04540000
            CLOSE PSEGFILE01.                                           04550000
                                                                        04560000
       C10000-READBMPREC00.                                             04570000
      *********************************************************         04580000
      * OPEN THE BMPIN00 DD DATA SET                          *         04590000
      *********************************************************         04600000
            OPEN INPUT BMPFILE00.                                       04610000
            MOVE "YES" TO BMP-MORERECS.                                 04620000
            MOVE 0 TO BMPINREC-LENGTH.                                  04630000
            READ BMPFILE00                                              04640000
                  AT END MOVE "NO" TO BMP-MORERECS.                     04650000
            PERFORM UNTIL BMP-MORERECS = "NO"                           04660000
              MOVE BMPRECORD00(1 : BMPLEN0) TO                          04670000
                 BMPINREC-DATA(BMPINREC-LENGTH + 1 : BMPLEN0)           04680000
              ADD BMPLEN0 TO BMPINREC-LENGTH                            04690000
              READ BMPFILE00 AT END MOVE "NO" TO BMP-MORERECS           04700000
              END-READ                                                  04710000
            END-PERFORM.                                                04720000
      *     DISPLAY 'BMP FILE LENGTH0 =' BMPINREC-LENGTH.               04730000
      **********************************************************        04740000
      * CLOSE DATA SETS FOR CURRENT BMPFILE00 DDS   *                   04750000
      **********************************************************        04760000
            CLOSE BMPFILE00.                                            04770000
                                                                        04780000
                                                                        04790000
       C10001-READBMPREC01.                                             04800000
      *********************************************************         04810000
      * OPEN THE BMPIN01 DD DATA SET                          *         04820000
      *********************************************************         04830000
            OPEN INPUT BMPFILE01.                                       04840000
            MOVE "YES" TO BMP-MORERECS.                                 04850000
            MOVE 0 TO BMPINREC-LENGTH.                                  04860000
            READ BMPFILE01                                              04870000
                  AT END MOVE "NO" TO BMP-MORERECS.                     04880000
            PERFORM UNTIL BMP-MORERECS = "NO"                           04890000
              MOVE BMPRECORD01(1 : BMPLEN1) TO                          04900000
                 BMPINREC-DATA(BMPINREC-LENGTH + 1 : BMPLEN1)           04910000
              ADD BMPLEN1 TO BMPINREC-LENGTH                            04920000
              READ BMPFILE01 AT END MOVE "NO" TO BMP-MORERECS           04930000
              END-READ                                                  04940000
            END-PERFORM.                                                04950000
      *     DISPLAY 'BMP FILE LENGTH1 =' BMPINREC-LENGTH.               04960000
      **********************************************************        04970000
      * CLOSE DATA SETS FOR CURRENT BMPFILE01 DDS   *                   04980000
      **********************************************************        04990000
            CLOSE BMPFILE01.                                            05000000
                                                                        05010000
                                                                        05020000
                                                                        05030000
                                                                        05040000
        G10000-READRESUMEREC00.                                         05050000
      *********************************************************         05060000
      * OPEN THE RESUMEREC00 DD DATA SET                          *     05070000
      *********************************************************         05080000
            OPEN INPUT RESUMEFILE00.                                    05090000
            MOVE "YES" TO RESUME-MORERECS.                              05100000
            MOVE 0 TO RESUMEREC-LENGTH.                                 05110000
            READ RESUMEFILE00                                           05120000
                  AT END MOVE "NO" TO RESUME-MORERECS.                  05130000
      *     DISPLAY "****** RESUMEFILE-STATUS = <"                      05140000
      *             RESUMEFILE-STATUS                                   05150000
      *             ">".                                                05160000
            MOVE RESUMERECORD00 TO RESUMEREC-DATA.                      05170000
      *     ADD RESUMELEN0 TO RESUMEREC-LENGTH.                         05180000
            COMPUTE RESUMEREC-LENGTH =                                  05190000
                    RESUMEREC-LENGTH + RESUMELEN0.                      05200000
      **********************************************************        05210000
      * CLOSE DATA SETS FOR CURRENT BMPFILE00 DDS   *                   05220000
      **********************************************************        05230000
            CLOSE RESUMEFILE00.                                         05240000
                                                                        05250000
                                                                        05260000
       G10001-READRESUMEREC01.                                          05270000
      *********************************************************         05280000
      * OPEN THE RESUMEREC01 DD DATA SET                          *     05290000
      *********************************************************         05300000
            OPEN INPUT RESUMEFILE01.                                    05310000
            MOVE "YES" TO RESUME-MORERECS.                              05320000
            MOVE 0 TO RESUMEREC-LENGTH.                                 05330000
            READ RESUMEFILE01                                           05340000
                  AT END MOVE "NO" TO RESUME-MORERECS.                  05350000
      *     DISPLAY "****** RESUMEFILE-STATUS = <"                      05360000
      *             RESUMEFILE-STATUS                                   05370000
      *             ">".                                                05380000
            MOVE RESUMERECORD01 TO RESUMEREC-DATA.                      05390000
      *     ADD RESUMELEN1 TO RESUMEREC-LENGTH.                         05400000
            COMPUTE RESUMEREC-LENGTH =                                  05410000
                     RESUMEREC-LENGTH + RESUMELEN1.                     05420000
      **********************************************************        05430000
      * CLOSE DATA SETS FOR CURRENT BMPFILE00 DDS   *                   05440000
      **********************************************************        05450000
            CLOSE RESUMEFILE01.                                         05460000
                                                                        05470000
                                                                        05480000
                                                                        05490000
       D10000-READEMPPHOTORESUMETABLE.                                  05500000
      *******************************************************           05510000
      * EXTRACT THE EMPLOYEE SERIAL FROM BYTES 10-15 OF     *           05520000
      * THE PSEG    BUFFER.                                 *           05530000
      *******************************************************           05540000
            MOVE PSEGINREC-DATA(10:15) TO HVEMPNO.                      05550000
      *     DISPLAY '* EMPLOYEE NUMBER = ' HVEMPNO.                     05560000
                                                                        05570000
      *********************************************************         05580000
      * FETCH THE PSEG, BMP, AND RESUME DATA FOR THE EMPLOYEE *         05590000
      *********************************************************         05600000
               EXEC SQL SELECT  PSEG_PHOTO, BMP_PHOTO, RESUME           05610000
                    INTO :HVPSEG-PHOTO,                                 05620000
                         :HVBMP-PHOTO,                                  05630000
                         :HVRESUME                                      05640000
                    FROM  EMP_PHOTO_RESUME                              05650000
                    WHERE  EMPNO = :HVEMPNO                             05660000
               END-EXEC                                                 05670000
                                                                        05680000
               IF SQLCODE IS NOT EQUAL TO ZERO                          05690000
                   MOVE 'readEMP_PHOTO_RESUMEtable @1' TO DB2IO-COMMAND 05700000
                   PERFORM D31100-CHECK-SQLCODE                         05710000
               END-IF.                                                  05720000
                                                                        05730000
                                                                        05740000
                                                                        05750000
                                                                        05760000
       B30000-COMPAREDATA.                                              05770000
      ******************************************************************05780000
      * CALLED BY THE MAIN ROUTINE TO COMPARE THE DATA FROM THE PHOTO  *05790000
      * IMAGES AND THE RESUME DATA FOR AN EMPLOYEE FROM THE EMP_PHOTO_ *05800000
      * RESUME TABLE.                                                  *05810000
      *                                                                *05820000
      * THE EMPLOYEE NUMBER, WHICH IS THE TABLE KEY, IS EXTRACTED FROM *05830000
      * BYTES 10-15 OF THE PSEG INPUT RECORD.                          *05840000
      ******************************************************************05850000
                                                                        05860000
      ******************************************************************05870000
      * Write heading for current employee                              05880000
      ******************************************************************05890000
               DISPLAY '* RESULTS OF LOB DATA VALIDATION FOR EMPLOYEE ' 05900000
                   'NUMBER ' HVEMPNO ' FOLLOW:'.                        05910000
                                                                        05920000
      ******************************************************************05930000
      * Compare employee's PSEG photo image on DB2 to flatfile version  05940000
      ******************************************************************05950000
               IF PSEGINREC-LENGTH = HVPSEG-PHOTO-LENGTH                05960000
                                                                        05970000
                   DISPLAY '*   VALID: THE PSEG BLOB COLUMN LENGTH '    05980000
                           'MATCHES THE PSEG FILE LENGTH'               05990000
                                                                        06000000
                   IF PSEGINREC-DATA = HVPSEG-PHOTO-DATA                06010000
                       DISPLAY '*   VALID: THE PSEG BLOB COLUMN DATA '  06020000
                               'MATCHES THE PSEG FILE DATA'             06030000
                   ELSE                                                 06040000
                       DISPLAY '* > ERROR: THE PSEG BLOB COLUMN DATA '  06050000
                               'DOES NOT MATCH THE PSEG FILE DATA'      06060000
                   END-IF                                               06070000
               ELSE                                                     06080000
                                                                        06090000
                   DISPLAY '* > ERROR: THE PSEG BLOB COLUMN LENGTH '    06100000
                           'DOES NOT MATCH THE PSEG FILE LENGTH'        06110000
                   DISPLAY '* - PSEG BLOB LENGTH IS: '                  06120000
                                           HVPSEG-PHOTO-LENGTH          06130000
                   DISPLAY '* - PSEG FILE LENGTH IS: ' PSEGINREC-LENGTH 06140000
               END-IF                                                   06150000
                                                                        06160000
                                                                        06170000
      ******************************************************************06180000
      * COMPARE EMPLOYEE'S BMP PHOTO IMAGE ON DB2 TO FLATFILE VERSION  *06190000
      ******************************************************************06200000
                                                                        06210000
               IF BMPINREC-LENGTH = HVBMP-PHOTO-LENGTH                  06220000
                                                                        06230000
                   DISPLAY '*   VALID: THE BMP BLOB COLUMN LENGTH '     06240000
                           'MATCHES THE BMP FILE LENGTH'                06250000
                                                                        06260000
                   IF BMPINREC-DATA = HVBMP-PHOTO-DATA                  06270000
                       DISPLAY '*   VALID: THE BMP BLOB COLUMN DATA '   06280000
                               'MATCHES THE BMP FILE DATA'              06290000
                   ELSE                                                 06300000
                       DISPLAY '* > ERROR: THE BMP BLOB COLUMN DATA '   06310000
                               'DOES NOT MATCH THE BMP FILE DATA'       06320000
                   END-IF                                               06330000
               ELSE                                                     06340000
                                                                        06350000
                   DISPLAY '* > ERROR: THE BMP BLOB COLUMN LENGTH '     06360000
                           'DOES NOT MATCH THE BMP FILE LENGTH'         06370000
                   DISPLAY '* - BMP BLOB LENGTH IS: ' HVBMP-PHOTO-LENGTH06380000
                   DISPLAY '* - BMP FILE LENGTH IS: ' BMPINREC-LENGTH   06390000
               END-IF                                                   06400000
                                                                        06410000
      ******************************************************************06420000
      * COMPARE EMPLOYEE'S RESUME IMAGE ON DB2 TO FLATFILE VERSION      06430000
      ******************************************************************06440000
                                                                        06450000
               IF RESUMEREC-LENGTH = HVRESUME-LENGTH                    06460000
                                                                        06470000
                   DISPLAY '*   VALID: THE RESUME CLOB COLUMN LENGTH '  06480000
                           'MATCHES THE RESUME FILE LENGTH'             06490000
                                                                        06500000
                   IF RESUMEREC-DATA = HVRESUME-DATA                    06510000
                       DISPLAY '*   VALID: THE RESUME CLOB COLUMN DATA '06520000
                               'MATCHES THE RESUME FILE DATA'           06530000
                   ELSE                                                 06540000
                       DISPLAY '* > ERROR: THE RESUME CLOB COLUMN DATA '06550000
                               'DOES NOT MATCH THE RESUME FILE DATA'    06560000
                   END-IF                                               06570000
               ELSE                                                     06580000
                                                                        06590000
                   DISPLAY '* > ERROR: THE RESUME CLOB COLUMN LENGTH '  06600000
                           'DOES NOT MATCH THE RESUME FILE LENGTH'      06610000
                   DISPLAY '* - RESUME CLOB LENGTH IS: ' HVRESUME-LENGTH06620000
                   DISPLAY '* - RESUME FILE LENGTH IS: '                06630000
                                        RESUMEREC-LENGTH                06640000
               END-IF                                                   06650000
                                                                        06660000
               DISPLAY '****************************************'       06670000
                       '****************************************'.      06680000
                                                                        06690000
                                                                        06700000
       D31100-CHECK-SQLCODE.                                            06710000
      ****************************************************************  06720000
      * Verify that the prior SQL call completed successfully           06730000
      ****************************************************************  06740000
            IF SQLCODE NOT = 0 THEN                                     06750000
               MOVE 'BAD' TO STATUS1.                                   06760000
               DISPLAY '*    UNEXPECTED SQLCODE FROM DSN8CLTC '         06770000
                            'DURING ' DB2IO-COMMAND ' REQUEST.'         06780000
               DISPLAY '*'                                              06790000
               PERFORM E31110-DETAIL-SQL-ERROR.                         06800000
                                                                        06810000
                                                                        06820000
       E31110-DETAIL-SQL-ERROR.                                         06830000
      ****************************************************************  06840000
      * CALL DSNTIAR TO RETURN A TEXT MESSAGE FOR AN UNEXPECTED         06850000
      * SQLCODE.                                                        06860000
      ****************************************************************  06870000
            CALL 'DSNTIAR' USING SQLCA ERROR-MESSAGE ERROR-TEXT-LEN.    06880000
            IF RETURN-CODE = ZERO                                       06890000
               PERFORM F31111-PRINT-SQL-ERROR-MSG VARYING ERROR-INDEX   06900000
                  FROM 1 BY 1 UNTIL ERROR-INDEX GREATER THAN 10.        06910000
                                                                        06920000
      *                                           **MESSAGE FORMAT      06930000
      *                                           **ROUTINE ERROR       06940000
      *                                           **PRINT ERROR MESSAG  06950000
                                                                        06960000
                                                                        06970000
       F31111-PRINT-SQL-ERROR-MSG.                                      06980000
      ****************************************************************  06990000
      * PRINT MESSAGE TEXT                                              07000000
      ****************************************************************  07010000
            DISPLAY ERROR-TEXT (ERROR-INDEX).                           07020000