• Jobs
  • Support
Sign in
  • Jobs
  • Support
    • Developer Overview
  • Business Context

    • Business Overview
    • Business Rules Summary
    • Business Glossary
  • Architecture Documentation

    • System Architecture
    • Component Catalog
      • Overview
      • 1. CICS Online Programs
      • 2. Batch Programs
      • 3. BMS Map Definitions
      • 4. COBOL Copybooks
      • 5. JCL Jobs
      • 6. File Resources
      • 7. Optional Extension Components
      • Component Statistics Summary
    • Data Flow
    • Database Schema
    • Integration Points
  • Sign in
DocumentationCode Explorer
Loading...
Hypercubic

© Copyright 2025. All rights reserved.

On this page

  1. Overview
  2. 1. CICS Online Programs
  3. 2. Batch Programs
  4. 3. BMS Map Definitions
  5. 4. COBOL Copybooks
  6. 5. JCL Jobs
  7. 6. File Resources
  8. 7. Optional Extension Components
  9. Component Statistics Summary

Component Catalog

Overview

This document provides a comprehensive catalog of all programs, modules, and components in the AWS CardDemo application, organized by functional area with technical specifications.


1. CICS Online Programs

1.1 Core Transaction Programs

COSGN00C - Signon/Authentication

AttributeValue
Transaction IDCC00
FunctionUser authentication and menu dispatch
Source Path/app/cbl/COSGN00C.cbl
MapCOSGN0A
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:

  • Validate user credentials
  • Hash password comparison
  • Set user context in COMMAREA
  • Route to appropriate menu

Error Conditions:

  • Invalid user ID
  • Invalid password
  • File access errors
  • COMMAREA errors

COMEN01C - User Main Menu

AttributeValue
Transaction IDCM00
FunctionDisplay user menu and dispatch to functions
Source Path/app/cbl/COMEN01C.cbl
MapCOMEN0A
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

COADM01C - Admin Main Menu

AttributeValue
Transaction IDCA00
FunctionDisplay admin menu and dispatch
Source Path/app/cbl/COADM01C.cbl
MapCOADM0A
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

1.2 Account Management Programs

COACTVWC - Account View

AttributeValue
Transaction IDCAVW
FunctionDisplay account details with cards
Source Path/app/cbl/COACTVWC.cbl
MapCOACTVWA
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:

  • ACCTDAT (Read, primary key)
  • CUSTDAT (Read, primary key)
  • CCXREF (Browse, alternate index)
  • CARDDAT (Read, primary key)

PF Keys:

  • PF3: Return to menu
  • PF7: Previous card page
  • PF8: Next card page
  • PF12: Cancel

COACTUPC - Account Update

AttributeValue
Transaction IDCAUP
FunctionUpdate account information
Source Path/app/cbl/COACTUPC.cbl
MapCOACTVWA
Lines of Code~800

Updatable Fields:

  • Credit Limit
  • Cash Credit Limit
  • Account Status (Active/Closed)
  • Discount Group ID

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:

  • Field validation errors → redisplay with messages
  • File not found → error message
  • Update collision → retry logic
  • Constraint violations → specific error messages

1.3 Card Management Programs

COCRDLIC - Card List

AttributeValue
Transaction IDCCLI
FunctionDisplay paginated list of cards
Source Path/app/cbl/COCRDLIC.cbl
MapCOCRDLIA
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

COCRDSLC - Card Detail

AttributeValue
Transaction IDCCDL
FunctionDisplay detailed card information
Source Path/app/cbl/COCRDSLC.cbl
MapCOCRDLIA
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

COCRDUPC - Card Update

AttributeValue
Transaction IDCCUP
FunctionUpdate card details
Source Path/app/cbl/COCRDUPC.cbl
MapCOCRDUPA
Lines of Code~750

Updatable Fields:

  • Embossed Name (50 chars)
  • Expiration Date (YYYY-MM-DD)
  • Status (A/C/S)

Special Functions:

  • Report Lost/Stolen
  • Request Replacement
  • Change PIN (future)

1.4 Transaction Management Programs

COTRN00C - Transaction List

AttributeValue
Transaction IDCT00
FunctionDisplay paginated transaction list
Source Path/app/cbl/COTRN00C.cbl
MapCOTRN0A
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

COTRN01C - Transaction View

AttributeValue
Transaction IDCT01
FunctionDisplay detailed transaction info
Source Path/app/cbl/COTRN01C.cbl
MapCOTRN1A
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

COTRN02C - Transaction Add

AttributeValue
Transaction IDCT02
FunctionManually add transaction
Source Path/app/cbl/COTRN02C.cbl
MapCOTRN2A
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

1.5 User Administration Programs

COUSR00C - User List

AttributeValue
Transaction IDCU00
FunctionDisplay user list with CRUD options
Source Path/app/cbl/COUSR00C.cbl
MapCOUSR0A
Lines of Code~600
AuthorizationAdmin 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

COUSR01C - User Add

AttributeValue
Transaction IDCU01
FunctionAdd new user
Source Path/app/cbl/COUSR01C.cbl
MapCOUSR1A
Lines of Code~550
AuthorizationAdmin 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

COUSR02C - User Update

AttributeValue
Transaction IDCU02
FunctionUpdate existing user
Source Path/app/cbl/COUSR02C.cbl
MapCOUSR2A
Lines of Code~650

Updatable Fields:

  • First Name
  • Last Name
  • User Type (Admin cannot demote self)
  • Password (requires old password)
  • Status (Active/Inactive)

COUSR03C - User Delete

AttributeValue
Transaction IDCU03
FunctionDelete user (with confirmation)
Source Path/app/cbl/COUSR03C.cbl
MapCOUSR3A
Lines of Code~400

Validation:

  • Cannot delete self
  • Cannot delete last admin user
  • Requires confirmation ("Type DELETE to confirm")

1.6 Billing & Reporting Programs

COBIL00C - Bill Payment

AttributeValue
Transaction IDCB00
FunctionProcess payment transactions
Source Path/app/cbl/COBIL00C.cbl
MapCOBIL0A
Lines of Code~800

Payment Types:

  • Minimum Payment
  • Current Balance
  • Custom Amount
  • Auto-pay Setup (future)

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

CORPT00C - Reports Menu

AttributeValue
Transaction IDCR00
FunctionDisplay and generate reports
Source Path/app/cbl/CORPT00C.cbl
MapCORPT0A
Lines of Code~500

Available Reports:

  • Account Summary Report
  • Transaction History Report
  • Card Activity Report
  • Customer Statement
  • Year-End Summary

2. Batch Programs

2.1 Transaction Processing Programs

CBTRN01C - Daily Transaction Posting

AttributeValue
FunctionPost daily transactions to master file
Source Path/app/cbl/CBTRN01C.cbl
InputDALYTRAN (Sequential)
OutputTRANSACT (VSAM), updated ACCTDAT, TCATBALF
Lines of Code~1200
Processing Time2-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'
    .

CBTRN02C - Transaction Combine

AttributeValue
FunctionCombine multiple transaction files
Source Path/app/cbl/CBTRN02C.cbl
InputMultiple transaction files
OutputCombined transaction file
Lines of Code~600

Purpose: Merge transactions from multiple sources before posting


CBTRN03C - Transaction Validation

AttributeValue
FunctionPre-validate transaction file
Source Path/app/cbl/CBTRN03C.cbl
InputTransaction file (sequential)
OutputValidation report, error file
Lines of Code~800

Validation Checks:

  • Format validation (field types, lengths)
  • Reference validation (card exists, account exists)
  • Business rule validation (amounts, limits, status)
  • Duplicate detection

2.2 Account Processing Programs

CBACT01C - Account Processing

AttributeValue
FunctionAccount maintenance and cleanup
Source Path/app/cbl/CBACT01C.cbl
InputACCTDAT (VSAM)
OutputUpdated ACCTDAT, report
Lines of Code~900

Functions:

  • Close inactive accounts
  • Update expired accounts
  • Adjust credit limits (annual review)
  • Archive closed accounts

CBACT02C - Account Reconciliation

AttributeValue
FunctionReconcile account balances with transactions
Source Path/app/cbl/CBACT02C.cbl
InputACCTDAT, TRANSACT, TCATBALF
OutputReconciliation 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

CBACT03C - Account Reporting

AttributeValue
FunctionGenerate account summary reports
Source Path/app/cbl/CBACT03C.cbl
InputACCTDAT, CUSTDAT
OutputFormatted reports
Lines of Code~700

Report Types:

  • Account aging report
  • High balance accounts
  • Over-limit accounts
  • Inactive accounts

CBACT04C - Interest Calculation

AttributeValue
FunctionCalculate monthly interest and fees
Source Path/app/cbl/CBACT04C.cbl
InputTCATBALF, DISCGRP, ACCTDAT
OutputSYSTRAN(+1) GDG
Lines of Code~1400
Processing Time5-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
    .

2.3 Customer Processing Programs

CBCUS01C - Customer Processing

AttributeValue
FunctionCustomer data maintenance
Source Path/app/cbl/CBCUS01C.cbl
InputCUSTDAT (VSAM)
OutputUpdated CUSTDAT, report
Lines of Code~600

Functions:

  • Update customer addresses (bulk)
  • Merge duplicate customers
  • Update FICO scores
  • Data quality checks

2.4 Statement Programs

CBSTM03A - Statement Generation

AttributeValue
FunctionGenerate monthly statements
Source Path/app/cbl/CBSTM03A.cbl
InputACCTDAT, CUSTDAT, TRANSACT, CARDDAT
OutputStatement file (print format)
Lines of Code~1600
Processing Time15-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

2.5 Utility Programs

CBIMPORT - Data Import

AttributeValue
FunctionImport external data files to VSAM
Source Path/app/cbl/CBIMPORT.cbl
InputSequential import files
OutputUpdated VSAM files
Lines of Code~800

Supported Import Types:

  • Customer data (new customers)
  • Account data (new accounts)
  • Card data (new cards)
  • Transaction data (external transactions)

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

CBEXPORT - Data Export

AttributeValue
FunctionExport VSAM data to sequential files
Source Path/app/cbl/CBEXPORT.cbl
InputVSAM files
OutputSequential export files (CSV/fixed)
Lines of Code~700

Export Formats:

  • CSV (comma-separated values)
  • Fixed-length records
  • XML (via copybook mapping)
  • JSON (via copybook mapping)

Export Types:

  • Full extract (all records)
  • Incremental (changed records)
  • Filtered (selection criteria)

3. BMS Map Definitions

Map Inventory

MapsetMap NameTransactionScreen Purpose
COSGN0COSGN0ACC00Login screen
COMEN0COMEN0ACM00User main menu
COADM0COADM0ACA00Admin main menu
COACTVCOACTVWACAVW/CAUPAccount view/update
COCRDLCOCRDLIACCLI/CCDLCard list/detail
COCRDUCOCRDUPACCUPCard update
COTRN0COTRN0ACT00Transaction list
COTRN1COTRN1ACT01Transaction view
COTRN2COTRN2ACT02Transaction add
COUSR0COUSR0ACU00User list
COUSR1COUSR1ACU01User add
COUSR2COUSR2ACU02User update
COUSR3COUSR3ACU03User delete
COBIL0COBIL0ACB00Bill payment
CORPT0CORPT0ACR00Reports menu
COAUTHCOAUTHACPVS/CPVDAuthorization view
COTRTCOTRTACTLI/CTTUTrans type (DB2)

Total Maps: 17 mapsets, 17+ individual maps


4. COBOL Copybooks

4.1 Data Structure Copybooks

CopybookPurposeLinesUsed By
CVACT01YAccount record layout80All account programs
CVCUS01YCustomer record layout120Customer programs
CVCAR01YCard record layout60Card programs
CVTRA01YTransaction record layout100Transaction programs
CVTRA02YTransaction category balance40Batch programs
CVCRD01YCard cross-reference layout30Card/account programs
CVACT02YDiscount group layout50Interest programs

4.2 Working Storage Copybooks

CopybookPurposeLinesUsed By
CSMSG01YCommon error messages100All programs
CSMSG02YBMS attribute definitions50All online programs
CSDAT01YDate routines80All programs
CSUTLDTCDate/time conversion utilities120All programs
CSUSR01YUser security layout40Admin programs
CSSTRPFYString processing utilities60Multiple programs

4.3 COMMAREA Definitions

CopybookPurposeSizeUsed By
COCOM01YStandard COMMAREA1024 bytesAll CICS programs
COUSR00User context100 bytesUser management
COACTVAccount context200 bytesAccount programs

5. JCL Jobs

5.1 Daily Jobs

Job NameProgramDescriptionSchedule
CLOSEFIL-Close CICS files for batch6:00 PM
POSTTRANCBTRN01CPost daily transactions6:05 PM
OPENFIL-Reopen CICS files6:30 PM
PURGAUTHCBPAUP0CPurge expired authorizations2:00 AM

5.2 Weekly Jobs

Job NameProgramDescriptionSchedule
DISCGRP-Refresh discount groupsSunday 1:00 AM
TRANEXTRTRANEXTRExtract DB2 to VSAMSunday 2:00 AM
ACCTRECONCBACT02CAccount reconciliationSunday 3:00 AM

5.3 Monthly Jobs

Job NameProgramDescriptionSchedule
INTCALCCBACT04CInterest calculation1st, 8:00 PM
COMBTRANCBTRN02CCombine transactions1st, 9:00 PM
CREASTMTCBSTM03AGenerate statements2nd, 1:00 AM

6. File Resources

6.1 VSAM File Inventory

DD NameCICS NameFileTypeAvg Size
ACCTFILEACCTDATAccount masterKSDS15 MB
CUSTFILECUSTDATCustomer masterKSDS25 MB
CARDFILECARDDATCard masterKSDS15 MB
XREFFILECCXREFCard cross-refKSDS5 MB
TRANFILETRANSACTTransaction masterKSDS350 MB
TCATFILETCATBALFCategory balanceKSDS25 MB
DISCFILEDISCGRPDiscount groupsKSDS50 KB
USECFILEUSRSECUser securityKSDS50 KB

6.2 Sequential Files

DD NameFileTypePurpose
DALYTRANDaily transPSDaily transaction input
SYSTRANSystem transGDGInterest/fee transactions
STMTOUTStatementsPSMonthly statements
RPTOUTReportsPSReport output
ERRFILEErrorsPSError logging

7. Optional Extension Components

7.1 DB2 Extension

ComponentTypePurpose
COTRTLICProgramTransaction type list
COTRTUPCProgramTransaction type maintenance
COBTUPDTBatchBatch type update
TRANEXTRBatchExtract to VSAM
COPAUS2CProgramFraud tracking

DB2 Objects:

  • Tables: TRANSACTION_TYPE, TRANSACTION_TYPE_CATEGORY, AUTHFRDS
  • Indexes: XTRAN_TYPE, X_TRAN_TYPE_CATG, XAUTHFRD
  • Plans: DB201PLN
  • DBRMs: Pre-compiled SQL modules

7.2 MQ Extension

ComponentTypePurpose
CODATE01ProgramDate inquiry via MQ
COACCT01ProgramAccount inquiry via MQ
COPAUA0CProgramAuthorization processor

MQ Objects:

  • Queues: PAUTH.REQUEST, PAUTH.REPLY, REQUEST.QUEUE, RESPONSE.QUEUE
  • Queue Manager: CardDemo QM
  • Channels: CardDemo channels

7.3 IMS Extension

ComponentTypePurpose
COPAUA0CProgramStore authorization (DL/I)
COPAUS0CProgramView auth summary
COPAUS1CProgramView auth details
CBPAUP0CBMPPurge expired auths

IMS Objects:

  • Databases: DBPAUTP0 (HIDAM), DBPAUTX0 (Index)
  • Segments: PAUTSUM0 (root), PAUTDTL1 (child)
  • PSBs: PSBPAUTB (batch), PSBPAUTL (online)
  • DBDs: Authorization database definitions

Component Statistics Summary

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

Was this page helpful?