IDENTIFICATION DIVISION. PROGRAM-ID. RPT03104. AUTHOR. BILL BLASINGIM. REMARKS. THIS PROGRAM READS TWO FILES, EACH SORTED BY ACCOUNT NUMBER ONE FILE IS THE CIF MASTER ACCOUNT FILE, THE OTHER FILE CONTAINS THE IMAGE ACCOUNT NUMBER AND IMAGE SIZE (UPLOADED FROM THE PC), AND PRODUCES A REPORT. TWO REPORTS CAN BE PRODUCED DEPENDING UPON A ONE CHARACTER SWITCH THAT IS ENTERED IN THE JOBSTREAM. (F)ULL REPORT - SHOWS ALL RECORDS IN BOTH FILES UNLESS THE MASTER STATUS IS 'C' OR 'X' AND THERE IS NOT A IMAGE ACCOUNT MATCH. (S)HORT REPORT - SAME AS THE (F)ULL REPORT. IN ADDITION IF THERE IS AN ACCOUNT MATCH AND THE STATUS IS BLANK, DO NOT PRINT. ****************************************************** * 05/11/94 WHB 1) ADD 8 BYTE EDITED DATE TO MST FILE * * 2) ADD DATE TO REPORT. * ****************************************************** DATE-WRITTEN. JUL. 06, 1993. DATE-COMPILED. ENVIRONMENT DIVISION. CONFIGURATION SECTION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT CIF-FILE ASSIGN TO SYS010-DA-3380-S-INFILE. SELECT IMAGE-FILE ASSIGN TO SYS015-VSAMIN ORGANIZATION IS INDEXED ACCESS MODE IS SEQUENTIAL RECORD KEY IS VSAM-KEY FILE STATUS IS VSAM-STATUS. SELECT PRINTER ASSIGN TO SYS020-UR-3211-S-PRINTER. DATA DIVISION. FILE SECTION. FD CIF-FILE * BLOCK CONTAINS 10 RECORDS BLOCK CONTAINS 361 RECORDS LABEL RECORDS STANDARD. 01 MST-REC PIC X(65). FD IMAGE-FILE LABEL RECORDS ARE STANDARD. 01 IMAGE-RECORD. 05 VSAM-KEY. 10 IMAGE-ACCOUNT. 15 IMAGE-ACCOUNT-PREFIX PIC X(03). 15 IMAGE-ACCOUNT-SUFFIX PIC X(07). 10 IMAGE-SEQUENCE PIC 9(02). 05 IMAGE-LENGTH PIC 9(6). FD PRINTER LABEL RECORDS ARE OMITTED. 01 PRINT-REC PIC X(120). WORKING-STORAGE SECTION. 01 WORK-AREA. 05 VSAM-STATUS PIC 99. 05 LAST-IMAGE-ACCOUNT PIC X(10) VALUE HIGH-VALUES. 05 REPORT-SWITCH PIC X VALUE 'F'. 88 FULL-REPORT VALUE 'F'. 88 SHORT-REPORT VALUE 'S'. 05 VSAM-READ-CNT PIC S9(7) VALUE +0 COMP-3. 05 SEQ-READ-CNT PIC S9(7) VALUE +0 COMP-3. 05 OUTPUT-CNT PIC S9(7) VALUE +0 COMP-3. 05 MATCH-CNT PIC S9(7) VALUE +0 COMP-3. 05 MST-OFFICE-BYP-CNT PIC S9(7) VALUE +0 COMP-3. 05 IMAGE-ACCOUNT-DUPS PIC S9(7) VALUE +0 COMP-3. 05 NOF-CNT PIC S9(7) VALUE +0 COMP-3. 05 NOF-TOT PIC S9(7) VALUE +0 COMP-3. 05 PAGE-CNT PIC S9(5) VALUE +0 COMP-3. 05 LINE-CNT PIC S9(3) VALUE +0 COMP-3. 05 SEQ-CNT PIC S9(3) COMP-3 VALUE +0. 05 WS-OFFICE PIC X(03) VALUE SPACES. 05 WS-IMAGE-SIZE PIC Z(6)9. 05 HALF-2 PIC S9(4) VALUE +2 COMP. 05 FILLER REDEFINES HALF-2. 10 FILLER PIC X(01). 10 PPT-TYPE PIC X(01). 05 INDEX-1 PIC S9(4) VALUE +0 COMP. 05 FILLER REDEFINES INDEX-1. 10 FILLER PIC X(01). 10 INDEX-VAL PIC X(01). 05 FOUND-IND PIC X(01) VALUE 'Y'. 88 FOUND VALUE 'Y'. 88 NOT-FOUND VALUE 'N'. 05 NOF-IND PIC X(01) VALUE 'N'. 88 NOT-ON-FILE VALUE 'Y'. 05 EOF-FLAG PIC X(01) VALUE 'N'. 88 EOF-MASTER VALUE 'Y'. 05 EOF-IMAGE-IND PIC X(01) VALUE 'N'. 88 EOF-IMAGE VALUE 'Y'. 05 ERROR-REC. 10 FILLER PIC X(07) VALUE '* VSAM '. 10 ERROR-ACTION PIC X(06) VALUE SPACES. 10 FILLER PIC X(09) VALUE ' ERROR = '. 10 ERROR-NO PIC 99. 10 FILLER PIC X(02) VALUE ' *'. 01 HEADING-1. 05 FILLER PIC X(01) VALUE SPACE. 05 H1-DATE PIC X(08). 05 FILLER PIC X(03) VALUE SPACES. 05 FILLER PIC X(08) VALUE 'RPT03104'. 05 FILLER PIC X(04) VALUE SPACES. 05 FILLER PIC X(12) VALUE 'BANKATLANTIC'. 05 FILLER PIC X(23) VALUE SPACES. 05 FILLER PIC X(05) VALUE 'PAGE '. 05 H1-PAGE PIC Z(4)9. 01 HEADING-2. 05 FILLER PIC X(01) VALUE SPACES. 05 FILLER PIC X(06) VALUE 'TYPE:'. 05 HD-TYPE PIC X(08) VALUE SPACES. 05 FILLER PIC X(07) VALUE SPACES. 05 FILLER PIC X(17) VALUE 'PC IMAGE REPORT '. 05 FILLER PIC X(20) VALUE SPACES. 05 FILLER PIC X(07) VALUE 'OFFICE '. 05 HD-OFFICE PIC X(03) VALUE SPACES. 01 DETAIL-HEADING-1. 05 FILLER PIC X(08) VALUE SPACE. 05 FILLER PIC X(09) VALUE 'MASTER'. 05 FILLER PIC X(04) VALUE SPACE. 05 FILLER PIC X(09) VALUE 'IMAGE'. 05 FILLER PIC X(06) VALUE SPACE. 01 DETAIL-HEADING-2. 05 FILLER PIC X(01) VALUE SPACE. 05 FILLER PIC X(07) VALUE 'OFFICE'. 05 FILLER PIC X(09) VALUE 'ACCOUNT #'. 05 FILLER PIC X(04) VALUE SPACE. 05 FILLER PIC X(09) VALUE 'ACCOUNT #'. 05 FILLER PIC X(06) VALUE SPACE. 05 FILLER PIC X(06) VALUE 'STATUS'. 05 FILLER PIC X(02) VALUE SPACES. 05 FILLER PIC X(06) VALUE 'BYTES'. 05 FILLER PIC X(04) VALUE SPACES. 05 FILLER PIC X(06) VALUE 'NAME'. 05 FILLER PIC X(25) VALUE SPACES. 05 FILLER PIC X(04) VALUE 'DATE'. 01 DETAIL-RECORD. 05 FILLER PIC X(01). 05 DT-OFFICE-NO PIC X(07). 05 DT-M-ACCOUNT-NO. 10 DT-M-ACCOUNT-PREFIX PIC X(03). 10 DT-M-ACCOUNT-DASH PIC X(01). 10 DT-M-ACCOUNT-SUFFIX PIC X(07). 05 FILLER PIC X(02). 05 DT-I-ACCOUNT-NO. 10 DT-I-ACCOUNT-PREFIX PIC X(03). 10 DT-I-ACCOUNT-DASH PIC X(01). 10 DT-I-ACCOUNT-SUFFIX PIC X(07). 05 FILLER PIC X(01). 05 DT-DUP PIC X(03). 05 FILLER PIC X(02). 05 DT-STATUS PIC X. 05 FILLER PIC X(03). 05 DT-IMAGE-AREA PIC X(07). 05 FILLER PIC X(01). 05 DT-TOO-BIG PIC X(02). 05 FILLER PIC X(02). 05 DT-NAME PIC X(29). 05 FILLER PIC X(02). 05 DT-DATE PIC X(08). 01 FINAL-TOT-HEAD. 05 FILLER PIC X(01) VALUE SPACES. 05 FILLER PIC X(30) VALUE '<<<<<<<< FINAL TOTALS >>>>>>>>'. 01 FINAL-TOTALS. 05 FILLER PIC X(01) VALUE SPACES. 05 FT-TYPE PIC X(20). 05 FILLER PIC X(01) VALUE SPACES. 05 FT-TOTAL PIC Z(8)9. 01 MST-RECORD. 05 MST-OFFICE-NO PIC X(03). 05 MST-ACCOUNT-TYPE PIC X(03). 05 MST-ACCOUNT-NO. 10 MST-ACCOUNT-PREFIX PIC X(03). 10 MST-ACCOUNT-SUFFIX PIC X(07). 05 MST-NAME PIC X(29). 05 MST-CIF-KEY PIC X(11). 05 MST-STATUS PIC X(01). 05 MST-DATE PIC X(08). PROCEDURE DIVISION. ACCEPT REPORT-SWITCH. IF FULL-REPORT THEN MOVE 'FULL' TO HD-TYPE ELSE IF SHORT-REPORT THEN MOVE 'SHORT' TO HD-TYPE ELSE DISPLAY '*** REPORT SWITCH ERROR ***' GO TO QUICK-EOJ. OPEN INPUT IMAGE-FILE. IF VSAM-STATUS NOT = 0 MOVE 'OPEN' TO ERROR-ACTION GO TO ERROR-RTN. OPEN INPUT CIF-FILE. OPEN OUTPUT PRINTER. MOVE SPACES TO DETAIL-RECORD, PRINT-REC. MOVE WS-OFFICE TO HD-OFFICE. MOVE CURRENT-DATE TO H1-DATE. PERFORM HEADING-RTN. MOVE LOW-VALUES TO VSAM-KEY. PERFORM READ-IMAGE-RTN THRU READ-IMAGE-EXIT. PERFORM READ-MASTER-RTN THRU READ-MASTER-EXIT. PERFORM PROCESS-RTN THRU PROCESS-RTN-EXIT UNTIL EOF-MASTER AND EOF-IMAGE. GO TO NORMAL-EOJ. PROCESS-RTN. * FOR TESTING * IF PAGE-CNT > 599 THEN * MOVE 'Y' TO EOF-FLAG * MOVE 'Y' TO EOF-IMAGE-IND. MOVE SPACE TO DT-TOO-BIG. MOVE SPACE TO DT-IMAGE-AREA. * IF MASTER ACCOUNT IS LESS THAN THE IMAGE ACCOUNT... * MOVE OUT/WRITE THE MASTER AND READ ANOTHER IF MST-ACCOUNT-NO < IMAGE-ACCOUNT MOVE SPACE TO DT-I-ACCOUNT-NO PERFORM MASTER-MOVE-RTN PERFORM WRITE-RTN THRU WRITE-RTN-EXIT PERFORM READ-MASTER-RTN THRU READ-MASTER-EXIT GO TO PROCESS-RTN-EXIT. * IF IMAGE ACCOUNT IS LESS THAN THE MASTER ACCOUNT... * MOVE OUT/WRITE THE IMAGE AND READ ANOTHER IF IMAGE-ACCOUNT < MST-ACCOUNT-NO MOVE SPACE TO DT-OFFICE-NO MOVE SPACE TO DT-M-ACCOUNT-NO MOVE SPACE TO DT-NAME MOVE SPACE TO DT-STATUS MOVE SPACE TO DT-DATE PERFORM IMAGE-MOVE-RTN PERFORM WRITE-RTN THRU WRITE-RTN-EXIT PERFORM READ-IMAGE-RTN THRU READ-IMAGE-EXIT GO TO PROCESS-RTN-EXIT. * DROP DOWN HERE IF THERE IS A MATCH PERFORM MASTER-MOVE-RTN. PERFORM IMAGE-MOVE-RTN. PERFORM WRITE-RTN THRU WRITE-RTN-EXIT. PERFORM READ-IMAGE-RTN THRU READ-IMAGE-EXIT. PERFORM READ-MASTER-RTN THRU READ-MASTER-EXIT. ADD +1 TO MATCH-CNT. PROCESS-RTN-EXIT. EXIT. MASTER-MOVE-RTN. MOVE MST-OFFICE-NO TO DT-OFFICE-NO. MOVE MST-ACCOUNT-PREFIX TO DT-M-ACCOUNT-PREFIX. MOVE MST-ACCOUNT-SUFFIX TO DT-M-ACCOUNT-SUFFIX. MOVE '-' TO DT-M-ACCOUNT-DASH. MOVE MST-NAME TO DT-NAME. IF MST-STATUS = '?' MOVE 'X' TO DT-STATUS ELSE MOVE MST-STATUS TO DT-STATUS. MOVE MST-DATE TO DT-DATE. IMAGE-MOVE-RTN. IF IMAGE-ACCOUNT EQUAL LAST-IMAGE-ACCOUNT THEN MOVE 'DUP' TO DT-DUP ADD +1 TO IMAGE-ACCOUNT-DUPS. MOVE IMAGE-ACCOUNT TO LAST-IMAGE-ACCOUNT. MOVE IMAGE-ACCOUNT-PREFIX TO DT-I-ACCOUNT-PREFIX. MOVE IMAGE-ACCOUNT-SUFFIX TO DT-I-ACCOUNT-SUFFIX. MOVE '-' TO DT-I-ACCOUNT-DASH. MOVE IMAGE-LENGTH TO WS-IMAGE-SIZE. MOVE WS-IMAGE-SIZE TO DT-IMAGE-AREA. IF IMAGE-LENGTH > 4096 THEN MOVE '<<' TO DT-TOO-BIG. READ-MASTER-RTN. IF EOF-MASTER THEN MOVE '** EOF **' TO DT-M-ACCOUNT-NO GO TO READ-MASTER-EXIT. READ CIF-FILE INTO MST-RECORD AT END MOVE 'Y' TO EOF-FLAG MOVE HIGH-VALUES TO MST-ACCOUNT-NO GO TO READ-MASTER-EXIT. ADD +1 TO SEQ-READ-CNT. * IF MST-OFFICE-NO = '008' * OR MST-OFFICE-NO = '013' * OR MST-OFFICE-NO = '025' * NEXT SENTENCE * ELSE * ADD +1 TO MST-OFFICE-BYP-CNT * GO TO READ-MASTER-RTN. READ-MASTER-EXIT. EXIT. READ-IMAGE-RTN. IF EOF-IMAGE THEN MOVE '** EOF **' TO DT-I-ACCOUNT-NO GO TO READ-IMAGE-EXIT. READ IMAGE-FILE NEXT RECORD AT END MOVE 'Y' TO EOF-IMAGE-IND MOVE HIGH-VALUES TO IMAGE-ACCOUNT GO TO READ-IMAGE-EXIT. IF VSAM-STATUS NOT = 0 MOVE 'READ' TO ERROR-ACTION GO TO ERROR-RTN. ADD +1 TO VSAM-READ-CNT. IF IMAGE-ACCOUNT NOT NUMERIC GO TO READ-IMAGE-RTN. READ-IMAGE-EXIT. EXIT. WRITE-RTN. IF FULL-REPORT THEN GO TO WRITE-CONTINUE. IF DT-TOO-BIG NOT = SPACES THEN GO TO WRITE-CONTINUE. IF DT-NAME = SPACES THEN GO TO WRITE-CONTINUE. IF DT-M-ACCOUNT-NO = DT-I-ACCOUNT-NO AND DT-STATUS = SPACE THEN MOVE SPACES TO DETAIL-RECORD GO TO WRITE-RTN-EXIT. WRITE-CONTINUE. IF (DT-STATUS = 'C' OR DT-STATUS = 'X') AND DT-I-ACCOUNT-NO = SPACE THEN MOVE SPACES TO DETAIL-RECORD GO TO WRITE-RTN-EXIT. * DISPLAY 'WRITE-RTN.'. ADD +1 TO OUTPUT-CNT. WRITE PRINT-REC FROM DETAIL-RECORD. ADD +1 TO LINE-CNT. IF LINE-CNT > +50 THEN PERFORM HEADING-RTN. MOVE SPACES TO DT-DUP. WRITE-RTN-EXIT. EXIT. HEADING-RTN. * DISPLAY 'HEADING-RTN'. ADD +1 TO PAGE-CNT. MOVE PAGE-CNT TO H1-PAGE. WRITE PRINT-REC FROM HEADING-1 AFTER ADVANCING PAGE. WRITE PRINT-REC FROM HEADING-2 AFTER ADVANCING 1 LINE. WRITE PRINT-REC FROM DETAIL-HEADING-1 AFTER ADVANCING 2 LINES. WRITE PRINT-REC FROM DETAIL-HEADING-2 AFTER ADVANCING 1 LINES. MOVE SPACES TO PRINT-REC. WRITE PRINT-REC AFTER ADVANCING 1 LINE. MOVE +0 TO LINE-CNT. ERROR-RTN. * DISPLAY 'ERROR-RTN.'. MOVE VSAM-STATUS TO ERROR-NO. DISPLAY ERROR-REC. NORMAL-EOJ. * DISPLAY 'NORMAL-EOJ.'. CLOSE IMAGE-FILE. IF VSAM-STATUS NOT = 0 MOVE 'CLOSE' TO ERROR-ACTION PERFORM ERROR-RTN. WRITE PRINT-REC FROM FINAL-TOT-HEAD AFTER ADVANCING 2 LINES. MOVE 'MASTERS READ' TO FT-TYPE. MOVE SEQ-READ-CNT TO FT-TOTAL. WRITE PRINT-REC FROM FINAL-TOTALS AFTER ADVANCING 1 LINES. * MOVE ' OFFICES BYPASSED' TO FT-TYPE. * MOVE MST-OFFICE-BYP-CNT TO FT-TOTAL. * WRITE PRINT-REC FROM FINAL-TOTALS * AFTER ADVANCING 1 LINES. MOVE 'IMAGES READ' TO FT-TYPE. MOVE VSAM-READ-CNT TO FT-TOTAL. WRITE PRINT-REC FROM FINAL-TOTALS AFTER ADVANCING 1 LINES. MOVE 'IMAGE DUPS' TO FT-TYPE. MOVE IMAGE-ACCOUNT-DUPS TO FT-TOTAL. WRITE PRINT-REC FROM FINAL-TOTALS AFTER ADVANCING 1 LINES. MOVE 'MATCHES' TO FT-TYPE. MOVE MATCH-CNT TO FT-TOTAL. WRITE PRINT-REC FROM FINAL-TOTALS AFTER ADVANCING 1 LINES. CLOSE CIF-FILE, PRINTER. QUICK-EOJ. STOP RUN.