Source-derived document; review findings and open questions with the application owner.
Journeys and State Machines
In this document
Scope and interpretation
The evidence describes intended journeys and transition points across a partially reconstructed CardDemo mainframe system. It does not establish successful execution, complete sequencing, semantic completeness, deployment consistency, or production behavior. The journeys below therefore distinguish observed behavior from inference and unresolved states. E0001 E0010 E0017 E0018 E0020 E0021
Online sign-on and routing
Observed journey
- A user initiates sign-on through the `CC00` login transaction, which invokes `COSGN00C`. E0034 E0038
- `COSGN00C` validates credentials and routes an `ADMIN` user through `XCTL` to `COADM01C`. E0034
- Validated non-`ADMIN` credentials route through `XCTL` to `COMEN01C`. E0034
- Security-related artifacts include `USRSEC`, RACF, and `DUSRSECJ`; the evidence does not establish how authorization is enforced after routing. E0016 E0032 E0036
State machine
- Start: The user enters the login journey through `CC00`. E0038
- Validation: `COSGN00C` evaluates the supplied credentials. E0034
- Accepted administrator: The flow routes to `COADM01C` through `XCTL`. E0034
- Accepted regular user: The flow routes to `COMEN01C` through `XCTL`. E0034
- Rejected or failed validation: A rejection state is identified generally, but its message, retry policy, logging, and terminal destination are unknown. E0015 E0017 E0034
Inference: Validation appears intended to separate authenticated administrative and non-administrative processing, but ownership of the decision and the effective permission model are unknown. E0026 E0034 E0036
Account inquiry and payment
Observed journey
- Account view is associated with `COACTVWC`, which retrieves and displays account and customer details. E0001 E0002
- Account update is associated with `COACTUPC`. E0001 E0002
- The payment program `COBIL00C.cbl` uses `ACCTDAT` for account lookup and balance validation. E0029
- The account-payment journey includes confirmation before processing, although the precise screen map, commarea, and commit behavior are not established. E0029 E0030
- Validated transaction input is written by `COTRN02C.cbl` to the `TRANSACT` file; failed validations are written to `DALYREJS`. E0007 E0008
State machine
- Entry: The user selects inquiry, maintenance, or payment. E0002 E0029
- Lookup: Account information is read from the relevant data source. E0020 E0021 E0029
- Validation: Account existence, balance, dates, or other payment constraints are evaluated. E0011 E0013 E0029
- Confirmation: The payment awaits user confirmation before submission. E0030
- Accepted: Validated input is written to the transaction file. E0007
- Rejected: Failed validation is recorded in `DALYREJS`; the user-facing recovery path is unknown. E0008 E0015
- Concurrent or partial update: Concurrent update, error, and abend states are identified, but locking, rollback, and atomicity are unresolved. E0018 E0045
Administrative user management
Observed journey
- The administrative route leads to `COADM01C`, where decisions include add, update, delete, and view or list operations. E0034 E0022
- `COUSR01C.cbl` writes a new record to `USRSEC`; `COUSR02C.cbl` reads and rewrites a record; `COUSR03C.cbl` reads and deletes a record. E0017
- Validation, confirmation, acceptance, rejection, and cancellation are observed states, but the complete administrative screen sequence is not established. E0015 E0017
State machine
- Request: An administrator selects an operation. E0022 E0028
- Validate: Input and applicable credentials or record conditions are checked. E0017 E0026
- Confirm: The operation may require confirmation before mutation. E0015 E0030
- Commit operation: Add writes, update rewrites, and delete removes a `USRSEC` record. E0017
- Reject or cancel: The request can be rejected or cancelled, but return codes and recovery behavior are unknown. E0015 E0042
- Duplicate or referential conflict: Duplicate-key update and referential-integrity constraints are identified; their user-visible handling is unknown. E0011 E0017
Batch posting, reporting, and file processing
Observed journeys
- A monthly flow includes `WAITSTEP` triggering `OPENFIL`; scheduling, waits, reruns, and batch posting are described without an established end-to-end outcome. E0031 E0044
- `CORPT00C` submits batch jobs by writing JCL records to an extra-partition TDQ. E0025
- `TRANREPT.prc` invokes `REPROC.prc` for reporting. E0042
- `CBSTM03B.CBL` opens, reads, and closes `TRNXFILE`. E0024
- `REPRO` reads from `FILEIN` and writes to `FILEOUT`; the evidence does not establish whether this is a production journey or an isolated utility operation. E0046
State machine
- Scheduled or submitted: A scheduler or program initiates work. E0025 E0031 E0044
- Waiting: The flow pauses at a wait or trigger boundary. E0031 E0041
- Opening: A batch program opens the required file. E0024
- Processing: Records are read, posted, sorted, or reported. E0024 E0042
- End-of-file: End-of-file is an observed state; post-EOF handling is unknown. E0015
- Complete, error, or abend: Completion, error, and abend states are identified, but restart, rollback, alerting, and rerun semantics are unknown. E0015 E0045
Build, migration, backup, and deployment
Observed journeys
- Batch, online, DB2, and BMS compilation are initiated through `BATCMP.jcl`, `CICCMP.jcl`, `CICDBCMP.jcl`, and `BMSCMP.jcl`; `NEWCOPY` is disputed for online compilation but stated for BMS processing. E0026 E0027
- `CSUTLDTC.cbl` invokes the `CEEDAYS` API for date conversion. E0035
- Migration and unload activities include `UNLDPADB.JCL` invoking `PAUDBUNL`, while backup and generation-increment states are identified without a complete restoration path. E0006 E0045
- `CARDDEMO` is described as deployed within a CICS region, but deployment remains unverified. E0018
State machine
- Source or artifact selection: A build, migration, backup, or deployment activity is selected. E0026 E0027
- Generation: Compilation, BMS processing, unload, or backup produces an artifact or data generation. E0006 E0027 E0045
- Deployment or replacement: An artifact may be deployed or replaced; version alignment and replacement safety are unknown. E0018 E0026
- Failure: Compile errors, critical VSAM errors, ineffective conditions, and abends are possible hazards, not confirmed incidents. E0006 E0026 E0045
- Recovery: Restoration, restart points, and disaster-recovery behavior are unknown. E0039 E0045
Cross-cutting unknowns
Unknown: The evidence does not establish complete lifecycle state machines, exact screen and map sequencing, commarea contracts, transaction boundaries, return-code semantics, locking, rollback, restartability, or successful end-to-end execution. E0001 E0003 E0015 E0018 E0039 E0045
Unknown: The evidence does not establish whether all online, batch, VSAM, DB2, IMS, MQ, scheduler, and reporting artifacts execute together, nor whether named source artifacts match deployed versions. E0002 E0003 E0018 E0023 E0037 E0047
Harten analysis of AWS Samples CardDemo, a public demonstration application. The retained source content matches AWS revision 59cc6c2fd7ebd7ef7925cad552a01a4b8b6e4d5e. The documents describe source analysis and a proposed modernisation plan, not an implemented migration. No AWS endorsement is implied.
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. Apache 2.0 source licence · Amazon notice. Read the case study and source measurement.