This document provides a comprehensive catalog of all programs, modules, and components in the AWS CardDemo application, organized by functional area with technical specifications.
| Attribute | Value |
|---|---|
| Transaction ID | CC00 |
| Function | User authentication and menu dispatch |
| Source Path | /app/cbl/COSGN00C.cbl |
| Map | COSGN0A |
| Lines of Code | ~350 |
Technical Details:
Program Type: CICS Online (Pseudo-conversational)
Entry Point: COSGN00C
Files Accessed:
├── USRSEC (Read)
Navigation:
├── XCTL to COMEN01C (User Menu) if user type = 'U'
└── XCTL to COADM01C (Admin Menu) if user type = 'A'
COMMAREA Structure:
├── CDEMO-CU00-USERID (8 bytes)
├── CDEMO-CU00-USRTYPE (1 byte)
└── Return Code (4 bytes)
Key Functions:
Error Conditions:
| Attribute | Value |
|---|---|
| Transaction ID | CM00 |
| Function | Display user menu and dispatch to functions |
| Source Path | /app/cbl/COMEN01C.cbl |
| Map | COMEN0A |
| Lines of Code | ~400 |
Menu Options:
1. Account View (CAVW)
2. Account Update (CAUP)
3. Card List (CCLI)
4. Card Detail (CCDL)
5. Transaction List (CT00)
6. Transaction View (CT01)
7. Add Transaction (CT02)
8. Bill Payment (CB00)
9. Reports (CR00)
0. Logoff
Navigation:
EVALUATE MENU-OPTION
WHEN '1'
EXEC CICS XCTL PROGRAM('COACTVWC') COMMAREA(...) END-EXEC
WHEN '2'
EXEC CICS XCTL PROGRAM('COACTUPC') COMMAREA(...) END-EXEC
[... other options ...]
END-EVALUATE
| Attribute | Value |
|---|---|
| Transaction ID | CA00 |
| Function | Display admin menu and dispatch |
| Source Path | /app/cbl/COADM01C.cbl |
| Map | COADM0A |
| Lines of Code | ~500 |
Menu Options:
1. User List (CU00)
2. User Add (CU01)
3. User Update (CU02)
4. User Delete (CU03)
5. Transaction Type List (CTLI) - DB2 Extension
6. Transaction Type Maintenance (CTTU) - DB2 Extension
7. Account Management (CAUP)
8. System Reports (CR00)
0. Logoff
| Attribute | Value |
|---|---|
| Transaction ID | CAVW |
| Function | Display account details with cards |
| Source Path | /app/cbl/COACTVWC.cbl |
| Map | COACTVWA |
| Lines of Code | ~600 |
Processing Flow:
1. Receive COMMAREA with Account ID
2. READ ACCTDAT (KEY = Account ID)
3. READ CUSTDAT (KEY = Customer ID from account)
4. BROWSE CCXREF (AIX = Account ID)
5. For each card in CCXREF:
a. READ CARDDAT (KEY = Card Number)
b. Format card info (masked number, expiry, status)
6. Format account summary:
├── Balances (Current, Credit Limit, Available)
├── Cycle totals (Debit, Credit)
├── Dates (Open, Expiration)
└── Status
7. Display customer info:
├── Name
├── Address
└── Contact
8. Display card list (up to 5 cards)
9. Send map to terminal
10. Return to CICS (pseudo-conversational)
Files Accessed:
PF Keys:
| Attribute | Value |
|---|---|
| Transaction ID | CAUP |
| Function | Update account information |
| Source Path | /app/cbl/COACTUPC.cbl |
| Map | COACTVWA |
| Lines of Code | ~800 |
Updatable Fields:
Validation Rules:
Credit Limit:
├── Must be > 0
├── Must be >= Current Balance
└── Maximum $100,000
Cash Limit:
├── Must be <= Credit Limit
└── Must be > 0
Status:
├── Valid values: 'A' (Active), 'C' (Closed)
└── Cannot close if balance > 0
Group ID:
├── Must exist in DISCGRP file
└── 10 characters alphanumeric
Processing:
1. Display current account data (read mode)
2. User modifies fields
3. Receive modified map
4. Validate all changes
5. READ ACCTDAT (KEY = Account ID, for update)
6. Apply changes to record
7. Validate business rules
8. REWRITE ACCTDAT
9. Display confirmation
10. Return to menu
Error Handling:
| Attribute | Value |
|---|---|
| Transaction ID | CCLI |
| Function | Display paginated list of cards |
| Source Path | /app/cbl/COCRDLIC.cbl |
| Map | COCRDLIA |
| Lines of Code | ~700 |
Display Specifications:
Page Size: 10 cards
Display Columns:
├── Card Number (masked: ****-****-****-1234)
├── Card Holder Name
├── Account ID
├── Expiration Date
├── Status (Active/Closed/Suspended)
└── Select Field (for detail view)
Scrolling:
├── PF7: Previous page
├── PF8: Next page
└── Page number display: "Page 1 of 5"
Browse Logic:
* Start browse
EXEC CICS STARTBR
DATASET('CARDDAT')
RIDFLD(WS-START-KEY)
KEYLENGTH(LENGTH OF WS-START-KEY)
GENERIC
END-EXEC
* Read up to 10 records
PERFORM VARYING WS-LINE FROM 1 BY 1
UNTIL WS-LINE > 10 OR WS-END-OF-FILE
EXEC CICS READNEXT
DATASET('CARDDAT')
INTO(CARD-RECORD)
RIDFLD(WS-CARD-KEY)
END-EXEC
IF RESP = DFHRESP(NORMAL)
PERFORM FORMAT-CARD-LINE
ELSE IF RESP = DFHRESP(ENDFILE)
SET WS-END-OF-FILE TO TRUE
END-IF
END-PERFORM
* End browse
EXEC CICS ENDBR
DATASET('CARDDAT')
END-EXEC
| Attribute | Value |
|---|---|
| Transaction ID | CCDL |
| Function | Display detailed card information |
| Source Path | /app/cbl/COCRDSLC.cbl |
| Map | COCRDLIA |
| Lines of Code | ~550 |
Display Sections:
Card Information:
├── Full Card Number (masked in production)
├── CVV Code (hidden)
├── Embossed Name
├── Expiration Date
├── Issue Date
├── Status
└── Active Flag
Account Information:
├── Account ID (linked)
├── Account Status
├── Current Balance
└── Credit Limit
Customer Information:
├── Customer ID
├── Customer Name
├── Address
└── Phone
Transaction Summary:
├── Last Transaction Date
├── Last Transaction Amount
├── Month-to-Date Total
└── Year-to-Date Total
| Attribute | Value |
|---|---|
| Transaction ID | CCUP |
| Function | Update card details |
| Source Path | /app/cbl/COCRDUPC.cbl |
| Map | COCRDUPA |
| Lines of Code | ~750 |
Updatable Fields:
Special Functions:
| Attribute | Value |
|---|---|
| Transaction ID | CT00 |
| Function | Display paginated transaction list |
| Source Path | /app/cbl/COTRN00C.cbl |
| Map | COTRN0A |
| Lines of Code | ~900 |
List Features:
Page Size: 15 transactions
Display Columns:
├── Transaction ID
├── Date/Time
├── Card Number (masked)
├── Type (Purchase, Payment, Fee, Interest)
├── Category
├── Amount (formatted with sign)
├── Merchant Name
└── Select (for detail view)
Filtering:
├── By Date Range (from/to)
├── By Type Code
├── By Category
├── By Amount Range (min/max)
└── By Card Number
Sorting:
├── By Date (default descending)
├── By Amount
└── By Type
Search:
├── By Transaction ID (exact match)
├── By Merchant Name (partial match)
└── By Description (partial match)
Browse with Alternate Index:
* Use AIX for date-ordered access
EXEC CICS STARTBR
DATASET('TRANXREF') * AIX on TRAN-PROC-TS
RIDFLD(WS-START-DATE)
KEYLENGTH(LENGTH OF WS-START-DATE)
GTEQ
END-EXEC
PERFORM UNTIL WS-LINE > 15 OR WS-EOF
EXEC CICS READNEXT
DATASET('TRANXREF')
INTO(TRAN-XREF-RECORD)
END-EXEC
IF RESP = NORMAL
* Read base record using TRAN-ID
EXEC CICS READ
DATASET('TRANSACT')
INTO(TRAN-RECORD)
RIDFLD(TRAN-ID FROM XREF)
END-EXEC
IF meets filter criteria
PERFORM FORMAT-TRANSACTION-LINE
END-IF
END-IF
END-PERFORM
| Attribute | Value |
|---|---|
| Transaction ID | CT01 |
| Function | Display detailed transaction info |
| Source Path | /app/cbl/COTRN01C.cbl |
| Map | COTRN1A |
| Lines of Code | ~650 |
Detail Sections:
Transaction Header:
├── Transaction ID
├── Original Timestamp
├── Processing Timestamp
├── Status
└── Source System
Amount Information:
├── Transaction Amount
├── Original Amount (if different)
├── Currency Code
└── Exchange Rate (if applicable)
Card & Account:
├── Card Number (masked)
├── Account ID
├── Card Holder Name
└── Account Status
Merchant Information:
├── Merchant ID
├── Merchant Name
├── Merchant Category Code (MCC)
├── Merchant City
├── Merchant State
└── Merchant ZIP
Transaction Details:
├── Type Code & Description
├── Category Code & Description
├── Transaction Description
└── Reference Number
Authorization (if applicable):
├── Authorization Code
├── Response Code
└── AVS Result
| Attribute | Value |
|---|---|
| Transaction ID | CT02 |
| Function | Manually add transaction |
| Source Path | /app/cbl/COTRN02C.cbl |
| Map | COTRN2A |
| Lines of Code | ~1100 |
Input Fields:
Required:
├── Card Number (16 digits)
├── Transaction Type (2 chars)
├── Transaction Category (4 digits)
├── Amount (decimal, max 9999999.99)
└── Description (100 chars)
Optional:
├── Merchant ID (9 digits)
├── Merchant Name (50 chars)
├── Merchant City (50 chars)
├── Merchant ZIP (10 chars)
└── Reference Number (20 chars)
System Generated:
├── Transaction ID (16 chars: date+time+sequence)
├── Original Timestamp (current)
├── Processing Timestamp (current)
└── Source ('ONLINE')
Validation & Processing:
1. Validate Input Format:
├── Card Number: 16 numeric digits
├── Amount: > 0, <= 9999999.99
├── Type: Valid in TRANTYPE reference
└── Category: Valid for type
2. Card Validation:
READ CCXREF (KEY = Card Number)
├── Must exist
└── Extract Account ID, Customer ID
3. Account Validation:
READ ACCTDAT (KEY = Account ID, for update)
├── Status must be 'A' (Active)
├── For debits: Available credit >= Amount
└── Extract current balances
4. Generate Transaction ID:
TRAN-ID = Current-Date + Current-Time + 4-digit sequence
Example: 2023120114353001
5. Build Transaction Record:
MOVE all validated input to TRAN-RECORD
SET TRAN-ORIG-TS = current timestamp
SET TRAN-PROC-TS = current timestamp
SET TRAN-SOURCE = 'ONLINE'
6. Write Transaction:
EXEC CICS WRITE
DATASET('TRANSACT')
FROM(TRAN-RECORD)
RIDFLD(TRAN-ID)
END-EXEC
7. Update Account Balances:
IF TRAN-AMT > 0 * Debit
ADD TRAN-AMT TO ACCT-CURR-BAL
ADD TRAN-AMT TO ACCT-CURR-CYC-DEBIT
ELSE * Credit
ADD TRAN-AMT TO ACCT-CURR-BAL * Negative
SUBTRACT TRAN-AMT FROM ACCT-CURR-CYC-CREDIT
END-IF
EXEC CICS REWRITE
DATASET('ACCTDAT')
FROM(ACCT-RECORD)
END-EXEC
8. Update Category Balance:
Build TCAT-KEY = ACCT-ID + TYPE + CATEGORY
READ TCATBALF (KEY = TCAT-KEY, for update)
IF found:
ADD TRAN-AMT TO TRAN-CAT-BAL
REWRITE TCATBALF
ELSE:
Initialize TCAT-RECORD
SET TRAN-CAT-BAL = TRAN-AMT
WRITE TCATBALF
END-IF
9. Display Confirmation:
Show generated TRAN-ID
Show updated account balance
Provide option to add another
10. Return to Menu or Add Another
| Attribute | Value |
|---|---|
| Transaction ID | CU00 |
| Function | Display user list with CRUD options |
| Source Path | /app/cbl/COUSR00C.cbl |
| Map | COUSR0A |
| Lines of Code | ~600 |
| Authorization | Admin only |
Display:
Columns:
├── User ID
├── First Name
├── Last Name
├── User Type (Admin/User)
├── Status (Active/Inactive)
└── Action (U=Update, D=Delete, V=View)
Actions:
├── 'U' + User ID → XCTL to COUSR02C (Update)
├── 'D' + User ID → XCTL to COUSR03C (Delete)
└── 'V' + User ID → Display details
| Attribute | Value |
|---|---|
| Transaction ID | CU01 |
| Function | Add new user |
| Source Path | /app/cbl/COUSR01C.cbl |
| Map | COUSR1A |
| Lines of Code | ~550 |
| Authorization | Admin only |
Input Fields:
Required:
├── User ID (8 chars, alphanumeric, uppercase)
├── Password (8 chars, complexity rules)
├── Password Confirmation (must match)
├── First Name (25 chars)
├── Last Name (25 chars)
└── User Type ('A' or 'U')
Validation Rules:
├── User ID must be unique
├── Password requirements:
│ ├── Minimum 8 characters
│ ├── At least 1 uppercase letter
│ ├── At least 1 number
│ └── At least 1 special character
├── User Type must be 'A' or 'U'
└── Name fields required
| Attribute | Value |
|---|---|
| Transaction ID | CU02 |
| Function | Update existing user |
| Source Path | /app/cbl/COUSR02C.cbl |
| Map | COUSR2A |
| Lines of Code | ~650 |
Updatable Fields:
| Attribute | Value |
|---|---|
| Transaction ID | CU03 |
| Function | Delete user (with confirmation) |
| Source Path | /app/cbl/COUSR03C.cbl |
| Map | COUSR3A |
| Lines of Code | ~400 |
Validation:
| Attribute | Value |
|---|---|
| Transaction ID | CB00 |
| Function | Process payment transactions |
| Source Path | /app/cbl/COBIL00C.cbl |
| Map | COBIL0A |
| Lines of Code | ~800 |
Payment Types:
Processing:
1. Display account balance and minimum due
2. User selects payment type and amount
3. Validate payment amount
4. Create payment transaction (Type = '03', negative amount)
5. Update account balance (reduce balance)
6. Update cycle credit
7. Display confirmation with confirmation number
| Attribute | Value |
|---|---|
| Transaction ID | CR00 |
| Function | Display and generate reports |
| Source Path | /app/cbl/CORPT00C.cbl |
| Map | CORPT0A |
| Lines of Code | ~500 |
Available Reports:
| Attribute | Value |
|---|---|
| Function | Post daily transactions to master file |
| Source Path | /app/cbl/CBTRN01C.cbl |
| Input | DALYTRAN (Sequential) |
| Output | TRANSACT (VSAM), updated ACCTDAT, TCATBALF |
| Lines of Code | ~1200 |
| Processing Time | 2-5 minutes (10K records) |
File Definitions:
SELECT DALYTRAN-FILE
ASSIGN TO DALYTRAN
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS DALYTRAN-STATUS.
SELECT TRANSACT-FILE
ASSIGN TO TRANSACT
ORGANIZATION IS INDEXED
ACCESS MODE IS RANDOM
RECORD KEY IS FD-TRAN-ID
FILE STATUS IS TRANSACT-STATUS.
SELECT ACCTDAT-FILE
ASSIGN TO ACCTFILE
ORGANIZATION IS INDEXED
ACCESS MODE IS DYNAMIC
RECORD KEY IS FD-ACCT-ID
FILE STATUS IS ACCTFILE-STATUS.
Processing Logic:
Main Loop:
READ DALYTRAN (sequential)
PERFORM VALIDATE-TRANSACTION
IF valid:
PERFORM LOOKUP-CARD-ACCOUNT
PERFORM BUILD-TRANSACTION-RECORD
PERFORM POST-TRANSACTION
PERFORM UPDATE-ACCOUNT
PERFORM UPDATE-CATEGORY-BALANCE
ADD 1 TO TRANS-POSTED-COUNT
ELSE:
PERFORM WRITE-ERROR-RECORD
ADD 1 TO TRANS-ERROR-COUNT
END-IF
IF TRANS-POSTED-COUNT MOD 100 = 0:
PERFORM WRITE-CHECKPOINT
END-IF
End Loop
PERFORM WRITE-STATISTICS
Checkpoint Logic:
WRITE-CHECKPOINT.
MOVE TRANS-POSTED-COUNT TO CHKPT-COUNT
MOVE CURRENT-TRAN-ID TO CHKPT-LAST-ID
MOVE FUNCTION CURRENT-DATE TO CHKPT-TIMESTAMP
WRITE CHECKPOINT-RECORD
DISPLAY 'CHECKPOINT AT ' TRANS-POSTED-COUNT ' TRANSACTIONS'
.
| Attribute | Value |
|---|---|
| Function | Combine multiple transaction files |
| Source Path | /app/cbl/CBTRN02C.cbl |
| Input | Multiple transaction files |
| Output | Combined transaction file |
| Lines of Code | ~600 |
Purpose: Merge transactions from multiple sources before posting
| Attribute | Value |
|---|---|
| Function | Pre-validate transaction file |
| Source Path | /app/cbl/CBTRN03C.cbl |
| Input | Transaction file (sequential) |
| Output | Validation report, error file |
| Lines of Code | ~800 |
Validation Checks:
| Attribute | Value |
|---|---|
| Function | Account maintenance and cleanup |
| Source Path | /app/cbl/CBACT01C.cbl |
| Input | ACCTDAT (VSAM) |
| Output | Updated ACCTDAT, report |
| Lines of Code | ~900 |
Functions:
| Attribute | Value |
|---|---|
| Function | Reconcile account balances with transactions |
| Source Path | /app/cbl/CBACT02C.cbl |
| Input | ACCTDAT, TRANSACT, TCATBALF |
| Output | Reconciliation report |
| Lines of Code | ~1000 |
Reconciliation:
For each account:
1. Sum all transactions for account
2. Compare with ACCT-CURR-BAL
3. If mismatch:
- Write discrepancy report
- Log details
- Optionally correct
4. Verify category balances
5. Verify cycle totals
| Attribute | Value |
|---|---|
| Function | Generate account summary reports |
| Source Path | /app/cbl/CBACT03C.cbl |
| Input | ACCTDAT, CUSTDAT |
| Output | Formatted reports |
| Lines of Code | ~700 |
Report Types:
| Attribute | Value |
|---|---|
| Function | Calculate monthly interest and fees |
| Source Path | /app/cbl/CBACT04C.cbl |
| Input | TCATBALF, DISCGRP, ACCTDAT |
| Output | SYSTRAN(+1) GDG |
| Lines of Code | ~1400 |
| Processing Time | 5-15 minutes |
Calculation Logic (detailed):
Main-Processing.
OPEN INPUT TCATBALF-FILE
OPEN INPUT DISCGRP-FILE
OPEN INPUT ACCTDAT-FILE
OPEN OUTPUT SYSTRAN-FILE
INITIALIZE TOTALS
SET WS-PREV-ACCT TO SPACES
PERFORM UNTIL END-OF-TCATBALF
READ TCATBALF-FILE
AT END
SET END-OF-TCATBALF TO TRUE
PERFORM PROCESS-ACCOUNT-TOTALS
EXIT PERFORM
END-READ
* Group by account
IF TRANCAT-ACCT-ID NOT = WS-PREV-ACCT
IF WS-PREV-ACCT NOT = SPACES
PERFORM PROCESS-ACCOUNT-TOTALS
END-IF
MOVE TRANCAT-ACCT-ID TO WS-PREV-ACCT
PERFORM GET-ACCOUNT-INFO
PERFORM GET-DISCOUNT-GROUP
INITIALIZE ACCOUNT-TOTALS
END-IF
* Process category
PERFORM CALCULATE-CATEGORY-INTEREST
END-PERFORM
CLOSE ALL FILES
PERFORM WRITE-STATISTICS
STOP RUN
.
Calculate-Category-Interest.
* Build discount group key
MOVE WS-DISCOUNT-GROUP-ID TO DG-ACCT-GROUP-ID
MOVE TRANCAT-TYPE-CD TO DG-TRAN-TYPE-CD
MOVE TRANCAT-CD TO DG-TRAN-CAT-CD
* Read interest rate
READ DISCGRP-FILE
KEY IS DG-GROUP-KEY
INVALID KEY
MOVE 18.00 TO WS-INT-RATE * Default rate
NOT INVALID KEY
MOVE DIS-INT-RATE TO WS-INT-RATE
END-READ
* Calculate interest
COMPUTE WS-MONTHLY-RATE = WS-INT-RATE / 12 / 100
COMPUTE WS-INTEREST-AMT ROUNDED =
TRAN-CAT-BAL * WS-MONTHLY-RATE
* Apply minimum
IF WS-INTEREST-AMT > 0 AND WS-INTEREST-AMT < 1.00
MOVE 1.00 TO WS-INTEREST-AMT
END-IF
* Create interest transaction
IF WS-INTEREST-AMT > 0
PERFORM CREATE-INTEREST-TRANSACTION
ADD WS-INTEREST-AMT TO ACCT-INTEREST-TOTAL
ADD 1 TO ACCT-INTEREST-COUNT
END-IF
* Check for fees
PERFORM CHECK-CATEGORY-FEES
.
Create-Interest-Transaction.
INITIALIZE SYSTRAN-RECORD
* Generate transaction ID
STRING
WS-CURRENT-DATE
WS-CURRENT-TIME
WS-SEQUENCE-NUMBER DELIMITED BY SIZE
INTO SYSTRAN-TRAN-ID
END-STRING
ADD 1 TO WS-SEQUENCE-NUMBER
* Set transaction details
MOVE '05' TO SYSTRAN-TYPE-CD * Interest
MOVE TRANCAT-CD TO SYSTRAN-CAT-CD
MOVE 'SYSTEM' TO SYSTRAN-SOURCE
STRING
'INTEREST CHARGE - '
TRANCAT-TYPE-CD '-' TRANCAT-CD
DELIMITED BY SIZE
INTO SYSTRAN-DESC
END-STRING
MOVE WS-INTEREST-AMT TO SYSTRAN-AMT
MOVE WS-ACCT-CARD-NUM TO SYSTRAN-CARD-NUM
MOVE FUNCTION CURRENT-TIMESTAMP TO SYSTRAN-ORIG-TS
MOVE FUNCTION CURRENT-TIMESTAMP TO SYSTRAN-PROC-TS
* Write to output file
WRITE SYSTRAN-RECORD
INVALID KEY
DISPLAY 'ERROR WRITING SYSTRAN: ' SYSTRAN-TRAN-ID
ADD 1 TO ERROR-COUNT
NOT INVALID KEY
ADD 1 TO TRANS-WRITTEN-COUNT
END-WRITE
.
| Attribute | Value |
|---|---|
| Function | Customer data maintenance |
| Source Path | /app/cbl/CBCUS01C.cbl |
| Input | CUSTDAT (VSAM) |
| Output | Updated CUSTDAT, report |
| Lines of Code | ~600 |
Functions:
| Attribute | Value |
|---|---|
| Function | Generate monthly statements |
| Source Path | /app/cbl/CBSTM03A.cbl |
| Input | ACCTDAT, CUSTDAT, TRANSACT, CARDDAT |
| Output | Statement file (print format) |
| Lines of Code | ~1600 |
| Processing Time | 15-30 minutes |
Statement Sections:
1. Header:
├── Account number
├── Statement date
├── Customer name and address
└── Payment due date
2. Account Summary:
├── Previous balance
├── Payments and credits
├── Purchases
├── Cash advances
├── Fees
├── Interest charges
├── New balance
├── Minimum payment due
├── Credit limit
└── Available credit
3. Payment Information:
├── Payment due date
├── Minimum payment
├── Past due amount (if any)
└── Payment coupon/instructions
4. Transaction Details:
For each transaction:
├── Date
├── Description
├── Reference number
├── Amount
└── Running balance (optional)
5. Interest Calculation Disclosure:
├── Balance subject to interest
├── Interest rate (APR)
├── Interest charged this period
└── Year-to-date interest
6. Fees Summary:
├── Annual fee (if applicable)
├── Late payment fees
├── Over-limit fees
└── Year-to-date fees
7. Year-to-Date Summary:
├── Total purchases
├── Total payments
├── Total interest
├── Total fees
└── Average daily balance
8. Footer:
├── Customer service contact
├── Important disclosures
├── Fraud protection notice
└── Billing rights summary
Print Layout:
01 STATEMENT-LINE.
05 FILLER PIC X(01) VALUE SPACE.
05 STMT-DATA PIC X(130).
05 FILLER PIC X(01) VALUE SPACE.
* Standard print line: 132 characters
* Form feed after each statement
* Page breaks at logical sections
| Attribute | Value |
|---|---|
| Function | Import external data files to VSAM |
| Source Path | /app/cbl/CBIMPORT.cbl |
| Input | Sequential import files |
| Output | Updated VSAM files |
| Lines of Code | ~800 |
Supported Import Types:
Processing:
1. Read import file header (metadata)
2. Validate file format and version
3. For each data record:
a. Parse and validate format
b. Apply business rules
c. Check for duplicates
d. Transform data if needed
e. Write to VSAM file
f. Log results
4. Generate import report:
- Records processed
- Records imported
- Records rejected
- Error details
| Attribute | Value |
|---|---|
| Function | Export VSAM data to sequential files |
| Source Path | /app/cbl/CBEXPORT.cbl |
| Input | VSAM files |
| Output | Sequential export files (CSV/fixed) |
| Lines of Code | ~700 |
Export Formats:
Export Types:
| Mapset | Map Name | Transaction | Screen Purpose |
|---|---|---|---|
| COSGN0 | COSGN0A | CC00 | Login screen |
| COMEN0 | COMEN0A | CM00 | User main menu |
| COADM0 | COADM0A | CA00 | Admin main menu |
| COACTV | COACTVWA | CAVW/CAUP | Account view/update |
| COCRDL | COCRDLIA | CCLI/CCDL | Card list/detail |
| COCRDU | COCRDUPA | CCUP | Card update |
| COTRN0 | COTRN0A | CT00 | Transaction list |
| COTRN1 | COTRN1A | CT01 | Transaction view |
| COTRN2 | COTRN2A | CT02 | Transaction add |
| COUSR0 | COUSR0A | CU00 | User list |
| COUSR1 | COUSR1A | CU01 | User add |
| COUSR2 | COUSR2A | CU02 | User update |
| COUSR3 | COUSR3A | CU03 | User delete |
| COBIL0 | COBIL0A | CB00 | Bill payment |
| CORPT0 | CORPT0A | CR00 | Reports menu |
| COAUTH | COAUTHA | CPVS/CPVD | Authorization view |
| COTRT | COTRTA | CTLI/CTTU | Trans type (DB2) |
Total Maps: 17 mapsets, 17+ individual maps
| Copybook | Purpose | Lines | Used By |
|---|---|---|---|
| CVACT01Y | Account record layout | 80 | All account programs |
| CVCUS01Y | Customer record layout | 120 | Customer programs |
| CVCAR01Y | Card record layout | 60 | Card programs |
| CVTRA01Y | Transaction record layout | 100 | Transaction programs |
| CVTRA02Y | Transaction category balance | 40 | Batch programs |
| CVCRD01Y | Card cross-reference layout | 30 | Card/account programs |
| CVACT02Y | Discount group layout | 50 | Interest programs |
| Copybook | Purpose | Lines | Used By |
|---|---|---|---|
| CSMSG01Y | Common error messages | 100 | All programs |
| CSMSG02Y | BMS attribute definitions | 50 | All online programs |
| CSDAT01Y | Date routines | 80 | All programs |
| CSUTLDTC | Date/time conversion utilities | 120 | All programs |
| CSUSR01Y | User security layout | 40 | Admin programs |
| CSSTRPFY | String processing utilities | 60 | Multiple programs |
| Copybook | Purpose | Size | Used By |
|---|---|---|---|
| COCOM01Y | Standard COMMAREA | 1024 bytes | All CICS programs |
| COUSR00 | User context | 100 bytes | User management |
| COACTV | Account context | 200 bytes | Account programs |
| Job Name | Program | Description | Schedule |
|---|---|---|---|
| CLOSEFIL | - | Close CICS files for batch | 6:00 PM |
| POSTTRAN | CBTRN01C | Post daily transactions | 6:05 PM |
| OPENFIL | - | Reopen CICS files | 6:30 PM |
| PURGAUTH | CBPAUP0C | Purge expired authorizations | 2:00 AM |
| Job Name | Program | Description | Schedule |
|---|---|---|---|
| DISCGRP | - | Refresh discount groups | Sunday 1:00 AM |
| TRANEXTR | TRANEXTR | Extract DB2 to VSAM | Sunday 2:00 AM |
| ACCTRECON | CBACT02C | Account reconciliation | Sunday 3:00 AM |
| Job Name | Program | Description | Schedule |
|---|---|---|---|
| INTCALC | CBACT04C | Interest calculation | 1st, 8:00 PM |
| COMBTRAN | CBTRN02C | Combine transactions | 1st, 9:00 PM |
| CREASTMT | CBSTM03A | Generate statements | 2nd, 1:00 AM |
| DD Name | CICS Name | File | Type | Avg Size |
|---|---|---|---|---|
| ACCTFILE | ACCTDAT | Account master | KSDS | 15 MB |
| CUSTFILE | CUSTDAT | Customer master | KSDS | 25 MB |
| CARDFILE | CARDDAT | Card master | KSDS | 15 MB |
| XREFFILE | CCXREF | Card cross-ref | KSDS | 5 MB |
| TRANFILE | TRANSACT | Transaction master | KSDS | 350 MB |
| TCATFILE | TCATBALF | Category balance | KSDS | 25 MB |
| DISCFILE | DISCGRP | Discount groups | KSDS | 50 KB |
| USECFILE | USRSEC | User security | KSDS | 50 KB |
| DD Name | File | Type | Purpose |
|---|---|---|---|
| DALYTRAN | Daily trans | PS | Daily transaction input |
| SYSTRAN | System trans | GDG | Interest/fee transactions |
| STMTOUT | Statements | PS | Monthly statements |
| RPTOUT | Reports | PS | Report output |
| ERRFILE | Errors | PS | Error logging |
| Component | Type | Purpose |
|---|---|---|
| COTRTLIC | Program | Transaction type list |
| COTRTUPC | Program | Transaction type maintenance |
| COBTUPDT | Batch | Batch type update |
| TRANEXTR | Batch | Extract to VSAM |
| COPAUS2C | Program | Fraud tracking |
DB2 Objects:
| Component | Type | Purpose |
|---|---|---|
| CODATE01 | Program | Date inquiry via MQ |
| COACCT01 | Program | Account inquiry via MQ |
| COPAUA0C | Program | Authorization processor |
MQ Objects:
| Component | Type | Purpose |
|---|---|---|
| COPAUA0C | Program | Store authorization (DL/I) |
| COPAUS0C | Program | View auth summary |
| COPAUS1C | Program | View auth details |
| CBPAUP0C | BMP | Purge expired auths |
IMS Objects:
Total Components: 60+
CICS Programs: 28
├── Core: 16
├── DB2 Extension: 4
├── MQ Extension: 3
└── IMS Extension: 5
Batch Programs: 15
├── Transaction Processing: 3
├── Account Processing: 4
├── Customer Processing: 1
├── Statement: 2
├── Utilities: 2
└── Extensions: 3
BMS Maps: 17 mapsets
Copybooks: 25+
├── Record Layouts: 10
├── Working Storage: 10
└── COMMAREA: 5
JCL Jobs: 47
├── Daily: 15
├── Weekly: 10
├── Monthly: 5
└── Utilities: 17
Files:
├── VSAM: 8 KSDS + 3 AIX
├── DB2 Tables: 3
├── IMS Databases: 2
└── Sequential: 10+
Total LOC: ~28,000
├── CICS Programs: ~18,000
├── Batch Programs: ~10,000
└── Copybooks: Not counted