| 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 | * |