* $$ JOB JNM=DIR1,CLASS=V,DISP=L,PRI=3 * $$ LST CLASS=O,DISP=D,JSEP=0,DEST=(*,BILLB) // JOB DIR1 // EXEC LIBR ACC S=TSTLIB.WHB IDENTIFICATION DIVISION. PROGRAM-ID. DIR1. AUTHOR. BILL BLASINGIM. REMARKS. THIS PROGRAM READS THE 'SYSLST' TYPE OUTPUT OF LIBR DIRECTORY AND PRODUCES DIRECTORY SORTED BY... ASCENDING KEY LIBRARY NAME, FILE TYPE, DESCENDING KEY FILE UPDATE DATE ASCENDING KEY FILE NAME. TO REDUCE LISTING SIZE, ONLY REPORT ON CURRENT YEAR MINUS ONE AND UP. DATE-WRITTEN. MAR. 8, 1995. DATE-COMPILED. ENVIRONMENT DIVISION. CONFIGURATION SECTION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT IN-FILE ASSIGN TO SYS010-DA-3380-A-INFILE. SELECT PRINTER ASSIGN TO SYS020-UR-3211-S-PRINTER. SELECT SORT-FILE ASSIGN TO SYS001-DA-3380-S-SORTWK1. DATA DIVISION. FILE SECTION. FD IN-FILE LABEL RECORDS STANDARD. 01 IN-REC PIC X(121). FD PRINTER LABEL RECORDS ARE OMITTED. 01 PRINT-REC PIC X(80). SD SORT-FILE. 01 SORT-RECORD. 05 SORT-NAME PIC X(08). 05 SORT-TYPE PIC X(08). 05 SORT-CREATE PIC X(08). 05 SORT-UPDATE PIC X(08). 05 FILLER REDEFINES SORT-UPDATE. 10 SORT-UPDATE-YY PIC 9(02). 10 FILLER PIC X(01). 10 SORT-UPDATE-MM PIC 9(02). 10 FILLER PIC X(01). 10 SORT-UPDATE-DD PIC 9(02). 05 SORT-LIBRARY PIC X(16). WORKING-STORAGE SECTION. 01 WORK-AREA. 05 PAGE-CNT PIC S9(3) VALUE +0 COMP-3. 05 LINE-CNT PIC S9(3) VALUE +0 COMP-3. 05 SUB-LIB-CNT PIC S9(7) VALUE +0 COMP-3. 05 LIBR-CNT PIC S9(7) VALUE +0 COMP-3. 05 LIBR-TOT PIC S9(7) VALUE +0 COMP-3. 05 REC-CNT 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 BLOCK-CNT PIC S9(9) VALUE +0 COMP-3. 05 BLOCK-TOT PIC S9(9) VALUE +0 COMP-3. 05 BLKS-PER-TRK PIC S9(3) VALUE +31 COMP-3. 05 HOLD-LIBRARY PIC X(16) VALUE SPACES. 05 LAST-YEAR PIC 9(02). 05 JULIAN-DATE PIC 9(05). 05 FILLER REDEFINES JULIAN-DATE. 10 JD-YY PIC 99. 10 JD-DDD PIC 999. 05 YYDDD PIC S9(05) COMP-3. 05 NOF-IND PIC X(01) VALUE 'N'. 88 NOT-ON-FILE VALUE 'Y'. 05 EOF-FLAG PIC X(01) VALUE 'N'. 88 EOF 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 REDEFINES H1-DATE. 10 FILLER PIC X(06). 10 CURRENT-YEAR PIC 9(02). 05 FILLER PIC X(10) VALUE SPACES. 05 FILLER PIC X(12) VALUE 'BANKATLANTIC'. 05 FILLER PIC X(18) VALUE SPACES. 05 FILLER PIC X(05) VALUE 'PAGE '. 05 H1-PAGE PIC Z(3)9. 01 HEADING-2. 05 FILLER PIC X(17) VALUE SPACES. 05 FILLER PIC X(17) VALUE 'LIBRARY PROGRAMS'. 05 FILLER PIC X(05) VALUE SPACES. 05 FILLER PIC X(01) VALUE '('. 05 OUT-LIB-SUB PIC X(17) VALUE SPACES. 05 FILLER PIC X(01) VALUE ')'. 01 DETAIL-HEADING. 05 FILLER PIC X(01) VALUE SPACE. 05 FILLER PIC X(10) VALUE 'NAME'. 05 FILLER PIC X(01) VALUE SPACE. 05 FILLER PIC X(09) VALUE SPACE. 05 FILLER PIC X(06) VALUE SPACE. 01 DETAIL-RECORD. 05 FILLER PIC X(01). 05 DT-PROGRAM PIC X(08). 05 FILLER PIC X(01). 05 DT-TYPE PIC X(08). 05 FILLER PIC X(01). 05 DT-CREATE PIC X(08). 05 FILLER PIC X(02). 05 DT-UPDATE PIC X(08). 05 FILLER PIC X(01). 05 DT-PRDA PIC X(04). 05 FILLER PIC X(01). 05 DT-PRDB PIC X(04). 05 FILLER PIC X(01). 05 DT-TSTA PIC X(04). 05 FILLER PIC X(01). 05 DT-TSTB PIC X(04). 05 FILLER PIC X(01). 05 DT-ATMA PIC X(04). 05 FILLER PIC X(01). 05 DT-ATMT PIC X(04). 05 FILLER PIC X(01). 05 DT-DEVL PIC X(04). 05 FILLER PIC X(01). 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 IN-RECORD. 05 FILLER PIC X(01). 05 IN-NAME PIC X(08). 05 FILLER PIC X(01). 05 IN-TYPE PIC X(08). 05 FILLER PIC X(01). 05 IN-CREATE PIC X(08). 05 FILLER REDEFINES IN-CREATE. 10 FILLER PIC X(02). 10 DASH-1 PIC X(01). 10 FILLER PIC X(02). 10 DASH-2 PIC X(01). 10 FILLER PIC X(02). 05 FILLER PIC X(01). 05 IN-UPDATE PIC X(08). 05 IN-BYTES PIC X(07). 05 FILLER PIC X(03). 05 IN-BLOCKS PIC X(06). 05 IN-BLOCKS-NUM REDEFINES IN-BLOCKS PIC 9(06). 05 FILLER PIC X(70). 01 FILLER REDEFINES IN-RECORD. 05 FILLER PIC X(26). 05 IN-SUBLIB PIC X(11). 05 IN-LIB-SUB PIC X(16). 05 FILLER PIC X(68). PROCEDURE DIVISION. * ACCEPT JULIAN-DATE FROM DAY. * MOVE JULIAN-DATE TO YYDDD. * SUBTRACT +14 FROM YYDDD. MOVE CURRENT-DATE TO H1-DATE. MOVE CURRENT-YEAR TO LAST-YEAR. SUBTRACT 1 FROM LAST-YEAR. SORT SORT-FILE ASCENDING KEY SORT-LIBRARY, SORT-TYPE, DESCENDING KEY SORT-UPDATE, ASCENDING KEY SORT-NAME INPUT PROCEDURE SRT-INPUT-PROCEDURE OUTPUT PROCEDURE SRT-OUTPUT-PROCEDURE. GO TO NORMAL-EOJ. SRT-INPUT-PROCEDURE SECTION. OPEN INPUT IN-FILE. PERFORM READ-LIBR-RTN THRU READ-LIBR-EXIT. PERFORM PROCESS-RTN THRU PROCESS-EXIT UNTIL EOF. * EXHIBIT NAMED IN-NAME, * IN-TYPE, * HOLD-LIBRARY, * REC-CNT. END-INPUT SECTION. PROCESS-RTN. IF IN-UPDATE = ' - - ' MOVE IN-CREATE TO SORT-UPDATE ELSE MOVE IN-UPDATE TO SORT-UPDATE. IF SORT-UPDATE-YY < LAST-YEAR GO TO BYPASS-SORT. MOVE IN-NAME TO SORT-NAME. MOVE IN-TYPE TO SORT-TYPE. MOVE IN-CREATE TO SORT-CREATE. MOVE HOLD-LIBRARY TO SORT-LIBRARY. RELEASE SORT-RECORD. BYPASS-SORT. PERFORM READ-LIBR-RTN THRU READ-LIBR-EXIT. PROCESS-EXIT. EXIT. READ-LIBR-RTN. * DISPLAY 'READ-LIBR-RTN.'. READ IN-FILE INTO IN-RECORD AT END MOVE 'Y' TO EOF-FLAG GO TO READ-LIBR-EXIT. ADD +1 TO REC-CNT. * IF IN-NAME = 'ISTRACTO' * IF REC-CNT > 12690 AND REC-CNT < 12710 * EXHIBIT NAMED REC-CNT * EXHIBIT NAMED IN-RECORD. * IF REC-CNT > 13900 AND REC-CNT < 13920 * EXHIBIT NAMED REC-CNT * EXHIBIT NAMED IN-RECORD. IF IN-SUBLIB = 'SUBLIBRARY=' IF IN-LIB-SUB = HOLD-LIBRARY GO TO READ-LIBR-RTN ELSE ADD +1 TO SUB-LIB-CNT MOVE IN-LIB-SUB TO HOLD-LIBRARY GO TO READ-LIBR-RTN. IF HOLD-LIBRARY = SPACES GO TO READ-LIBR-RTN. * IF IN-TYPE NOT = 'PHASE' * GO TO READ-LIBR-RTN. IF IN-NAME = '--------' GO TO READ-LIBR-RTN. IF DASH-1 = '-' AND DASH-2 = '-' NEXT SENTENCE ELSE GO TO READ-LIBR-RTN. ADD +1 TO LIBR-CNT. * EXHIBIT NAMED IN-NAME. READ-LIBR-EXIT. EXIT. SRT-OUTPUT-PROCEDURE SECTION. OPEN OUTPUT PRINTER. MOVE 'N' TO EOF-FLAG. RETURN SORT-FILE RECORD AT END MOVE 'Y' TO EOF-FLAG. MOVE SORT-LIBRARY TO OUT-LIB-SUB MOVE SPACES TO DETAIL-RECORD, PRINT-REC. PERFORM HEADING-RTN THRU HEADING-RTN-EXIT. PERFORM WRITE-RTN THRU WRITE-RTN-EXIT UNTIL EOF. END-OUTPUT SECTION. WRITE-RTN. IF SORT-LIBRARY NOT = OUT-LIB-SUB THEN MOVE SORT-LIBRARY TO OUT-LIB-SUB PERFORM HEADING-RTN. * DISPLAY 'WRITE-RTN.'. * IF SORT-NAME = 'NEWPOD' * EXHIBIT NAMED SORT-NAME, * SORT-TYPE, * SORT-LIBRARY. MOVE SORT-NAME TO DT-PROGRAM. MOVE SORT-TYPE TO DT-TYPE. MOVE SORT-CREATE TO DT-CREATE. MOVE SORT-UPDATE TO DT-UPDATE. WRITE PRINT-REC FROM DETAIL-RECORD. ADD +1 TO LINE-CNT. IF LINE-CNT > +50 THEN PERFORM HEADING-RTN. RETURN SORT-FILE RECORD AT END MOVE 'Y' TO EOF-FLAG. 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 AFTER ADVANCING 2 LINES. MOVE SPACES TO PRINT-REC. WRITE PRINT-REC AFTER ADVANCING 1 LINE. MOVE +0 TO LINE-CNT. HEADING-RTN-EXIT. EXIT. SUBTOTALS-RTN. MOVE 'LIBR RECS' TO FT-TYPE. MOVE LIBR-CNT TO FT-TOTAL. WRITE PRINT-REC FROM FINAL-TOTALS AFTER ADVANCING 2 LINES. ADD LIBR-CNT TO LIBR-TOT. MOVE +0 TO LIBR-CNT. MOVE 'NOF RECS' TO FT-TYPE. MOVE NOF-CNT TO FT-TOTAL. WRITE PRINT-REC FROM FINAL-TOTALS AFTER ADVANCING 1 LINE. ADD NOF-CNT TO NOF-TOT. MOVE +0 TO NOF-CNT. DIVIDE BLOCK-CNT BY BLKS-PER-TRK GIVING FT-TOTAL. MOVE 'TRK TOT' TO FT-TYPE. WRITE PRINT-REC FROM FINAL-TOTALS AFTER ADVANCING 1 LINE. MOVE 'TOT BLKS' TO FT-TYPE. MOVE BLOCK-CNT TO FT-TOTAL. WRITE PRINT-REC FROM FINAL-TOTALS AFTER ADVANCING 1 LINE. ADD BLOCK-CNT TO BLOCK-TOT. MOVE +0 TO BLOCK-CNT. ERROR-RTN. * DISPLAY 'ERROR-RTN.'. * MOVE VSAM-STATUS TO ERROR-NO. DISPLAY ERROR-REC. NORMAL-EOJ. * DISPLAY 'NORMAL-EOJ.'. WRITE PRINT-REC FROM FINAL-TOT-HEAD AFTER ADVANCING 2 LINES. MOVE 'LIBR RECS' TO FT-TYPE. MOVE LIBR-TOT TO FT-TOTAL. WRITE PRINT-REC FROM FINAL-TOTALS AFTER ADVANCING 1 LINES. MOVE 'SUB LIBRARIES READ' TO FT-TYPE. MOVE SUB-LIB-CNT TO FT-TOTAL. WRITE PRINT-REC FROM FINAL-TOTALS AFTER ADVANCING 1 LINES. MOVE 'PGMS NOF ' TO FT-TYPE. MOVE NOF-TOT TO FT-TOTAL. WRITE PRINT-REC FROM FINAL-TOTALS AFTER ADVANCING 1 LINES. DIVIDE BLOCK-TOT BY BLKS-PER-TRK GIVING FT-TOTAL. MOVE 'TRK TOT' TO FT-TYPE. WRITE PRINT-REC FROM FINAL-TOTALS AFTER ADVANCING 1 LINE. MOVE 'TOTAL BLOCKS' TO FT-TYPE. MOVE BLOCK-TOT TO FT-TOTAL. WRITE PRINT-REC FROM FINAL-TOTALS AFTER ADVANCING 1 LINES. CLOSE IN-FILE, PRINTER. STOP RUN. /* /* /& * $$ EOJ