Snippets
Created by
Steven D
last modified
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 | ******************************************************************
* 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)
You can clone a snippet to your computer for local editing. Learn more.