CardDemo Extended POC 6

Migration COBOL → TypeScript | IMS DLI + VSAM ESDS/RRDS + JCL SORT | Access International — X to Claude
5
Patterns couverts (D3, D4, D9, D11, B3)
1,624
Lignes COBOL source (4 programmes)
~350
Lignes JCL/metadata

Purge Autorisations Expirees

D9 IMS/DLI CBPAUP0C.cbl (386 lignes)
DLI: GN → GNP → DLET → CHKP | Date complement 9s → daysBetween()

Signalement Fraude

D9+D5 COPAUS2C.cbl (244 lignes)
DB2 INSERT → SQLCODE -803 → UPDATE (upsert) | COMMAREA → JSON

Liste Utilisateurs (VSAM Browse)

D3 ESDS + D4 RRDS COUSR00C.cbl (695 lignes)
STARTBR → READNEXT/READPREV → ENDBR | 10 par page | PF7/PF8

Ajout Utilisateur (VSAM Write)

D3 ESDS + D4 RRDS COUSR01C.cbl (299 lignes)
CICS WRITE DATASET(USRSEC) | DUPREC → "already exist"

Rapport Releves (SORT)

D11+B3 SORT/MERGE CREASTMT.JCL STEP010
SORT FIELDS=(card_num,A, tran_id,A) → ORDER BY | OUTREC → SELECT projection

Rapport Journalier (SORT+INCLUDE)

D11+B3 SORT/MERGE TRANREPT.jcl STEP05R
SORT FIELDS + INCLUDE COND=(date,GE,start,AND,date,LE,end) → WHERE BETWEEN + ORDER BY

Table de Mapping — COBOL/Mainframe → TypeScript/SQL

COBOL/MainframeCible TypeScriptPattern
IMS HIDAM (root → child)2 tables relationnelles + FK + CASCADED9
DLI GU (Get Unique)SELECT WHERE key = ?D9
DLI GN (Get Next)SELECT ORDER BY (parcours sequentiel)D9
DLI GNP (Get Next in Parent)SELECT WHERE parent_key = ?D9
DLI DLET (Delete)DELETE WHERE + ON DELETE CASCADED9
DLI CHKP (Checkpoint)D1 batch() — commit transactionD9
DLI SCHD/TERMImplicite (Workers lifecycle)D9
SQLCODE -803 (duplicate)INSERT catch → UPDATE (upsert)D9
Date complement 9sStandard date (inutile en SQL)D9
VSAM ESDS (NONINDEXED)Table + created_at (ordre insertion)D3
VSAM RRDS (NUMBERED)Table + id AUTOINCREMENTD4
CICS STARTBR + READNEXTSELECT LIMIT/OFFSET + ORDER BY ASCD3+D4
CICS READPREVSELECT ORDER BY DESCD3+D4
CICS WRITEINSERT INTOD3+D4
JCL PGM=SORT FIELDSSQL ORDER BYD11+B3
JCL SORT INCLUDESQL WHERE (filtre)D11+B3
JCL SORT OUTRECSQL SELECT (projection)D11+B3