* Copyright © Oracle Corporation 1995. All Rights Reserved. IDENTIFICATION DIVISION. PROGRAM-ID. NEWJH. * Populates new PERSONNEL database JOB_HISTORY Relation AUTHOR. DWT. INSTALLATION. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. VAX-11. OBJECT-COMPUTER. VAX-11. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT JOBHST-FILE ASSIGN TO "rdm$demo:JOBHIST.DAT" ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL . DATA DIVISION. FILE SECTION. FD JOBHST-FILE LABEL RECORDS ARE STANDARD RECORD CONTAINS 78 CHARACTERS. 01 JOBHST-REC. 02 JH-ID PIC X(5). 02 FIL PIC X(3). 02 J-CODE PIC X(4). 02 FIL PIC X(3). 02 ASCII-START-DATE PIC X(23). 02 FIL PIC X(3). 02 ASCII-END-DATE PIC X(23). 02 FIL PIC X(3). 02 D-CODE PIC X(4). 02 FIL PIC X(2). 02 SUPR-ID PIC X(5). WORKING-STORAGE SECTION. * Date conversion variables - using System Services for routine 01 BINARY-START-DATE PIC S9(11)V9(7) COMP. 01 BINARY-END-DATE PIC S9(11)V9(7) COMP. 01 RETURN-VALUE PIC S9(9) COMP VALUE 999999999. 01 STAT PIC S9(9) USAGE IS COMP. 01 FLAGS PIC X. 88 END-OF-FILE VALUE "Y". 88 NOT-END-OF-FILE VALUE "N". * Invoke the database &RDB& INVOKE DATABASE FILENAME 'PERSONNEL' PROCEDURE DIVISION. * Program NEWJHST reads new Job_History data and STORES it * in the Job_History Relation of PERSONNEL database START-UP. SET NOT-END-OF-FILE TO TRUE. OPEN INPUT JOBHST-FILE . &RDB& START_TRANSACTION READ_WRITE RESERVING &RDB& JOB_HISTORY FOR EXCLUSIVE WRITE DISPLAY "Program: Loading JOBHST". * Start Program: NEWJHST MAIN-LINE. PERFORM LOAD THRU LOAD-EXIT UNTIL END-OF-FILE. 999-EOJ. * End of Program: NEWJH &RDB& COMMIT DISPLAY "Program: JOB_HISTORY Loaded. Normal End-of-Job". CLOSE JOBHST-FILE . STOP RUN. ***************************************************************** * <<< Subroutines >>> * ***************************************************************** LOAD. PERFORM READ-JHIST THRU READ-JHIST-EXIT. PERFORM DATE-CONVERT THRU DATE-CONVERT-EXIT. PERFORM STORE-JOBHST THRU STORE-JOBHST-EXIT. PERFORM CLEAR-IT THRU CLEAR-IT-EXIT. LOAD-EXIT. EXIT. READ-JHIST. READ JOBHST-FILE AT END SET END-OF-FILE TO TRUE GO TO LOAD-EXIT. READ-JHIST-EXIT. EXIT. DATE-CONVERT. * Call System Services and pass ASCII-START-DATE * returning BINARY-START-DATE * CALL "SYS$BINTIM" USING BY DESCRIPTOR ASCII-START-DATE BY REFERENCE BINARY-START-DATE GIVING RETURN-VALUE. * * ASCII-START-DATE = Date passed to $BINTIM format: DD-MMM-YYYY * BINARY-START-DATE = Binary date value returned by $BINTIM * RETURN-VALUE = Return status of call * * Check success of call * IF RETURN-VALUE IS FAILURE THEN CALL "LIB$STOP" USING BY VALUE RETURN-VALUE. * * Call System Services and pass ASCII-END-DATE * returning BINARY-END-DATE * CALL "SYS$BINTIM" USING BY DESCRIPTOR ASCII-END-DATE BY REFERENCE BINARY-END-DATE GIVING RETURN-VALUE. * * ASCII-END-DATE = Date passed to $BINTIM format: DD-MMM-YYYY * BINARY-END-DATE = Binary date value returned by $BINTIM * RETURN-VALUE = Return status of call * * Check success of call * IF RETURN-VALUE IS FAILURE THEN CALL "LIB$STOP" USING BY VALUE RETURN-VALUE. DATE-CONVERT-EXIT. EXIT. STORE-JOBHST. &RDB& STORE J IN JOB_HISTORY &RDB& USING &RDB& J.EMPLOYEE_ID = JH-ID; &RDB& J.JOB_CODE = J-CODE; &RDB& J.JOB_START = BINARY-START-DATE; &RDB& J.JOB_END = BINARY-END-DATE; &RDB& J.DEPARTMENT_CODE = D-CODE; &RDB& J.SUPERVISOR_ID = SUPR-ID; &RDB& END_STORE . STORE-JOBHST-EXIT. EXIT. CLEAR-IT. * Clear out input record area before the next read MOVE SPACES TO JOBHST-REC. MOVE ZEROS TO BINARY-START-DATE,BINARY-END-DATE. CLEAR-IT-EXIT. EXIT.