MFmainframe-rea
WS carddemo · 26f629ef

cobol · 582 lines · sha256 598e3c9055b96b79 · guides at columns 7 and 72app/cbl/CBEXPORT.cbl

1 IDENTIFICATION DIVISION.
2 PROGRAM-ID. CBEXPORT.
3 AUTHOR. CARDDEMO TEAM.
4 ******************************************************************
5 * Program : CBEXPORT.CBL
6 * Application : CardDemo
7 * Type : BATCH COBOL Program
8 * Function : Export Customer Data for Branch Migration
9 * Reads normalized CardDemo files and creates
10 * multi-record export file for data migration
11 ******************************************************************
12 * Copyright Amazon.com, Inc. or its affiliates.
13 * All Rights Reserved.
14 *
15 * Licensed under the Apache License, Version 2.0 (the "License").
16 * You may not use this file except in compliance with the License.
17 * You may obtain a copy of the License at
18 *
19 * http://www.apache.org/licenses/LICENSE-2.0
20 *
21 * Unless required by applicable law or agreed to in writing,
22 * software distributed under the License is distributed on an
23 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
24 * either express or implied. See the License for the specific
25 * language governing permissions and limitations under the License
26 ******************************************************************
27 * Business Use Case: Branch Migration Export
28 * - Read complete customer profiles from CardDemo files
29 * - Create multi-record export file with different record types
30 * - Generate export statistics and processing reports
31 ******************************************************************
32 ENVIRONMENT DIVISION.
33 INPUT-OUTPUT SECTION.
34 FILE-CONTROL.
35 SELECT CUSTOMER-INPUT ASSIGN TO CUSTFILE
36 ORGANIZATION IS INDEXED
37 ACCESS MODE IS SEQUENTIAL
38 RECORD KEY IS CUST-ID
39 FILE STATUS IS WS-CUSTOMER-STATUS.
40
41 SELECT ACCOUNT-INPUT ASSIGN TO ACCTFILE
42 ORGANIZATION IS INDEXED
43 ACCESS MODE IS SEQUENTIAL
44 RECORD KEY IS ACCT-ID
45 FILE STATUS IS WS-ACCOUNT-STATUS.
46
47 SELECT XREF-INPUT ASSIGN TO XREFFILE
48 ORGANIZATION IS INDEXED
49 ACCESS MODE IS SEQUENTIAL
50 RECORD KEY IS XREF-CARD-NUM
51 FILE STATUS IS WS-XREF-STATUS.
52
53 SELECT TRANSACTION-INPUT ASSIGN TO TRANSACT
54 ORGANIZATION IS INDEXED
55 ACCESS MODE IS SEQUENTIAL
56 RECORD KEY IS TRAN-ID
57 FILE STATUS IS WS-TRANSACTION-STATUS.
58
59 SELECT CARD-INPUT ASSIGN TO CARDFILE
60 ORGANIZATION IS INDEXED
61 ACCESS MODE IS SEQUENTIAL
62 RECORD KEY IS CARD-NUM
63 FILE STATUS IS WS-CARD-STATUS.
64
65 SELECT EXPORT-OUTPUT ASSIGN TO EXPFILE
66 ORGANIZATION IS INDEXED
67 ACCESS MODE IS SEQUENTIAL
68 RECORD KEY IS EXPORT-SEQUENCE-NUM
69 FILE STATUS IS WS-EXPORT-STATUS.
70
71 DATA DIVISION.
72 FILE SECTION.
73
74 FD CUSTOMER-INPUT.
75 COPY CVCUS01Y.
76
77 FD ACCOUNT-INPUT.
78 COPY CVACT01Y.
79
80 FD XREF-INPUT.
81 COPY CVACT03Y.
82
83 FD TRANSACTION-INPUT.
84 COPY CVTRA05Y.
85
86 FD CARD-INPUT.
87 COPY CVACT02Y.
88
89 FD EXPORT-OUTPUT
90 RECORDING MODE IS F
91 RECORD CONTAINS 500 CHARACTERS.
92 01 EXPORT-OUTPUT-RECORD PIC X(500).
93
94 WORKING-STORAGE SECTION.
95
96 COPY CVEXPORT.
97
98 * File Status Variables
99 01 WS-FILE-STATUS-AREA.
100 05 WS-CUSTOMER-STATUS PIC X(02).
101 88 WS-CUSTOMER-EOF VALUE '10'.
102 88 WS-CUSTOMER-OK VALUE '00'.
103 05 WS-ACCOUNT-STATUS PIC X(02).
104 88 WS-ACCOUNT-EOF VALUE '10'.
105 88 WS-ACCOUNT-OK VALUE '00'.
106 05 WS-XREF-STATUS PIC X(02).
107 88 WS-XREF-EOF VALUE '10'.
108 88 WS-XREF-OK VALUE '00'.
109 05 WS-TRANSACTION-STATUS PIC X(02).
110 88 WS-TRANSACTION-EOF VALUE '10'.
111 88 WS-TRANSACTION-OK VALUE '00'.
112 05 WS-CARD-STATUS PIC X(02).
113 88 WS-CARD-EOF VALUE '10'.
114 88 WS-CARD-OK VALUE '00'.
115 05 WS-EXPORT-STATUS PIC X(02).
116 88 WS-EXPORT-OK VALUE '00'.
117
118 * Export Control Variables
119 01 WS-EXPORT-CONTROL.
120 05 WS-EXPORT-DATE PIC X(10).
121 05 WS-EXPORT-TIME PIC X(08).
122 05 WS-FORMATTED-TIMESTAMP PIC X(26).
123 05 WS-SEQUENCE-COUNTER PIC 9(09) VALUE 0.
124
125 * Timestamp Variables
126 01 WS-TIMESTAMP-FIELDS.
127 05 WS-CURRENT-DATE.
128 10 WS-CURR-YEAR PIC 9(04).
129 10 WS-CURR-MONTH PIC 9(02).
130 10 WS-CURR-DAY PIC 9(02).
131 05 WS-CURRENT-TIME.
132 10 WS-CURR-HOUR PIC 9(02).
133 10 WS-CURR-MINUTE PIC 9(02).
134 10 WS-CURR-SECOND PIC 9(02).
135 10 WS-CURR-HUNDREDTH PIC 9(02).
136
137 * Statistics Counters
138 01 WS-EXPORT-STATISTICS.
139 05 WS-CUSTOMER-RECORDS-EXPORTED PIC 9(09) VALUE 0.
140 05 WS-ACCOUNT-RECORDS-EXPORTED PIC 9(09) VALUE 0.
141 05 WS-XREF-RECORDS-EXPORTED PIC 9(09) VALUE 0.
142 05 WS-TRAN-RECORDS-EXPORTED PIC 9(09) VALUE 0.
143 05 WS-CARD-RECORDS-EXPORTED PIC 9(09) VALUE 0.
144 05 WS-TOTAL-RECORDS-EXPORTED PIC 9(09) VALUE 0.
145
146 PROCEDURE DIVISION.
147
148 *****************************************************************
149 0000-MAIN-PROCESSING.
150 *****************************************************************
151 PERFORM 1000-INITIALIZE
152 PERFORM 2000-EXPORT-CUSTOMERS
153 PERFORM 3000-EXPORT-ACCOUNTS
154 PERFORM 4000-EXPORT-XREFS
155 PERFORM 5000-EXPORT-TRANSACTIONS
156 PERFORM 5500-EXPORT-CARDS
157 PERFORM 6000-FINALIZE
158 GOBACK.
159
160 *****************************************************************
161 1000-INITIALIZE.
162 *****************************************************************
163 DISPLAY 'CBEXPORT: Starting Customer Data Export'
164
165 PERFORM 1050-GENERATE-TIMESTAMP
166 PERFORM 1100-OPEN-FILES
167
168 DISPLAY 'CBEXPORT: Export Date: ' WS-EXPORT-DATE
169 DISPLAY 'CBEXPORT: Export Time: ' WS-EXPORT-TIME.
170
171 *****************************************************************
172 1050-GENERATE-TIMESTAMP.
173 *****************************************************************
174 * Get current date and time
175 ACCEPT WS-CURRENT-DATE FROM DATE YYYYMMDD
176 ACCEPT WS-CURRENT-TIME FROM TIME
177
178 * Format date as YYYY-MM-DD
179 STRING WS-CURR-YEAR '-' WS-CURR-MONTH '-' WS-CURR-DAY
180 DELIMITED BY SIZE
181 INTO WS-EXPORT-DATE
182 END-STRING
183
184 * Format time as HH:MM:SS
185 STRING WS-CURR-HOUR ':' WS-CURR-MINUTE ':' WS-CURR-SECOND
186 DELIMITED BY SIZE
187 INTO WS-EXPORT-TIME
188 END-STRING
189
190 * Create 26-character timestamp for export records
191 STRING WS-EXPORT-DATE ' ' WS-EXPORT-TIME '.00'
192 DELIMITED BY SIZE
193 INTO WS-FORMATTED-TIMESTAMP
194 END-STRING
195 .
196
197 *****************************************************************
198 1100-OPEN-FILES.
199 *****************************************************************
200 OPEN INPUT CUSTOMER-INPUT
201 IF NOT WS-CUSTOMER-OK
202 DISPLAY 'ERROR: Cannot open CUSTOMER-INPUT, Status: '
203 WS-CUSTOMER-STATUS
204 PERFORM 9999-ABEND-PROGRAM
205 END-IF
206
207 OPEN INPUT ACCOUNT-INPUT
208 IF NOT WS-ACCOUNT-OK
209 DISPLAY 'ERROR: Cannot open ACCOUNT-INPUT, Status: '
210 WS-ACCOUNT-STATUS
211 PERFORM 9999-ABEND-PROGRAM
212 END-IF
213
214 OPEN INPUT XREF-INPUT
215 IF NOT WS-XREF-OK
216 DISPLAY 'ERROR: Cannot open XREF-INPUT, Status: '
217 WS-XREF-STATUS
218 PERFORM 9999-ABEND-PROGRAM
219 END-IF
220
221 OPEN INPUT TRANSACTION-INPUT
222 IF NOT WS-TRANSACTION-OK
223 DISPLAY 'ERROR: Cannot open TRANSACTION-INPUT, Status: '
224 WS-TRANSACTION-STATUS
225 PERFORM 9999-ABEND-PROGRAM
226 END-IF
227
228 OPEN INPUT CARD-INPUT
229 IF NOT WS-CARD-OK
230 DISPLAY 'ERROR: Cannot open CARD-INPUT, Status: '
231 WS-CARD-STATUS
232 PERFORM 9999-ABEND-PROGRAM
233 END-IF
234
235 OPEN OUTPUT EXPORT-OUTPUT
236 IF NOT WS-EXPORT-OK
237 DISPLAY 'ERROR: Cannot open EXPORT-OUTPUT, Status: '
238 WS-EXPORT-STATUS
239 PERFORM 9999-ABEND-PROGRAM
240 END-IF.
241
242 *****************************************************************
243 2000-EXPORT-CUSTOMERS.
244 *****************************************************************
245 DISPLAY 'CBEXPORT: Processing customer records'
246
247 PERFORM 2100-READ-CUSTOMER-RECORD
248
249 PERFORM UNTIL WS-CUSTOMER-EOF
250 PERFORM 2200-CREATE-CUSTOMER-EXP-REC
251 PERFORM 2100-READ-CUSTOMER-RECORD
252 END-PERFORM
253
254 DISPLAY 'CBEXPORT: Customers exported: '
255 WS-CUSTOMER-RECORDS-EXPORTED.
256
257 *****************************************************************
258 2100-READ-CUSTOMER-RECORD.
259 *****************************************************************
260 READ CUSTOMER-INPUT
261
262 IF NOT WS-CUSTOMER-OK AND NOT WS-CUSTOMER-EOF
263 DISPLAY 'ERROR: Reading CUSTOMER-INPUT, Status: '
264 WS-CUSTOMER-STATUS
265 PERFORM 9999-ABEND-PROGRAM
266 END-IF.
267
268 *****************************************************************
269 2200-CREATE-CUSTOMER-EXP-REC.
270 *****************************************************************
271 INITIALIZE EXPORT-RECORD
272
273 * Set record type and common fields
274 MOVE 'C' TO EXPORT-REC-TYPE
275 MOVE WS-FORMATTED-TIMESTAMP TO EXPORT-TIMESTAMP
276 ADD 1 TO WS-SEQUENCE-COUNTER
277 MOVE WS-SEQUENCE-COUNTER TO EXPORT-SEQUENCE-NUM
278 MOVE '0001' TO EXPORT-BRANCH-ID
279 MOVE 'NORTH' TO EXPORT-REGION-CODE
280
281 * Map customer fields to export record
282 MOVE CUST-ID TO EXP-CUST-ID
283 MOVE CUST-FIRST-NAME TO EXP-CUST-FIRST-NAME
284 MOVE CUST-MIDDLE-NAME TO EXP-CUST-MIDDLE-NAME
285 MOVE CUST-LAST-NAME TO EXP-CUST-LAST-NAME
286 MOVE CUST-ADDR-LINE-1 TO EXP-CUST-ADDR-LINE(1)
287 MOVE CUST-ADDR-LINE-2 TO EXP-CUST-ADDR-LINE(2)
288 MOVE CUST-ADDR-LINE-3 TO EXP-CUST-ADDR-LINE(3)
289 MOVE CUST-ADDR-STATE-CD TO EXP-CUST-ADDR-STATE-CD
290 MOVE CUST-ADDR-COUNTRY-CD TO EXP-CUST-ADDR-COUNTRY-CD
291 MOVE CUST-ADDR-ZIP TO EXP-CUST-ADDR-ZIP
292 MOVE CUST-PHONE-NUM-1 TO EXP-CUST-PHONE-NUM(1)
293 MOVE CUST-PHONE-NUM-2 TO EXP-CUST-PHONE-NUM(2)
294 MOVE CUST-SSN TO EXP-CUST-SSN
295 MOVE CUST-GOVT-ISSUED-ID TO EXP-CUST-GOVT-ISSUED-ID
296 MOVE CUST-DOB-YYYY-MM-DD TO EXP-CUST-DOB-YYYY-MM-DD
297 MOVE CUST-EFT-ACCOUNT-ID TO EXP-CUST-EFT-ACCOUNT-ID
298 MOVE CUST-PRI-CARD-HOLDER-IND TO EXP-CUST-PRI-CARD-HOLDER-IND
299 MOVE CUST-FICO-CREDIT-SCORE TO EXP-CUST-FICO-CREDIT-SCORE
300
301 WRITE EXPORT-OUTPUT-RECORD FROM EXPORT-RECORD
302
303 IF NOT WS-EXPORT-OK
304 DISPLAY 'ERROR: Writing export record, Status: '
305 WS-EXPORT-STATUS
306 PERFORM 9999-ABEND-PROGRAM
307 END-IF
308
309 ADD 1 TO WS-CUSTOMER-RECORDS-EXPORTED
310 ADD 1 TO WS-TOTAL-RECORDS-EXPORTED.
311 *****************************************************************
312 3000-EXPORT-ACCOUNTS.
313 *****************************************************************
314 DISPLAY 'CBEXPORT: Processing account records'
315
316 PERFORM 3100-READ-ACCOUNT-RECORD
317
318 PERFORM UNTIL WS-ACCOUNT-EOF
319 PERFORM 3200-CREATE-ACCOUNT-EXP-REC
320 PERFORM 3100-READ-ACCOUNT-RECORD
321 END-PERFORM
322
323 DISPLAY 'CBEXPORT: Accounts exported: '
324 WS-ACCOUNT-RECORDS-EXPORTED.
325
326 *****************************************************************
327 3100-READ-ACCOUNT-RECORD.
328 *****************************************************************
329 READ ACCOUNT-INPUT
330
331 IF NOT WS-ACCOUNT-OK AND NOT WS-ACCOUNT-EOF
332 DISPLAY 'ERROR: Reading ACCOUNT-INPUT, Status: '
333 WS-ACCOUNT-STATUS
334 PERFORM 9999-ABEND-PROGRAM
335 END-IF.
336
337 *****************************************************************
338 3200-CREATE-ACCOUNT-EXP-REC.
339 *****************************************************************
340 INITIALIZE EXPORT-RECORD
341
342 * Set record type and common fields
343 MOVE 'A' TO EXPORT-REC-TYPE
344 MOVE WS-FORMATTED-TIMESTAMP TO EXPORT-TIMESTAMP
345 ADD 1 TO WS-SEQUENCE-COUNTER
346 MOVE WS-SEQUENCE-COUNTER TO EXPORT-SEQUENCE-NUM
347 MOVE '0001' TO EXPORT-BRANCH-ID
348 MOVE 'NORTH' TO EXPORT-REGION-CODE
349
350 * Map account fields to export record
351 MOVE ACCT-ID TO EXP-ACCT-ID
352 MOVE ACCT-ACTIVE-STATUS TO EXP-ACCT-ACTIVE-STATUS
353 MOVE ACCT-CURR-BAL TO EXP-ACCT-CURR-BAL
354 MOVE ACCT-CREDIT-LIMIT TO EXP-ACCT-CREDIT-LIMIT
355 MOVE ACCT-CASH-CREDIT-LIMIT TO EXP-ACCT-CASH-CREDIT-LIMIT
356 MOVE ACCT-OPEN-DATE TO EXP-ACCT-OPEN-DATE
357 MOVE ACCT-EXPIRAION-DATE TO EXP-ACCT-EXPIRAION-DATE
358 MOVE ACCT-REISSUE-DATE TO EXP-ACCT-REISSUE-DATE
359 MOVE ACCT-CURR-CYC-CREDIT TO EXP-ACCT-CURR-CYC-CREDIT
360 MOVE ACCT-CURR-CYC-DEBIT TO EXP-ACCT-CURR-CYC-DEBIT
361 MOVE ACCT-ADDR-ZIP TO EXP-ACCT-ADDR-ZIP
362 MOVE ACCT-GROUP-ID TO EXP-ACCT-GROUP-ID
363
364 WRITE EXPORT-OUTPUT-RECORD FROM EXPORT-RECORD
365
366 IF NOT WS-EXPORT-OK
367 DISPLAY 'ERROR: Writing export record, Status: '
368 WS-EXPORT-STATUS
369 PERFORM 9999-ABEND-PROGRAM
370 END-IF
371
372 ADD 1 TO WS-ACCOUNT-RECORDS-EXPORTED
373 ADD 1 TO WS-TOTAL-RECORDS-EXPORTED.
374
375 *****************************************************************
376 4000-EXPORT-XREFS.
377 *****************************************************************
378 DISPLAY 'CBEXPORT: Processing cross-reference records'
379
380 PERFORM 4100-READ-XREF-RECORD
381
382 PERFORM UNTIL WS-XREF-EOF
383 PERFORM 4200-CREATE-XREF-EXPORT-RECORD
384 PERFORM 4100-READ-XREF-RECORD
385 END-PERFORM
386
387 DISPLAY 'CBEXPORT: Cross-references exported: '
388 WS-XREF-RECORDS-EXPORTED.
389
390 *****************************************************************
391 4100-READ-XREF-RECORD.
392 *****************************************************************
393 READ XREF-INPUT
394
395 IF NOT WS-XREF-OK AND NOT WS-XREF-EOF
396 DISPLAY 'ERROR: Reading XREF-INPUT, Status: '
397 WS-XREF-STATUS
398 PERFORM 9999-ABEND-PROGRAM
399 END-IF.
400
401 *****************************************************************
402 4200-CREATE-XREF-EXPORT-RECORD.
403 *****************************************************************
404 INITIALIZE EXPORT-RECORD
405
406 * Set record type and common fields
407 MOVE 'X' TO EXPORT-REC-TYPE
408 MOVE WS-FORMATTED-TIMESTAMP TO EXPORT-TIMESTAMP
409 ADD 1 TO WS-SEQUENCE-COUNTER
410 MOVE WS-SEQUENCE-COUNTER TO EXPORT-SEQUENCE-NUM
411 MOVE '0001' TO EXPORT-BRANCH-ID
412 MOVE 'NORTH' TO EXPORT-REGION-CODE
413
414 * Map xref fields to export record
415 MOVE XREF-CARD-NUM TO EXP-XREF-CARD-NUM
416 MOVE XREF-CUST-ID TO EXP-XREF-CUST-ID
417 MOVE XREF-ACCT-ID TO EXP-XREF-ACCT-ID
418
419 WRITE EXPORT-OUTPUT-RECORD FROM EXPORT-RECORD
420
421 IF NOT WS-EXPORT-OK
422 DISPLAY 'ERROR: Writing export record, Status: '
423 WS-EXPORT-STATUS
424 PERFORM 9999-ABEND-PROGRAM
425 END-IF
426
427 ADD 1 TO WS-XREF-RECORDS-EXPORTED
428 ADD 1 TO WS-TOTAL-RECORDS-EXPORTED.
429
430 *****************************************************************
431 5000-EXPORT-TRANSACTIONS.
432 *****************************************************************
433 DISPLAY 'CBEXPORT: Processing transaction records'
434
435 PERFORM 5100-READ-TRANSACTION-RECORD
436
437 PERFORM UNTIL WS-TRANSACTION-EOF
438 PERFORM 5200-CREATE-TRAN-EXP-REC
439 PERFORM 5100-READ-TRANSACTION-RECORD
440 END-PERFORM
441
442 DISPLAY 'CBEXPORT: Transactions exported: '
443 WS-TRAN-RECORDS-EXPORTED.
444
445 *****************************************************************
446 5100-READ-TRANSACTION-RECORD.
447 *****************************************************************
448 READ TRANSACTION-INPUT
449
450 IF NOT WS-TRANSACTION-OK AND NOT WS-TRANSACTION-EOF
451 DISPLAY 'ERROR: Reading TRANSACTION-INPUT, Status: '
452 WS-TRANSACTION-STATUS
453 PERFORM 9999-ABEND-PROGRAM
454 END-IF.
455
456 *****************************************************************
457 5200-CREATE-TRAN-EXP-REC.
458 *****************************************************************
459 INITIALIZE EXPORT-RECORD
460
461 * Set record type and common fields
462 MOVE 'T' TO EXPORT-REC-TYPE
463 MOVE WS-FORMATTED-TIMESTAMP TO EXPORT-TIMESTAMP
464 ADD 1 TO WS-SEQUENCE-COUNTER
465 MOVE WS-SEQUENCE-COUNTER TO EXPORT-SEQUENCE-NUM
466 MOVE '0001' TO EXPORT-BRANCH-ID
467 MOVE 'NORTH' TO EXPORT-REGION-CODE
468
469 * Map transaction fields to export record
470 MOVE TRAN-ID TO EXP-TRAN-ID
471 MOVE TRAN-TYPE-CD TO EXP-TRAN-TYPE-CD
472 MOVE TRAN-CAT-CD TO EXP-TRAN-CAT-CD
473 MOVE TRAN-SOURCE TO EXP-TRAN-SOURCE
474 MOVE TRAN-DESC TO EXP-TRAN-DESC
475 MOVE TRAN-AMT TO EXP-TRAN-AMT
476 MOVE TRAN-MERCHANT-ID TO EXP-TRAN-MERCHANT-ID
477 MOVE TRAN-MERCHANT-NAME TO EXP-TRAN-MERCHANT-NAME
478 MOVE TRAN-MERCHANT-CITY TO EXP-TRAN-MERCHANT-CITY
479 MOVE TRAN-MERCHANT-ZIP TO EXP-TRAN-MERCHANT-ZIP
480 MOVE TRAN-CARD-NUM TO EXP-TRAN-CARD-NUM
481 MOVE TRAN-ORIG-TS TO EXP-TRAN-ORIG-TS
482 MOVE TRAN-PROC-TS TO EXP-TRAN-PROC-TS
483
484 WRITE EXPORT-OUTPUT-RECORD FROM EXPORT-RECORD
485
486 IF NOT WS-EXPORT-OK
487 DISPLAY 'ERROR: Writing export record, Status: '
488 WS-EXPORT-STATUS
489 PERFORM 9999-ABEND-PROGRAM
490 END-IF
491
492 ADD 1 TO WS-TRAN-RECORDS-EXPORTED
493 ADD 1 TO WS-TOTAL-RECORDS-EXPORTED.
494
495 *****************************************************************
496 5500-EXPORT-CARDS.
497 *****************************************************************
498 DISPLAY 'CBEXPORT: Processing card records'
499
500 PERFORM 5600-READ-CARD-RECORD
501
502 PERFORM UNTIL WS-CARD-EOF
503 PERFORM 5700-CREATE-CARD-EXPORT-RECORD
504 PERFORM 5600-READ-CARD-RECORD
505 END-PERFORM
506
507 DISPLAY 'CBEXPORT: Cards exported: '
508 WS-CARD-RECORDS-EXPORTED.
509
510 *****************************************************************
511 5600-READ-CARD-RECORD.
512 *****************************************************************
513 READ CARD-INPUT
514
515 IF NOT WS-CARD-OK AND NOT WS-CARD-EOF
516 DISPLAY 'ERROR: Reading CARD-INPUT, Status: '
517 WS-CARD-STATUS
518 PERFORM 9999-ABEND-PROGRAM
519 END-IF.
520
521 *****************************************************************
522 5700-CREATE-CARD-EXPORT-RECORD.
523 *****************************************************************
524 INITIALIZE EXPORT-RECORD
525
526 * Set record type and common fields
527 MOVE 'D' TO EXPORT-REC-TYPE
528 MOVE WS-FORMATTED-TIMESTAMP TO EXPORT-TIMESTAMP
529 ADD 1 TO WS-SEQUENCE-COUNTER
530 MOVE WS-SEQUENCE-COUNTER TO EXPORT-SEQUENCE-NUM
531 MOVE '0001' TO EXPORT-BRANCH-ID
532 MOVE 'NORTH' TO EXPORT-REGION-CODE
533
534 * Map card fields to export record
535 MOVE CARD-NUM TO EXP-CARD-NUM
536 MOVE CARD-ACCT-ID TO EXP-CARD-ACCT-ID
537 MOVE CARD-CVV-CD TO EXP-CARD-CVV-CD
538 MOVE CARD-EMBOSSED-NAME TO EXP-CARD-EMBOSSED-NAME
539 MOVE CARD-EXPIRAION-DATE TO EXP-CARD-EXPIRAION-DATE
540 MOVE CARD-ACTIVE-STATUS TO EXP-CARD-ACTIVE-STATUS
541
542 WRITE EXPORT-OUTPUT-RECORD FROM EXPORT-RECORD
543
544 IF NOT WS-EXPORT-OK
545 DISPLAY 'ERROR: Writing export record, Status: '
546 WS-EXPORT-STATUS
547 PERFORM 9999-ABEND-PROGRAM
548 END-IF
549
550 ADD 1 TO WS-CARD-RECORDS-EXPORTED
551 ADD 1 TO WS-TOTAL-RECORDS-EXPORTED.
552
553 *****************************************************************
554 6000-FINALIZE.
555 *****************************************************************
556 CLOSE CUSTOMER-INPUT
557 CLOSE ACCOUNT-INPUT
558 CLOSE XREF-INPUT
559 CLOSE TRANSACTION-INPUT
560 CLOSE CARD-INPUT
561 CLOSE EXPORT-OUTPUT
562
563 DISPLAY 'CBEXPORT: Export completed'
564 DISPLAY 'CBEXPORT: Customers Exported: '
565 WS-CUSTOMER-RECORDS-EXPORTED
566 DISPLAY 'CBEXPORT: Accounts Exported: '
567 WS-ACCOUNT-RECORDS-EXPORTED
568 DISPLAY 'CBEXPORT: XRefs Exported: ' WS-XREF-RECORDS-EXPORTED
569 DISPLAY 'CBEXPORT: Transactions Exported: '
570 WS-TRAN-RECORDS-EXPORTED
571 DISPLAY 'CBEXPORT: Cards Exported: ' WS-CARD-RECORDS-EXPORTED
572 DISPLAY 'CBEXPORT: Total Records Exported: '
573 WS-TOTAL-RECORDS-EXPORTED.
574
575 *****************************************************************
576 9999-ABEND-PROGRAM.
577 *****************************************************************
578 DISPLAY 'CBEXPORT: ABENDING PROGRAM'
579 CALL 'CEE3ABD'.
580 *
581 * Ver: CardDemo_v2.0-44-gb6e9c27-254 Date: 2025-10-16 14:07:18 CDT
582 *