Snippets

Steven D Gq5ez: Untitled snippet

Created by Steven D last modified
      ******************************************************************
      * Author:
      * Date:
      * Purpose:
      * Tectonics: cobc
      ******************************************************************
       IDENTIFICATION DIVISION.
       PROGRAM-ID. STOCK-PORTFOLIO.

       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
       SELECT IN-FILE
           ASSIGN TO "transactions.csv"
           FILE STATUS IS FILE-CHECK
           ORGANIZATION IS LINE SEQUENTIAL.
       SELECT STOCKFILE ASSIGN TO "stockportfolio.dat"
           ORGANIZATION IS LINE SEQUENTIAL.

       DATA DIVISION.
       FILE SECTION.
       FD IN-FILE.
       01 INPUT-RECORD PIC X(500).

       FD STOCKFILE.

       01 STOCK-REPORT.
           05 RPT-SYMBOL PIC X(7).
           05 RPT-QUANTITY PIC Z(4).
           05 RPT-PRICE PIC -$Z,ZZ9.9(2).
           05 RPT-ACTION-NAME PIC X(24).
           05 RPT-TRADE-DATE PIC X(10).
           05 RPT-SETTLE-DATE PIC X(10).
           05 RPT-INTEREST PIC -$ZZ9.99.
           05 RPT-AMOUNT PIC -$ZZ,ZZZ.99.
           05 RPT-COMMISION PIC -$ZZ9.99.
           05 RPT-FEES PIC -$ZZ9.99.
           05 RPT-CUSIP PIC X(9).
           05 RPT-DESCRIPTION PIC X(80).
           05 RPT-TRADE-NUMBER PIC -Z(4).
           05 RPT-RECORD-TYPE PIC X(15).

       01 FORMATTED-AMOUNT PIC $ZZZ,ZZZ.99.
       01 FORMATTED-ADJUSTMENTS PIC $ZZZ,ZZZ.99.
       01 FORMATTED-BOUGHT PIC $ZZZ,ZZZ.99.
       01 FORMATTED-CASH-ADDED PIC $ZZZ,ZZZ.99.
       01 FORMATTED-CREDIT-INTEREST PIC $Z(5).99.
       01 FORMATTED-DIVIDENDS PIC $Z(8).99.
       01 FORMATTED-FEES PIC $Z(5).99.
       01 FORMATTED-COMMISION PIC $Z(5).99.
       01 FORMATTED-OTHER PIC $Z(10).99.
       01 FORMATTED-SOLD PIC $Z(10).99.
       01 FORMATTED-WITHDREW PIC $Z(10).99.

       01 DISPLAY-SUMMARY.
           05 DISPLAY-STRING PIC X(20).
           05 DISPLAY-AMOUNT PIC -$ZZZ,ZZZ.99 BLANK ZERO.

       WORKING-STORAGE SECTION.
       01 WS-EOF PIC A VALUE " ".
       01 WS-FILE-STATUS PIC X(2).
       01 FILE-CHECK PIC X(2).

       01 STOCK-DETAILS.
           05 STK-SYMBOL PIC X(7).
           05 STK-QUANTITY PIC S9(4).
           05 STK-PRICE PIC S9(4)V9(4).
           05 STK-ACTION-NAME PIC X(24).
           05 STK-TRADE-DATE PIC X(10).
           05 STK-SETTLE-DATE PIC X(10).
           05 STK-INTEREST PIC S9(3)V99.
           05 STK-AMOUNT PIC S9(5)V9(4).
           05 STK-COMMISION PIC S9(3)V9(4).
           05 STK-FEES PIC S9(3)V9(4).
           05 STK-CUSIP PIC X(9).
           05 STK-DESCRIPTION PIC X(80).
           05 STK-TRADE-NUMBER PIC S9(4).
           05 STK-RECORD-TYPE PIC X(15).

       77 TOTAL-AMOUNT PIC S9(10)V99 VALUE 0.
       77 TOTAL-ADJUSTMENTS PIC S9(10)V99 VALUE 0.
       77 TOTAL-BOUGHT PIC S9(10)V99 VALUE 0.
       77 TOTAL-CASH-ADDED PIC S9(10)V99 VALUE 0.
       77 TOTAL-CREDIT-INTEREST PIC S9(5)V99 VALUE 0.
       77 TOTAL-DIVIDENDS PIC S9(8)V99 VALUE 0.
       77 TOTAL-FEES PIC S9(5)V99 VALUE 0.
       77 TOTAL-COMMISION PIC S9(5)V99 VALUE 0.
       77 TOTAL-OTHER PIC S9(10)V99 VALUE 0.
       77 TOTAL-SOLD PIC S9(10)V99 VALUE 0.
       77 TOTAL-WITHDREW PIC S9(10)V99 VALUE 0.

       PROCEDURE DIVISION.
       MAIN-PROCEDURE.
           OPEN INPUT IN-FILE.
           IF FILE-CHECK NOT = "00"
               DISPLAY "Problem opening file 'transactions.csv' with",
                   " error code: ", FILE-CHECK
               GO TO 9000-END-PROGRAM
           END-IF.
           OPEN OUTPUT STOCKFILE.

           PERFORM PROCESS-FILES UNTIL WS-EOF = "Y".
           PERFORM SUMMARY.

           CLOSE STOCKFILE.
           CLOSE IN-FILE.

       9000-END-PROGRAM.
           DISPLAY "execution completed successfully".
           STOP RUN.

       PROCESS-FILES.
           READ IN-FILE AT END
               MOVE "Y" TO WS-EOF
           NOT AT END

      *REMOVE HEADER INFORMATION
               IF WS-EOF = " "
                   MOVE "N" TO WS-EOF
                   NEXT SENTENCE
               END-IF

               UNSTRING INPUT-RECORD DELIMITED BY ","
               INTO STK-SYMBOL,
                   STK-QUANTITY,
                   STK-PRICE,
                   STK-ACTION-NAME,
                   STK-TRADE-DATE,
                   STK-SETTLE-DATE,
                   STK-INTEREST,
                   STK-AMOUNT,
                   STK-COMMISION,
                   STK-FEES,
                   STK-CUSIP,
                   STK-DESCRIPTION,
                   STK-TRADE-NUMBER,
                   STK-RECORD-TYPE
               END-UNSTRING

               PERFORM CALCULATIONS

               MOVE STK-SYMBOL TO RPT-SYMBOL
               ADD STK-QUANTITY TO ZERO GIVING RPT-QUANTITY
               ADD STK-PRICE TO ZERO GIVING RPT-PRICE ROUNDED
               MOVE STK-ACTION-NAME TO RPT-ACTION-NAME
               MOVE STK-TRADE-DATE TO RPT-TRADE-DATE
               MOVE STK-SETTLE-DATE TO RPT-SETTLE-DATE
               ADD STK-INTEREST TO ZERO GIVING RPT-INTEREST ROUNDED
               ADD STK-AMOUNT TO ZERO GIVING RPT-AMOUNT ROUNDED
               ADD STK-COMMISION TO ZERO GIVING RPT-COMMISION ROUNDED
               ADD STK-FEES TO ZERO GIVING RPT-FEES ROUNDED
               MOVE STK-CUSIP TO RPT-CUSIP
               MOVE STK-DESCRIPTION TO RPT-DESCRIPTION
               ADD STK-TRADE-NUMBER TO ZERO GIVING RPT-TRADE-NUMBER
               MOVE STK-RECORD-TYPE TO RPT-RECORD-TYPE

               WRITE STOCK-REPORT

           END-READ.

       CALCULATIONS.
           INITIALIZE STOCK-REPORT

           EVALUATE STK-ACTION-NAME
               WHEN "Buy"
                   ADD STK-AMOUNT TO TOTAL-BOUGHT
               WHEN "Cash Adjustment"
                   ADD STK-AMOUNT TO TOTAL-CASH-ADDED
               WHEN "Credit Interest"
                   ADD STK-AMOUNT TO TOTAL-CREDIT-INTEREST
               WHEN "Dividend"
                   ADD STK-AMOUNT TO TOTAL-DIVIDENDS
               WHEN "Sell"
                   ADD STK-AMOUNT TO TOTAL-SOLD
               WHEN "Check"
                   ADD STK-AMOUNT TO TOTAL-WITHDREW
               WHEN "Journal"
                   ADD STK-AMOUNT TO TOTAL-ADJUSTMENTS
               WHEN OTHER
                   ADD STK-AMOUNT TO TOTAL-OTHER
           END-EVALUATE

           ADD STK-AMOUNT TO TOTAL-AMOUNT
           ADD STK-FEES TO TOTAL-FEES
           ADD STK-COMMISION TO TOTAL-COMMISION.

       SUMMARY.

           INITIALIZE DISPLAY-SUMMARY
           MOVE TOTAL-ADJUSTMENTS TO DISPLAY-AMOUNT
           MOVE "Total adjustments: " TO DISPLAY-STRING
           WRITE DISPLAY-SUMMARY
           AFTER ADVANCING 1 line

           INITIALIZE DISPLAY-SUMMARY
           MOVE TOTAL-CASH-ADDED TO DISPLAY-AMOUNT
           MOVE "Total cash added: " TO DISPLAY-STRING
           WRITE DISPLAY-SUMMARY

           INITIALIZE DISPLAY-SUMMARY
           MOVE TOTAL-WITHDREW TO DISPLAY-AMOUNT
           MOVE "Total withdrawn: " TO DISPLAY-STRING
           WRITE DISPLAY-SUMMARY

           INITIALIZE DISPLAY-SUMMARY
           MOVE TOTAL-BOUGHT TO DISPLAY-AMOUNT
           MOVE "Total purchases: " TO DISPLAY-STRING
           WRITE DISPLAY-SUMMARY
           AFTER ADVANCING 1 LINE

           INITIALIZE DISPLAY-SUMMARY
           MOVE TOTAL-SOLD TO DISPLAY-AMOUNT
           MOVE "Total sold: " TO DISPLAY-STRING
           WRITE DISPLAY-SUMMARY

           INITIALIZE DISPLAY-SUMMARY
           MOVE TOTAL-DIVIDENDS TO DISPLAY-AMOUNT
           MOVE "Total dividends: " TO DISPLAY-STRING
           WRITE DISPLAY-SUMMARY

           INITIALIZE DISPLAY-SUMMARY
           MOVE TOTAL-CREDIT-INTEREST TO DISPLAY-AMOUNT
           MOVE "Total interest: " TO DISPLAY-STRING
           WRITE DISPLAY-SUMMARY
           AFTER ADVANCING 1 LINE

           INITIALIZE DISPLAY-SUMMARY
           MOVE TOTAL-FEES TO DISPLAY-AMOUNT
           MOVE "Total fees: " TO DISPLAY-STRING
           WRITE DISPLAY-SUMMARY

           INITIALIZE DISPLAY-SUMMARY
           MOVE TOTAL-COMMISION TO DISPLAY-AMOUNT
           MOVE "Total comission: " TO DISPLAY-STRING
           WRITE DISPLAY-SUMMARY

           INITIALIZE DISPLAY-SUMMARY
           MOVE TOTAL-OTHER TO DISPLAY-AMOUNT
           MOVE "Other transactions: " TO DISPLAY-STRING
           WRITE DISPLAY-SUMMARY

           INITIALIZE DISPLAY-SUMMARY
           MOVE TOTAL-AMOUNT TO DISPLAY-AMOUNT
           MOVE "Available balance: " TO DISPLAY-STRING
           WRITE DISPLAY-SUMMARY
           AFTER ADVANCING 1 LINE.

       END PROGRAM STOCK-PORTFOLIO.

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.