MFmainframe-rea
WS carddemo · 26f629ef

cobol · 652 lines · sha256 5084bb8b0c9a0f01 · guides at columns 7 and 72app/cbl/CBACT04C.cbl

1 ******************************************************************
2 * Program : CBACT04C.CBL
3 * Application : CardDemo
4 * Type : BATCH COBOL Program
5 * Function : This is a interest calculator program.
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. CBACT04C.
24 AUTHOR. AWS.
25 ENVIRONMENT DIVISION.
26 INPUT-OUTPUT SECTION.
27 FILE-CONTROL.
28 SELECT TCATBAL-FILE ASSIGN TO TCATBALF
29 ORGANIZATION IS INDEXED
30 ACCESS MODE IS SEQUENTIAL
31 RECORD KEY IS FD-TRAN-CAT-KEY
32 FILE STATUS IS TCATBALF-STATUS.
33
34 SELECT XREF-FILE ASSIGN TO XREFFILE
35 ORGANIZATION IS INDEXED
36 ACCESS MODE IS RANDOM
37 RECORD KEY IS FD-XREF-CARD-NUM
38 ALTERNATE RECORD KEY IS FD-XREF-ACCT-ID
39 FILE STATUS IS XREFFILE-STATUS.
40
41 SELECT ACCOUNT-FILE ASSIGN TO ACCTFILE
42 ORGANIZATION IS INDEXED
43 ACCESS MODE IS RANDOM
44 RECORD KEY IS FD-ACCT-ID
45 FILE STATUS IS ACCTFILE-STATUS.
46
47 SELECT DISCGRP-FILE ASSIGN TO DISCGRP
48 ORGANIZATION IS INDEXED
49 ACCESS MODE IS RANDOM
50 RECORD KEY IS FD-DISCGRP-KEY
51 FILE STATUS IS DISCGRP-STATUS.
52
53 SELECT TRANSACT-FILE ASSIGN TO TRANSACT
54 ORGANIZATION IS SEQUENTIAL
55 ACCESS MODE IS SEQUENTIAL
56 FILE STATUS IS TRANFILE-STATUS.
57
58 *
59 DATA DIVISION.
60 FILE SECTION.
61 FD TCATBAL-FILE.
62 01 FD-TRAN-CAT-BAL-RECORD.
63 05 FD-TRAN-CAT-KEY.
64 10 FD-TRANCAT-ACCT-ID PIC 9(11).
65 10 FD-TRANCAT-TYPE-CD PIC X(02).
66 10 FD-TRANCAT-CD PIC 9(04).
67 05 FD-FD-TRAN-CAT-DATA PIC X(33).
68
69 FD XREF-FILE.
70 01 FD-XREFFILE-REC.
71 05 FD-XREF-CARD-NUM PIC X(16).
72 05 FD-XREF-CUST-NUM PIC 9(09).
73 05 FD-XREF-ACCT-ID PIC 9(11).
74 05 FD-XREF-FILLER PIC X(14).
75
76 FD DISCGRP-FILE.
77 01 FD-DISCGRP-REC.
78 05 FD-DISCGRP-KEY.
79 10 FD-DIS-ACCT-GROUP-ID PIC X(10).
80 10 FD-DIS-TRAN-TYPE-CD PIC X(02).
81 10 FD-DIS-TRAN-CAT-CD PIC 9(04).
82 05 FD-DISCGRP-DATA PIC X(34).
83
84 FD ACCOUNT-FILE.
85 01 FD-ACCTFILE-REC.
86 05 FD-ACCT-ID PIC 9(11).
87 05 FD-ACCT-DATA PIC X(289).
88
89 FD TRANSACT-FILE.
90 01 FD-TRANFILE-REC.
91 05 FD-TRANS-ID PIC X(16).
92 05 FD-ACCT-DATA PIC X(334).
93
94 WORKING-STORAGE SECTION.
95
96 *****************************************************************
97 COPY CVTRA01Y.
98 01 TCATBALF-STATUS.
99 05 TCATBALF-STAT1 PIC X.
100 05 TCATBALF-STAT2 PIC X.
101
102 COPY CVACT03Y.
103 01 XREFFILE-STATUS.
104 05 XREFFILE-STAT1 PIC X.
105 05 XREFFILE-STAT2 PIC X.
106
107 COPY CVTRA02Y.
108 01 DISCGRP-STATUS.
109 05 DISCGRP-STAT1 PIC X.
110 05 DISCGRP-STAT2 PIC X.
111
112 COPY CVACT01Y.
113 01 ACCTFILE-STATUS.
114 05 ACCTFILE-STAT1 PIC X.
115 05 ACCTFILE-STAT2 PIC X.
116
117 COPY CVTRA05Y.
118 01 TRANFILE-STATUS.
119 05 TRANFILE-STAT1 PIC X.
120 05 TRANFILE-STAT2 PIC X.
121
122 01 IO-STATUS.
123 05 IO-STAT1 PIC X.
124 05 IO-STAT2 PIC X.
125 01 TWO-BYTES-BINARY PIC 9(4) BINARY.
126 01 TWO-BYTES-ALPHA REDEFINES TWO-BYTES-BINARY.
127 05 TWO-BYTES-LEFT PIC X.
128 05 TWO-BYTES-RIGHT PIC X.
129 01 IO-STATUS-04.
130 05 IO-STATUS-0401 PIC 9 VALUE 0.
131 05 IO-STATUS-0403 PIC 999 VALUE 0.
132
133 01 APPL-RESULT PIC S9(9) COMP.
134 88 APPL-AOK VALUE 0.
135 88 APPL-EOF VALUE 16.
136
137 01 END-OF-FILE PIC X(01) VALUE 'N'.
138 01 ABCODE PIC S9(9) BINARY.
139 01 TIMING PIC S9(9) BINARY.
140 * T I M E S T A M P D B 2 X(26) EEEE-MM-DD-UU.MM.SS.HH0000
141 01 COBOL-TS.
142 05 COB-YYYY PIC X(04).
143 05 COB-MM PIC X(02).
144 05 COB-DD PIC X(02).
145 05 COB-HH PIC X(02).
146 05 COB-MIN PIC X(02).
147 05 COB-SS PIC X(02).
148 05 COB-MIL PIC X(02).
149 05 COB-REST PIC X(05).
150 01 DB2-FORMAT-TS PIC X(26).
151 01 FILLER REDEFINES DB2-FORMAT-TS.
152 06 DB2-YYYY PIC X(004). E
153 06 DB2-STREEP-1 PIC X. -
154 06 DB2-MM PIC X(002). M
155 06 DB2-STREEP-2 PIC X. -
156 06 DB2-DD PIC X(002). D
157 06 DB2-STREEP-3 PIC X. -
158 06 DB2-HH PIC X(002). U
159 06 DB2-DOT-1 PIC X.
160 06 DB2-MIN PIC X(002).
161 06 DB2-DOT-2 PIC X.
162 06 DB2-SS PIC X(002).
163 06 DB2-DOT-3 PIC X.
164 06 DB2-MIL PIC 9(002).
165 06 DB2-REST PIC X(04).
166 01 WS-MISC-VARS.
167 05 WS-LAST-ACCT-NUM PIC X(11) VALUE SPACES.
168 05 WS-MONTHLY-INT PIC S9(09)V99.
169 05 WS-TOTAL-INT PIC S9(09)V99.
170 05 WS-FIRST-TIME PIC X(01) VALUE 'Y'.
171 01 WS-COUNTERS.
172 05 WS-RECORD-COUNT PIC 9(09) VALUE 0.
173 05 WS-TRANID-SUFFIX PIC 9(06) VALUE 0.
174
175 LINKAGE SECTION.
176 01 EXTERNAL-PARMS.
177 05 PARM-LENGTH PIC S9(04) COMP.
178 05 PARM-DATE PIC X(10).
179 *****************************************************************
180 PROCEDURE DIVISION USING EXTERNAL-PARMS.
181 DISPLAY 'START OF EXECUTION OF PROGRAM CBACT04C'.
182 PERFORM 0000-TCATBALF-OPEN.
183 PERFORM 0100-XREFFILE-OPEN.
184 PERFORM 0200-DISCGRP-OPEN.
185 PERFORM 0300-ACCTFILE-OPEN.
186 PERFORM 0400-TRANFILE-OPEN.
187
188 PERFORM UNTIL END-OF-FILE = 'Y'
189 IF END-OF-FILE = 'N'
190 PERFORM 1000-TCATBALF-GET-NEXT
191 IF END-OF-FILE = 'N'
192 ADD 1 TO WS-RECORD-COUNT
193 DISPLAY TRAN-CAT-BAL-RECORD
194 IF TRANCAT-ACCT-ID NOT= WS-LAST-ACCT-NUM
195 IF WS-FIRST-TIME NOT = 'Y'
196 PERFORM 1050-UPDATE-ACCOUNT
197 ELSE
198 MOVE 'N' TO WS-FIRST-TIME
199 END-IF
200 MOVE 0 TO WS-TOTAL-INT
201 MOVE TRANCAT-ACCT-ID TO WS-LAST-ACCT-NUM
202 MOVE TRANCAT-ACCT-ID TO FD-ACCT-ID
203 PERFORM 1100-GET-ACCT-DATA
204 MOVE TRANCAT-ACCT-ID TO FD-XREF-ACCT-ID
205 PERFORM 1110-GET-XREF-DATA
206 END-IF
207 * DISPLAY 'ACCT-GROUP-ID: ' ACCT-GROUP-ID
208 * DISPLAY 'TRANCAT-CD: ' TRANCAT-CD
209 * DISPLAY 'TRANCAT-TYPE-CD: ' TRANCAT-TYPE-CD
210 MOVE ACCT-GROUP-ID TO FD-DIS-ACCT-GROUP-ID
211 MOVE TRANCAT-CD TO FD-DIS-TRAN-CAT-CD
212 MOVE TRANCAT-TYPE-CD TO FD-DIS-TRAN-TYPE-CD
213 PERFORM 1200-GET-INTEREST-RATE
214 IF DIS-INT-RATE NOT = 0
215 PERFORM 1300-COMPUTE-INTEREST
216 PERFORM 1400-COMPUTE-FEES
217 END-IF
218 END-IF
219 ELSE
220 PERFORM 1050-UPDATE-ACCOUNT
221 END-IF
222 END-PERFORM.
223
224 PERFORM 9000-TCATBALF-CLOSE.
225 PERFORM 9100-XREFFILE-CLOSE.
226 PERFORM 9200-DISCGRP-CLOSE.
227 PERFORM 9300-ACCTFILE-CLOSE.
228 PERFORM 9400-TRANFILE-CLOSE.
229
230 DISPLAY 'END OF EXECUTION OF PROGRAM CBACT04C'.
231
232 GOBACK.
233 *---------------------------------------------------------------*
234 0000-TCATBALF-OPEN.
235 MOVE 8 TO APPL-RESULT.
236 OPEN INPUT TCATBAL-FILE
237 IF TCATBALF-STATUS = '00'
238 MOVE 0 TO APPL-RESULT
239 ELSE
240 MOVE 12 TO APPL-RESULT
241 END-IF
242 IF APPL-AOK
243 CONTINUE
244 ELSE
245 DISPLAY 'ERROR OPENING TRANSACTION CATEGORY BALANCE'
246 MOVE TCATBALF-STATUS TO IO-STATUS
247 PERFORM 9910-DISPLAY-IO-STATUS
248 PERFORM 9999-ABEND-PROGRAM
249 END-IF
250 EXIT.
251 *---------------------------------------------------------------*
252 0100-XREFFILE-OPEN.
253 MOVE 8 TO APPL-RESULT.
254 OPEN INPUT XREF-FILE
255 IF XREFFILE-STATUS = '00'
256 MOVE 0 TO APPL-RESULT
257 ELSE
258 MOVE 12 TO APPL-RESULT
259 END-IF
260 IF APPL-AOK
261 CONTINUE
262 ELSE
263 DISPLAY 'ERROR OPENING CROSS REF FILE' XREFFILE-STATUS
264 MOVE XREFFILE-STATUS TO IO-STATUS
265 PERFORM 9910-DISPLAY-IO-STATUS
266 PERFORM 9999-ABEND-PROGRAM
267 END-IF
268 EXIT.
269 *---------------------------------------------------------------*
270 0200-DISCGRP-OPEN.
271 MOVE 8 TO APPL-RESULT.
272 OPEN INPUT DISCGRP-FILE
273 IF DISCGRP-STATUS = '00'
274 MOVE 0 TO APPL-RESULT
275 ELSE
276 MOVE 12 TO APPL-RESULT
277 END-IF
278 IF APPL-AOK
279 CONTINUE
280 ELSE
281 DISPLAY 'ERROR OPENING DALY REJECTS FILE'
282 MOVE DISCGRP-STATUS TO IO-STATUS
283 PERFORM 9910-DISPLAY-IO-STATUS
284 PERFORM 9999-ABEND-PROGRAM
285 END-IF
286 EXIT.
287
288 *---------------------------------------------------------------*
289 0300-ACCTFILE-OPEN.
290 MOVE 8 TO APPL-RESULT.
291 OPEN I-O ACCOUNT-FILE
292 IF ACCTFILE-STATUS = '00'
293 MOVE 0 TO APPL-RESULT
294 ELSE
295 MOVE 12 TO APPL-RESULT
296 END-IF
297 IF APPL-AOK
298 CONTINUE
299 ELSE
300 DISPLAY 'ERROR OPENING ACCOUNT MASTER FILE'
301 MOVE ACCTFILE-STATUS TO IO-STATUS
302 PERFORM 9910-DISPLAY-IO-STATUS
303 PERFORM 9999-ABEND-PROGRAM
304 END-IF
305 EXIT.
306 *---------------------------------------------------------------*
307 0400-TRANFILE-OPEN.
308 MOVE 8 TO APPL-RESULT.
309 OPEN OUTPUT TRANSACT-FILE
310 IF TRANFILE-STATUS = '00'
311 MOVE 0 TO APPL-RESULT
312 ELSE
313 MOVE 12 TO APPL-RESULT
314 END-IF
315 IF APPL-AOK
316 CONTINUE
317 ELSE
318 DISPLAY 'ERROR OPENING TRANSACTION FILE'
319 MOVE TRANFILE-STATUS TO IO-STATUS
320 PERFORM 9910-DISPLAY-IO-STATUS
321 PERFORM 9999-ABEND-PROGRAM
322 END-IF
323 EXIT.
324 *---------------------------------------------------------------*
325 1000-TCATBALF-GET-NEXT.
326 READ TCATBAL-FILE INTO TRAN-CAT-BAL-RECORD.
327 IF TCATBALF-STATUS = '00'
328 MOVE 0 TO APPL-RESULT
329 ELSE
330 IF TCATBALF-STATUS = '10'
331 MOVE 16 TO APPL-RESULT
332 ELSE
333 MOVE 12 TO APPL-RESULT
334 END-IF
335 END-IF
336 IF APPL-AOK
337 CONTINUE
338 ELSE
339 IF APPL-EOF
340 MOVE 'Y' TO END-OF-FILE
341 ELSE
342 DISPLAY 'ERROR READING TRANSACTION CATEGORY FILE'
343 MOVE TCATBALF-STATUS TO IO-STATUS
344 PERFORM 9910-DISPLAY-IO-STATUS
345 PERFORM 9999-ABEND-PROGRAM
346 END-IF
347 END-IF
348 EXIT.
349 *---------------------------------------------------------------*
350 1050-UPDATE-ACCOUNT.
351 * Update the balances in account record to reflect posted trans.
352 ADD WS-TOTAL-INT TO ACCT-CURR-BAL
353 MOVE 0 TO ACCT-CURR-CYC-CREDIT
354 MOVE 0 TO ACCT-CURR-CYC-DEBIT
355
356 REWRITE FD-ACCTFILE-REC FROM ACCOUNT-RECORD
357 IF ACCTFILE-STATUS = '00'
358 MOVE 0 TO APPL-RESULT
359 ELSE
360 MOVE 12 TO APPL-RESULT
361 END-IF
362 IF APPL-AOK
363 CONTINUE
364 ELSE
365 DISPLAY 'ERROR RE-WRITING ACCOUNT FILE'
366 MOVE ACCTFILE-STATUS TO IO-STATUS
367 PERFORM 9910-DISPLAY-IO-STATUS
368 PERFORM 9999-ABEND-PROGRAM
369 END-IF
370 EXIT.
371 *---------------------------------------------------------------*
372 1100-GET-ACCT-DATA.
373 READ ACCOUNT-FILE INTO ACCOUNT-RECORD
374 INVALID KEY
375 DISPLAY 'ACCOUNT NOT FOUND: ' FD-ACCT-ID
376 END-READ
377
378 IF ACCTFILE-STATUS = '00'
379 MOVE 0 TO APPL-RESULT
380 ELSE
381 MOVE 12 TO APPL-RESULT
382 END-IF
383 IF APPL-AOK
384 CONTINUE
385 ELSE
386 DISPLAY 'ERROR READING ACCOUNT FILE'
387 MOVE ACCTFILE-STATUS TO IO-STATUS
388 PERFORM 9910-DISPLAY-IO-STATUS
389 PERFORM 9999-ABEND-PROGRAM
390 END-IF
391 EXIT.
392 *---------------------------------------------------------------*
393 1110-GET-XREF-DATA.
394 READ XREF-FILE INTO CARD-XREF-RECORD
395 KEY IS FD-XREF-ACCT-ID
396 INVALID KEY
397 DISPLAY 'ACCOUNT NOT FOUND: ' FD-XREF-ACCT-ID
398 END-READ
399
400 IF XREFFILE-STATUS = '00'
401 MOVE 0 TO APPL-RESULT
402 ELSE
403 MOVE 12 TO APPL-RESULT
404 END-IF
405 IF APPL-AOK
406 CONTINUE
407 ELSE
408 DISPLAY 'ERROR READING XREF FILE'
409 MOVE XREFFILE-STATUS TO IO-STATUS
410 PERFORM 9910-DISPLAY-IO-STATUS
411 PERFORM 9999-ABEND-PROGRAM
412 END-IF
413 EXIT.
414 *---------------------------------------------------------------*
415 1200-GET-INTEREST-RATE.
416 READ DISCGRP-FILE INTO DIS-GROUP-RECORD
417 INVALID KEY
418 DISPLAY 'DISCLOSURE GROUP RECORD MISSING'
419 DISPLAY 'TRY WITH DEFAULT GROUP CODE'
420 END-READ.
421
422 IF DISCGRP-STATUS = '00' OR '23'
423 MOVE 0 TO APPL-RESULT
424 ELSE
425 MOVE 12 TO APPL-RESULT
426 END-IF
427
428 IF APPL-AOK
429 CONTINUE
430 ELSE
431 DISPLAY 'ERROR READING DISCLOSURE GROUP FILE'
432 MOVE DISCGRP-STATUS TO IO-STATUS
433 PERFORM 9910-DISPLAY-IO-STATUS
434 PERFORM 9999-ABEND-PROGRAM
435 END-IF
436 IF DISCGRP-STATUS = '23'
437 MOVE 'DEFAULT' TO FD-DIS-ACCT-GROUP-ID
438 PERFORM 1200-A-GET-DEFAULT-INT-RATE
439 END-IF
440 EXIT.
441
442 *---------------------------------------------------------------*
443 1200-A-GET-DEFAULT-INT-RATE.
444 READ DISCGRP-FILE INTO DIS-GROUP-RECORD
445
446 IF DISCGRP-STATUS = '00'
447 MOVE 0 TO APPL-RESULT
448 ELSE
449 MOVE 12 TO APPL-RESULT
450 END-IF
451
452 IF APPL-AOK
453 CONTINUE
454 ELSE
455 DISPLAY 'ERROR READING DEFAULT DISCLOSURE GROUP'
456 MOVE DISCGRP-STATUS TO IO-STATUS
457 PERFORM 9910-DISPLAY-IO-STATUS
458 PERFORM 9999-ABEND-PROGRAM
459 END-IF
460 EXIT.
461 *---------------------------------------------------------------*
462 1300-COMPUTE-INTEREST.
463
464 COMPUTE WS-MONTHLY-INT
465 = ( TRAN-CAT-BAL * DIS-INT-RATE) / 1200
466
467 ADD WS-MONTHLY-INT TO WS-TOTAL-INT
468 PERFORM 1300-B-WRITE-TX.
469
470 EXIT.
471
472 *---------------------------------------------------------------*
473 1300-B-WRITE-TX.
474 ADD 1 TO WS-TRANID-SUFFIX
475
476 STRING PARM-DATE,
477 WS-TRANID-SUFFIX
478 DELIMITED BY SIZE
479 INTO TRAN-ID
480 END-STRING.
481
482 MOVE '01' TO TRAN-TYPE-CD
483 MOVE '05' TO TRAN-CAT-CD
484 MOVE 'System' TO TRAN-SOURCE
485 STRING 'Int. for a/c ' ,
486 ACCT-ID
487 DELIMITED BY SIZE
488 INTO TRAN-DESC
489 END-STRING
490 MOVE WS-MONTHLY-INT TO TRAN-AMT
491 MOVE 0 TO TRAN-MERCHANT-ID
492 MOVE SPACES TO TRAN-MERCHANT-NAME
493 MOVE SPACES TO TRAN-MERCHANT-CITY
494 MOVE SPACES TO TRAN-MERCHANT-ZIP
495 MOVE XREF-CARD-NUM TO TRAN-CARD-NUM
496 PERFORM Z-GET-DB2-FORMAT-TIMESTAMP
497 MOVE DB2-FORMAT-TS TO TRAN-ORIG-TS
498 MOVE DB2-FORMAT-TS TO TRAN-PROC-TS
499
500 WRITE FD-TRANFILE-REC FROM TRAN-RECORD
501 IF TRANFILE-STATUS = '00'
502 MOVE 0 TO APPL-RESULT
503 ELSE
504 MOVE 12 TO APPL-RESULT
505 END-IF
506
507 IF APPL-AOK
508 CONTINUE
509 ELSE
510 DISPLAY 'ERROR WRITING TRANSACTION RECORD'
511 MOVE TRANFILE-STATUS TO IO-STATUS
512 PERFORM 9910-DISPLAY-IO-STATUS
513 PERFORM 9999-ABEND-PROGRAM
514 END-IF
515 EXIT.
516
517 *---------------------------------------------------------------*
518 1400-COMPUTE-FEES.
519 * To be implemented
520 EXIT.
521 *---------------------------------------------------------------*
522 9000-TCATBALF-CLOSE.
523 MOVE 8 TO APPL-RESULT.
524 CLOSE TCATBAL-FILE
525 IF TCATBALF-STATUS = '00'
526 MOVE 0 TO APPL-RESULT
527 ELSE
528 MOVE 12 TO APPL-RESULT
529 END-IF
530 IF APPL-AOK
531 CONTINUE
532 ELSE
533 DISPLAY 'ERROR CLOSING TRANSACTION BALANCE FILE'
534 MOVE TCATBALF-STATUS TO IO-STATUS
535 PERFORM 9910-DISPLAY-IO-STATUS
536 PERFORM 9999-ABEND-PROGRAM
537 END-IF
538 EXIT.
539
540 *---------------------------------------------------------------*
541 9100-XREFFILE-CLOSE.
542 MOVE 8 TO APPL-RESULT.
543 CLOSE XREF-FILE
544 IF XREFFILE-STATUS = '00'
545 MOVE 0 TO APPL-RESULT
546 ELSE
547 MOVE 12 TO APPL-RESULT
548 END-IF
549 IF APPL-AOK
550 CONTINUE
551 ELSE
552 DISPLAY 'ERROR CLOSING CROSS REF FILE'
553 MOVE XREFFILE-STATUS TO IO-STATUS
554 PERFORM 9910-DISPLAY-IO-STATUS
555 PERFORM 9999-ABEND-PROGRAM
556 END-IF
557 EXIT.
558 *---------------------------------------------------------------*
559 9200-DISCGRP-CLOSE.
560 MOVE 8 TO APPL-RESULT.
561 CLOSE DISCGRP-FILE
562 IF DISCGRP-STATUS = '00'
563 MOVE 0 TO APPL-RESULT
564 ELSE
565 MOVE 12 TO APPL-RESULT
566 END-IF
567 IF APPL-AOK
568 CONTINUE
569 ELSE
570 DISPLAY 'ERROR CLOSING DISCLOSURE GROUP FILE'
571 MOVE DISCGRP-STATUS TO IO-STATUS
572 PERFORM 9910-DISPLAY-IO-STATUS
573 PERFORM 9999-ABEND-PROGRAM
574 END-IF
575 EXIT.
576 *---------------------------------------------------------------*
577 9300-ACCTFILE-CLOSE.
578 MOVE 8 TO APPL-RESULT.
579 CLOSE ACCOUNT-FILE
580 IF ACCTFILE-STATUS = '00'
581 MOVE 0 TO APPL-RESULT
582 ELSE
583 MOVE 12 TO APPL-RESULT
584 END-IF
585 IF APPL-AOK
586 CONTINUE
587 ELSE
588 DISPLAY 'ERROR CLOSING ACCOUNT FILE'
589 MOVE ACCTFILE-STATUS TO IO-STATUS
590 PERFORM 9910-DISPLAY-IO-STATUS
591 PERFORM 9999-ABEND-PROGRAM
592 END-IF
593 EXIT.
594
595 9400-TRANFILE-CLOSE.
596 MOVE 8 TO APPL-RESULT.
597 CLOSE TRANSACT-FILE
598 IF TRANFILE-STATUS = '00'
599 MOVE 0 TO APPL-RESULT
600 ELSE
601 MOVE 12 TO APPL-RESULT
602 END-IF
603 IF APPL-AOK
604 CONTINUE
605 ELSE
606 DISPLAY 'ERROR CLOSING TRANSACTION FILE'
607 MOVE TRANFILE-STATUS TO IO-STATUS
608 PERFORM 9910-DISPLAY-IO-STATUS
609 PERFORM 9999-ABEND-PROGRAM
610 END-IF
611 EXIT.
612
613 Z-GET-DB2-FORMAT-TIMESTAMP.
614 MOVE FUNCTION CURRENT-DATE TO COBOL-TS
615 MOVE COB-YYYY TO DB2-YYYY
616 MOVE COB-MM TO DB2-MM
617 MOVE COB-DD TO DB2-DD
618 MOVE COB-HH TO DB2-HH
619 MOVE COB-MIN TO DB2-MIN
620 MOVE COB-SS TO DB2-SS
621 MOVE COB-MIL TO DB2-MIL
622 MOVE '0000' TO DB2-REST
623 MOVE '-' TO DB2-STREEP-1 DB2-STREEP-2 DB2-STREEP-3
624 MOVE '.' TO DB2-DOT-1 DB2-DOT-2 DB2-DOT-3
625 * DISPLAY 'DB2-TIMESTAMP = ' DB2-FORMAT-TS
626 EXIT.
627
628 9999-ABEND-PROGRAM.
629 DISPLAY 'ABENDING PROGRAM'
630 MOVE 0 TO TIMING
631 MOVE 999 TO ABCODE
632 CALL 'CEE3ABD' USING ABCODE, TIMING.
633
634 *****************************************************************
635 9910-DISPLAY-IO-STATUS.
636 IF IO-STATUS NOT NUMERIC
637 OR IO-STAT1 = '9'
638 MOVE IO-STAT1 TO IO-STATUS-04(1:1)
639 MOVE 0 TO TWO-BYTES-BINARY
640 MOVE IO-STAT2 TO TWO-BYTES-RIGHT
641 MOVE TWO-BYTES-BINARY TO IO-STATUS-0403
642 DISPLAY 'FILE STATUS IS: NNNN' IO-STATUS-04
643 ELSE
644 MOVE '0000' TO IO-STATUS-04
645 MOVE IO-STATUS TO IO-STATUS-04(3:2)
646 DISPLAY 'FILE STATUS IS: NNNN' IO-STATUS-04
647 END-IF
648 EXIT.
649
650 *
651 * Ver: CardDemo_v2.0-25-gdb72e6b-235 Date: 2025-04-29 11:01:28 CDT
652 *