DSN8CLRV
Prompts the user to choose an employee then retrieves the resume data for that employee from the RESUME (CLOB) column of the EMP_PHOTO_RESUME table into a CLOB locator uses LOB locator-handling functions to locate and break out data elements and puts them in fields for display by ISPF.
***************************************************************** 00010000
* MODULE NAME = DSN8CLRV (DB2 SAMPLE PROGRAM) * 00020000
* * 00030000
* DESCRIPTIVE NAME = Display the resume of a specified employee * 00040000
* * 00050000
* * 00060000
* LICENSED MATERIALS - PROPERTY OF IBM * 00070000
* 5615-DB2 * 00080000
* (C) COPYRIGHT 1982 2013 IBM CORP. ALL RIGHTS RESERVED. * 00090000
* * 00100000
* STATUS = VERSION 11 * 00110000
* * 00120000
* Function:Prompts the user to choose an employee then retrieves* 00130000
* the resume data for that employee from the RESUME (CLOB)* 00140000
* column of the EMP_PHOTO_RESUME table into a CLOB locator* 00150000
* uses LOB locator-handling functions to locate and break * 00160000
* out data elements and puts them in fields for display * 00170000
* by ISPF. * 00180000
* * 00190000
* Restrictions: * 00200000
* * 00210000
* Module type: COBOL program * 00220000
* Module size: See linkedit output * 00230000
* Attributes: Re-entrant and re-usable * 00240000
* * 00250000
* Entry Point: CEESTART (Language Environment entry point) * 00260000
* Purpose: See Function * 00270000
* Linkage: Standard MVS program invocation no parameters * 00280000
* * 00290000
* Normal Exit: Return Code = 0000 * 00300000
* - Message: none * 00310000
* * 00320000
* Error Exit: Return Code = 0008 * 00330000
* - Message: *** ERROR: DSN8CLRV DB2 Sample Program* 00340000
* Unexpected SQLCODE encountered* 00350000
* at location xxx * 00360000
* Error detailed below * 00370000
* Processing terminated * 00380000
* (DSNTIAR-formatted message here)* 00390000
* * 00400000
* - Message: *** ERROR: DSN8CLRV DB2 Sample Program* 00410000
* No entry in the Employee Photo/* 00420000
* Resume table for employee with * 00430000
* empno = xxxxxx * 00440000
* Processing terminated * 00450000
* * 00460000
* - Message: *** ERROR: DSN8CLRV DB2 Sample Program* 00470000
* No resume data exists in * 00480000
* the Employee Photo/Resume table* 00490000
* for the employee with empno = * 00500000
* xxxxxx. * 00510000
* Processing terminated * 00520000
* * 00530000
* * 00540000
* External References: * 00550000
* - Routines/Services: DSNTIAR ISPF * 00560000
* - Data areas : DSNTIAR error_message * 00570000
* - Control blocks : None * 00580000
* * 00590000
* * 00600000
* Pseudocode: * 00610000
* DSN8CLRV: * 00620000
* - Call B10000-INITISPFVARS to establish ISPF variable * 00630000
* sharing * 00640000
* - Do until the user indicates termination * 00650000
* - Call B10010-CLEARISPFVARS to reset the ISPF shared * 00660000
* variables * 00670000
* - Call C10000-GETEMPLNUM to request an employee id * 00680000
* - Call C10010-GETEMPLRESUME to retrieve the resume * 00690000
* - Call C10010-FORMATEMPLRESUME to populate the ISPF * 00700000
* display panel * 00710000
* - Call D10030-SHOWEMPLRESUME to display the resume * 00720000
* - Call D20000-FREEISPFVARS to terminate ISPF variable * 00730000
* sharing * 00740000
* End DSN8CLRV * 00750000
* * 00760000
* B10000-INITISPFVARS: * 00770000
* - Establish ISPF variable sharing * 00780000
* End B10000-INITISPFVARS * 00790000
* * 00800000
* B10010-CLEARISPFVARS: * 00810000
* - Set ISPF vars to blank if character type or 0 if numeric * 00820000
* End B10010-CLEARISPFVARS * 00830000
* * 00840000
* C10000-GETEMPLNUM: * 00850000
* -prompt user to select an employee whose resume is to be * 00860000
* viewed * 00870000
* End C10000-GETEMPLNUM * 00880000
* * 00890000
* C10010-GETEMPLRESUME: * 00900000
* - Fetch the specified employee's resume from DB2 using a * 00910000
* CLOB locator * 00920000
* End C10010-GETEMPLRESUME * 00930000
* * 00940000
* C10010-FORMATEMPLRESUME: * 00950000
* - call getPersonalData to extract personal data from * 00960000
* the resume * 00970000
* - call getDepartmentData to extract department data * 00980000
* - call getEducationData to extract education data * 00990000
* - call getWorkHistoryData to extract work history data * 01000000
* End C10010-FORMATEMPLRESUME * 01010000
* * 01020000
* D10030-SHOWEMPLRESUME: * 01030000
* - Display the ISPF panel with specified employee's resume * 01040000
* End D10030-SHOWEMPLRESUME * 01050000
* * 01060000
* D20000-FREEISPFVARS: * 01070000
* - Terminate variable sharing with ISPF * 01080000
* End D20000-FREEISPFVARS * 01090000
* * 01100000
* D10000-GETPERSONALDATA: * 01110000
* - Parse the employee's name address home telephone no. * 01120000
* birthdate sex marital status height and weight into ISPF * 01130000
* display variables * 01140000
* End D10000-GETPERSONALDATA * 01150000
* * 01160000
* D10010-GETDEPARTMENTDATA: * 01170000
* - Parse the employee's department number manager job * 01180000
* position work telephone no. and hire date into ISPF * 01190000
* display variables * 01200000
* End D10010-GETDEPARTMENTDATA * 01210000
* * 01220000
* D10020-GETEDUCATIONDATA: * 01230000
* - Parse the employee's degree dates descriptions and schools* 01240000
* into ISPF display variables. * 01250000
* End D10020-GETEDUCATIONDATA * 01260000
* * 01270000
* D10030-GETWORKHISTORYDATA: * 01280000
* - Parse the employee's job dates titles and descriptions * 01290000
* into ISPF display variables. * 01300000
* End D10030-GETWORKHISTORYDATA * 01310000
* * 01320000
* * 01330000
* D31100-CHECK-SQLCODE: * 01340000
* - Verify that the prior SQL call completed successfully * 01350000
* End D31100-CHECK-SQLCODE * 01360000
* * 01370000
* E31110-DETAIL-SQL-ERROR: * 01380000
* - call DSNTIAR to format the unexpected SQLCODE. * 01390000
* End E31110-DETAIL-SQL-ERROR * 01400000
* * 01410000
* F31111-PRINT-SQL-ERROR-MSG: * 01420000
* - Print the message text * 01430000
* End F31111-PRINT-SQL-ERROR-MSG * 01440000
* * 01450000
***************************************************************** 01460000
* Assumptions: * 01470000
* (1) Each employee has exactly 2 entries under 'Education' * 01480000
* (2) Each employee has exactly 3 entries under 'Work History' * 01490000
* (3) Each job description consists of a single sentence and * 01500000
* that sentence ends with a period and that period is the * 01510000
* only period in the sentence. * 01520000
* * 01530000
***************************************************************** 01540000
IDENTIFICATION DIVISION. 01550000
PROGRAM-ID. DSN8CLRV. 01560000
01570000
ENVIRONMENT DIVISION. 01580000
CONFIGURATION SECTION. 01590000
SOURCE-COMPUTER. IBM-370. 01600000
OBJECT-COMPUTER. IBM-370. 01610000
01620000
01630000
DATA DIVISION. 01640000
01650000
01660000
WORKING-STORAGE SECTION. 01670000
01680000
*************************** ISPF Syntax **************************01690000
01 CHAR PIC X(8) VALUE 'CHAR '. 01700000
01 VDISPLAY PIC X(8) VALUE 'DISPLAY '. 01710000
01 VDEFINE PIC X(8) VALUE 'VDEFINE '. 01720000
01 VGET PIC X(8) VALUE 'VGET '. 01730000
01 VRESET PIC X(8) VALUE 'VRESET '. 01740000
01 DB2IO-COMMAND PIC X(35). 01750000
01 CHARCOUNT PIC 9(5) VALUE ZEROS. 01760000
01 BEGFIELD PIC 9(5). 01770000
01 ENDFIELD PIC 9(5). 01780000
01 KEEPVIEWING PIC XXX. 01790000
01 DSN8SSE PIC X(8) VALUE 'DSN8SSE '. 01800000
01 DSN8SSR PIC X(8) VALUE 'DSN8SSR '. 01810000
01 EMPLNAME PIC X(8) VALUE 'D8EMNAME'. 01820000
01 EMPLNUM PIC X(8) VALUE 'D8EMNUMB'. 01830000
01 EMPLADDR1 PIC X(8) VALUE 'D8EMADR1'. 01840000
01 EMPLDEPT PIC X(8) VALUE 'D8EMDEPT'. 01850000
01 EMPLADDR2 PIC X(8) VALUE 'D8EMADR2'. 01860000
01 EMPLMANAGER PIC X(8) VALUE 'D8MGRNAM'. 01870000
01 EMPLADDR3 PIC X(8) VALUE 'D8EMADR3'. 01880000
01 EMPLPOSITION PIC X(8) VALUE 'D8EMPOSN'. 01890000
01 BIRTHDATE PIC X(8) VALUE 'D8EMBORN'. 01900000
01 EMPLPHONE PIC X(8) VALUE 'D8EMPHON'. 01910000
01 EMPLOYEESEX PIC X(8) VALUE 'D8EMSEX '. 01920000
01 EMPLHIREDATE PIC X(8) VALUE 'D8EMHIRE'. 01930000
01 EMPLHEIGHT PIC X(8) VALUE 'D8EMHGT '. 01940000
01 EMPLWEIGHT PIC X(8) VALUE 'D8EMWGT '. 01950000
01 MARITALSTAT PIC X(8) VALUE 'D8EMPMST'. 01960000
01 EMPLYEAR1 PIC X(8) VALUE 'D8EMEDY1'. 01970000
01 EMPLDATE1 PIC X(8) VALUE 'D8EMEDD1'. 01980000
01 EMPLYEAR2 PIC X(8) VALUE 'D8EMEDY2'. 01990000
01 EMPLDATE2 PIC X(8) VALUE 'D8EMEDD2'. 02000000
01 EMPLINST1 PIC X(8) VALUE 'D8EMEDI1'. 02010000
01 EMPLINST2 PIC X(8) VALUE 'D8EMEDI2'. 02020000
01 EMPLJOBDATE1 PIC X(8) VALUE 'D8EMWHD1'. 02030000
01 EMPLJOBDESC1 PIC X(8) VALUE 'D8EMWHJ1'. 02040000
01 EMPLTITLE1 PIC X(8) VALUE 'D8EMWHT1'. 02050000
01 EMPLJOBDATE2 PIC X(8) VALUE 'D8EMWHD2'. 02060000
01 EMPLJOBDESC2 PIC X(8) VALUE 'D8EMWHJ2'. 02070000
01 EMPLTITLE2 PIC X(8) VALUE 'D8EMWHT2'. 02080000
01 EMPLJOBDATE3 PIC X(8) VALUE 'D8EMWHD3'. 02090000
01 EMPLJOBDESC3 PIC X(8) VALUE 'D8EMWHJ3'. 02100000
01 EMPLTITLE3 PIC X(8) VALUE 'D8EMWHT3'. 02110000
02120000
01 TWENTYFOUR PIC 9(06) COMP VALUE 24. 02130000
01 SIX PIC 9(06) COMP VALUE 06. 02140000
01 FOUR PIC 9(06) COMP VALUE 04. 02150000
01 FOURTEEN PIC 9(06) COMP VALUE 14. 02160000
01 TWENTYONE PIC 9(06) COMP VALUE 21. 02170000
01 EIGTHTEEN PIC 9(06) COMP VALUE 18. 02180000
01 TEN PIC 9(06) COMP VALUE 10. 02190000
01 FIVE PIC 9(06) COMP VALUE 05. 02200000
01 EIGHT PIC 9(06) COMP VALUE 08. 02210000
01 THIRTYFOUR PIC 9(06) COMP VALUE 34. 02220000
01 SIXTEEN PIC 9(06) COMP VALUE 16. 02230000
01 SIXTYTWO PIC 9(06) COMP VALUE 62. 02240000
02250000
***************************************************************** 02260000
* Job status indicator 02270000
***************************************************************** 02280000
01 STATUS1 PIC X(4). 02290000
88 NOT-OK VALUE 'BAD '. 02300000
88 OK VALUE 'GOOD'. 02310000
02320000
***************************************************************** 02330000
* Buffer for receiving SQL error messages 02340000
***************************************************************** 02350000
01 ERROR-MESSAGE. 02360000
02 ERROR-LEN PIC S9(4) COMP VALUE +960. 02370000
02 ERROR-TEXT PIC X(120) OCCURS 10 TIMES 02380000
INDEXED BY ERROR-INDEX. 02390000
77 ERROR-TEXT-LEN PIC S9(9) COMP VALUE +120. 02400000
02410000
02420000
********************** ISPF Shared Variables *********************02430000
01 D8EMNAME PIC X(24). 02440000
01 D8EMNUMB PIC X(6). 02450000
01 D8EMADR1 PIC X(24). 02460000
01 D8EMDEPT PIC X(4). 02470000
01 D8EMADR2 PIC X(24). 02480000
01 D8MGRNAM PIC X(21). 02490000
01 D8EMADR3 PIC X(14). 02500000
01 D8EMPOSN PIC X(21). 02510000
01 D8EMBORN PIC X(18). 02520000
01 D8EMPHON PIC X(14). 02530000
01 D8EMSEX PIC X(6). 02540000
01 D8EMHIRE PIC X(10). 02550000
01 D8EMHGT PIC X(5). 02560000
01 D8EMWGT PIC X(8). 02570000
01 D8EMPMST PIC X(8). 02580000
01 D8EMEDY1 PIC X(4). 02590000
01 D8EMEDD1 PIC X(34). 02600000
01 D8EMEDY2 PIC X(4). 02610000
01 D8EMEDD2 PIC X(34). 02620000
01 D8EMEDI1 PIC X(34). 02630000
01 D8EMEDI2 PIC X(34). 02640000
01 D8EMWHD1 PIC X(16). 02650000
01 D8EMWHJ1 PIC X(62). 02660000
01 SUB1-D8EMWHJ1 PIC X(62). 02670000
01 SUB2-D8EMWHJ1 PIC X(20). 02680000
01 D8EMWHT1 PIC X(62). 02690000
01 D8EMWHD2 PIC X(16). 02700000
01 D8EMWHJ2 PIC X(62). 02710000
01 SUB1-D8EMWHJ2 PIC X(62). 02720000
01 SUB2-D8EMWHJ2 PIC X(20). 02730000
01 D8EMWHT2 PIC X(62). 02740000
01 D8EMWHD3 PIC X(16). 02750000
01 D8EMWHJ3 PIC X(62). 02760000
01 SUB1-D8EMWHJ3 PIC X(62). 02770000
01 SUB2-D8EMWHJ3 PIC X(20). 02780000
01 D8EMWHT3 PIC X(62). 02790000
02800000
02810000
02820000
**************************** DB2 TABLES **************************02830000
EXEC SQL DECLARE EMP_PHOTO_RESUME TABLE 02840000
( EMPNO CHAR(06) NOT NULL, 02850000
EMP_ROWID ROWID, 02860000
PSEG_PHOTO BLOB( 500K ), 02870000
BMP_PHOTO BLOB( 100K ), 02880000
RESUME CLOB( 5K ) ) 02890000
END-EXEC. 02900000
02910000
02920000
********** DB2 HOST AND NULL INDICATOR VARIABLES *************** 02930000
EXEC SQL BEGIN DECLARE SECTION END-EXEC. 02940000
77 SQLCODE PIC S9(9) COMP-4. 02950000
77 SQLSTATE PIC X(5). 02960000
01 HVEMPNO PIC X(6). 02970000
01 BEGSECTION PIC S9(4) COMP-4. 02980000
01 ENDSECTION PIC S9(4) COMP-4. 02990000
01 HVRESUME USAGE IS SQL TYPE IS CLOB(5K). 03000000
01 NIRESUME PIC S9(4) COMP-4 VALUE 0. 03010000
03020000
03030000
**************** DB2 LOB LOCATOR VARIABLES ********************* 03040000
01 CLRESUME USAGE IS SQL TYPE IS CLOB-LOCATOR. 03050000
EXEC SQL END DECLARE SECTION END-EXEC. 03060000
03070000
03080000
PROCEDURE DIVISION. 03090000
A10000-LOBEXAMPLE. 03100000
03110000
MOVE 'GOOD' TO STATUS1. 03120000
MOVE "YES" TO KEEPVIEWING. 03130000
PERFORM B10000-INITISPFVARS. 03140000
03150000
PERFORM UNTIL KEEPVIEWING = "NO" 03160000
03170000
PERFORM B10010-CLEARISPFVARS 03180000
03190000
PERFORM C10000-GETEMPLNUM 03200000
03210000
IF OK AND KEEPVIEWING = "YES" 03220000
PERFORM C10010-GETEMPLRESUME 03230000
03240000
IF OK 03250000
PERFORM C10010-FORMATEMPLRESUME 03260000
END-IF 03270000
03280000
IF OK 03290000
PERFORM D10030-SHOWEMPLRESUME 03300000
ELSE 03310000
MOVE "NO" TO KEEPVIEWING 03320000
END-IF 03330000
END-IF 03340000
03350000
END-PERFORM 03360000
03370000
********************************************************** 03380000
* Terminate variable sharing with ISPF * 03390000
********************************************************** 03400000
PERFORM D20000-FREEISPFVARS. 03410000
03420000
STOP RUN. 03430000
03440000
B10000-INITISPFVARS. 03450000
************************************************************* 03460000
* Called by the main routine. Establishes variable sharing * 03470000
* between ISPF and this program. * 03480000
************************************************************* 03490000
CALL 'ISPLINK' USING VDEFINE, EMPLNAME, D8EMNAME, CHAR, 03500000
TWENTYFOUR. 03510000
CALL 'ISPLINK' USING VDEFINE, EMPLNUM, D8EMNUMB, CHAR, 03520000
SIX. 03530000
CALL 'ISPLINK' USING VDEFINE, EMPLADDR1, D8EMADR1, CHAR, 03540000
TWENTYFOUR. 03550000
CALL 'ISPLINK' USING VDEFINE, EMPLDEPT, D8EMDEPT, CHAR, 03560000
FOUR. 03570000
CALL 'ISPLINK' USING VDEFINE, EMPLADDR2, D8EMADR2, CHAR, 03580000
TWENTYFOUR. 03590000
CALL 'ISPLINK' USING VDEFINE, EMPLMANAGER, D8MGRNAM, CHAR, 03600000
TWENTYONE. 03610000
CALL 'ISPLINK' USING VDEFINE, EMPLADDR3, D8EMADR3, CHAR, 03620000
FOURTEEN. 03630000
CALL 'ISPLINK' USING VDEFINE, EMPLPOSITION, D8EMPOSN, CHAR, 03640000
TWENTYONE. 03650000
CALL 'ISPLINK' USING VDEFINE, BIRTHDATE, D8EMBORN, CHAR, 03660000
EIGTHTEEN. 03670000
CALL 'ISPLINK' USING VDEFINE, EMPLPHONE, D8EMPHON, CHAR, 03680000
FOURTEEN. 03690000
CALL 'ISPLINK' USING VDEFINE, EMPLOYEESEX, D8EMSEX, CHAR, 03700000
SIX. 03710000
CALL 'ISPLINK' USING VDEFINE, EMPLHIREDATE, D8EMHIRE, CHAR, 03720000
TEN. 03730000
CALL 'ISPLINK' USING VDEFINE, EMPLHEIGHT, D8EMHGT, CHAR, 03740000
FIVE. 03750000
CALL 'ISPLINK' USING VDEFINE, EMPLWEIGHT, D8EMWGT, CHAR, 03760000
EIGHT. 03770000
CALL 'ISPLINK' USING VDEFINE, MARITALSTAT, D8EMPMST, CHAR, 03780000
EIGHT. 03790000
CALL 'ISPLINK' USING VDEFINE, EMPLYEAR1, D8EMEDY1, CHAR, 03800000
FOUR. 03810000
CALL 'ISPLINK' USING VDEFINE, EMPLDATE1, D8EMEDD1, CHAR, 03820000
THIRTYFOUR. 03830000
CALL 'ISPLINK' USING VDEFINE, EMPLYEAR2, D8EMEDY2, CHAR, 03840000
FOUR. 03850000
CALL 'ISPLINK' USING VDEFINE, EMPLDATE2, D8EMEDD2, CHAR, 03860000
THIRTYFOUR. 03870000
CALL 'ISPLINK' USING VDEFINE, EMPLINST1, D8EMEDI1, CHAR, 03880000
THIRTYFOUR. 03890000
CALL 'ISPLINK' USING VDEFINE, EMPLINST2, D8EMEDI2, CHAR, 03900000
THIRTYFOUR. 03910000
CALL 'ISPLINK' USING VDEFINE, EMPLJOBDATE1, D8EMWHD1, CHAR, 03920000
SIXTEEN. 03930000
CALL 'ISPLINK' USING VDEFINE, EMPLJOBDESC1, D8EMWHJ1, CHAR, 03940000
SIXTYTWO. 03950000
CALL 'ISPLINK' USING VDEFINE, EMPLTITLE1, D8EMWHT1, CHAR, 03960000
SIXTYTWO. 03970000
CALL 'ISPLINK' USING VDEFINE, EMPLJOBDATE2, D8EMWHD2, CHAR, 03980000
SIXTEEN. 03990000
CALL 'ISPLINK' USING VDEFINE, EMPLJOBDESC2, D8EMWHJ2, CHAR, 04000000
SIXTYTWO. 04010000
CALL 'ISPLINK' USING VDEFINE, EMPLTITLE2, D8EMWHT2, CHAR, 04020000
SIXTYTWO. 04030000
CALL 'ISPLINK' USING VDEFINE, EMPLJOBDATE3, D8EMWHD3, CHAR, 04040000
SIXTEEN. 04050000
CALL 'ISPLINK' USING VDEFINE, EMPLJOBDESC3, D8EMWHJ3, CHAR, 04060000
SIXTYTWO. 04070000
CALL 'ISPLINK' USING VDEFINE, EMPLTITLE3, D8EMWHT3, CHAR, 04080000
SIXTYTWO. 04090000
***********************END OF ISPFINITVARS****************** 04100000
04110000
B10010-CLEARISPFVARS. 04120000
******************************************************************04130000
* Called by the main routine. Blanks out the ISPF shared variables04140000
******************************************************************04150000
MOVE SPACES TO D8EMNAME. 04160000
MOVE SPACES TO D8EMNUMB. 04170000
MOVE SPACES TO D8EMADR1. 04180000
MOVE SPACES TO D8EMDEPT. 04190000
MOVE SPACES TO D8EMADR2. 04200000
MOVE SPACES TO D8MGRNAM. 04210000
MOVE SPACES TO D8EMADR3. 04220000
MOVE SPACES TO D8EMPOSN. 04230000
MOVE SPACES TO D8EMBORN. 04240000
MOVE SPACES TO D8EMPHON. 04250000
MOVE SPACES TO D8EMSEX. 04260000
MOVE SPACES TO D8EMHIRE. 04270000
MOVE SPACES TO D8EMHGT. 04280000
MOVE SPACES TO D8EMWGT. 04290000
MOVE SPACES TO D8EMPMST. 04300000
MOVE SPACES TO D8EMEDY1. 04310000
MOVE SPACES TO D8EMEDD1. 04320000
MOVE SPACES TO D8EMEDY2. 04330000
MOVE SPACES TO D8EMEDD2. 04340000
MOVE SPACES TO D8EMEDI1. 04350000
MOVE SPACES TO D8EMEDI2. 04360000
MOVE SPACES TO D8EMWHD1. 04370000
MOVE SPACES TO D8EMWHJ1. 04380000
MOVE SPACES TO D8EMWHT1. 04390000
MOVE SPACES TO D8EMWHD2. 04400000
MOVE SPACES TO D8EMWHJ2. 04410000
MOVE SPACES TO D8EMWHT2. 04420000
MOVE SPACES TO D8EMWHD3. 04430000
MOVE SPACES TO D8EMWHJ3. 04440000
MOVE SPACES TO D8EMWHT3. 04450000
***********************END OF CLEARISPFVARS****************** 04460000
04470000
04480000
04490000
C10000-GETEMPLNUM. 04500000
********************************************************** 04510000
* Called by the main routine. Displays an ISPF panels to* 04520000
* prompt the user to select an employee whose resume is * 04530000
* to be displayed. * 04540000
********************************************************** 04550000
04560000
******DISPLAY THE PROMPT PANEL**************************** 04570000
CALL 'ISPLINK' USING VDISPLAY DSN8SSE. 04580000
IF RETURN-CODE NOT = 0 04590000
MOVE 'NO' TO KEEPVIEWING. 04600000
04610000
MOVE D8EMNUMB TO HVEMPNO. 04620000
04630000
C10010-GETEMPLRESUME. 04640000
********************************************************** 04650000
* CALLED BY THE MAIN ROUTINE. EXTRACTS A SPECIFIED * 04660000
* EMPLOYEE'SRESUME DATA FROM A CLOB COLUMN IN THE SAMPLE * 04670000
* EMP_PHOTO_RESUME TABLE TO A CLOB LOCATOR. * 04680000
********************************************************** 04690000
04700000
**** ESTABLISH A CLOB LOCATOR ON THE RESUME OF THE ****** 04710000
**** SPECIFIED EMPNO ****** 04720000
04730000
EXEC SQL SELECT RESUME 04740000
INTO :CLRESUME 04750000
FROM EMP_PHOTO_RESUME 04760000
WHERE EMPNO = :HVEMPNO 04770000
END-EXEC. 04780000
04790000
IF SQLCODE = 100 04800000
MOVE 'BAD' TO STATUS1 04810000
DISPLAY '**************************************' 04820000
DISPLAY '*** ERROR: DSN8CLRV DB2 SAMPLE PROGRAM' 04830000
DISPLAY '*** NO ENTRY IN THE EMPLOYEE PHOTO/RESUME' 04840000
DISPLAY '*** TABLE FOR EMPLOYEE WITH EMPNO ' HVEMPNO 04850000
DISPLAY '*** PROCESSING TERMINATED' 04860000
DISPLAY '***************************************' 04870000
ELSE 04880000
IF SQLCODE = 305 04890000
MOVE 'BAD' TO STATUS1 04900000
DISPLAY '************************************' 04910000
DISPLAY '*** ERROR: DSN8CLRV DB2 SAMPLE PROGRAM' 04920000
DISPLAY '*** NO RESUME DATA EXISTS IN THE' 04930000
DISPLAY '*** EMPLOYEE PHOTO/RESUME TABLE FOR THE' 04940000
DISPLAY '*** EMPLOYEE WITH EMPNO = ' HVEMPNO 04950000
DISPLAY '*** PROCESSING TERMINATED' 04960000
DISPLAY '************************************' 04970000
ELSE 04980000
IF SQLCODE NOT = 0 04990000
MOVE 'BAD' TO STATUS1 05000000
MOVE 'GETEMPLRESUME @ SELECT' TO DB2IO-COMMAND 05010000
PERFORM D31100-CHECK-SQLCODE 05020000
END-IF 05030000
END-IF 05040000
END-IF. 05050000
05060000
C10010-FORMATEMPLRESUME. 05070000
**************************************************************** 05080000
* Called by the main routine. Calls routines to parse out the * 05090000
* contents of the resume into ISPF-shared variables. * 05100000
**************************************************************** 05110000
05120000
*************************************************************** 05130000
*Get employee's name, address, and other personal information * 05140000
*************************************************************** 05150000
PERFORM D10000-GETPERSONALDATA. 05160000
05170000
IF OK 05180000
PERFORM D10010-GETDEPARTMENTDATA. 05190000
IF OK 05200000
PERFORM D10020-GETEDUCATIONDATA. 05210000
IF OK 05220000
PERFORM D10030-GETWORKHISTORYDATA. 05230000
05240000
******************************************************************05250000
* Free the CLOB locator for the resume 05260000
******************************************************************05270000
IF OK 05280000
EXEC SQL FREE LOCATOR :CLRESUME END-EXEC 05290000
IF SQLCODE NOT = 0 05300000
MOVE 'BAD' TO STATUS1 05310000
MOVE 'FORMATEMPLRESUME @ FREE LOCATOR' 05320000
TO DB2IO-COMMAND 05330000
PERFORM D31100-CHECK-SQLCODE 05340000
END-IF 05350000
END-IF. 05360000
05370000
05380000
05390000
D10000-GETPERSONALDATA. 05400000
******************************************************************05410000
* CALLED BY THE FORMATEMPLRESUME ROUTINE TO PARSE THE CLOB LOCATOR05420000
* DATA FOR THE EMPLOYEE'S NAME, ADDRESS, HOME TELEPHONE NO., BIRTH05430000
* DATE, SEX, MARITAL STATUS, HEIGHT, AND WEIGHT INTO ISPF VARIABLE05440000
******************************************************************05450000
05460000
******************************************************************05470000
* EXTRACT THE PERSONAL DATA SECTION FROM THE CLOB LOCATOR 05480000
******************************************************************05490000
MOVE SPACES TO HVRESUME-DATA. 05500000
EXEC SQL SET :BEGSECTION = 05510000
POSSTR( :CLRESUME, ' Resume: ' ) 05520000
END-EXEC. 05530000
05540000
IF SQLCODE NOT = 0 05550000
MOVE 'BAD' TO STATUS1 05560000
MOVE 'GETPERSONALDATA @ POSSTR 1' TO DB2IO-COMMAND 05570000
PERFORM D31100-CHECK-SQLCODE 05580000
END-IF 05590000
05600000
IF OK 05610000
EXEC SQL SET :ENDSECTION 05620000
= POSSTR( :CLRESUME, ' Department Information ' ) 05630000
END-EXEC 05640000
IF SQLCODE NOT = 0 05650000
MOVE 'BAD' TO STATUS1 05660000
MOVE 'GETPERSONALDATA @ POSSTR 2' TO DB2IO-COMMAND 05670000
PERFORM D31100-CHECK-SQLCODE 05680000
END-IF 05690000
END-IF 05700000
05710000
IF OK 05720000
EXEC SQL SET :HVRESUME 05730000
= SUBSTR(:CLRESUME,:BEGSECTION, 05740000
:ENDSECTION - :BEGSECTION ) 05750000
END-EXEC 05760000
IF SQLCODE NOT = 0 05770000
MOVE 'BAD' TO STATUS1 05780000
MOVE 'GETPERSONALDATA @ SUBSTR' TO DB2IO-COMMAND 05790000
PERFORM D31100-CHECK-SQLCODE 05800000
END-IF 05810000
END-IF 05820000
05830000
**** GET THE EMPLOYEE'S NAME *********************************** 05840000
IF OK 05850000
MOVE 1 TO CHARCOUNT 05860000
INSPECT HVRESUME-DATA TALLYING CHARCOUNT 05870000
FOR CHARACTERS BEFORE INITIAL " Resume: " 05880000
COMPUTE BEGFIELD = CHARCOUNT + 11 05890000
05900000
MOVE 1 TO CHARCOUNT 05910000
INSPECT HVRESUME-DATA TALLYING CHARCOUNT 05920000
FOR CHARACTERS 05930000
BEFORE INITIAL " Personal Information " 05940000
MOVE CHARCOUNT TO ENDFIELD 05950000
05960000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 05970000
D8EMNAME 05980000
END-IF 05990000
06000000
IF OK 06010000
MOVE 1 TO CHARCOUNT 06020000
INSPECT HVRESUME-DATA TALLYING CHARCOUNT 06030000
FOR CHARACTERS BEFORE INITIAL " Address: " 06040000
COMPUTE BEGFIELD = CHARCOUNT + 22 06050000
06060000
MOVE 1 TO CHARCOUNT 06070000
INSPECT HVRESUME-DATA TALLYING CHARCOUNT 06080000
FOR CHARACTERS BEFORE INITIAL " " 06090000
MOVE CHARCOUNT TO ENDFIELD 06100000
06110000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 06120000
D8EMADR1 06130000
END-IF 06140000
06150000
******* GET THE EMPLOYEE'S CITY, STATE, AND ZIPCODE ************ 06160000
IF OK 06170000
COMPUTE BEGFIELD = ENDFIELD + 22 06180000
MOVE 1 TO CHARCOUNT 06190000
INSPECT HVRESUME-DATA TALLYING CHARCOUNT FOR CHARACTERS 06200000
BEFORE INITIAL " Phone: " 06210000
MOVE CHARCOUNT TO ENDFIELD 06220000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 06230000
D8EMADR2 06240000
END-IF 06250000
06260000
********* GET THE EMPLOYEE'S TELEPHONE NUMBER *************** 06270000
IF OK 06280000
COMPUTE BEGFIELD = ENDFIELD + 22 06290000
MOVE 1 TO CHARCOUNT 06300000
INSPECT HVRESUME-DATA TALLYING CHARCOUNT FOR CHARACTERS 06310000
BEFORE INITIAL " Birthdate: " 06320000
MOVE CHARCOUNT TO ENDFIELD 06330000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 06340000
D8EMADR3 06350000
END-IF 06360000
06370000
******* GET THE EMPLOYEE'S BIRTH DATE ****************** 06380000
IF OK 06390000
COMPUTE BEGFIELD = ENDFIELD + 22 06400000
MOVE 1 TO CHARCOUNT 06410000
INSPECT HVRESUME-DATA TALLYING CHARCOUNT FOR CHARACTERS 06420000
BEFORE INITIAL " Sex: " 06430000
MOVE CHARCOUNT TO ENDFIELD 06440000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 06450000
D8EMBORN 06460000
END-IF 06470000
06480000
******* GET THE EMPLOYEE'S SEX ****************** 06490000
IF OK 06500000
COMPUTE BEGFIELD = ENDFIELD + 22 06510000
MOVE 1 TO CHARCOUNT 06520000
INSPECT HVRESUME-DATA TALLYING CHARCOUNT FOR CHARACTERS 06530000
BEFORE INITIAL " Marital Status: " 06540000
MOVE CHARCOUNT TO ENDFIELD 06550000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 06560000
D8EMSEX 06570000
END-IF 06580000
06590000
******* GET THE EMPLOYEE'S MARITAL STATUS **************** 06600000
IF OK 06610000
COMPUTE BEGFIELD = ENDFIELD + 22 06620000
MOVE 1 TO CHARCOUNT 06630000
INSPECT HVRESUME-DATA TALLYING CHARCOUNT FOR CHARACTERS 06640000
BEFORE INITIAL " Height: " 06650000
MOVE CHARCOUNT TO ENDFIELD 06660000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 06670000
D8EMPMST 06680000
END-IF 06690000
06700000
******* GET THE EMPLOYEE'S HEIGHT ****************** 06710000
IF OK 06720000
COMPUTE BEGFIELD = ENDFIELD + 22 06730000
MOVE 1 TO CHARCOUNT 06740000
INSPECT HVRESUME-DATA TALLYING CHARCOUNT FOR CHARACTERS 06750000
BEFORE INITIAL " Weight: " 06760000
MOVE CHARCOUNT TO ENDFIELD 06770000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 06780000
D8EMHGT 06790000
END-IF 06800000
06810000
******* GET THE EMPLOYEE'S WEIGHT **************** 06820000
IF OK 06830000
COMPUTE BEGFIELD = ENDFIELD + 22 06840000
MOVE HVRESUME-DATA(BEGFIELD : ) TO 06850000
D8EMWGT 06860000
END-IF. 06870000
06880000
D10010-GETDEPARTMENTDATA. 06890000
**************************************************************** 06900000
* Called by the formatEmplResume routine to parse the CLOB * 06910000
* locator data for the employee's department number, manager, * 06920000
* job position,work telephone no., and hire date into ISPF * 06930000
* variables. * 06940000
**************************************************************** 06950000
06960000
**************************************************************** 06970000
* Extract the Department Data section from the CLOB locator * 06980000
**************************************************************** 06990000
MOVE SPACES TO HVRESUME-DATA. 07000000
MOVE ENDSECTION TO BEGSECTION. 07010000
EXEC SQL SET :ENDSECTION 07020000
= POSSTR( :CLRESUME, ' Education ' ) 07030000
END-EXEC. 07040000
IF SQLCODE NOT = 0 07050000
MOVE 'BAD' TO STATUS1 07060000
MOVE 'GETDEPARTMENTDATA @ POSSTR' TO DB2IO-COMMAND 07070000
PERFORM D31100-CHECK-SQLCODE 07080000
END-IF 07090000
07100000
IF OK 07110000
EXEC SQL SET :HVRESUME 07120000
= SUBSTR( :CLRESUME, :BEGSECTION, 07130000
:ENDSECTION - :BEGSECTION ) 07140000
END-EXEC 07150000
IF SQLCODE NOT = 0 07160000
MOVE 'BAD' TO STATUS1 07170000
MOVE 'GETDEPARTMENTDATA @ SUBSTR' TO DB2IO-COMMAND 07180000
PERFORM D31100-CHECK-SQLCODE 07190000
END-IF 07200000
END-IF 07210000
07220000
******GET EMPLOYEE'S DEPARTMENT NUMBER ********************** 07230000
IF OK 07240000
MOVE 1 TO CHARCOUNT 07250000
INSPECT HVRESUME-DATA TALLYING CHARCOUNT 07260000
FOR CHARACTERS BEFORE INITIAL " Dept Number: " 07270000
COMPUTE BEGFIELD = CHARCOUNT + 22 07280000
07290000
MOVE 1 TO CHARCOUNT 07300000
INSPECT HVRESUME-DATA TALLYING CHARCOUNT 07310000
FOR CHARACTERS 07320000
BEFORE INITIAL " Manager: " 07330000
MOVE CHARCOUNT TO ENDFIELD 07340000
07350000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 07360000
D8EMDEPT 07370000
END-IF 07380000
07390000
******GET EMPLOYEE'S MANAGER'S NAME ********************** 07400000
IF OK 07410000
COMPUTE BEGFIELD = ENDFIELD + 22 07420000
07430000
MOVE 1 TO CHARCOUNT 07440000
INSPECT HVRESUME-DATA TALLYING CHARCOUNT 07450000
FOR CHARACTERS 07460000
BEFORE INITIAL " Position: " 07470000
MOVE CHARCOUNT TO ENDFIELD 07480000
07490000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 07500000
D8MGRNAM 07510000
END-IF 07520000
07530000
******GET THE EMPLOYEE'S JOB POSITION ********************** 07540000
IF OK 07550000
COMPUTE BEGFIELD = ENDFIELD + 22 07560000
07570000
MOVE 1 TO CHARCOUNT 07580000
INSPECT HVRESUME-DATA TALLYING CHARCOUNT 07590000
FOR CHARACTERS 07600000
BEFORE INITIAL " Phone: " 07610000
MOVE CHARCOUNT TO ENDFIELD 07620000
07630000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 07640000
D8EMPOSN 07650000
END-IF 07660000
07670000
******GET THE EMPLOYEE'S WORK TELEPHONE NUMBER*************** 07680000
IF OK 07690000
COMPUTE BEGFIELD = ENDFIELD + 22 07700000
07710000
MOVE 1 TO CHARCOUNT 07720000
INSPECT HVRESUME-DATA TALLYING CHARCOUNT 07730000
FOR CHARACTERS 07740000
BEFORE INITIAL " Hire Date: " 07750000
MOVE CHARCOUNT TO ENDFIELD 07760000
07770000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 07780000
D8EMPHON 07790000
END-IF 07800000
07810000
******GET THE EMPLOYEE'S HIRE DATE *************************** 07820000
IF OK 07830000
COMPUTE BEGFIELD = ENDFIELD + 22 07840000
07850000
MOVE HVRESUME-DATA(BEGFIELD : ) TO D8EMHIRE 07860000
END-IF. 07870000
07880000
07890000
D10020-GETEDUCATIONDATA. 07900000
*************************************************************** 07910000
* Called by the formatEmplResume routine to parse the CLOB * 07920000
* locator data for the employee's degree dates, descriptions, * 07930000
* and schools into ISPF variables * 07940000
*************************************************************** 07950000
07960000
**************************************************************** 07970000
* Extract the Department Data section from the CLOB locator * 07980000
**************************************************************** 07990000
MOVE SPACES TO HVRESUME-DATA. 08000000
MOVE ENDSECTION TO BEGSECTION. 08010000
EXEC SQL SET :ENDSECTION 08020000
= POSSTR( :CLRESUME, ' Work History ' ) 08030000
END-EXEC. 08040000
IF SQLCODE NOT = 0 08050000
MOVE 'BAD' TO STATUS1 08060000
MOVE 'GETEDUCATIONDATA @ POSSTR' TO DB2IO-COMMAND 08070000
PERFORM D31100-CHECK-SQLCODE 08080000
END-IF 08090000
08100000
IF OK 08110000
EXEC SQL SET :HVRESUME 08120000
= SUBSTR( :CLRESUME, :BEGSECTION, 08130000
:ENDSECTION - :BEGSECTION ) 08140000
END-EXEC 08150000
IF SQLCODE NOT = 0 08160000
MOVE 'BAD' TO STATUS1 08170000
MOVE 'GETEDUCATIONDATA @ SUBSTR' TO DB2IO-COMMAND 08180000
PERFORM D31100-CHECK-SQLCODE 08190000
END-IF 08200000
END-IF 08210000
08220000
*****GET YEAR AND DESCRIPTION OF EMPLOYEE'S MOST RECENT DEGREE** 08230000
IF OK 08240000
MOVE 1 TO CHARCOUNT 08250000
INSPECT HVRESUME-DATA TALLYING CHARCOUNT 08260000
FOR CHARACTERS BEFORE INITIAL " Education " 08270000
COMPUTE BEGFIELD = CHARCOUNT + 16 08280000
08290000
MOVE 1 TO CHARCOUNT 08300000
INSPECT HVRESUME-DATA TALLYING CHARCOUNT 08310000
FOR CHARACTERS 08320000
BEFORE INITIAL " " 08330000
MOVE CHARCOUNT TO ENDFIELD 08340000
08350000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 08360000
D8EMEDY1 08370000
COMPUTE BEGFIELD = ENDFIELD + 16 08380000
08390000
MOVE 1 TO CHARCOUNT 08400000
INSPECT HVRESUME-DATA TALLYING CHARCOUNT 08410000
FOR CHARACTERS 08420000
BEFORE INITIAL " " 08430000
MOVE CHARCOUNT TO ENDFIELD 08440000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 08450000
D8EMEDD1 08460000
END-IF 08470000
08480000
***GET INSTITUTION THAT GRANTED EMPLOYEE'S MOST RECENT DEGREE*****08490000
IF OK 08500000
COMPUTE BEGFIELD = ENDFIELD + 22 08510000
08520000
MOVE 0 TO CHARCOUNT 08530000
INSPECT HVRESUME-DATA(BEGFIELD : ) TALLYING CHARCOUNT 08540000
FOR CHARACTERS 08550000
BEFORE INITIAL " " 08560000
* MOVE CHARCOUNT TO ENDFIELD 08570000
COMPUTE ENDFIELD = BEGFIELD + CHARCOUNT 08580000
08590000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 08600000
D8EMEDI1 08610000
END-IF 08620000
08630000
*****GET YEAR AND DESCRIPTION OF EMPLOYEE'S PREVIOUS DEGREE** 08640000
IF OK 08650000
COMPUTE BEGFIELD = ENDFIELD + 3 08660000
08670000
MOVE 0 TO CHARCOUNT 08680000
INSPECT HVRESUME-DATA(BEGFIELD : ) TALLYING CHARCOUNT 08690000
FOR CHARACTERS 08700000
BEFORE INITIAL " " 08710000
COMPUTE ENDFIELD = BEGFIELD + CHARCOUNT 08720000
08730000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 08740000
D8EMEDY2 08750000
COMPUTE BEGFIELD = ENDFIELD + 16 08760000
08770000
MOVE 0 TO CHARCOUNT 08780000
INSPECT HVRESUME-DATA(BEGFIELD : ) TALLYING CHARCOUNT 08790000
FOR CHARACTERS 08800000
BEFORE INITIAL " " 08810000
COMPUTE ENDFIELD = BEGFIELD + CHARCOUNT 08820000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 08830000
D8EMEDD2 08840000
END-IF 08850000
08860000
***GET INSTITUTION THAT GRANTED EMPLOYEE'S PREVIOUS DEGREE***** 08870000
IF OK 08880000
COMPUTE BEGFIELD = ENDFIELD + 22 08890000
08900000
MOVE HVRESUME-DATA(BEGFIELD : ) TO 08910000
D8EMEDI2 08920000
END-IF. 08930000
08940000
D10030-GETWORKHISTORYDATA. 08950000
*************************************************************** 08960000
* CALLED BY THE FORMATEMPLRESUME ROUTINE TO PARSE THE CLOB * 08970000
* LOCATOR DATA FOR THE EMPLOYEE'S JOB DATES, TITLES, AND * 08980000
* DESCRIPTIONS INTO ISPF VARIABLES * 08990000
*************************************************************** 09000000
09010000
*************************************************************** 09020000
* Extract the Work History Data section from the CLOB locator * 09030000
*************************************************************** 09040000
MOVE SPACES TO HVRESUME-DATA. 09050000
MOVE ENDSECTION TO BEGSECTION. 09060000
EXEC SQL SET :ENDSECTION 09070000
= POSSTR( :CLRESUME, ' Interests ' ) 09080000
END-EXEC. 09090000
IF SQLCODE NOT = 0 09100000
MOVE 'BAD' TO STATUS1 09110000
MOVE 'GETWORKHISTORYDATA @ POSSTR' TO DB2IO-COMMAND 09120000
PERFORM D31100-CHECK-SQLCODE 09130000
END-IF 09140000
IF OK 09150000
EXEC SQL SET :HVRESUME 09160000
= SUBSTR( :CLRESUME, :BEGSECTION, 09170000
:ENDSECTION - :BEGSECTION ) 09180000
END-EXEC 09190000
IF SQLCODE NOT = 0 09200000
MOVE 'BAD' TO STATUS1 09210000
MOVE 'GETWORKHISTORYDATA @ SUBSTR' TO DB2IO-COMMAND 09220000
PERFORM D31100-CHECK-SQLCODE 09230000
END-IF 09240000
END-IF 09250000
*************************************************************** 09260000
* GET DATES AND TITLES OF EMPLOYEE'S MOST RECENT JOB * 09270000
*************************************************************** 09280000
09290000
IF OK 09300000
MOVE 1 TO CHARCOUNT 09310000
INSPECT HVRESUME-DATA TALLYING CHARCOUNT 09320000
FOR CHARACTERS BEFORE INITIAL " Work History " 09330000
COMPUTE BEGFIELD = CHARCOUNT + 19 09340000
MOVE HVRESUME-DATA(BEGFIELD : 15) TO D8EMWHD1 09350000
COMPUTE BEGFIELD = BEGFIELD + 20 09360000
MOVE 0 TO CHARCOUNT 09370000
INSPECT HVRESUME-DATA(BEGFIELD : ) TALLYING CHARCOUNT 09380000
FOR CHARACTERS 09390000
BEFORE INITIAL " " 09400000
COMPUTE ENDFIELD = BEGFIELD + CHARCOUNT 09410000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 09420000
D8EMWHT1 09430000
END-IF 09440000
09450000
*************************************************************** 09460000
* GET DESCRIPTION OF EMPLOYEE'S MOST RECENT JOB * 09470000
*************************************************************** 09480000
IF OK 09490000
COMPUTE BEGFIELD = ENDFIELD + 22 09500000
MOVE 0 TO CHARCOUNT 09510000
INSPECT HVRESUME-DATA(BEGFIELD : ) TALLYING CHARCOUNT 09520000
FOR CHARACTERS 09530000
BEFORE INITIAL ". " 09540000
COMPUTE ENDFIELD = BEGFIELD + CHARCOUNT 09550000
09560000
IF ENDFIELD - BEGFIELD < 62 09570000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 09580000
D8EMWHJ1 09590000
ELSE 09600000
MOVE 0 TO CHARCOUNT 09610000
INSPECT HVRESUME-DATA(BEGFIELD : ) TALLYING CHARCOUNT 09620000
FOR CHARACTERS 09630000
BEFORE INITIAL " " 09640000
COMPUTE ENDFIELD = BEGFIELD + CHARCOUNT 09650000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 09660000
SUB1-D8EMWHJ1 09670000
COMPUTE BEGFIELD = ENDFIELD + 22 09680000
MOVE 0 TO CHARCOUNT 09690000
INSPECT HVRESUME-DATA(BEGFIELD : ) TALLYING CHARCOUNT 09700000
FOR CHARACTERS 09710000
BEFORE INITIAL ". " 09720000
COMPUTE ENDFIELD = BEGFIELD + CHARCOUNT 09730000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 09740000
SUB2-D8EMWHJ1 09750000
STRING SUB1-D8EMWHJ1 SPACE SUB2-D8EMWHJ1 09760000
DELIMITED BY " " INTO D8EMWHJ1 09770000
END-IF 09780000
END-IF 09790000
************************************************************* 09800000
*****GET DATES AND TITLE OF EMPLOYEE'S PREVIOUS JOB********** 09810000
************************************************************* 09820000
IF OK 09830000
COMPUTE BEGFIELD = ENDFIELD + 4 09840000
MOVE HVRESUME-DATA(BEGFIELD : 15) TO 09850000
D8EMWHD2 09860000
COMPUTE BEGFIELD = BEGFIELD + 20 09870000
MOVE 0 TO CHARCOUNT 09880000
INSPECT HVRESUME-DATA(BEGFIELD : ) TALLYING CHARCOUNT 09890000
FOR CHARACTERS 09900000
BEFORE INITIAL " " 09910000
COMPUTE ENDFIELD = BEGFIELD + CHARCOUNT 09920000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 09930000
D8EMWHT2 09940000
END-IF 09950000
*************************************************************** 09960000
* GET DESCRIPTION OF EMPLOYEE'S PREVIOUS JOB * 09970000
*************************************************************** 09980000
IF OK 09990000
COMPUTE BEGFIELD = ENDFIELD + 22 10000000
MOVE 0 TO CHARCOUNT 10010000
INSPECT HVRESUME-DATA(BEGFIELD : ) TALLYING CHARCOUNT 10020000
FOR CHARACTERS 10030000
BEFORE INITIAL ". " 10040000
COMPUTE ENDFIELD = BEGFIELD + CHARCOUNT 10050000
10060000
IF ENDFIELD - BEGFIELD < 62 10070000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 10080000
D8EMWHJ2 10090000
ELSE 10100000
MOVE 0 TO CHARCOUNT 10110000
INSPECT HVRESUME-DATA(BEGFIELD : ) TALLYING CHARCOUNT 10120000
FOR CHARACTERS 10130000
BEFORE INITIAL " " 10140000
COMPUTE ENDFIELD = BEGFIELD + CHARCOUNT 10150000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 10160000
SUB1-D8EMWHJ2 10170000
COMPUTE BEGFIELD = ENDFIELD + 22 10180000
MOVE 0 TO CHARCOUNT 10190000
INSPECT HVRESUME-DATA(BEGFIELD : ) TALLYING CHARCOUNT 10200000
FOR CHARACTERS 10210000
BEFORE INITIAL ". " 10220000
COMPUTE ENDFIELD = BEGFIELD + CHARCOUNT 10230000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 10240000
SUB2-D8EMWHJ2 10250000
STRING SUB1-D8EMWHJ2 SPACE SUB2-D8EMWHJ2 10260000
DELIMITED BY " " INTO D8EMWHJ2 10270000
END-IF 10280000
10290000
10300000
END-IF 10310000
10320000
************************************************************* 10330000
*****GET DATES AND TITLE OF EMPLOYEE'S OTHER PREVIOUS JOB**** 10340000
************************************************************* 10350000
IF OK 10360000
COMPUTE BEGFIELD = ENDFIELD + 4 10370000
MOVE HVRESUME-DATA(BEGFIELD : 15) TO 10380000
D8EMWHD3 10390000
COMPUTE BEGFIELD = BEGFIELD + 20 10400000
MOVE 0 TO CHARCOUNT 10410000
INSPECT HVRESUME-DATA(BEGFIELD : ) TALLYING CHARCOUNT 10420000
FOR CHARACTERS 10430000
BEFORE INITIAL " " 10440000
COMPUTE ENDFIELD = BEGFIELD + CHARCOUNT 10450000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 10460000
D8EMWHT3 10470000
END-IF 10480000
*************************************************************** 10490000
* GET DESCRIPTION OF EMPLOYEE'S OTHER PREVIOUS JOB * 10500000
*************************************************************** 10510000
IF OK 10520000
COMPUTE BEGFIELD = ENDFIELD + 22 10530000
MOVE 0 TO CHARCOUNT 10540000
INSPECT HVRESUME-DATA(BEGFIELD : ) TALLYING CHARCOUNT 10550000
FOR CHARACTERS 10560000
BEFORE INITIAL "." 10570000
COMPUTE ENDFIELD = BEGFIELD + CHARCOUNT 10580000
10590000
IF ENDFIELD - BEGFIELD < 62 10600000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 10610000
D8EMWHJ3 10620000
ELSE 10630000
MOVE 0 TO CHARCOUNT 10640000
INSPECT HVRESUME-DATA(BEGFIELD : ) TALLYING CHARCOUNT 10650000
FOR CHARACTERS 10660000
BEFORE INITIAL " " 10670000
COMPUTE ENDFIELD = BEGFIELD + CHARCOUNT 10680000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 10690000
SUB1-D8EMWHJ3 10700000
COMPUTE BEGFIELD = ENDFIELD + 22 10710000
MOVE 0 TO CHARCOUNT 10720000
INSPECT HVRESUME-DATA(BEGFIELD : ) TALLYING CHARCOUNT 10730000
FOR CHARACTERS 10740000
BEFORE INITIAL ". " 10750000
COMPUTE ENDFIELD = BEGFIELD + CHARCOUNT 10760000
MOVE HVRESUME-DATA(BEGFIELD : ENDFIELD - BEGFIELD) TO 10770000
SUB2-D8EMWHJ3 10780000
STRING SUB1-D8EMWHJ3 SPACE SUB2-D8EMWHJ3 10790000
DELIMITED BY " " INTO D8EMWHJ3 10800000
END-IF 10810000
10820000
10830000
END-IF. 10840000
10850000
D10030-SHOWEMPLRESUME. 10860000
*************************************************************** 10870000
* CALLED BY THE MAIN ROUTINE. DISPLAYS AN ISPF PANEL THAT IS * 10880000
* FORMATTED WITH THE RESUME DATA FOR THE EMPLOYEE SPECIFIED. * 10890000
*************************************************************** 10900000
CALL 'ISPLINK' USING VDISPLAY DSN8SSR. 10910000
10920000
10930000
D20000-FREEISPFVARS. 10940000
*************************************************************** 10950000
* CALLED BY THE MAIN ROUTINE. FREES THE ISPF VARIABLES THAT * 10960000
* WERE ESTABLISHED FOR RUNNING THIS APPLICATION. * 10970000
*************************************************************** 10980000
CALL 'ISPLINK' USING VRESET. 10990000
11000000
D31100-CHECK-SQLCODE. 11010000
**************************************************************** 11020000
* Verify that the prior SQL call completed successfully 11030000
**************************************************************** 11040000
IF SQLCODE NOT = 0 THEN 11050000
MOVE 'BAD' TO STATUS1. 11060000
DISPLAY '* UNEXPECTED SQLCODE FROM DSN8CLRV ' 11070000
'DURING ' DB2IO-COMMAND ' REQUEST.' 11080000
DISPLAY '*' 11090000
PERFORM E31110-DETAIL-SQL-ERROR. 11100000
11110000
11120000
E31110-DETAIL-SQL-ERROR. 11130000
**************************************************************** 11140000
* CALL DSNTIAR TO RETURN A TEXT MESSAGE FOR AN UNEXPECTED 11150000
* SQLCODE. 11160000
**************************************************************** 11170000
CALL 'DSNTIAR' USING SQLCA ERROR-MESSAGE ERROR-TEXT-LEN. 11180000
IF RETURN-CODE = ZERO 11190000
PERFORM F31111-PRINT-SQL-ERROR-MSG VARYING ERROR-INDEX 11200000
FROM 1 BY 1 UNTIL ERROR-INDEX GREATER THAN 10. 11210000
11220000
* **MESSAGE FORMAT 11230000
* **ROUTINE ERROR 11240000
* **PRINT ERROR MESSAG 11250000
11260000
11270000
F31111-PRINT-SQL-ERROR-MSG. 11280000
**************************************************************** 11290000
* PRINT MESSAGE TEXT 11300000
**************************************************************** 11310000
DISPLAY ERROR-TEXT (ERROR-INDEX). 11320000