MFmainframe-rea
WS carddemo · 26f629ef

cobol · 494 lines · sha256 55c2aebd59528aa4 · guides at columns 7 and 72app/cbl/CBTRN01C.cbl

1 ******************************************************************
2 * Program : CBTRN01C.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. CBTRN01C.
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 CUSTOMER-FILE ASSIGN TO CUSTFILE
35 ORGANIZATION IS INDEXED
36 ACCESS MODE IS RANDOM
37 RECORD KEY IS FD-CUST-ID
38 FILE STATUS IS CUSTFILE-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 CARD-FILE ASSIGN TO CARDFILE
47 ORGANIZATION IS INDEXED
48 ACCESS MODE IS RANDOM
49 RECORD KEY IS FD-CARD-NUM
50 FILE STATUS IS CARDFILE-STATUS.
51
52 SELECT ACCOUNT-FILE ASSIGN TO ACCTFILE
53 ORGANIZATION IS INDEXED
54 ACCESS MODE IS RANDOM
55 RECORD KEY IS FD-ACCT-ID
56 FILE STATUS IS ACCTFILE-STATUS.
57
58 SELECT TRANSACT-FILE ASSIGN TO TRANFILE
59 ORGANIZATION IS INDEXED
60 ACCESS MODE IS RANDOM
61 RECORD KEY IS FD-TRANS-ID
62 FILE STATUS IS TRANFILE-STATUS.
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 CUSTOMER-FILE.
72 01 FD-CUSTFILE-REC.
73 05 FD-CUST-ID PIC 9(09).
74 05 FD-CUST-DATA PIC X(491).
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 CARD-FILE.
82 01 FD-CARDFILE-REC.
83 05 FD-CARD-NUM PIC X(16).
84 05 FD-CARD-DATA PIC X(134).
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 TRANSACT-FILE.
92 01 FD-TRANFILE-REC.
93 05 FD-TRANS-ID PIC X(16).
94 05 FD-ACCT-DATA PIC X(334).
95
96 WORKING-STORAGE SECTION.
97
98 *****************************************************************
99 COPY CVTRA06Y.
100 01 DALYTRAN-STATUS.
101 05 DALYTRAN-STAT1 PIC X.
102 05 DALYTRAN-STAT2 PIC X.
103
104 COPY CVCUS01Y.
105 01 CUSTFILE-STATUS.
106 05 CUSTFILE-STAT1 PIC X.
107 05 CUSTFILE-STAT2 PIC X.
108
109 COPY CVACT03Y.
110 01 XREFFILE-STATUS.
111 05 XREFFILE-STAT1 PIC X.
112 05 XREFFILE-STAT2 PIC X.
113
114 COPY CVACT02Y.
115 01 CARDFILE-STATUS.
116 05 CARDFILE-STAT1 PIC X.
117 05 CARDFILE-STAT2 PIC X.
118
119 COPY CVACT01Y.
120 01 ACCTFILE-STATUS.
121 05 ACCTFILE-STAT1 PIC X.
122 05 ACCTFILE-STAT2 PIC X.
123
124 COPY CVTRA05Y.
125 01 TRANFILE-STATUS.
126 05 TRANFILE-STAT1 PIC X.
127 05 TRANFILE-STAT2 PIC X.
128
129 01 IO-STATUS.
130 05 IO-STAT1 PIC X.
131 05 IO-STAT2 PIC X.
132
133 01 TWO-BYTES-BINARY PIC 9(4) BINARY.
134 01 TWO-BYTES-ALPHA REDEFINES TWO-BYTES-BINARY.
135 05 TWO-BYTES-LEFT PIC X.
136 05 TWO-BYTES-RIGHT PIC X.
137
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-DAILY-TRANS-FILE PIC X(01) VALUE 'N'.
147 01 ABCODE PIC S9(9) BINARY.
148 01 TIMING PIC S9(9) BINARY.
149 01 WS-MISC-VARIABLES.
150 05 WS-XREF-READ-STATUS PIC 9(04).
151 05 WS-ACCT-READ-STATUS PIC 9(04).
152
153 *****************************************************************
154 PROCEDURE DIVISION.
155 MAIN-PARA.
156 DISPLAY 'START OF EXECUTION OF PROGRAM CBTRN01C'.
157 PERFORM 0000-DALYTRAN-OPEN.
158 PERFORM 0100-CUSTFILE-OPEN.
159 PERFORM 0200-XREFFILE-OPEN.
160 PERFORM 0300-CARDFILE-OPEN.
161 PERFORM 0400-ACCTFILE-OPEN.
162 PERFORM 0500-TRANFILE-OPEN.
163
164 PERFORM UNTIL END-OF-DAILY-TRANS-FILE = 'Y'
165 IF END-OF-DAILY-TRANS-FILE = 'N'
166 PERFORM 1000-DALYTRAN-GET-NEXT
167 IF END-OF-DAILY-TRANS-FILE = 'N'
168 DISPLAY DALYTRAN-RECORD
169 END-IF
170 MOVE 0 TO WS-XREF-READ-STATUS
171 MOVE DALYTRAN-CARD-NUM TO XREF-CARD-NUM
172 PERFORM 2000-LOOKUP-XREF
173 IF WS-XREF-READ-STATUS = 0
174 MOVE 0 TO WS-ACCT-READ-STATUS
175 MOVE XREF-ACCT-ID TO ACCT-ID
176 PERFORM 3000-READ-ACCOUNT
177 IF WS-ACCT-READ-STATUS NOT = 0
178 DISPLAY 'ACCOUNT ' ACCT-ID ' NOT FOUND'
179 END-IF
180 ELSE
181 DISPLAY 'CARD NUMBER ' DALYTRAN-CARD-NUM
182 ' COULD NOT BE VERIFIED. SKIPPING TRANSACTION ID-'
183 DALYTRAN-ID
184 END-IF
185 END-IF
186 END-PERFORM.
187
188 PERFORM 9000-DALYTRAN-CLOSE.
189 PERFORM 9100-CUSTFILE-CLOSE.
190 PERFORM 9200-XREFFILE-CLOSE.
191 PERFORM 9300-CARDFILE-CLOSE.
192 PERFORM 9400-ACCTFILE-CLOSE.
193 PERFORM 9500-TRANFILE-CLOSE.
194
195 DISPLAY 'END OF EXECUTION OF PROGRAM CBTRN01C'.
196
197 GOBACK.
198
199 *****************************************************************
200 * READS FILE *
201 *****************************************************************
202 1000-DALYTRAN-GET-NEXT.
203 READ DALYTRAN-FILE INTO DALYTRAN-RECORD.
204 IF DALYTRAN-STATUS = '00'
205 MOVE 0 TO APPL-RESULT
206 ELSE
207 IF DALYTRAN-STATUS = '10'
208 MOVE 16 TO APPL-RESULT
209 ELSE
210 MOVE 12 TO APPL-RESULT
211 END-IF
212 END-IF
213 IF APPL-AOK
214 CONTINUE
215 ELSE
216 IF APPL-EOF
217 MOVE 'Y' TO END-OF-DAILY-TRANS-FILE
218 ELSE
219 DISPLAY 'ERROR READING DAILY TRANSACTION FILE'
220 MOVE DALYTRAN-STATUS TO IO-STATUS
221 PERFORM Z-DISPLAY-IO-STATUS
222 PERFORM Z-ABEND-PROGRAM
223 END-IF
224 END-IF
225 EXIT.
226 *---------------------------------------------------------------*
227 2000-LOOKUP-XREF.
228 MOVE XREF-CARD-NUM TO FD-XREF-CARD-NUM
229 READ XREF-FILE RECORD INTO CARD-XREF-RECORD
230 KEY IS FD-XREF-CARD-NUM
231 INVALID KEY
232 DISPLAY 'INVALID CARD NUMBER FOR XREF'
233 MOVE 4 TO WS-XREF-READ-STATUS
234 NOT INVALID KEY
235 DISPLAY 'SUCCESSFUL READ OF XREF'
236 DISPLAY 'CARD NUMBER: ' XREF-CARD-NUM
237 DISPLAY 'ACCOUNT ID : ' XREF-ACCT-ID
238 DISPLAY 'CUSTOMER ID: ' XREF-CUST-ID
239 END-READ.
240 *---------------------------------------------------------------*
241 3000-READ-ACCOUNT.
242 MOVE ACCT-ID TO FD-ACCT-ID
243 READ ACCOUNT-FILE RECORD INTO ACCOUNT-RECORD
244 KEY IS FD-ACCT-ID
245 INVALID KEY
246 DISPLAY 'INVALID ACCOUNT NUMBER FOUND'
247 MOVE 4 TO WS-ACCT-READ-STATUS
248 NOT INVALID KEY
249 DISPLAY 'SUCCESSFUL READ OF ACCOUNT FILE'
250 END-READ.
251 *---------------------------------------------------------------*
252 0000-DALYTRAN-OPEN.
253 MOVE 8 TO APPL-RESULT.
254 OPEN INPUT DALYTRAN-FILE
255 IF DALYTRAN-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 DAILY TRANSACTION FILE'
264 MOVE DALYTRAN-STATUS TO IO-STATUS
265 PERFORM Z-DISPLAY-IO-STATUS
266 PERFORM Z-ABEND-PROGRAM
267 END-IF
268 EXIT.
269
270 *---------------------------------------------------------------*
271 0100-CUSTFILE-OPEN.
272 MOVE 8 TO APPL-RESULT.
273 OPEN INPUT CUSTOMER-FILE
274 IF CUSTFILE-STATUS = '00'
275 MOVE 0 TO APPL-RESULT
276 ELSE
277 MOVE 12 TO APPL-RESULT
278 END-IF
279 IF APPL-AOK
280 CONTINUE
281 ELSE
282 DISPLAY 'ERROR OPENING CUSTOMER FILE'
283 MOVE CUSTFILE-STATUS TO IO-STATUS
284 PERFORM Z-DISPLAY-IO-STATUS
285 PERFORM Z-ABEND-PROGRAM
286 END-IF
287 EXIT.
288 *---------------------------------------------------------------*
289 0200-XREFFILE-OPEN.
290 MOVE 8 TO APPL-RESULT.
291 OPEN INPUT XREF-FILE
292 IF XREFFILE-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 CROSS REF FILE'
301 MOVE XREFFILE-STATUS TO IO-STATUS
302 PERFORM Z-DISPLAY-IO-STATUS
303 PERFORM Z-ABEND-PROGRAM
304 END-IF
305 EXIT.
306 *---------------------------------------------------------------*
307 0300-CARDFILE-OPEN.
308 MOVE 8 TO APPL-RESULT.
309 OPEN INPUT CARD-FILE
310 IF CARDFILE-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 CARD FILE'
319 MOVE CARDFILE-STATUS TO IO-STATUS
320 PERFORM Z-DISPLAY-IO-STATUS
321 PERFORM Z-ABEND-PROGRAM
322 END-IF
323 EXIT.
324 *---------------------------------------------------------------*
325 0400-ACCTFILE-OPEN.
326 MOVE 8 TO APPL-RESULT.
327 OPEN INPUT ACCOUNT-FILE
328 IF ACCTFILE-STATUS = '00'
329 MOVE 0 TO APPL-RESULT
330 ELSE
331 MOVE 12 TO APPL-RESULT
332 END-IF
333 IF APPL-AOK
334 CONTINUE
335 ELSE
336 DISPLAY 'ERROR OPENING ACCOUNT FILE'
337 MOVE ACCTFILE-STATUS TO IO-STATUS
338 PERFORM Z-DISPLAY-IO-STATUS
339 PERFORM Z-ABEND-PROGRAM
340 END-IF
341 EXIT.
342 *---------------------------------------------------------------*
343 0500-TRANFILE-OPEN.
344 MOVE 8 TO APPL-RESULT.
345 OPEN INPUT TRANSACT-FILE
346 IF TRANFILE-STATUS = '00'
347 MOVE 0 TO APPL-RESULT
348 ELSE
349 MOVE 12 TO APPL-RESULT
350 END-IF
351 IF APPL-AOK
352 CONTINUE
353 ELSE
354 DISPLAY 'ERROR OPENING TRANSACTION FILE'
355 MOVE TRANFILE-STATUS TO IO-STATUS
356 PERFORM Z-DISPLAY-IO-STATUS
357 PERFORM Z-ABEND-PROGRAM
358 END-IF
359 EXIT.
360 *---------------------------------------------------------------*
361 9000-DALYTRAN-CLOSE.
362 ADD 8 TO ZERO GIVING APPL-RESULT.
363 CLOSE DALYTRAN-FILE
364 IF DALYTRAN-STATUS = '00'
365 MOVE 0 TO APPL-RESULT
366 ELSE
367 MOVE 12 TO APPL-RESULT
368 END-IF
369 IF APPL-AOK
370 CONTINUE
371 ELSE
372 DISPLAY 'ERROR CLOSING CUSTOMER FILE'
373 MOVE CUSTFILE-STATUS TO IO-STATUS
374 PERFORM Z-DISPLAY-IO-STATUS
375 PERFORM Z-ABEND-PROGRAM
376 END-IF
377 EXIT.
378 *---------------------------------------------------------------*
379 9100-CUSTFILE-CLOSE.
380 ADD 8 TO ZERO GIVING APPL-RESULT.
381 CLOSE CUSTOMER-FILE
382 IF CUSTFILE-STATUS = '00'
383 MOVE 0 TO APPL-RESULT
384 ELSE
385 MOVE 12 TO APPL-RESULT
386 END-IF
387 IF APPL-AOK
388 CONTINUE
389 ELSE
390 DISPLAY 'ERROR CLOSING CUSTOMER FILE'
391 MOVE CUSTFILE-STATUS TO IO-STATUS
392 PERFORM Z-DISPLAY-IO-STATUS
393 PERFORM Z-ABEND-PROGRAM
394 END-IF
395 EXIT.
396 *---------------------------------------------------------------*
397 9200-XREFFILE-CLOSE.
398 ADD 8 TO ZERO GIVING APPL-RESULT.
399 CLOSE XREF-FILE
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 CLOSING CROSS REF FILE'
409 MOVE XREFFILE-STATUS TO IO-STATUS
410 PERFORM Z-DISPLAY-IO-STATUS
411 PERFORM Z-ABEND-PROGRAM
412 END-IF
413 EXIT.
414 *---------------------------------------------------------------*
415 9300-CARDFILE-CLOSE.
416 ADD 8 TO ZERO GIVING APPL-RESULT.
417 CLOSE CARD-FILE
418 IF CARDFILE-STATUS = '00'
419 MOVE 0 TO APPL-RESULT
420 ELSE
421 MOVE 12 TO APPL-RESULT
422 END-IF
423 IF APPL-AOK
424 CONTINUE
425 ELSE
426 DISPLAY 'ERROR CLOSING CARD FILE'
427 MOVE CARDFILE-STATUS TO IO-STATUS
428 PERFORM Z-DISPLAY-IO-STATUS
429 PERFORM Z-ABEND-PROGRAM
430 END-IF
431 EXIT.
432 *---------------------------------------------------------------*
433 9400-ACCTFILE-CLOSE.
434 ADD 8 TO ZERO GIVING APPL-RESULT.
435 CLOSE ACCOUNT-FILE
436 IF ACCTFILE-STATUS = '00'
437 MOVE 0 TO APPL-RESULT
438 ELSE
439 MOVE 12 TO APPL-RESULT
440 END-IF
441 IF APPL-AOK
442 CONTINUE
443 ELSE
444 DISPLAY 'ERROR CLOSING ACCOUNT FILE'
445 MOVE ACCTFILE-STATUS TO IO-STATUS
446 PERFORM Z-DISPLAY-IO-STATUS
447 PERFORM Z-ABEND-PROGRAM
448 END-IF
449 EXIT.
450 *---------------------------------------------------------------*
451 9500-TRANFILE-CLOSE.
452 ADD 8 TO ZERO GIVING APPL-RESULT.
453 CLOSE TRANSACT-FILE
454 IF TRANFILE-STATUS = '00'
455 MOVE 0 TO APPL-RESULT
456 ELSE
457 MOVE 12 TO APPL-RESULT
458 END-IF
459 IF APPL-AOK
460 CONTINUE
461 ELSE
462 DISPLAY 'ERROR CLOSING TRANSACTION FILE'
463 MOVE TRANFILE-STATUS TO IO-STATUS
464 PERFORM Z-DISPLAY-IO-STATUS
465 PERFORM Z-ABEND-PROGRAM
466 END-IF
467 EXIT.
468
469 Z-ABEND-PROGRAM.
470 DISPLAY 'ABENDING PROGRAM'
471 MOVE 0 TO TIMING
472 MOVE 999 TO ABCODE
473 CALL 'CEE3ABD' USING ABCODE, TIMING.
474
475 *****************************************************************
476 Z-DISPLAY-IO-STATUS.
477 IF IO-STATUS NOT NUMERIC
478 OR IO-STAT1 = '9'
479 MOVE IO-STAT1 TO IO-STATUS-04(1:1)
480 MOVE 0 TO TWO-BYTES-BINARY
481 MOVE IO-STAT2 TO TWO-BYTES-RIGHT
482 MOVE TWO-BYTES-BINARY TO IO-STATUS-0403
483 DISPLAY 'FILE STATUS IS: NNNN' IO-STATUS-04
484 ELSE
485 MOVE '0000' TO IO-STATUS-04
486 MOVE IO-STATUS TO IO-STATUS-04(3:2)
487 DISPLAY 'FILE STATUS IS: NNNN' IO-STATUS-04
488 END-IF
489 EXIT.
490
491
492 *
493 * Ver: CardDemo_v2.0-25-gdb72e6b-235 Date: 2025-04-29 11:01:28 CDT
494 *