MFmainframe-rea
WS carddemo · 26f629ef

cobol · 731 lines · sha256 708f3cadc555acab · guides at columns 7 and 72app/cbl/CBTRN02C.cbl

1 ******************************************************************
2 * Program : CBTRN02C.CBL
3 * Application : CardDemo
4 * Type : BATCH COBOL Program
5 * Function : Post the records from daily transaction file.
6 ******************************************************************
7 * Copyright Amazon.com, Inc. or its affiliates.
8 * All Rights Reserved.
9 *
10 * Licensed under the Apache License, Version 2.0 (the "License").
11 * You may not use this file except in compliance with the License.
12 * You may obtain a copy of the License at
13 *
14 * http://www.apache.org/licenses/LICENSE-2.0
15 *
16 * Unless required by applicable law or agreed to in writing,
17 * software distributed under the License is distributed on an
18 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
19 * either express or implied. See the License for the specific
20 * language governing permissions and limitations under the License
21 ******************************************************************
22 IDENTIFICATION DIVISION.
23 PROGRAM-ID. CBTRN02C.
24 AUTHOR. AWS.
25
26 ENVIRONMENT DIVISION.
27 INPUT-OUTPUT SECTION.
28 FILE-CONTROL.
29 SELECT DALYTRAN-FILE ASSIGN TO DALYTRAN
30 ORGANIZATION IS SEQUENTIAL
31 ACCESS MODE IS SEQUENTIAL
32 FILE STATUS IS DALYTRAN-STATUS.
33
34 SELECT TRANSACT-FILE ASSIGN TO TRANFILE
35 ORGANIZATION IS INDEXED
36 ACCESS MODE IS RANDOM
37 RECORD KEY IS FD-TRANS-ID
38 FILE STATUS IS TRANFILE-STATUS.
39
40 SELECT XREF-FILE ASSIGN TO XREFFILE
41 ORGANIZATION IS INDEXED
42 ACCESS MODE IS RANDOM
43 RECORD KEY IS FD-XREF-CARD-NUM
44 FILE STATUS IS XREFFILE-STATUS.
45
46 SELECT DALYREJS-FILE ASSIGN TO DALYREJS
47 ORGANIZATION IS SEQUENTIAL
48 ACCESS MODE IS SEQUENTIAL
49 FILE STATUS IS DALYREJS-STATUS.
50
51 SELECT ACCOUNT-FILE ASSIGN TO ACCTFILE
52 ORGANIZATION IS INDEXED
53 ACCESS MODE IS RANDOM
54 RECORD KEY IS FD-ACCT-ID
55 FILE STATUS IS ACCTFILE-STATUS.
56
57 SELECT TCATBAL-FILE ASSIGN TO TCATBALF
58 ORGANIZATION IS INDEXED
59 ACCESS MODE IS RANDOM
60 RECORD KEY IS FD-TRAN-CAT-KEY
61 FILE STATUS IS TCATBALF-STATUS.
62
63 *
64 DATA DIVISION.
65 FILE SECTION.
66 FD DALYTRAN-FILE.
67 01 FD-TRAN-RECORD.
68 05 FD-TRAN-ID PIC X(16).
69 05 FD-CUST-DATA PIC X(334).
70
71 FD TRANSACT-FILE.
72 01 FD-TRANFILE-REC.
73 05 FD-TRANS-ID PIC X(16).
74 05 FD-ACCT-DATA PIC X(334).
75
76 FD XREF-FILE.
77 01 FD-XREFFILE-REC.
78 05 FD-XREF-CARD-NUM PIC X(16).
79 05 FD-XREF-DATA PIC X(34).
80
81 FD DALYREJS-FILE.
82 01 FD-REJS-RECORD.
83 05 FD-REJECT-RECORD PIC X(350).
84 05 FD-VALIDATION-TRAILER PIC X(80).
85
86 FD ACCOUNT-FILE.
87 01 FD-ACCTFILE-REC.
88 05 FD-ACCT-ID PIC 9(11).
89 05 FD-ACCT-DATA PIC X(289).
90
91 FD TCATBAL-FILE.
92 01 FD-TRAN-CAT-BAL-RECORD.
93 05 FD-TRAN-CAT-KEY.
94 10 FD-TRANCAT-ACCT-ID PIC 9(11).
95 10 FD-TRANCAT-TYPE-CD PIC X(02).
96 10 FD-TRANCAT-CD PIC 9(04).
97 05 FD-FD-TRAN-CAT-DATA PIC X(33).
98
99 WORKING-STORAGE SECTION.
100
101 *****************************************************************
102 COPY CVTRA06Y.
103 01 DALYTRAN-STATUS.
104 05 DALYTRAN-STAT1 PIC X.
105 05 DALYTRAN-STAT2 PIC X.
106
107 COPY CVTRA05Y.
108 01 TRANFILE-STATUS.
109 05 TRANFILE-STAT1 PIC X.
110 05 TRANFILE-STAT2 PIC X.
111
112 COPY CVACT03Y.
113 01 XREFFILE-STATUS.
114 05 XREFFILE-STAT1 PIC X.
115 05 XREFFILE-STAT2 PIC X.
116
117 01 DALYREJS-STATUS.
118 05 DALYREJS-STAT1 PIC X.
119 05 DALYREJS-STAT2 PIC X.
120
121 COPY CVACT01Y.
122 01 ACCTFILE-STATUS.
123 05 ACCTFILE-STAT1 PIC X.
124 05 ACCTFILE-STAT2 PIC X.
125
126 COPY CVTRA01Y.
127 01 TCATBALF-STATUS.
128 05 TCATBALF-STAT1 PIC X.
129 05 TCATBALF-STAT2 PIC X.
130
131 01 IO-STATUS.
132 05 IO-STAT1 PIC X.
133 05 IO-STAT2 PIC X.
134 01 TWO-BYTES-BINARY PIC 9(4) BINARY.
135 01 TWO-BYTES-ALPHA REDEFINES TWO-BYTES-BINARY.
136 05 TWO-BYTES-LEFT PIC X.
137 05 TWO-BYTES-RIGHT PIC X.
138 01 IO-STATUS-04.
139 05 IO-STATUS-0401 PIC 9 VALUE 0.
140 05 IO-STATUS-0403 PIC 999 VALUE 0.
141
142 01 APPL-RESULT PIC S9(9) COMP.
143 88 APPL-AOK VALUE 0.
144 88 APPL-EOF VALUE 16.
145
146 01 END-OF-FILE PIC X(01) VALUE 'N'.
147 01 ABCODE PIC S9(9) BINARY.
148 01 TIMING PIC S9(9) BINARY.
149 * T I M E S T A M P D B 2 X(26) EEEE-MM-DD-UU.MM.SS.HH0000
150 01 COBOL-TS.
151 05 COB-YYYY PIC X(04).
152 05 COB-MM PIC X(02).
153 05 COB-DD PIC X(02).
154 05 COB-HH PIC X(02).
155 05 COB-MIN PIC X(02).
156 05 COB-SS PIC X(02).
157 05 COB-MIL PIC X(02).
158 05 COB-REST PIC X(05).
159 01 DB2-FORMAT-TS PIC X(26).
160 01 FILLER REDEFINES DB2-FORMAT-TS.
161 06 DB2-YYYY PIC X(004). E
162 06 DB2-STREEP-1 PIC X. -
163 06 DB2-MM PIC X(002). M
164 06 DB2-STREEP-2 PIC X. -
165 06 DB2-DD PIC X(002). D
166 06 DB2-STREEP-3 PIC X. -
167 06 DB2-HH PIC X(002). U
168 06 DB2-DOT-1 PIC X.
169 06 DB2-MIN PIC X(002).
170 06 DB2-DOT-2 PIC X.
171 06 DB2-SS PIC X(002).
172 06 DB2-DOT-3 PIC X.
173 06 DB2-MIL PIC 9(002).
174 06 DB2-REST PIC X(04).
175
176 01 REJECT-RECORD.
177 05 REJECT-TRAN-DATA PIC X(350).
178 05 VALIDATION-TRAILER PIC X(80).
179
180 01 WS-VALIDATION-TRAILER.
181 05 WS-VALIDATION-FAIL-REASON PIC 9(04).
182 05 WS-VALIDATION-FAIL-REASON-DESC PIC X(76).
183
184 01 WS-COUNTERS.
185 05 WS-TRANSACTION-COUNT PIC 9(09) VALUE 0.
186 05 WS-REJECT-COUNT PIC 9(09) VALUE 0.
187 05 WS-TEMP-BAL PIC S9(09)V99.
188
189 01 WS-FLAGS.
190 05 WS-CREATE-TRANCAT-REC PIC X(01) VALUE 'N'.
191
192 *****************************************************************
193 PROCEDURE DIVISION.
194 DISPLAY 'START OF EXECUTION OF PROGRAM CBTRN02C'.
195 PERFORM 0000-DALYTRAN-OPEN.
196 PERFORM 0100-TRANFILE-OPEN.
197 PERFORM 0200-XREFFILE-OPEN.
198 PERFORM 0300-DALYREJS-OPEN.
199 PERFORM 0400-ACCTFILE-OPEN.
200 PERFORM 0500-TCATBALF-OPEN.
201
202 PERFORM UNTIL END-OF-FILE = 'Y'
203 IF END-OF-FILE = 'N'
204 PERFORM 1000-DALYTRAN-GET-NEXT
205 IF END-OF-FILE = 'N'
206 ADD 1 TO WS-TRANSACTION-COUNT
207 * DISPLAY DALYTRAN-RECORD
208 MOVE 0 TO WS-VALIDATION-FAIL-REASON
209 MOVE SPACES TO WS-VALIDATION-FAIL-REASON-DESC
210 PERFORM 1500-VALIDATE-TRAN
211 IF WS-VALIDATION-FAIL-REASON = 0
212 PERFORM 2000-POST-TRANSACTION
213 ELSE
214 ADD 1 TO WS-REJECT-COUNT
215 PERFORM 2500-WRITE-REJECT-REC
216 END-IF
217 END-IF
218 END-IF
219 END-PERFORM.
220
221 PERFORM 9000-DALYTRAN-CLOSE.
222 PERFORM 9100-TRANFILE-CLOSE.
223 PERFORM 9200-XREFFILE-CLOSE.
224 PERFORM 9300-DALYREJS-CLOSE.
225 PERFORM 9400-ACCTFILE-CLOSE.
226 PERFORM 9500-TCATBALF-CLOSE.
227 DISPLAY 'TRANSACTIONS PROCESSED :' WS-TRANSACTION-COUNT
228 DISPLAY 'TRANSACTIONS REJECTED :' WS-REJECT-COUNT
229 IF WS-REJECT-COUNT > 0
230 MOVE 4 TO RETURN-CODE
231 END-IF
232 DISPLAY 'END OF EXECUTION OF PROGRAM CBTRN02C'.
233
234 GOBACK.
235 *---------------------------------------------------------------*
236 0000-DALYTRAN-OPEN.
237 MOVE 8 TO APPL-RESULT.
238 OPEN INPUT DALYTRAN-FILE
239 IF DALYTRAN-STATUS = '00'
240 MOVE 0 TO APPL-RESULT
241 ELSE
242 MOVE 12 TO APPL-RESULT
243 END-IF
244 IF APPL-AOK
245 CONTINUE
246 ELSE
247 DISPLAY 'ERROR OPENING DALYTRAN'
248 MOVE DALYTRAN-STATUS TO IO-STATUS
249 PERFORM 9910-DISPLAY-IO-STATUS
250 PERFORM 9999-ABEND-PROGRAM
251 END-IF
252 EXIT.
253 *---------------------------------------------------------------*
254 0100-TRANFILE-OPEN.
255 MOVE 8 TO APPL-RESULT.
256 OPEN OUTPUT TRANSACT-FILE
257 IF TRANFILE-STATUS = '00'
258 MOVE 0 TO APPL-RESULT
259 ELSE
260 MOVE 12 TO APPL-RESULT
261 END-IF
262 IF APPL-AOK
263 CONTINUE
264 ELSE
265 DISPLAY 'ERROR OPENING TRANSACTION FILE'
266 MOVE TRANFILE-STATUS TO IO-STATUS
267 PERFORM 9910-DISPLAY-IO-STATUS
268 PERFORM 9999-ABEND-PROGRAM
269 END-IF
270 EXIT.
271
272 *---------------------------------------------------------------*
273 0200-XREFFILE-OPEN.
274 MOVE 8 TO APPL-RESULT.
275 OPEN INPUT XREF-FILE
276 IF XREFFILE-STATUS = '00'
277 MOVE 0 TO APPL-RESULT
278 ELSE
279 MOVE 12 TO APPL-RESULT
280 END-IF
281 IF APPL-AOK
282 CONTINUE
283 ELSE
284 DISPLAY 'ERROR OPENING CROSS REF FILE'
285 MOVE XREFFILE-STATUS TO IO-STATUS
286 PERFORM 9910-DISPLAY-IO-STATUS
287 PERFORM 9999-ABEND-PROGRAM
288 END-IF
289 EXIT.
290 *---------------------------------------------------------------*
291 0300-DALYREJS-OPEN.
292 MOVE 8 TO APPL-RESULT.
293 OPEN OUTPUT DALYREJS-FILE
294 IF DALYREJS-STATUS = '00'
295 MOVE 0 TO APPL-RESULT
296 ELSE
297 MOVE 12 TO APPL-RESULT
298 END-IF
299 IF APPL-AOK
300 CONTINUE
301 ELSE
302 DISPLAY 'ERROR OPENING DALY REJECTS FILE'
303 MOVE DALYREJS-STATUS TO IO-STATUS
304 PERFORM 9910-DISPLAY-IO-STATUS
305 PERFORM 9999-ABEND-PROGRAM
306 END-IF
307 EXIT.
308 *---------------------------------------------------------------*
309 0400-ACCTFILE-OPEN.
310 MOVE 8 TO APPL-RESULT.
311 OPEN I-O ACCOUNT-FILE
312 IF ACCTFILE-STATUS = '00'
313 MOVE 0 TO APPL-RESULT
314 ELSE
315 MOVE 12 TO APPL-RESULT
316 END-IF
317 IF APPL-AOK
318 CONTINUE
319 ELSE
320 DISPLAY 'ERROR OPENING ACCOUNT MASTER FILE'
321 MOVE ACCTFILE-STATUS TO IO-STATUS
322 PERFORM 9910-DISPLAY-IO-STATUS
323 PERFORM 9999-ABEND-PROGRAM
324 END-IF
325 EXIT.
326 *---------------------------------------------------------------*
327 0500-TCATBALF-OPEN.
328 MOVE 8 TO APPL-RESULT.
329 OPEN I-O TCATBAL-FILE
330 IF TCATBALF-STATUS = '00'
331 MOVE 0 TO APPL-RESULT
332 ELSE
333 MOVE 12 TO APPL-RESULT
334 END-IF
335 IF APPL-AOK
336 CONTINUE
337 ELSE
338 DISPLAY 'ERROR OPENING TRANSACTION BALANCE FILE'
339 MOVE TCATBALF-STATUS TO IO-STATUS
340 PERFORM 9910-DISPLAY-IO-STATUS
341 PERFORM 9999-ABEND-PROGRAM
342 END-IF
343 EXIT.
344 *---------------------------------------------------------------*
345 1000-DALYTRAN-GET-NEXT.
346 READ DALYTRAN-FILE INTO DALYTRAN-RECORD.
347 IF DALYTRAN-STATUS = '00'
348 MOVE 0 TO APPL-RESULT
349 * DISPLAY DALYTRAN-RECORD
350 ELSE
351 IF DALYTRAN-STATUS = '10'
352 MOVE 16 TO APPL-RESULT
353 ELSE
354 MOVE 12 TO APPL-RESULT
355 END-IF
356 END-IF
357 IF APPL-AOK
358 CONTINUE
359 ELSE
360 IF APPL-EOF
361 MOVE 'Y' TO END-OF-FILE
362 ELSE
363 DISPLAY 'ERROR READING DALYTRAN FILE'
364 MOVE DALYTRAN-STATUS TO IO-STATUS
365 PERFORM 9910-DISPLAY-IO-STATUS
366 PERFORM 9999-ABEND-PROGRAM
367 END-IF
368 END-IF
369 EXIT.
370 1500-VALIDATE-TRAN.
371 PERFORM 1500-A-LOOKUP-XREF.
372 IF WS-VALIDATION-FAIL-REASON = 0
373 PERFORM 1500-B-LOOKUP-ACCT
374 ELSE
375 CONTINUE
376 END-IF
377 * ADD MORE VALIDATIONS HERE
378 EXIT.
379
380 1500-A-LOOKUP-XREF.
381 * DISPLAY 'CARD NUMBER: ' DALYTRAN-CARD-NUM
382 MOVE DALYTRAN-CARD-NUM TO FD-XREF-CARD-NUM
383 READ XREF-FILE INTO CARD-XREF-RECORD
384 INVALID KEY
385 MOVE 100 TO WS-VALIDATION-FAIL-REASON
386 MOVE 'INVALID CARD NUMBER FOUND'
387 TO WS-VALIDATION-FAIL-REASON-DESC
388 NOT INVALID KEY
389 * DISPLAY 'ACCOUNT RECORD FOUND'
390 CONTINUE
391 END-READ
392 EXIT.
393 1500-B-LOOKUP-ACCT.
394 MOVE XREF-ACCT-ID TO FD-ACCT-ID
395 READ ACCOUNT-FILE INTO ACCOUNT-RECORD
396 INVALID KEY
397 MOVE 101 TO WS-VALIDATION-FAIL-REASON
398 MOVE 'ACCOUNT RECORD NOT FOUND'
399 TO WS-VALIDATION-FAIL-REASON-DESC
400 NOT INVALID KEY
401 * DISPLAY 'ACCT-CREDIT-LIMIT:' ACCT-CREDIT-LIMIT
402 * DISPLAY 'TRAN-AMT :' DALYTRAN-AMT
403 COMPUTE WS-TEMP-BAL = ACCT-CURR-CYC-CREDIT
404 - ACCT-CURR-CYC-DEBIT
405 + DALYTRAN-AMT
406
407 IF ACCT-CREDIT-LIMIT >= WS-TEMP-BAL
408 CONTINUE
409 ELSE
410 MOVE 102 TO WS-VALIDATION-FAIL-REASON
411 MOVE 'OVERLIMIT TRANSACTION'
412 TO WS-VALIDATION-FAIL-REASON-DESC
413 END-IF
414 IF ACCT-EXPIRAION-DATE >= DALYTRAN-ORIG-TS (1:10)
415 CONTINUE
416 ELSE
417 MOVE 103 TO WS-VALIDATION-FAIL-REASON
418 MOVE 'TRANSACTION RECEIVED AFTER ACCT EXPIRATION'
419 TO WS-VALIDATION-FAIL-REASON-DESC
420 END-IF
421 END-READ
422 EXIT.
423 *---------------------------------------------------------------*
424 2000-POST-TRANSACTION.
425 MOVE DALYTRAN-ID TO TRAN-ID
426 MOVE DALYTRAN-TYPE-CD TO TRAN-TYPE-CD
427 MOVE DALYTRAN-CAT-CD TO TRAN-CAT-CD
428 MOVE DALYTRAN-SOURCE TO TRAN-SOURCE
429 MOVE DALYTRAN-DESC TO TRAN-DESC
430 MOVE DALYTRAN-AMT TO TRAN-AMT
431 MOVE DALYTRAN-MERCHANT-ID TO TRAN-MERCHANT-ID
432 MOVE DALYTRAN-MERCHANT-NAME TO TRAN-MERCHANT-NAME
433 MOVE DALYTRAN-MERCHANT-CITY TO TRAN-MERCHANT-CITY
434 MOVE DALYTRAN-MERCHANT-ZIP TO TRAN-MERCHANT-ZIP
435 MOVE DALYTRAN-CARD-NUM TO TRAN-CARD-NUM
436 MOVE DALYTRAN-ORIG-TS TO TRAN-ORIG-TS
437 PERFORM Z-GET-DB2-FORMAT-TIMESTAMP
438 MOVE DB2-FORMAT-TS TO TRAN-PROC-TS
439
440 PERFORM 2700-UPDATE-TCATBAL
441 PERFORM 2800-UPDATE-ACCOUNT-REC
442 PERFORM 2900-WRITE-TRANSACTION-FILE
443
444 EXIT.
445
446 2500-WRITE-REJECT-REC.
447 MOVE DALYTRAN-RECORD TO REJECT-TRAN-DATA
448 MOVE WS-VALIDATION-TRAILER TO VALIDATION-TRAILER
449 * DISPLAY '***' REJECT-RECORD
450 MOVE 8 TO APPL-RESULT
451 WRITE FD-REJS-RECORD FROM REJECT-RECORD
452 IF DALYREJS-STATUS = '00'
453 MOVE 0 TO APPL-RESULT
454 ELSE
455 MOVE 12 TO APPL-RESULT
456 END-IF
457 IF APPL-AOK
458 CONTINUE
459 ELSE
460 DISPLAY 'ERROR WRITING TO REJECTS FILE'
461 MOVE DALYREJS-STATUS TO IO-STATUS
462 PERFORM 9910-DISPLAY-IO-STATUS
463 PERFORM 9999-ABEND-PROGRAM
464 END-IF
465 EXIT.
466 *---------------------------------------------------------------*
467 2700-UPDATE-TCATBAL.
468 * Update the balances in transaction balance file.
469 MOVE XREF-ACCT-ID TO FD-TRANCAT-ACCT-ID
470 MOVE DALYTRAN-TYPE-CD TO FD-TRANCAT-TYPE-CD
471 MOVE DALYTRAN-CAT-CD TO FD-TRANCAT-CD
472
473 MOVE 'N' TO WS-CREATE-TRANCAT-REC
474 READ TCATBAL-FILE INTO TRAN-CAT-BAL-RECORD
475 INVALID KEY
476 DISPLAY 'TCATBAL record not found for key : '
477 FD-TRAN-CAT-KEY '.. Creating.'
478 MOVE 'Y' TO WS-CREATE-TRANCAT-REC
479 END-READ.
480
481 IF TCATBALF-STATUS = '00' OR '23'
482 MOVE 0 TO APPL-RESULT
483 ELSE
484 MOVE 12 TO APPL-RESULT
485 END-IF
486 IF APPL-AOK
487 CONTINUE
488 ELSE
489 DISPLAY 'ERROR READING TRANSACTION BALANCE FILE'
490 MOVE TCATBALF-STATUS TO IO-STATUS
491 PERFORM 9910-DISPLAY-IO-STATUS
492 PERFORM 9999-ABEND-PROGRAM
493 END-IF.
494
495 IF WS-CREATE-TRANCAT-REC = 'Y'
496 PERFORM 2700-A-CREATE-TCATBAL-REC
497 ELSE
498 PERFORM 2700-B-UPDATE-TCATBAL-REC
499 END-IF
500
501 EXIT.
502 *---------------------------------------------------------------*
503 2700-A-CREATE-TCATBAL-REC.
504 INITIALIZE TRAN-CAT-BAL-RECORD
505 MOVE XREF-ACCT-ID TO TRANCAT-ACCT-ID
506 MOVE DALYTRAN-TYPE-CD TO TRANCAT-TYPE-CD
507 MOVE DALYTRAN-CAT-CD TO TRANCAT-CD
508 ADD DALYTRAN-AMT TO TRAN-CAT-BAL
509
510 WRITE FD-TRAN-CAT-BAL-RECORD FROM TRAN-CAT-BAL-RECORD
511
512 IF TCATBALF-STATUS = '00'
513 MOVE 0 TO APPL-RESULT
514 ELSE
515 MOVE 12 TO APPL-RESULT
516 END-IF
517 IF APPL-AOK
518 CONTINUE
519 ELSE
520 DISPLAY 'ERROR WRITING TRANSACTION BALANCE FILE'
521 MOVE TCATBALF-STATUS TO IO-STATUS
522 PERFORM 9910-DISPLAY-IO-STATUS
523 PERFORM 9999-ABEND-PROGRAM
524 END-IF.
525 *---------------------------------------------------------------*
526 2700-B-UPDATE-TCATBAL-REC.
527 ADD DALYTRAN-AMT TO TRAN-CAT-BAL
528 REWRITE FD-TRAN-CAT-BAL-RECORD FROM TRAN-CAT-BAL-RECORD
529
530 IF TCATBALF-STATUS = '00'
531 MOVE 0 TO APPL-RESULT
532 ELSE
533 MOVE 12 TO APPL-RESULT
534 END-IF
535 IF APPL-AOK
536 CONTINUE
537 ELSE
538 DISPLAY 'ERROR REWRITING TRANSACTION BALANCE FILE'
539 MOVE TCATBALF-STATUS TO IO-STATUS
540 PERFORM 9910-DISPLAY-IO-STATUS
541 PERFORM 9999-ABEND-PROGRAM
542 END-IF.
543
544 *---------------------------------------------------------------*
545 2800-UPDATE-ACCOUNT-REC.
546 * Update the balances in account record to reflect posted trans.
547 ADD DALYTRAN-AMT TO ACCT-CURR-BAL
548 IF DALYTRAN-AMT >= 0
549 ADD DALYTRAN-AMT TO ACCT-CURR-CYC-CREDIT
550 ELSE
551 ADD DALYTRAN-AMT TO ACCT-CURR-CYC-DEBIT
552 END-IF
553
554 REWRITE FD-ACCTFILE-REC FROM ACCOUNT-RECORD
555 INVALID KEY
556 MOVE 109 TO WS-VALIDATION-FAIL-REASON
557 MOVE 'ACCOUNT RECORD NOT FOUND'
558 TO WS-VALIDATION-FAIL-REASON-DESC
559 END-REWRITE.
560 EXIT.
561 *---------------------------------------------------------------*
562 2900-WRITE-TRANSACTION-FILE.
563 MOVE 8 TO APPL-RESULT.
564 WRITE FD-TRANFILE-REC FROM TRAN-RECORD
565
566 IF TRANFILE-STATUS = '00'
567 MOVE 0 TO APPL-RESULT
568 ELSE
569 MOVE 12 TO APPL-RESULT
570 END-IF
571 IF APPL-AOK
572 CONTINUE
573 ELSE
574 DISPLAY 'ERROR WRITING TO TRANSACTION FILE'
575 MOVE TRANFILE-STATUS TO IO-STATUS
576 PERFORM 9910-DISPLAY-IO-STATUS
577 PERFORM 9999-ABEND-PROGRAM
578 END-IF
579 EXIT.
580
581 *---------------------------------------------------------------*
582 9000-DALYTRAN-CLOSE.
583 MOVE 8 TO APPL-RESULT.
584 CLOSE DALYTRAN-FILE
585 IF DALYTRAN-STATUS = '00'
586 MOVE 0 TO APPL-RESULT
587 ELSE
588 MOVE 12 TO APPL-RESULT
589 END-IF
590 IF APPL-AOK
591 CONTINUE
592 ELSE
593 DISPLAY 'ERROR CLOSING DALYTRAN FILE'
594 MOVE DALYTRAN-STATUS TO IO-STATUS
595 PERFORM 9910-DISPLAY-IO-STATUS
596 PERFORM 9999-ABEND-PROGRAM
597 END-IF
598 EXIT.
599 *---------------------------------------------------------------*
600 9100-TRANFILE-CLOSE.
601 MOVE 8 TO APPL-RESULT.
602 CLOSE TRANSACT-FILE
603 IF TRANFILE-STATUS = '00'
604 MOVE 0 TO APPL-RESULT
605 ELSE
606 MOVE 12 TO APPL-RESULT
607 END-IF
608 IF APPL-AOK
609 CONTINUE
610 ELSE
611 DISPLAY 'ERROR CLOSING TRANSACTION FILE'
612 MOVE TRANFILE-STATUS TO IO-STATUS
613 PERFORM 9910-DISPLAY-IO-STATUS
614 PERFORM 9999-ABEND-PROGRAM
615 END-IF
616 EXIT.
617
618 *---------------------------------------------------------------*
619 9200-XREFFILE-CLOSE.
620 MOVE 8 TO APPL-RESULT.
621 CLOSE XREF-FILE
622 IF XREFFILE-STATUS = '00'
623 MOVE 0 TO APPL-RESULT
624 ELSE
625 MOVE 12 TO APPL-RESULT
626 END-IF
627 IF APPL-AOK
628 CONTINUE
629 ELSE
630 DISPLAY 'ERROR CLOSING CROSS REF FILE'
631 MOVE XREFFILE-STATUS TO IO-STATUS
632 PERFORM 9910-DISPLAY-IO-STATUS
633 PERFORM 9999-ABEND-PROGRAM
634 END-IF
635 EXIT.
636 *---------------------------------------------------------------*
637 9300-DALYREJS-CLOSE.
638 MOVE 8 TO APPL-RESULT.
639 CLOSE DALYREJS-FILE
640 IF DALYREJS-STATUS = '00'
641 MOVE 0 TO APPL-RESULT
642 ELSE
643 MOVE 12 TO APPL-RESULT
644 END-IF
645 IF APPL-AOK
646 CONTINUE
647 ELSE
648 DISPLAY 'ERROR CLOSING DAILY REJECTS FILE'
649 MOVE XREFFILE-STATUS TO IO-STATUS
650 PERFORM 9910-DISPLAY-IO-STATUS
651 PERFORM 9999-ABEND-PROGRAM
652 END-IF
653 EXIT.
654 *---------------------------------------------------------------*
655 9400-ACCTFILE-CLOSE.
656 MOVE 8 TO APPL-RESULT.
657 CLOSE ACCOUNT-FILE
658 IF ACCTFILE-STATUS = '00'
659 MOVE 0 TO APPL-RESULT
660 ELSE
661 MOVE 12 TO APPL-RESULT
662 END-IF
663 IF APPL-AOK
664 CONTINUE
665 ELSE
666 DISPLAY 'ERROR CLOSING ACCOUNT FILE'
667 MOVE ACCTFILE-STATUS TO IO-STATUS
668 PERFORM 9910-DISPLAY-IO-STATUS
669 PERFORM 9999-ABEND-PROGRAM
670 END-IF
671 EXIT.
672
673 *---------------------------------------------------------------*
674 9500-TCATBALF-CLOSE.
675 MOVE 8 TO APPL-RESULT.
676 CLOSE TCATBAL-FILE
677 IF TCATBALF-STATUS = '00'
678 MOVE 0 TO APPL-RESULT
679 ELSE
680 MOVE 12 TO APPL-RESULT
681 END-IF
682 IF APPL-AOK
683 CONTINUE
684 ELSE
685 DISPLAY 'ERROR CLOSING TRANSACTION BALANCE FILE'
686 MOVE TCATBALF-STATUS TO IO-STATUS
687 PERFORM 9910-DISPLAY-IO-STATUS
688 PERFORM 9999-ABEND-PROGRAM
689 END-IF
690 EXIT.
691
692 Z-GET-DB2-FORMAT-TIMESTAMP.
693 MOVE FUNCTION CURRENT-DATE TO COBOL-TS
694 MOVE COB-YYYY TO DB2-YYYY
695 MOVE COB-MM TO DB2-MM
696 MOVE COB-DD TO DB2-DD
697 MOVE COB-HH TO DB2-HH
698 MOVE COB-MIN TO DB2-MIN
699 MOVE COB-SS TO DB2-SS
700 MOVE COB-MIL TO DB2-MIL
701 MOVE '0000' TO DB2-REST
702 MOVE '-' TO DB2-STREEP-1 DB2-STREEP-2 DB2-STREEP-3
703 MOVE '.' TO DB2-DOT-1 DB2-DOT-2 DB2-DOT-3
704 * DISPLAY 'DB2-TIMESTAMP = ' DB2-FORMAT-TS
705 EXIT.
706
707 9999-ABEND-PROGRAM.
708 DISPLAY 'ABENDING PROGRAM'
709 MOVE 0 TO TIMING
710 MOVE 999 TO ABCODE
711 CALL 'CEE3ABD' USING ABCODE, TIMING.
712
713 *****************************************************************
714 9910-DISPLAY-IO-STATUS.
715 IF IO-STATUS NOT NUMERIC
716 OR IO-STAT1 = '9'
717 MOVE IO-STAT1 TO IO-STATUS-04(1:1)
718 MOVE 0 TO TWO-BYTES-BINARY
719 MOVE IO-STAT2 TO TWO-BYTES-RIGHT
720 MOVE TWO-BYTES-BINARY TO IO-STATUS-0403
721 DISPLAY 'FILE STATUS IS: NNNN' IO-STATUS-04
722 ELSE
723 MOVE '0000' TO IO-STATUS-04
724 MOVE IO-STATUS TO IO-STATUS-04(3:2)
725 DISPLAY 'FILE STATUS IS: NNNN' IO-STATUS-04
726 END-IF
727 EXIT.
728
729 *
730 * Ver: CardDemo_v2.0-25-gdb72e6b-235 Date: 2025-04-29 11:01:29 CDT
731 *