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