Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //KC03Q18X JOB ,'SEAN VOGEL',MSGCLASS=H
- //*
- //JSTEP01 EXEC PGM=SORT,PARM='CMP=CLC'
- //***************************************************************
- //* *
- //* JSTEP01 CALL SORT UTILITY *
- //* TO SORT INPUT FILE DATA5A *
- //* *
- //* DDNAME FILE DESCRIPTION *
- //* *
- //* SYSIN INPUT: INSTREAM COBOL PROGRAM *
- //* SORTIN INPUT: PDS POPULATED WITH UNSORTED DATA *
- //* SORTOUT OUTPUT: SORTED DATA IN TEMP DATA SET *
- //* *
- //***************************************************************
- //SORTIN DD DSN=KC02322.CSCI465.DATAFA14(DATA5A),DISP=SHR
- //SORTOUT DD DSN=&&SORTED,SPACE=(TRK,(1,5)),DISP=(NEW,PASS)
- //SYSOUT DD SYSOUT=*
- //SYSIN DD *
- SORT FIELDS=(1,2,ZD,A)
- /*
- //*
- //***************************************************************
- //*
- //JSTEP02 EXEC PGM=IGYCRCTL,PARM='FLAG(I,I),APOST,LIB'
- //***************************************************************
- //* *
- //* JSTEP02 CALL COBOL COMPILER IGYCRCTL *
- //* TO COMPILE AN INSTREAM COBOL PROGRAM *
- //* *
- //* DDNAME FILE DESCRIPTION *
- //* *
- //* SYSIN INPUT: INSTREAM COBOL PROGRAM *
- //* SYSLIN OUTPUT: TEMP STORAGE FOR OBJECT MODULE *
- //* SYSPRINT OUTPUT: COMPILER OUTPUT *
- //* SYSUTn OUTPUT: SEVEN TEMP SCRATCH PADS *
- //* *
- //***************************************************************
- //*
- //SYSIN DD *
- ****************************************************************
- * PROGRAM NAME: ASSIGN5 *
- * *
- * FUNCTION: THIS PROGRAM READS INFORMATION FROM 3 INPUT FILES *
- * AND BUILDS A 2 DIMENSIONAL TABLE TO HOLD *
- * MUTUAL FUND DATA. *
- * *
- * THEN BUILD A SALES REPORT BASED ON TABULATED DATA *
- * *
- * INPUT: DATA5A - THE MUTUAL FUND FILE *
- * INPUT: DATA5B - THE CLOSING PRICE FILE *
- * INPUT: DATA5C - THE BROKER SALES FILE *
- * *
- * OUTPUT: THE 132 BYTE LINES OF THE OUPUT RECORD *
- * *
- ****************************************************************
- IDENTIFICATION DIVISION.
- PROGRAM-ID. ASSIGN5
- AUTHOR. SEAN VOGEL.
- DATE-WRITTEN. 11/04/2014.
- DATE-COMPILED.
- EJECT
- ENVIRONMENT DIVISION.
- INPUT-OUTPUT SECTION.
- FILE-CONTROL.
- SELECT IN-FUND-FILE ASSIGN TO INFILE5A.
- SELECT IN-DLY-FUND-PRICE-FILE ASSIGN TO INFILE5B.
- SELECT IN-SALES-FILE ASSIGN TO INFILE5C.
- SELECT PRINT-FILE ASSIGN TO PRINTER.
- DATA DIVISION.
- FILE SECTION.
- *INPUT FILE OF FUND NAMES AND NUMBERS
- FD IN-FUND-FILE
- RECORDING MODE IS F.
- 01 IN-FUND-RECORD.
- COPY FUNDREC.
- 05 FILLER PIC X(53).
- *INPUT FILE OF DAILY SHARE PRICES
- FD IN-DLY-FUND-PRICE-FILE
- RECORDING MODE IS F.
- COPY PRICEREC.
- *INPUT FILE OF BROKER SALES RECORDS
- FD IN-SALES-FILE
- RECORDING MODE IS F.
- COPY SALESREC.
- *OUTPUT FILE
- FD PRINT-FILE
- RECORDING MODE IS F.
- 01 PRINT-RECORD PIC X(132).
- WORKING-STORAGE SECTION.
- *TWO DIMENSIONAL TABLE TO HOLD FUND DATA
- *EACH FUND ENTRY HAS 5 SHARE PRICES
- 01 FUND-TBL.
- 05 FUND-COUNT PIC S9(3) COMP SYNC VALUE 0.
- 05 FUND-ENTRY OCCURS 1 TO 100
- DEPENDING ON FUND-COUNT
- ASCENDING KEY TBL-FUND-NBR
- INDEXED BY TBL-FUND-NDX.
- 10 TBL-FUND-DEPS-TOT PIC 9(9)V99 COMP-3 VALUE 0.
- 10 TBL-FUND-SHRS-TOT PIC 9(9)V99 COMP-3 VALUE 0.
- COPY FUNDTBL.
- *EOF FLAGS FOR INPUT FILES
- 01 EOF-FLAG-1 PIC X VALUE 'N'.
- 01 EOF-FLAG-2 PIC X VALUE 'N'.
- 01 EOF-FLAG-3 PIC X VALUE 'N'.
- *DATE TIME STORAGE
- 01 CURRENT-DATE-FIELDS.
- 05 CURRENT-DATE.
- 10 CURRENT-YEAR PIC 9(4).
- 10 CURRENT-MONTH PIC 9(2).
- 10 CURRENT-DAY PIC 9(2).
- 05 CURRENT-TIME.
- 10 CURRENT-HOUR PIC 9(2).
- 10 CURRENT-MINUTE PIC 9(2).
- 10 CURRENT-SECOND PIC 9(2).
- 10 CURRENT-MS PIC 9(2).
- 05 DIFF-FROM-GMT PIC S9(4).
- *SUBSCRIPTS
- 01 TSUB PIC S9(5) COMP SYNC VALUE 0.
- 01 SALES-SUB PIC S9(5) COMP SYNC VALUE 0.
- *TOTALS
- 01 TOTAL-DEPOSITS PIC 9(9)V99 COMP-3 VALUE 0.
- 01 TOTAL-SHARES PIC 9(9)V99 COMP-3 VALUE 0.
- *TEMPORARIES
- 01 TEMP-SHARES PIC 9(5)V999 COMP VALUE 0.
- *COUNTERS
- 01 LINE-COUNT PIC 99 COMP VALUE 99.
- 01 PAGE-NUM PIC 999 COMP VALUE 0.
- 01 BROKER-COUNT PIC 999 COMP VALUE 0.
- *SALES OUTPUT RECORD
- 01 OUT-SALES-RECORD.
- 05 OUT-CITY PIC X(20).
- 05 FILLER PIC X(2) VALUE SPACES.
- 05 OUT-NAME PIC X(20).
- 05 FILLER PIC X(2) VALUE SPACES.
- 05 OUT-FUND PIC X(25).
- 05 FILLER PIC X(8) VALUE SPACES.
- 05 OUT-FUND-NBR PIC 99.
- 05 FILLER PIC X(7) VALUE SPACES.
- 05 OUT-DEPOSIT PIC $$$,$$9.99.
- 05 OUT-DEPOSIT-X REDEFINES OUT-DEPOSIT
- PIC X(10).
- 05 FILLER PIC X(15) VALUE SPACES.
- 05 OUT-PRICE-FLAG PIC 9.
- 05 OUT-PRICE-FLAG-X REDEFINES OUT-PRICE-FLAG
- PIC X.
- 05 FILLER PIC X(4) VALUE SPACES.
- 05 OUT-SHARES PIC ZZZ,ZZZ,ZZ9.9999.
- 05 OUT-SHARES-X REDEFINES OUT-SHARES
- PIC X(16).
- *SUMMARY OUTPUT RECORD
- 01 OUT-SUMMARY.
- 05 FILLER PIC X(47) VALUE SPACES.
- 05 OUT-BROKER-NUM PIC ZZZ9.
- 05 FILLER PIC X(11) VALUE SPACES.
- 05 OUT-DEPOSIT-TOT PIC $$$$,$$$,$$9.99.
- 05 FILLER PIC X(3) VALUE SPACES.
- 05 OUT-SHARES-TOT PIC ZZ,ZZZ,ZZZ,ZZ9.9999.
- 05 FILLER PIC X(33) VALUE SPACES.
- *PAGE HEADERS
- 01 PAGE-HEADER-1.
- 05 OUT-MONTH PIC 9(2).
- 05 FILLER PIC X VALUE '/'.
- 05 OUT-DAY PIC 9(2).
- 05 FILLER PIC X VALUE '/'.
- 05 OUT-YEAR PIC 9(4).
- 05 FILLER PIC X(38) VALUE SPACES.
- 05 OUT-FIRM PIC X(36) VALUE
- 'DEWEY, CHEATHAM AND HOWE MUTUAL FUND'.
- 05 FILLER PIC X(39) VALUE SPACES.
- 05 OUT-PAGE PIC X(6) VALUE 'PAGE: '.
- 05 OUT-PAGE-NUM PIC ZZ9.
- 01 PAGE-HEADER-2.
- 05 OUT-TIME PIC 99B99B99.
- 05 FILLER PIC X(40) VALUE SPACES.
- 05 OUT-TITLE PIC X(36) VALUE
- 'MUTUAL FUND DEPOSIT AND SALES REPORT'.
- 05 FILLER PIC X(48) VALUE SPACES.
- *COLUMN HEADERS
- 01 COLUMN-HEADER-1.
- 05 CITY-LBL PIC X(4) VALUE 'CITY'.
- 05 FILLER PIC X(18) VALUE SPACES.
- 05 BROKER-LBL PIC X(11) VALUE
- 'BROKER NAME'.
- 05 FILLER PIC X(11) VALUE SPACES.
- 05 FUND-LBL PIC X(9) VALUE 'FUND NAME'.
- 05 FILLER PIC X(18) VALUE SPACES.
- 05 NBR-LBL PIC X(8) VALUE
- 'FUND NBR'.
- 05 FILLER PIC X(3) VALUE SPACES.
- 05 DEPOST-LBL PIC X(14) VALUE
- 'DEPOSIT AMOUNT'.
- 05 FILLER PIC X(6) VALUE SPACES.
- 05 PRICE-LBL PIC X(10) VALUE 'PRICE FLAG'.
- 05 FILLER PIC X(9) VALUE SPACES.
- 05 SHARES-LBL PIC X(11) VALUE
- 'SHARES SOLD'.
- 01 COLUMN-HEADER-2.
- 05 FILLER PIC X(34) VALUE SPACES.
- 05 BROKER-CNT-LBL PIC X(17) VALUE
- 'NUMBER OF BROKERS'.
- 05 FILLER PIC X(5) VALUE SPACES.
- 05 DEPOST-TOT-LBL PIC X(21) VALUE
- 'TOTAL OF ALL DEPOSITS'.
- 05 FILLER PIC X(5) VALUE SPACES.
- 05 SHARES-TOT-LBL PIC X(17) VALUE
- 'TOTAL SHARES SOLD'.
- 05 FILLER PIC X(33) VALUE SPACES.
- *HYPHEN LINES
- 01 HYPHENS-1.
- 05 CITY-HYPH PIC X(20) VALUE ALL '-'.
- 05 FILLER PIC X(2) VALUE SPACES.
- 05 BROKER-HYPH PIC X(20) VALUE ALL '-'.
- 05 FILLER PIC X(2) VALUE SPACES.
- 05 FUND-HYPH PIC X(25) VALUE ALL '-'.
- 05 FILLER PIC X(8) VALUE SPACES.
- 05 NBR-HYPH PIC XX VALUE ALL '-'.
- 05 FILLER PIC X(6) VALUE SPACES.
- 05 DEPOSIT-HYPH PIC X(11) VALUE ALL '-'.
- 05 FILLER PIC X(15) VALUE SPACES.
- 05 PRICE-HYPH PIC X VALUE '-'.
- 05 FILLER PIC X(9) VALUE SPACES.
- 05 SHARES-HYPH PIC X(12) VALUE ALL '-'.
- 01 HYPHENS-2.
- 05 FILLER PIC X(47) VALUE SPACES.
- 05 BROKER-NUM-HYPH PIC X(4) VALUE ALL '-'.
- 05 FILLER PIC X(11) VALUE SPACES.
- 05 DEPOSIT-TOT-HYPH PIC X(15) VALUE ALL '-'.
- 05 FILLER PIC X(3) VALUE SPACES.
- 05 SHARES-HYPH PIC X(19) VALUE ALL '-'.
- EJECT
- PROCEDURE DIVISION.
- 0000-MAIN.
- PERFORM 0600-GET-DATE-TIME.
- OPEN INPUT IN-FUND-FILE
- INPUT IN-DLY-FUND-PRICE-FILE.
- READ IN-FUND-FILE
- AT END MOVE 'Y' TO EOF-FLAG-1
- END-READ.
- PERFORM 0100-BUILD-TABLE
- VARYING TBL-FUND-NDX FROM 1 BY 1
- UNTIL TBL-FUND-NDX > 100 OR EOF-FLAG-1 = 'Y'
- CLOSE IN-FUND-FILE
- IN-DLY-FUND-PRICE-FILE.
- OPEN INPUT IN-SALES-FILE
- OUTPUT PRINT-FILE.
- READ IN-SALES-FILE
- AT END MOVE 'Y' TO EOF-FLAG-3
- END-READ.
- PERFORM 0200-PROCESS-SALES-FILE
- UNTIL EOF-FLAG-3 = 'Y'
- PERFORM 0800-PRINT-SUMMARY.
- CLOSE IN-SALES-FILE
- PRINT-FILE.
- STOP RUN.
- 0000-EXIT. EXIT.
- EJECT
- *******************************************
- * *
- * BUILD THE TABLE *
- * *
- * STORE FUND NAME AND NUMBER *
- * READ DAILY SHARE PRICES *
- * STORE SHARE PRICES FOR FUND *
- * READ NEXT RECORD *
- * *
- *******************************************
- 0100-BUILD-TABLE.
- ADD 1 TO FUND-COUNT.
- MOVE IN-FUND-NBR OF IN-FUND-RECORD
- TO TBL-FUND-NBR(TBL-FUND-NDX)
- MOVE IN-FUND-NAME TO TBL-FUND-NAME(TBL-FUND-NDX).
- *READ IN DAILY SHARE PRICES
- READ IN-DLY-FUND-PRICE-FILE
- AT END MOVE 'Y' TO EOF-FLAG-2
- END-READ.
- PERFORM VARYING IN-DLY-FUND-PRICE-NDX FROM 1 BY 1
- UNTIL IN-DLY-FUND-PRICE-NDX > 5 OR EOF-FLAG-2 = 'Y'
- MOVE IN-DLY-FUND-PRICE(IN-DLY-FUND-PRICE-NDX)
- TO TBL-DLY-FUND-PRICE(TBL-FUND-NDX
- IN-DLY-FUND-PRICE-NDX)
- END-PERFORM.
- READ IN-FUND-FILE
- AT END MOVE 'Y' TO EOF-FLAG-1
- END-READ.
- 0100-EXIT. EXIT.
- EJECT
- *******************************************
- * *
- * PROCESS SALES FILE *
- * *
- * READ A SALES RECORD AND START BUILDING *
- * OUTPUT RECORD *
- * *
- *******************************************
- 0200-PROCESS-SALES-FILE.
- MOVE IN-CITY-NAME TO OUT-CITY.
- MOVE IN-BROKER-NAME TO OUT-NAME.
- ADD 1 TO BROKER-COUNT.
- PERFORM 0300-PROCESS-SALE
- VARYING SALES-SUB FROM 1 BY 1
- UNTIL SALES-SUB > 4
- OR IN-FUND-NBR OF SALES-RECORD(SALES-SUB) = 0
- READ IN-SALES-FILE
- AT END MOVE 'Y' TO EOF-FLAG-3
- END-READ.
- 0200-EXIT. EXIT.
- EJECT
- *******************************************
- * *
- * PROCESS SALE *
- * *
- * SEARCH FOR MUTUAL FUND IN FUND-TBL *
- * PRINT OUTPUT RECORD *
- * *
- *******************************************
- 0300-PROCESS-SALE.
- PERFORM 0700-PRINT-HEADERS
- MOVE IN-FUND-NBR OF SALES-RECORD(SALES-SUB) TO OUT-FUND-NBR.
- MOVE IN-DEPOSIT-AMT(SALES-SUB) TO OUT-DEPOSIT.
- *ACCUMULATE DEPOSIT TOTALS
- ADD IN-DEPOSIT-AMT(SALES-SUB)
- TO TBL-FUND-DEPS-TOT(TBL-FUND-NDX).
- ADD IN-DEPOSIT-AMT(SALES-SUB) TO TOTAL-DEPOSITS.
- SEARCH ALL FUND-ENTRY
- AT END
- PERFORM 0400-FUND-NOT-FOUND
- WHEN TBL-FUND-NBR(TBL-FUND-NDX)
- = IN-FUND-NBR OF SALES-RECORD(SALES-SUB)
- PERFORM 0500-FUND-FOUND
- END-SEARCH.
- WRITE PRINT-RECORD FROM OUT-SALES-RECORD AFTER 2.
- MOVE SPACES TO OUT-CITY
- OUT-NAME.
- ADD 1 TO LINE-COUNT.
- 0300-EXIT. EXIT.
- EJECT
- *******************************************
- * *
- * FOUND-NOT-FOUND *
- * *
- * MUTUAL FUND NOT FOUND IN TABLE *
- * TAKE APPROPRIATE ACTION. *
- * *
- *******************************************
- 0400-FUND-NOT-FOUND.
- MOVE 'MUTUAL FUND NOT FOUND' TO OUT-FUND.
- MOVE SPACES TO OUT-DEPOSIT-X
- OUT-PRICE-FLAG-X
- OUT-SHARES-X.
- 0400-EXIT. EXIT.
- EJECT
- *******************************************
- * *
- * FUND-FOUND *
- * *
- * MOVE DATA TO OUTPUT RECORD *
- * IF MUTUAL FUND FOUND *
- * *
- *******************************************
- 0500-FUND-FOUND.
- MOVE TBL-FUND-NAME(TBL-FUND-NDX) TO OUT-FUND.
- MOVE IN-PRICE-FLAG(SALES-SUB) TO OUT-PRICE-FLAG.
- MOVE IN-PRICE-FLAG(SALES-SUB) TO TSUB.
- COMPUTE TEMP-SHARES ROUNDED = IN-DEPOSIT-AMT(SALES-SUB)
- / TBL-DLY-FUND-PRICE(TBL-FUND-NDX TSUB).
- MOVE TEMP-SHARES TO OUT-SHARES.
- ADD TEMP-SHARES TO TBL-FUND-SHRS-TOT(TBL-FUND-NDX).
- ADD TEMP-SHARES TO TOTAL-SHARES.
- 0500-EXIT. EXIT.
- EJECT
- *******************************************
- * *
- * GET-DATE-TIME *
- * *
- * GET THE DATE AND TIME FOR *
- * FOR OUTPUT HEADER *
- * *
- *******************************************
- 0600-GET-DATE-TIME.
- MOVE FUNCTION CURRENT-DATE TO CURRENT-DATE-FIELDS.
- MOVE CURRENT-MONTH TO OUT-MONTH.
- MOVE CURRENT-DAY TO OUT-DAY.
- MOVE CURRENT-YEAR TO OUT-YEAR.
- MOVE CURRENT-TIME(1:6) TO OUT-TIME.
- INSPECT OUT-TIME REPLACING ALL ' ' BY ':'.
- 0600-EXIT. EXIT.
- EJECT
- ******************************************
- * *
- * PRINT-HEADERS *
- * *
- * PRINT PAGE AND COLUMN HEADERS *
- * *
- ******************************************
- 0700-PRINT-HEADERS.
- IF LINE-COUNT >= 16
- ADD 1 TO PAGE-NUM
- MOVE PAGE-NUM TO OUT-PAGE-NUM
- WRITE PRINT-RECORD FROM PAGE-HEADER-1 AFTER PAGE
- WRITE PRINT-RECORD FROM PAGE-HEADER-2 AFTER 1
- WRITE PRINT-RECORD FROM COLUMN-HEADER-1 AFTER 2
- WRITE PRINT-RECORD FROM HYPHENS-1 AFTER 1
- MOVE 0 TO LINE-COUNT
- MOVE IN-CITY-NAME TO OUT-CITY
- MOVE IN-BROKER-NAME TO OUT-NAME
- END-IF.
- 0700-EXIT. EXIT.
- EJECT
- ******************************************
- * *
- * PRINT-SUMMARY *
- * *
- * PRINT PAGE AND COLUMN HEADERS *
- * AND SUMMARY LINE *
- * *
- ******************************************
- 0800-PRINT-SUMMARY.
- ADD 1 TO PAGE-NUM.
- MOVE PAGE-NUM TO OUT-PAGE-NUM.
- MOVE ' MUTUAL FUND SALES TOTALS' TO OUT-TITLE.
- WRITE PRINT-RECORD FROM PAGE-HEADER-1 AFTER PAGE.
- WRITE PRINT-RECORD FROM PAGE-HEADER-2 AFTER 1.
- WRITE PRINT-RECORD FROM COLUMN-HEADER-2 AFTER 2.
- WRITE PRINT-RECORD FROM HYPHENS-2 AFTER 1.
- MOVE TOTAL-DEPOSITS TO OUT-DEPOSIT-TOT.
- MOVE TOTAL-SHARES TO OUT-SHARES-TOT.
- MOVE BROKER-COUNT TO OUT-BROKER-NUM.
- WRITE PRINT-RECORD FROM OUT-SUMMARY.
- 0800-EXIT. EXIT.
- EJECT
- //SYSLIB DD DSN=KC02322.CSCI465.COPYLIB,DISP=SHR
- //*
- //SYSLIN DD DSN=&&OBJMOD,SPACE=(TRK,(3,3)),
- // DISP=(MOD,PASS,DELETE)
- //*
- //SYSPRINT DD SYSOUT=*
- //*
- //SYSUT1 DD SPACE=(CYL,(1,1))
- //SYSUT2 DD SPACE=(CYL,(1,1))
- //SYSUT3 DD SPACE=(CYL,(1,1))
- //SYSUT4 DD SPACE=(CYL,(1,1))
- //SYSUT5 DD SPACE=(CYL,(1,1))
- //SYSUT6 DD SPACE=(CYL,(1,1))
- //SYSUT7 DD SPACE=(CYL,(1,1))
- //*
- //*
- //JSTEP03 EXEC PGM=LOADER,PARM='MAP,LET',COND=(0,LT)
- //***************************************************************
- //* *
- //* JSTEP03 EXECUTE LOADER IF COMPILATION *
- //* WAS SUCCESSFUL *
- //* *
- //* DDNAME FILE DESCRIPTION *
- //* *
- //* SYSLIB INPUT: LIBRARY MODULE LIBRARY *
- //* SYSLIN INPUT: INPUT OBJECT MODULE *
- //* INFILE5A INPUT: INPUT OBJECT MODULE *
- //* INFILE5B INPUT: INPUT DATA FILE *
- //* INFILE5C INPUT: INPUT DATA FILE *
- //* PRINTER OUTPUT: WHERE TO DISPLAY OUTPUT *
- //* *
- //***************************************************************
- //*
- //SYSLIB DD DSN=CEE.SCEELKED,DISP=SHR
- //*
- //SYSLIN DD DSN=&&OBJMOD,DISP=(OLD,DELETE)
- //*
- //INFILE5A DD DSN=&&SORTED,DISP=(OLD,DELETE)
- //*
- //INFILE5B DD DSN=KC02322.CSCI465.DATAFA14(DATA5B),DISP=SHR
- //*
- //INFILE5C DD DSN=KC02322.CSCI465.DATAFA14(DATA5C),DISP=SHR
- //*
- //PRINTER DD SYSOUT=*
- //*
- //*
Advertisement
Add Comment
Please, Sign In to add comment