IDENTIFICATION DIVISION. PROGRAM-ID. GENDATA. * GENERATE COMPREHENSIVE TEST DATA FOR CREDIT CARD BATCH SYSTEM * COVERS: normal, frozen, closed, not-found, empty-merchant, * zero-card, invalid-amount, invalid-refund, out-of-month, * multiple cash advances, refunds, installments ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT MEM-OUT ASSIGN TO "MEMOUT" ORGANIZATION IS LINE SEQUENTIAL. SELECT TX-OUT ASSIGN TO "TXOUT" ORGANIZATION IS LINE SEQUENTIAL. SELECT RATE-OUT ASSIGN TO "RATEOUT" ORGANIZATION IS SEQUENTIAL. DATA DIVISION. FILE SECTION. FD MEM-OUT. COPY MEMCPY. FD TX-OUT. COPY TXCPY. FD RATE-OUT. COPY RATECPY. PROCEDURE DIVISION. 0000-MAIN. OPEN OUTPUT MEM-OUT TX-OUT RATE-OUT. PERFORM 1000-GEN-MEMBERS. PERFORM 2000-GEN-TRANSACTIONS. PERFORM 3000-GEN-RATES. CLOSE MEM-OUT TX-OUT RATE-OUT. DISPLAY 'GENDATA: TEST DATA CREATED'. GOBACK. * 8 MEMBERS 1000-GEN-MEMBERS. MOVE 6222021234567800 TO MEM-ID. MOVE 'ZHANG SAN' TO MEM-NAME. MOVE 50000.00 TO MEM-CREDIT-LIMIT. MOVE 'G' TO MEM-TYPE. MOVE 'A' TO MEM-STATUS. MOVE 15000.00 TO MEM-BALANCE. MOVE 3000.00 TO MEM-MIN-PAYMENT. MOVE 'BEIJING ROAD NO.1' TO MEM-ADDRESS. WRITE MEMBER-RECORD. MOVE 6222021234567801 TO MEM-ID. MOVE 'LI SI' TO MEM-NAME. MOVE 100000.00 TO MEM-CREDIT-LIMIT. MOVE 'P' TO MEM-TYPE. MOVE 'A' TO MEM-STATUS. MOVE 35000.00 TO MEM-BALANCE. MOVE 7000.00 TO MEM-MIN-PAYMENT. MOVE 'SHANGHAI ROAD NO.2' TO MEM-ADDRESS. WRITE MEMBER-RECORD. MOVE 6222021234567802 TO MEM-ID. MOVE 'WANG WU' TO MEM-NAME. MOVE 20000.00 TO MEM-CREDIT-LIMIT. MOVE 'S' TO MEM-TYPE. MOVE 'A' TO MEM-STATUS. MOVE 8000.00 TO MEM-BALANCE. MOVE 2000.00 TO MEM-MIN-PAYMENT. MOVE 'GUANGZHOU ROAD NO.3' TO MEM-ADDRESS. WRITE MEMBER-RECORD. MOVE 6222021234567803 TO MEM-ID. MOVE 'ZHAO LIU' TO MEM-NAME. MOVE 80000.00 TO MEM-CREDIT-LIMIT. MOVE 'G' TO MEM-TYPE. MOVE 'F' TO MEM-STATUS. MOVE 15000.00 TO MEM-BALANCE. MOVE 8000.00 TO MEM-MIN-PAYMENT. MOVE 'SHENZHEN ROAD NO.4' TO MEM-ADDRESS. WRITE MEMBER-RECORD. MOVE 6222021234567804 TO MEM-ID. MOVE 'CHEN QI' TO MEM-NAME. MOVE 30000.00 TO MEM-CREDIT-LIMIT. MOVE 'S' TO MEM-TYPE. MOVE 'C' TO MEM-STATUS. MOVE 0.00 TO MEM-BALANCE. MOVE 0.00 TO MEM-MIN-PAYMENT. MOVE 'NANJING ROAD NO.5' TO MEM-ADDRESS. WRITE MEMBER-RECORD. * NEW: 7805 - Active Gold, edge case transaction target MOVE 6222021234567805 TO MEM-ID. MOVE 'SUN BA' TO MEM-NAME. MOVE 60000.00 TO MEM-CREDIT-LIMIT. MOVE 'G' TO MEM-TYPE. MOVE 'A' TO MEM-STATUS. MOVE 5000.00 TO MEM-BALANCE. MOVE 1000.00 TO MEM-MIN-PAYMENT. MOVE 'HANGZHOU ROAD NO.6' TO MEM-ADDRESS. WRITE MEMBER-RECORD. * NEW: 7806 - Active Platinum, very high limit MOVE 6222021234567806 TO MEM-ID. MOVE 'ZHOU JIU' TO MEM-NAME. MOVE 200000.00 TO MEM-CREDIT-LIMIT. MOVE 'P' TO MEM-TYPE. MOVE 'A' TO MEM-STATUS. MOVE 80000.00 TO MEM-BALANCE. MOVE 16000.00 TO MEM-MIN-PAYMENT. MOVE 'CHENGDU ROAD NO.7' TO MEM-ADDRESS. WRITE MEMBER-RECORD. * NEW: 7807 - Active Standard, low limit cash-advance heavy MOVE 6222021234567807 TO MEM-ID. MOVE 'WU SHI' TO MEM-NAME. MOVE 15000.00 TO MEM-CREDIT-LIMIT. MOVE 'S' TO MEM-TYPE. MOVE 'A' TO MEM-STATUS. MOVE 3000.00 TO MEM-BALANCE. MOVE 500.00 TO MEM-MIN-PAYMENT. MOVE 'WUHAN ROAD NO.8' TO MEM-ADDRESS. WRITE MEMBER-RECORD. * 28 TRANSACTIONS 2000-GEN-TRANSACTIONS. * CARD 7800 - 5 transactions (normal usage mix) MOVE 6222021234567800 TO TX-CARD-NO. MOVE 20260501 TO TX-DATE. MOVE 'P' TO TX-TYPE. MOVE 1280.50 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'SUPERMARKET A' TO TX-MERCHANT. MOVE 5411 TO TX-MCC. MOVE 00 TO TX-INSTALL. MOVE SPACES TO TX-ATM-ID. MOVE 0 TO TX-FEE-RATE. WRITE TX-RECORD. MOVE 20260505 TO TX-DATE. MOVE 'P' TO TX-TYPE. MOVE 3500.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'ELECTRONICS B' TO TX-MERCHANT. MOVE 5732 TO TX-MCC. MOVE 06 TO TX-INSTALL. MOVE SPACES TO TX-ATM-ID. MOVE 0 TO TX-FEE-RATE. WRITE TX-RECORD. MOVE 20260510 TO TX-DATE. MOVE 'C' TO TX-TYPE. MOVE 2000.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'ATM-001' TO TX-MERCHANT. MOVE 0 TO TX-MCC. MOVE 0 TO TX-INSTALL. MOVE 'ATM0000001' TO TX-ATM-ID. MOVE 0.50 TO TX-FEE-RATE. WRITE TX-RECORD. MOVE 20260515 TO TX-DATE. MOVE 'P' TO TX-TYPE. MOVE 850.20 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'RESTAURANT C' TO TX-MERCHANT. MOVE 5812 TO TX-MCC. MOVE 00 TO TX-INSTALL. MOVE SPACES TO TX-ATM-ID. MOVE 0 TO TX-FEE-RATE. WRITE TX-RECORD. MOVE 20260520 TO TX-DATE. MOVE 'R' TO TX-TYPE. MOVE -1280.50 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'SUPERMARKET A' TO TX-MERCHANT. MOVE 5411 TO TX-MCC. MOVE 00 TO TX-INSTALL. MOVE SPACES TO TX-ATM-ID. MOVE 0 TO TX-FEE-RATE. WRITE TX-RECORD. * CARD 7801 - 5 transactions (high limit, installment, cash advance, refund) MOVE 6222021234567801 TO TX-CARD-NO. MOVE 20260503 TO TX-DATE. MOVE 'P' TO TX-TYPE. MOVE 15000.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'FURNITURE D' TO TX-MERCHANT. MOVE 5712 TO TX-MCC. MOVE 12 TO TX-INSTALL. MOVE SPACES TO TX-ATM-ID. MOVE 0 TO TX-FEE-RATE. WRITE TX-RECORD. MOVE 20260518 TO TX-DATE. MOVE 'P' TO TX-TYPE. MOVE 2200.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'HOTEL E' TO TX-MERCHANT. MOVE 7011 TO TX-MCC. MOVE 00 TO TX-INSTALL. MOVE SPACES TO TX-ATM-ID. MOVE 0 TO TX-FEE-RATE. WRITE TX-RECORD. MOVE 20260522 TO TX-DATE. MOVE 'C' TO TX-TYPE. MOVE 5000.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'ATM-003' TO TX-MERCHANT. MOVE 0 TO TX-MCC. MOVE 0 TO TX-INSTALL. MOVE 'ATM0000003' TO TX-ATM-ID. MOVE 0.50 TO TX-FEE-RATE. WRITE TX-RECORD. MOVE 20260523 TO TX-DATE. MOVE 'R' TO TX-TYPE. MOVE -500.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'FURNITURE D' TO TX-MERCHANT. MOVE 5712 TO TX-MCC. MOVE 00 TO TX-INSTALL. MOVE SPACES TO TX-ATM-ID. MOVE 0 TO TX-FEE-RATE. WRITE TX-RECORD. MOVE 20260525 TO TX-DATE. MOVE 'C' TO TX-TYPE. MOVE 3000.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'ATM-005' TO TX-MERCHANT. MOVE 0 TO TX-MCC. MOVE 0 TO TX-INSTALL. MOVE 'ATM0000005' TO TX-ATM-ID. MOVE 0.50 TO TX-FEE-RATE. WRITE TX-RECORD. * CARD 7802 - 3 transactions (student: small purchases + cash advance) MOVE 6222021234567802 TO TX-CARD-NO. MOVE 20260508 TO TX-DATE. MOVE 'P' TO TX-TYPE. MOVE 500.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'PHARMACY F' TO TX-MERCHANT. MOVE 5912 TO TX-MCC. MOVE 00 TO TX-INSTALL. MOVE SPACES TO TX-ATM-ID. MOVE 0 TO TX-FEE-RATE. WRITE TX-RECORD. MOVE 20260511 TO TX-DATE. MOVE 'P' TO TX-TYPE. MOVE 300.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'BOOKSTORE H' TO TX-MERCHANT. MOVE 5942 TO TX-MCC. MOVE 00 TO TX-INSTALL. MOVE SPACES TO TX-ATM-ID. MOVE 0 TO TX-FEE-RATE. WRITE TX-RECORD. MOVE 20260514 TO TX-DATE. MOVE 'C' TO TX-TYPE. MOVE 1000.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'ATM-004' TO TX-MERCHANT. MOVE 0 TO TX-MCC. MOVE 0 TO TX-INSTALL. MOVE 'ATM0000004' TO TX-ATM-ID. MOVE 0.50 TO TX-FEE-RATE. WRITE TX-RECORD. * CARD 7803 - 1 transaction (rejected: frozen) MOVE 6222021234567803 TO TX-CARD-NO. MOVE 20260512 TO TX-DATE. MOVE 'C' TO TX-TYPE. MOVE 10000.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'ATM-002' TO TX-MERCHANT. MOVE 0 TO TX-MCC. MOVE 0 TO TX-INSTALL. MOVE 'ATM0000002' TO TX-ATM-ID. MOVE 0.50 TO TX-FEE-RATE. WRITE TX-RECORD. * CARD 7805 - 5 transactions (edge case validations) * Tx 1: rejected - INVALID-MERCHANT (empty merchant name) MOVE 6222021234567805 TO TX-CARD-NO. MOVE 20260502 TO TX-DATE. MOVE 'P' TO TX-TYPE. MOVE 1000.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE SPACES TO TX-MERCHANT. MOVE 5411 TO TX-MCC. MOVE 00 TO TX-INSTALL. MOVE SPACES TO TX-ATM-ID. MOVE 0 TO TX-FEE-RATE. WRITE TX-RECORD. * Tx 2: rejected - INVALID-CARD (card number = 0) MOVE 0000000000000000 TO TX-CARD-NO. MOVE 20260504 TO TX-DATE. MOVE 'P' TO TX-TYPE. MOVE 2000.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'STORE K' TO TX-MERCHANT. MOVE 5411 TO TX-MCC. MOVE 00 TO TX-INSTALL. MOVE SPACES TO TX-ATM-ID. MOVE 0 TO TX-FEE-RATE. WRITE TX-RECORD. * Tx 3: rejected - INVALID-AMOUNT (purchase with zero amount) MOVE 6222021234567805 TO TX-CARD-NO. MOVE 20260506 TO TX-DATE. MOVE 'P' TO TX-TYPE. MOVE 0.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'STORE L' TO TX-MERCHANT. MOVE 5411 TO TX-MCC. MOVE 00 TO TX-INSTALL. MOVE SPACES TO TX-ATM-ID. MOVE 0 TO TX-FEE-RATE. WRITE TX-RECORD. * Tx 4: rejected - INVALID-AMOUNT (purchase with negative amount) MOVE 6222021234567805 TO TX-CARD-NO. MOVE 20260509 TO TX-DATE. MOVE 'P' TO TX-TYPE. MOVE -500.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'STORE M' TO TX-MERCHANT. MOVE 5411 TO TX-MCC. MOVE 00 TO TX-INSTALL. MOVE SPACES TO TX-ATM-ID. MOVE 0 TO TX-FEE-RATE. WRITE TX-RECORD. * Tx 5: rejected - INVALID-REFUND (refund with positive amount) MOVE 6222021234567805 TO TX-CARD-NO. MOVE 20260513 TO TX-DATE. MOVE 'R' TO TX-TYPE. MOVE 300.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'STORE N' TO TX-MERCHANT. MOVE 5411 TO TX-MCC. MOVE 00 TO TX-INSTALL. MOVE SPACES TO TX-ATM-ID. MOVE 0 TO TX-FEE-RATE. WRITE TX-RECORD. * Tx 6: valid transaction for 7805 (so card appears in billing) MOVE 6222021234567805 TO TX-CARD-NO. MOVE 20260519 TO TX-DATE. MOVE 'P' TO TX-TYPE. MOVE 2000.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'DELIVERY N' TO TX-MERCHANT. MOVE 5969 TO TX-MCC. MOVE 00 TO TX-INSTALL. MOVE SPACES TO TX-ATM-ID. MOVE 0 TO TX-FEE-RATE. WRITE TX-RECORD. * CARD 7806 - 3 transactions (high limit edge cases) * Tx 1: rejected - OUT-OF-MONTH (April date, run month is May) MOVE 6222021234567806 TO TX-CARD-NO. MOVE 20260428 TO TX-DATE. MOVE 'P' TO TX-TYPE. MOVE 3000.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'TRAVEL O' TO TX-MERCHANT. MOVE 4722 TO TX-MCC. MOVE 00 TO TX-INSTALL. MOVE SPACES TO TX-ATM-ID. MOVE 0 TO TX-FEE-RATE. WRITE TX-RECORD. * Tx 2: valid purchase for 7806 MOVE 6222021234567806 TO TX-CARD-NO. MOVE 20260521 TO TX-DATE. MOVE 'P' TO TX-TYPE. MOVE 2500.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'JEWELRY P' TO TX-MERCHANT. MOVE 5944 TO TX-MCC. MOVE 00 TO TX-INSTALL. MOVE SPACES TO TX-ATM-ID. MOVE 0 TO TX-FEE-RATE. WRITE TX-RECORD. * Tx 3: valid cash advance for 7806 MOVE 6222021234567806 TO TX-CARD-NO. MOVE 20260525 TO TX-DATE. MOVE 'C' TO TX-TYPE. MOVE 8000.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'ATM-006' TO TX-MERCHANT. MOVE 0 TO TX-MCC. MOVE 0 TO TX-INSTALL. MOVE 'ATM0000006' TO TX-ATM-ID. MOVE 0.50 TO TX-FEE-RATE. WRITE TX-RECORD. * CARD 7807 - 4 transactions (low limit cash-advance heavy) * Tx 1: cash advance 1 MOVE 6222021234567807 TO TX-CARD-NO. MOVE 20260502 TO TX-DATE. MOVE 'C' TO TX-TYPE. MOVE 500.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'ATM-007' TO TX-MERCHANT. MOVE 0 TO TX-MCC. MOVE 0 TO TX-INSTALL. MOVE 'ATM0000007' TO TX-ATM-ID. MOVE 0.50 TO TX-FEE-RATE. WRITE TX-RECORD. * Tx 2: cash advance 2 (different ATM) MOVE 20260507 TO TX-DATE. MOVE 'C' TO TX-TYPE. MOVE 300.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'ATM-008' TO TX-MERCHANT. MOVE 0 TO TX-MCC. MOVE 0 TO TX-INSTALL. MOVE 'ATM0000008' TO TX-ATM-ID. MOVE 0.50 TO TX-FEE-RATE. WRITE TX-RECORD. * Tx 3: cash advance 3 (same ATM as tx 1) MOVE 20260511 TO TX-DATE. MOVE 'C' TO TX-TYPE. MOVE 200.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'ATM-007' TO TX-MERCHANT. MOVE 0 TO TX-MCC. MOVE 0 TO TX-INSTALL. MOVE 'ATM0000007' TO TX-ATM-ID. MOVE 0.50 TO TX-FEE-RATE. WRITE TX-RECORD. * Tx 4: purchase mixed with cash advances MOVE 20260520 TO TX-DATE. MOVE 'P' TO TX-TYPE. MOVE 800.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'GROCERY Q' TO TX-MERCHANT. MOVE 5411 TO TX-MCC. MOVE 00 TO TX-INSTALL. MOVE SPACES TO TX-ATM-ID. MOVE 0 TO TX-FEE-RATE. WRITE TX-RECORD. * CARD 9999999999999999 - 1 transaction (rejected: not found) MOVE 9999999999999999 TO TX-CARD-NO. MOVE 20260515 TO TX-DATE. MOVE 'P' TO TX-TYPE. MOVE 1000.00 TO TX-AMOUNT. MOVE 'CNY' TO TX-CURRENCY. MOVE 'ONLINE R' TO TX-MERCHANT. MOVE 5969 TO TX-MCC. MOVE 00 TO TX-INSTALL. MOVE SPACES TO TX-ATM-ID. MOVE 0 TO TX-FEE-RATE. WRITE TX-RECORD. 3000-GEN-RATES. MOVE 'C' TO RATE-TYPE. MOVE 0.0005 TO RATE-PCT. MOVE 20250101 TO RATE-EFF-DATE. WRITE RATE-RECORD. MOVE 'O' TO RATE-TYPE. MOVE 0.0500 TO RATE-PCT. MOVE 20250101 TO RATE-EFF-DATE. WRITE RATE-RECORD.