All examples

COBOL Modernization

CARDDEMO — a credit-card mainframe, without the mainframe

AWS's open-source CardDemo is 60,000 lines of COBOL running on CICS/VSAM. VForce360 dispatched the full modernization: the business logic is now Java + Spring Boot, the data is PostgreSQL, and the operator-facing 3270 terminal is pixel-for-pixel the same. Tab still works. F3 still exits. Nothing retrained.

Click into the terminal and type. Tab, Enter, and F3 all work.

----------------------------- CARDDEMO - MAIN MENU -----------------------------
Welcome to CardDemo System
1. Account Inquiry
2. Account Update
3. Transaction List
4. Transaction Detail
Option: _
Ready
F1=Help F3=Exit

Tab=Next Field · Enter=Submit · F3=Exit · F1=Help · Esc=Back

Also live in production

Autonomously deployed at dev.card.vforce360.ai

The VForce360 deployment pipeline — trigger → build → helm → warranty — installed CARD to its own namespace on the cluster. The terminal above and the live deployment share the same ScreenDefinition JSON.

The config that built MAINMENU

Every screen is data — fields, menus, REST endpoints, function keys. Zero per-screen code. Navigate the terminal above and this panel follows along, showing the JSON that produced whichever screen you're looking at.

{
  "screenId": "MAINMENU",
  "title": "CARDDEMO - MAIN MENU",
  "fields": [
    {
      "row": 3,
      "col": 10,
      "label": "Welcome to CardDemo System",
      "name": "_welcome",
      "type": "output",
      "length": 0,
      "bright": true
    },
    {
      "row": 5,
      "col": 10,
      "label": "1. ",
      "name": "_opt1",
      "type": "output",
      "length": 0
    },
    {
      "row": 5,
      "col": 13,
      "label": "Account Inquiry",
      "name": "_lbl1",
      "type": "output",
      "length": 0
    },
    {
      "row": 6,
      "col": 10,
      "label": "2. ",
      "name": "_opt2",
      "type": "output",
      "length": 0
    },
    {
      "row": 6,
      "col": 13,
      "label": "Account Update",
      "name": "_lbl2",
      "type": "output",
      "length": 0
    },
    {
      "row": 7,
      "col": 10,
      "label": "3. ",
      "name": "_opt3",
      "type": "output",
      "length": 0
    },
    {
      "row": 7,
      "col": 13,
      "label": "Transaction List",
      "name": "_lbl3",
      "type": "output",
      "length": 0
    },
    {
      "row": 8,
      "col": 10,
      "label": "4. ",
      "name": "_opt4",
      "type": "output",
      "length": 0
    },
    {
      "row": 8,
      "col": 13,
      "label": "Transaction Detail",
      "name": "_lbl4",
      "type": "output",
      "length": 0
    },
    {
      "row": 10,
      "col": 10,
      "label": "Option: ",
      "name": "option",
      "type": "input",
      "length": 1
    }
  ],
  "menu": {
    "field": "option",
    "targets": {
      "1": "ACCTINQ",
      "2": "ACCTUPD",
      "3": "TRXLIST"
    }
  },
  "functionKeys": {
    "F1": {
      "action": "help",
      "label": "Help"
    },
    "F3": {
      "action": "exit",
      "label": "Exit"
    }
  },
  "statusLine": "Enter option number and press Enter"
}

The original COBOL

CARDDEMO is open source — AWS published it as the canonical sample for mainframe modernization. 60,000 lines of COBOL, CICS transactions, VSAM files, BMS maps, JCL. Every screen you interact with above has a direct COBOL+BMS counterpart in the original codebase.

What the operator sees

Same 80×24 green screen. Same BMS field layout. Same PF-key conventions that every 3270 user already has memorized. The UI is effectively frozen — that's the point.

What we actually replaced

COBOL business logic became Spring Boot services. VSAM files became PostgreSQL tables with proper foreign keys. CICS transactions became REST endpoints. The glue is a thin BMS-to-JSON mapping layer.

How it shipped

Dispatched end-to-end through the orchestration platform: the Product Manager drove discovery, the Lead Engineer designed the cutover, engineers wrote the code with failing tests first, and QA ran a parity suite against the original CARDDEMO.

Why show the terminal?

Mainframe modernization fails when the operators can't keep working. A million bank tellers, state DMV agents, and insurance adjusters have 3270 muscle memory — Tab, F3, Enter is faster than any mouse-driven form. We modernize what's underneath and leave the green screen intact. That's the bet.