π
← Back to Categories
CCISCOM Sequence (US Train)
Objective: This COBOL program serves as a data conversion utility that transforms communication areas between two different system interface table (SIT) versions - CCCOM and ISCOM formats. The program provides bidirectional conversion functionality, allowing calls to and from SIT V1 modules by mapping database PCB (Program Communication Block) addresses and common area data between the two interface formats.
πΊοΈ High-Level Visual Map
flowchart TD
A[Program Start]:::start
B{ISCOM Version Already Set?}:::decision
C[1:Version Check and Data Transfer]:::process
D[2:ISCOM Initialization]:::process
E[3:Cross-Reference Address Setup]:::process
F[4:PCB Transfer]:::process
G[5:Database Name Scanning]:::process
H[6:PCB Number Processing]:::process
I[7:Database Name Matching]:::process
J[8:PCB Counter Management]:::process
K[9:PCB Address Mapping]:::process
L[Program End - Forward Conversion]:::final
M[Reverse Conversion Entry Point]:::start
N{CCCOM Version Already Set?}:::decision
O[10:Reverse Conversion Version Check]:::process
P[11:Reverse Data Transfer]:::process
Q[12:Reverse PCB Transfer]:::process
R[13:Active PCB Identification]:::process
S[14:PCB Sequence Numbering]:::process
T[15:Database Entry Creation]:::process
U[16:Reverse PCB Address Mapping]:::process
V[17:Database Number Assignment]:::process
W[Program End - Reverse Conversion]:::final
CCCOM[(CCCOM Structure)]:::datasource
ISCOM[(ISCOM Structure)]:::datasource
A --> B
B -->|Yes| C
B -->|No| D
C --> L
D --> E
E --> F
F --> G
G --> H
H --> I
I --> J
J --> K
K --> L
M --> N
N -->|Yes| O
N -->|No| P
O --> W
P --> Q
Q --> R
R --> S
S --> T
T --> U
U --> V
V --> W
CCCOM -.->|Read Data| C
CCCOM -.->|Read Data| D
CCCOM -.->|Read PCB Info| F
CCCOM -.->|Read DB Names| G
CCCOM -.->|Read PCB Numbers| H
CCCOM -.->|Read DB Names| I
CCCOM -.->|Read PCB Addresses| K
ISCOM -.->|Write Data| C
ISCOM -.->|Initialize| D
ISCOM -.->|Write PCB Info| F
ISCOM -.->|Write DB Names| I
ISCOM -.->|Write PCB Counter| J
ISCOM -.->|Write PCB Addresses| K
ISCOM -.->|Read Data| O
ISCOM -.->|Read Data| P
ISCOM -.->|Read PCB Info| Q
ISCOM -.->|Read PCB Addresses| R
ISCOM -.->|Read DB Names| S
ISCOM -.->|Read PCB Addresses| U
CCCOM -.->|Write Data| O
CCCOM -.->|Write Data| P
CCCOM -.->|Write PCB Info| Q
CCCOM -.->|Write DB Names| T
CCCOM -.->|Write PCB Addresses| U
CCCOM -.->|Write DB Numbers| V
classDef start fill:#67A353
classDef process fill:#08AAD2
classDef decision fill:#FFE347
classDef datasource fill:#2EA597
classDef final fill:#D13313
π Step-by-Step Logic Trace
β Consolidated Acceptance Criteria
- The SIT version in ISCOM matches the working storage ISCOM version → copy common area from CCCOM to ISCOM and update ISCOM SIT version to working storage version
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_1VersionCheckandDataTransfer(["Start Step"])
E_1VersionCheckandDataTransfer(["End Step"])
N_1VersionCheckandDataTransfer_Node0{"The SIT version in ISCOM matches
the working storage ISCOM version"}:::decision N_1VersionCheckandDataTransfer_Node0_action["Copy common area from CCCOM to
ISCOM and update ISCOM SIT version
to working storage version"]:::main N_1VersionCheckandDataTransfer_Node0 -- Yes --> N_1VersionCheckandDataTransfer_Node0_action N_1VersionCheckandDataTransfer_Node0_action --> E_1VersionCheckandDataTransfer S_1VersionCheckandDataTransfer --> N_1VersionCheckandDataTransfer_Node0 N_1VersionCheckandDataTransfer_Node0 -- No --> E_1VersionCheckandDataTransfer
the working storage ISCOM version"}:::decision N_1VersionCheckandDataTransfer_Node0_action["Copy common area from CCCOM to
ISCOM and update ISCOM SIT version
to working storage version"]:::main N_1VersionCheckandDataTransfer_Node0 -- Yes --> N_1VersionCheckandDataTransfer_Node0_action N_1VersionCheckandDataTransfer_Node0_action --> E_1VersionCheckandDataTransfer S_1VersionCheckandDataTransfer --> N_1VersionCheckandDataTransfer_Node0 N_1VersionCheckandDataTransfer_Node0 -- No --> E_1VersionCheckandDataTransfer
File: CCISCOM.cbl
GIVEN:
ISCOM structure exists with a SIT version field and CCCOM structure contains common area data
WHEN:
The SIT version in ISCOM matches the working storage ISCOM version
THEN:
- Copy common area from cccom to iscom
- Update iscom sit version to working storage version
β Consolidated Acceptance Criteria
- The SIT version in ISCOM does not match the working storage ISCOM version → initialize ISCOM with default values from ISCOMVAL, copy common area from CCCOM, and update SIT version
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_2ISCOMInitialization(["Start Step"])
E_2ISCOMInitialization(["End Step"])
N_2ISCOMInitialization_Node0{"The SIT version in ISCOM does not
match the working storage ISCOM
version"}:::decision N_2ISCOMInitialization_Node0_action["Initialize ISCOM with default
values from ISCOMVAL, copy common
area from CCCOM, and update SIT
version"]:::main N_2ISCOMInitialization_Node0 -- Yes --> N_2ISCOMInitialization_Node0_action N_2ISCOMInitialization_Node0_action --> E_2ISCOMInitialization S_2ISCOMInitialization --> N_2ISCOMInitialization_Node0 N_2ISCOMInitialization_Node0 -- No --> E_2ISCOMInitialization
match the working storage ISCOM
version"}:::decision N_2ISCOMInitialization_Node0_action["Initialize ISCOM with default
values from ISCOMVAL, copy common
area from CCCOM, and update SIT
version"]:::main N_2ISCOMInitialization_Node0 -- Yes --> N_2ISCOMInitialization_Node0_action N_2ISCOMInitialization_Node0_action --> E_2ISCOMInitialization S_2ISCOMInitialization --> N_2ISCOMInitialization_Node0 N_2ISCOMInitialization_Node0 -- No --> E_2ISCOMInitialization
File: CCISCOM.cbl
Exclusion / Alternative Path
GIVEN:
ISCOM structure exists with incompatible SIT version and CCCOM structure contains source data
WHEN:
The SIT version in ISCOM does not match the working storage ISCOM version
THEN:
Initialize ISCOM with default values from ISCOMVAL, copy common area from CCCOM, and update SIT version
β Consolidated Acceptance Criteria
- ISCOM version mismatch triggers full initialization process → set CCCOM address in ISCOM structure and set ISCOM address in CCCOM structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_3CrossReferenceAddressSetup(["Start Step"])
E_3CrossReferenceAddressSetup(["End Step"])
N_3CrossReferenceAddressSetup_Node0{"ISCOM version mismatch triggers
full initialization process"}:::decision N_3CrossReferenceAddressSetup_Node0_action["Set CCCOM address in ISCOM
structure and set ISCOM address in
CCCOM structure"]:::main N_3CrossReferenceAddressSetup_Node0 -- Yes --> N_3CrossReferenceAddressSetup_Node0_action N_3CrossReferenceAddressSetup_Node0_action --> E_3CrossReferenceAddressSetup S_3CrossReferenceAddressSetup --> N_3CrossReferenceAddressSetup_Node0 N_3CrossReferenceAddressSetup_Node0 -- No --> E_3CrossReferenceAddressSetup
full initialization process"}:::decision N_3CrossReferenceAddressSetup_Node0_action["Set CCCOM address in ISCOM
structure and set ISCOM address in
CCCOM structure"]:::main N_3CrossReferenceAddressSetup_Node0 -- Yes --> N_3CrossReferenceAddressSetup_Node0_action N_3CrossReferenceAddressSetup_Node0_action --> E_3CrossReferenceAddressSetup S_3CrossReferenceAddressSetup --> N_3CrossReferenceAddressSetup_Node0 N_3CrossReferenceAddressSetup_Node0 -- No --> E_3CrossReferenceAddressSetup
File: CCISCOM.cbl
GIVEN:
CCCOM and ISCOM structures require cross-referencing for communication
WHEN:
ISCOM version mismatch triggers full initialization process
THEN:
- Set cccom address in iscom structure
- Set iscom address in cccom structure
β Consolidated Acceptance Criteria
- Full ISCOM initialization is required due to version mismatch → copy LT-PCBS data from CCCOM to ISCOM structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_4PCBTransfer(["Start Step"])
E_4PCBTransfer(["End Step"])
N_4PCBTransfer_Node0{"Full ISCOM initialization is
required due to version mismatch"}:::decision N_4PCBTransfer_Node0_action["Copy LT-PCBS data from CCCOM to
ISCOM structure"]:::main N_4PCBTransfer_Node0 -- Yes --> N_4PCBTransfer_Node0_action N_4PCBTransfer_Node0_action --> E_4PCBTransfer S_4PCBTransfer --> N_4PCBTransfer_Node0 N_4PCBTransfer_Node0 -- No --> E_4PCBTransfer
required due to version mismatch"}:::decision N_4PCBTransfer_Node0_action["Copy LT-PCBS data from CCCOM to
ISCOM structure"]:::main N_4PCBTransfer_Node0 -- Yes --> N_4PCBTransfer_Node0_action N_4PCBTransfer_Node0_action --> E_4PCBTransfer S_4PCBTransfer --> N_4PCBTransfer_Node0 N_4PCBTransfer_Node0 -- No --> E_4PCBTransfer
File: CCISCOM.cbl
GIVEN:
CCCOM contains LT-PCBS information and ISCOM requires PCB data
WHEN:
Full ISCOM initialization is required due to version mismatch
THEN:
Copy LT-PCBS data from CCCOM to ISCOM structure
β Consolidated Acceptance Criteria
- Database address scanning is initiated during ISCOM initialization → process each CCCOM entry from position 1 until reaching table size limit or finding empty database name
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_5DatabaseNameScanning(["Start Step"])
E_5DatabaseNameScanning(["End Step"])
N_5DatabaseNameScanning_Node0{"Database address scanning is
initiated during ISCOM
initialization"}:::decision N_5DatabaseNameScanning_Node0_action["Process each CCCOM entry from
position 1 until reaching table size
limit or finding empty database name"]:::main N_5DatabaseNameScanning_Node0 -- Yes --> N_5DatabaseNameScanning_Node0_action N_5DatabaseNameScanning_Node0_action --> E_5DatabaseNameScanning S_5DatabaseNameScanning --> N_5DatabaseNameScanning_Node0 N_5DatabaseNameScanning_Node0 -- No --> E_5DatabaseNameScanning
initiated during ISCOM
initialization"}:::decision N_5DatabaseNameScanning_Node0_action["Process each CCCOM entry from
position 1 until reaching table size
limit or finding empty database name"]:::main N_5DatabaseNameScanning_Node0 -- Yes --> N_5DatabaseNameScanning_Node0_action N_5DatabaseNameScanning_Node0_action --> E_5DatabaseNameScanning S_5DatabaseNameScanning --> N_5DatabaseNameScanning_Node0 N_5DatabaseNameScanning_Node0 -- No --> E_5DatabaseNameScanning
File: CCISCOM.cbl
GIVEN:
CCCOM table contains database entries with names and CCCOM-TABLE-SIZE defines maximum entries
WHEN:
Database address scanning is initiated during ISCOM initialization
THEN:
Process each CCCOM entry from position 1 until reaching table size limit or finding empty database name
β Consolidated Acceptance Criteria
- Processing a CCCOM database entry during scanning → initialize ISCOM PCB number to zero, copy database number from CCCOM, and if database number is spaces then set CCCOM PCB number to '1'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_6PCBNumberProcessing(["Start Step"])
E_6PCBNumberProcessing(["End Step"])
N_6PCBNumberProcessing_Node0{"Processing a CCCOM database entry
during scanning"}:::decision N_6PCBNumberProcessing_Node0_action["Initialize ISCOM PCB number to
zero, copy database number from
CCCOM, and if database number is
spaces then set CCCOM PCB number to
1"]:::main N_6PCBNumberProcessing_Node0 -- Yes --> N_6PCBNumberProcessing_Node0_action N_6PCBNumberProcessing_Node0_action --> E_6PCBNumberProcessing S_6PCBNumberProcessing --> N_6PCBNumberProcessing_Node0 N_6PCBNumberProcessing_Node0 -- No --> E_6PCBNumberProcessing
during scanning"}:::decision N_6PCBNumberProcessing_Node0_action["Initialize ISCOM PCB number to
zero, copy database number from
CCCOM, and if database number is
spaces then set CCCOM PCB number to
1"]:::main N_6PCBNumberProcessing_Node0 -- Yes --> N_6PCBNumberProcessing_Node0_action N_6PCBNumberProcessing_Node0_action --> E_6PCBNumberProcessing S_6PCBNumberProcessing --> N_6PCBNumberProcessing_Node0 N_6PCBNumberProcessing_Node0 -- No --> E_6PCBNumberProcessing
File: CCISCOM.cbl
GIVEN:
CCCOM entry contains database number field that may be empty or contain spaces
WHEN:
Processing a CCCOM database entry during scanning
THEN:
Initialize ISCOM PCB number to zero, copy database number from CCCOM, and if database number is spaces then set CCCOM PCB number to '1'
β Consolidated Acceptance Criteria
- Scanning ISCOM table for matching database names during address mapping → process each ISCOM entry from position 1 until reaching table size limit or finding empty database name
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_7DatabaseNameMatching(["Start Step"])
E_7DatabaseNameMatching(["End Step"])
N_7DatabaseNameMatching_Node0{"Scanning ISCOM table for matching
database names during address
mapping"}:::decision N_7DatabaseNameMatching_Node0_action["Process each ISCOM entry from
position 1 until reaching table size
limit or finding empty database name"]:::main N_7DatabaseNameMatching_Node0 -- Yes --> N_7DatabaseNameMatching_Node0_action N_7DatabaseNameMatching_Node0_action --> E_7DatabaseNameMatching S_7DatabaseNameMatching --> N_7DatabaseNameMatching_Node0 N_7DatabaseNameMatching_Node0 -- No --> E_7DatabaseNameMatching
database names during address
mapping"}:::decision N_7DatabaseNameMatching_Node0_action["Process each ISCOM entry from
position 1 until reaching table size
limit or finding empty database name"]:::main N_7DatabaseNameMatching_Node0 -- Yes --> N_7DatabaseNameMatching_Node0_action N_7DatabaseNameMatching_Node0_action --> E_7DatabaseNameMatching S_7DatabaseNameMatching --> N_7DatabaseNameMatching_Node0 N_7DatabaseNameMatching_Node0 -- No --> E_7DatabaseNameMatching
File: CCISCOM.cbl
GIVEN:
CCCOM entry has database name and ISCOM table contains database entries with names
WHEN:
Scanning ISCOM table for matching database names during address mapping
THEN:
Process each ISCOM entry from position 1 until reaching table size limit or finding empty database name
β Consolidated Acceptance Criteria
- Database names are identical between CCCOM entry and ISCOM entry → increment ISCOM PCB number by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_8PCBCounterManagement(["Start Step"])
E_8PCBCounterManagement(["End Step"])
N_8PCBCounterManagement_Node0{"Database names are identical
between CCCOM entry and ISCOM entry"}:::decision N_8PCBCounterManagement_Node0_action["Increment ISCOM PCB number by 1"]:::main N_8PCBCounterManagement_Node0 -- Yes --> N_8PCBCounterManagement_Node0_action N_8PCBCounterManagement_Node0_action --> E_8PCBCounterManagement S_8PCBCounterManagement --> N_8PCBCounterManagement_Node0 N_8PCBCounterManagement_Node0 -- No --> E_8PCBCounterManagement
between CCCOM entry and ISCOM entry"}:::decision N_8PCBCounterManagement_Node0_action["Increment ISCOM PCB number by 1"]:::main N_8PCBCounterManagement_Node0 -- Yes --> N_8PCBCounterManagement_Node0_action N_8PCBCounterManagement_Node0_action --> E_8PCBCounterManagement S_8PCBCounterManagement --> N_8PCBCounterManagement_Node0 N_8PCBCounterManagement_Node0 -- No --> E_8PCBCounterManagement
File: CCISCOM.cbl
GIVEN:
CCCOM database name matches ISCOM database name during scanning process
WHEN:
- Database names are identical between cccom entry
- Iscom entry
THEN:
Increment ISCOM PCB number by 1
β Consolidated Acceptance Criteria
- PCB numbers match after incrementing ISCOM PCB counter → set PCB address in ISCOM entry to match PCB address from corresponding CCCOM entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_9PCBAddressMapping(["Start Step"])
E_9PCBAddressMapping(["End Step"])
N_9PCBAddressMapping_Node0{"PCB numbers match after
incrementing ISCOM PCB counter"}:::decision N_9PCBAddressMapping_Node0_action["Set PCB address in ISCOM entry to
match PCB address from corresponding
CCCOM entry"]:::main N_9PCBAddressMapping_Node0 -- Yes --> N_9PCBAddressMapping_Node0_action N_9PCBAddressMapping_Node0_action --> E_9PCBAddressMapping S_9PCBAddressMapping --> N_9PCBAddressMapping_Node0 N_9PCBAddressMapping_Node0 -- No --> E_9PCBAddressMapping
incrementing ISCOM PCB counter"}:::decision N_9PCBAddressMapping_Node0_action["Set PCB address in ISCOM entry to
match PCB address from corresponding
CCCOM entry"]:::main N_9PCBAddressMapping_Node0 -- Yes --> N_9PCBAddressMapping_Node0_action N_9PCBAddressMapping_Node0_action --> E_9PCBAddressMapping S_9PCBAddressMapping --> N_9PCBAddressMapping_Node0 N_9PCBAddressMapping_Node0 -- No --> E_9PCBAddressMapping
File: CCISCOM.cbl
GIVEN:
ISCOM PCB number equals CCCOM PCB number for matching database names
WHEN:
PCB numbers match after incrementing ISCOM PCB counter
THEN:
Set PCB address in ISCOM entry to match PCB address from corresponding CCCOM entry
β Consolidated Acceptance Criteria
- Reverse conversion entry point is accessed and CCCOM SIT version matches working storage CCCOM version → copy common area from ISCOM to CCCOM and update CCCOM SIT version to working storage version
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_10ReverseConversionVersionCheck(["Start Step"])
E_10ReverseConversionVersionCheck(["End Step"])
N_10ReverseConversionVersionCheck_Node0{"Reverse conversion entry point is
accessed and CCCOM SIT version
matches working storage CCCOM
version"}:::decision N_10ReverseConversionVersionCheck_Node0_action["Copy common area from ISCOM to
CCCOM and update CCCOM SIT version
to working storage version"]:::main N_10ReverseConversionVersionCheck_Node0 -- Yes --> N_10ReverseConversionVersionCheck_Node0_action N_10ReverseConversionVersionCheck_Node0_action --> E_10ReverseConversionVersionCheck S_10ReverseConversionVersionCheck --> N_10ReverseConversionVersionCheck_Node0 N_10ReverseConversionVersionCheck_Node0 -- No --> E_10ReverseConversionVersionCheck
accessed and CCCOM SIT version
matches working storage CCCOM
version"}:::decision N_10ReverseConversionVersionCheck_Node0_action["Copy common area from ISCOM to
CCCOM and update CCCOM SIT version
to working storage version"]:::main N_10ReverseConversionVersionCheck_Node0 -- Yes --> N_10ReverseConversionVersionCheck_Node0_action N_10ReverseConversionVersionCheck_Node0_action --> E_10ReverseConversionVersionCheck S_10ReverseConversionVersionCheck --> N_10ReverseConversionVersionCheck_Node0 N_10ReverseConversionVersionCheck_Node0 -- No --> E_10ReverseConversionVersionCheck
File: CCISCOM.cbl
GIVEN:
CCCOM structure exists with SIT version field and ISCOM structure contains source data
WHEN:
- Reverse conversion entry point is accessed
- Cccom sit version matches working storage cccom version
THEN:
- Copy common area from iscom to cccom
- Update cccom sit version to working storage version
β Consolidated Acceptance Criteria
- Reverse conversion is initiated with version mismatch → copy common area from ISCOM to CCCOM and update CCCOM SIT version to working storage version
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_11ReverseDataTransfer(["Start Step"])
E_11ReverseDataTransfer(["End Step"])
N_11ReverseDataTransfer_Node0{"Reverse conversion is initiated
with version mismatch"}:::decision N_11ReverseDataTransfer_Node0_action["Copy common area from ISCOM to
CCCOM and update CCCOM SIT version
to working storage version"]:::main N_11ReverseDataTransfer_Node0 -- Yes --> N_11ReverseDataTransfer_Node0_action N_11ReverseDataTransfer_Node0_action --> E_11ReverseDataTransfer S_11ReverseDataTransfer --> N_11ReverseDataTransfer_Node0 N_11ReverseDataTransfer_Node0 -- No --> E_11ReverseDataTransfer
with version mismatch"}:::decision N_11ReverseDataTransfer_Node0_action["Copy common area from ISCOM to
CCCOM and update CCCOM SIT version
to working storage version"]:::main N_11ReverseDataTransfer_Node0 -- Yes --> N_11ReverseDataTransfer_Node0_action N_11ReverseDataTransfer_Node0_action --> E_11ReverseDataTransfer S_11ReverseDataTransfer --> N_11ReverseDataTransfer_Node0 N_11ReverseDataTransfer_Node0 -- No --> E_11ReverseDataTransfer
File: CCISCOM.cbl
Exclusion / Alternative Path
GIVEN:
CCCOM SIT version does not match working storage version and ISCOM contains source data
WHEN:
Reverse conversion is initiated with version mismatch
THEN:
- Copy common area from iscom to cccom
- Update cccom sit version to working storage version
β Consolidated Acceptance Criteria
- CCCOM version mismatch triggers full reverse initialization → copy LT-PCBS data from ISCOM to CCCOM structure and set up cross-reference addresses
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_12ReversePCBTransfer(["Start Step"])
E_12ReversePCBTransfer(["End Step"])
N_12ReversePCBTransfer_Node0{"CCCOM version mismatch triggers
full reverse initialization"}:::decision N_12ReversePCBTransfer_Node0_action["Copy LT-PCBS data from ISCOM to
CCCOM structure and set up
cross-reference addresses"]:::main N_12ReversePCBTransfer_Node0 -- Yes --> N_12ReversePCBTransfer_Node0_action N_12ReversePCBTransfer_Node0_action --> E_12ReversePCBTransfer S_12ReversePCBTransfer --> N_12ReversePCBTransfer_Node0 N_12ReversePCBTransfer_Node0 -- No --> E_12ReversePCBTransfer
full reverse initialization"}:::decision N_12ReversePCBTransfer_Node0_action["Copy LT-PCBS data from ISCOM to
CCCOM structure and set up
cross-reference addresses"]:::main N_12ReversePCBTransfer_Node0 -- Yes --> N_12ReversePCBTransfer_Node0_action N_12ReversePCBTransfer_Node0_action --> E_12ReversePCBTransfer S_12ReversePCBTransfer --> N_12ReversePCBTransfer_Node0 N_12ReversePCBTransfer_Node0 -- No --> E_12ReversePCBTransfer
File: CCISCOM.cbl
GIVEN:
ISCOM contains LT-PCBS information and CCCOM requires PCB data during reverse conversion
WHEN:
CCCOM version mismatch triggers full reverse initialization
THEN:
- Copy lt-pcbs data from iscom to cccom structure
- Set up cross-reference addresses
β Consolidated Acceptance Criteria
- Scanning ISCOM entries during reverse conversion process → process only entries where PCB address is not equal to zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_13ActivePCBIdentification(["Start Step"])
E_13ActivePCBIdentification(["End Step"])
N_13ActivePCBIdentification_Node0{"Scanning ISCOM entries during
reverse conversion process"}:::decision N_13ActivePCBIdentification_Node0_action["Process only entries where PCB
address is not equal to zero"]:::main N_13ActivePCBIdentification_Node0 -- Yes --> N_13ActivePCBIdentification_Node0_action N_13ActivePCBIdentification_Node0_action --> E_13ActivePCBIdentification S_13ActivePCBIdentification --> N_13ActivePCBIdentification_Node0 N_13ActivePCBIdentification_Node0 -- No --> E_13ActivePCBIdentification
reverse conversion process"}:::decision N_13ActivePCBIdentification_Node0_action["Process only entries where PCB
address is not equal to zero"]:::main N_13ActivePCBIdentification_Node0 -- Yes --> N_13ActivePCBIdentification_Node0_action N_13ActivePCBIdentification_Node0_action --> E_13ActivePCBIdentification S_13ActivePCBIdentification --> N_13ActivePCBIdentification_Node0 N_13ActivePCBIdentification_Node0 -- No --> E_13ActivePCBIdentification
File: CCISCOM.cbl
GIVEN:
ISCOM table contains entries with PCB address fields that may be zero or non-zero
WHEN:
Scanning ISCOM entries during reverse conversion process
THEN:
Process only entries where PCB address is not equal to zero
β Consolidated Acceptance Criteria
- Processing active ISCOM entry during reverse conversion → initialize ISCOM PCB number to 1 and count matching database names in previous entries to determine sequence number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_14PCBSequenceNumbering(["Start Step"])
E_14PCBSequenceNumbering(["End Step"])
N_14PCBSequenceNumbering_Node0{"Processing active ISCOM entry
during reverse conversion"}:::decision N_14PCBSequenceNumbering_Node0_action["Initialize ISCOM PCB number to 1
and count matching database names in
previous entries to determine
sequence number"]:::main N_14PCBSequenceNumbering_Node0 -- Yes --> N_14PCBSequenceNumbering_Node0_action N_14PCBSequenceNumbering_Node0_action --> E_14PCBSequenceNumbering S_14PCBSequenceNumbering --> N_14PCBSequenceNumbering_Node0 N_14PCBSequenceNumbering_Node0 -- No --> E_14PCBSequenceNumbering
during reverse conversion"}:::decision N_14PCBSequenceNumbering_Node0_action["Initialize ISCOM PCB number to 1
and count matching database names in
previous entries to determine
sequence number"]:::main N_14PCBSequenceNumbering_Node0 -- Yes --> N_14PCBSequenceNumbering_Node0_action N_14PCBSequenceNumbering_Node0_action --> E_14PCBSequenceNumbering S_14PCBSequenceNumbering --> N_14PCBSequenceNumbering_Node0 N_14PCBSequenceNumbering_Node0 -- No --> E_14PCBSequenceNumbering
File: CCISCOM.cbl
GIVEN:
ISCOM entry has non-zero PCB address and database name
WHEN:
Processing active ISCOM entry during reverse conversion
THEN:
- Initialize iscom pcb number to 1
- Count matching database names in previous entries to determine sequence number
β Consolidated Acceptance Criteria
- Processing ISCOM entry with non-zero PCB address during reverse conversion → increment CCCOM entry counter and copy database name from ISCOM to CCCOM entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_15DatabaseEntryCreation(["Start Step"])
E_15DatabaseEntryCreation(["End Step"])
N_15DatabaseEntryCreation_Node0{"Processing ISCOM entry with
non-zero PCB address during reverse
conversion"}:::decision N_15DatabaseEntryCreation_Node0_action["Increment CCCOM entry counter and
copy database name from ISCOM to
CCCOM entry"]:::main N_15DatabaseEntryCreation_Node0 -- Yes --> N_15DatabaseEntryCreation_Node0_action N_15DatabaseEntryCreation_Node0_action --> E_15DatabaseEntryCreation S_15DatabaseEntryCreation --> N_15DatabaseEntryCreation_Node0 N_15DatabaseEntryCreation_Node0 -- No --> E_15DatabaseEntryCreation
non-zero PCB address during reverse
conversion"}:::decision N_15DatabaseEntryCreation_Node0_action["Increment CCCOM entry counter and
copy database name from ISCOM to
CCCOM entry"]:::main N_15DatabaseEntryCreation_Node0 -- Yes --> N_15DatabaseEntryCreation_Node0_action N_15DatabaseEntryCreation_Node0_action --> E_15DatabaseEntryCreation S_15DatabaseEntryCreation --> N_15DatabaseEntryCreation_Node0 N_15DatabaseEntryCreation_Node0 -- No --> E_15DatabaseEntryCreation
File: CCISCOM.cbl
GIVEN:
Active ISCOM entry contains database name and PCB information
WHEN:
Processing ISCOM entry with non-zero PCB address during reverse conversion
THEN:
- Increment cccom entry counter
- Copy database name from iscom to cccom entry
β Consolidated Acceptance Criteria
- Creating CCCOM database entry from active ISCOM entry → set PCB address in CCCOM entry to match PCB address from ISCOM entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_16ReversePCBAddressMapping(["Start Step"])
E_16ReversePCBAddressMapping(["End Step"])
N_16ReversePCBAddressMapping_Node0{"Creating CCCOM database entry from
active ISCOM entry"}:::decision N_16ReversePCBAddressMapping_Node0_action["Set PCB address in CCCOM entry to
match PCB address from ISCOM entry"]:::main N_16ReversePCBAddressMapping_Node0 -- Yes --> N_16ReversePCBAddressMapping_Node0_action N_16ReversePCBAddressMapping_Node0_action --> E_16ReversePCBAddressMapping S_16ReversePCBAddressMapping --> N_16ReversePCBAddressMapping_Node0 N_16ReversePCBAddressMapping_Node0 -- No --> E_16ReversePCBAddressMapping
active ISCOM entry"}:::decision N_16ReversePCBAddressMapping_Node0_action["Set PCB address in CCCOM entry to
match PCB address from ISCOM entry"]:::main N_16ReversePCBAddressMapping_Node0 -- Yes --> N_16ReversePCBAddressMapping_Node0_action N_16ReversePCBAddressMapping_Node0_action --> E_16ReversePCBAddressMapping S_16ReversePCBAddressMapping --> N_16ReversePCBAddressMapping_Node0 N_16ReversePCBAddressMapping_Node0 -- No --> E_16ReversePCBAddressMapping
File: CCISCOM.cbl
GIVEN:
ISCOM entry contains PCB address and corresponding CCCOM entry has been created
WHEN:
Creating CCCOM database entry from active ISCOM entry
THEN:
Set PCB address in CCCOM entry to match PCB address from ISCOM entry
β Consolidated Acceptance Criteria
- Finalizing CCCOM database entry creation during reverse conversion → if ISCOM PCB number equals '1' then set CCCOM database number to spaces, otherwise set CCCOM database number to ISCOM PCB number value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_17DatabaseNumberAssignment(["Start Step"])
E_17DatabaseNumberAssignment(["End Step"])
N_17DatabaseNumberAssignment_Node0{"Finalizing CCCOM database entry
creation during reverse conversion"}:::decision N_17DatabaseNumberAssignment_Node0_action["If ISCOM PCB number equals 1 then
set CCCOM database number to spaces,
otherwise set CCCOM database number
to ISCOM PCB number value"]:::main N_17DatabaseNumberAssignment_Node0 -- Yes --> N_17DatabaseNumberAssignment_Node0_action N_17DatabaseNumberAssignment_Node0_action --> E_17DatabaseNumberAssignment S_17DatabaseNumberAssignment --> N_17DatabaseNumberAssignment_Node0 N_17DatabaseNumberAssignment_Node0 -- No --> E_17DatabaseNumberAssignment
creation during reverse conversion"}:::decision N_17DatabaseNumberAssignment_Node0_action["If ISCOM PCB number equals 1 then
set CCCOM database number to spaces,
otherwise set CCCOM database number
to ISCOM PCB number value"]:::main N_17DatabaseNumberAssignment_Node0 -- Yes --> N_17DatabaseNumberAssignment_Node0_action N_17DatabaseNumberAssignment_Node0_action --> E_17DatabaseNumberAssignment S_17DatabaseNumberAssignment --> N_17DatabaseNumberAssignment_Node0 N_17DatabaseNumberAssignment_Node0 -- No --> E_17DatabaseNumberAssignment
File: CCISCOM.cbl
GIVEN:
ISCOM PCB number has been calculated for database entry and CCCOM entry requires database number
WHEN:
Finalizing CCCOM database entry creation during reverse conversion
THEN:
If ISCOM PCB number equals '1' then set CCCOM database number to spaces, otherwise set CCCOM database number to ISCOM PCB number value
β Consolidated Acceptance Criteria
- The system compares CC-SIT-VERSION of ISCOM with WS-ISCOM-VERSION → if versions match, proceed with simple data transfer; if versions don't match, proceed with full initialization
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsISCOMVersionAlreadySet(["Start Step"])
E_IsISCOMVersionAlreadySet(["End Step"])
N_IsISCOMVersionAlreadySet_Node0{"The system compares CC-SIT-VERSION
of ISCOM with WS-ISCOM-VERSION"}:::decision N_IsISCOMVersionAlreadySet_Node0_action["If versions match, proceed with
simple data transfer if versions don
t match, proceed with full
initialization"]:::main N_IsISCOMVersionAlreadySet_Node0 -- Yes --> N_IsISCOMVersionAlreadySet_Node0_action N_IsISCOMVersionAlreadySet_Node0_action --> E_IsISCOMVersionAlreadySet S_IsISCOMVersionAlreadySet --> N_IsISCOMVersionAlreadySet_Node0 N_IsISCOMVersionAlreadySet_Node0 -- No --> E_IsISCOMVersionAlreadySet
of ISCOM with WS-ISCOM-VERSION"}:::decision N_IsISCOMVersionAlreadySet_Node0_action["If versions match, proceed with
simple data transfer if versions don
t match, proceed with full
initialization"]:::main N_IsISCOMVersionAlreadySet_Node0 -- Yes --> N_IsISCOMVersionAlreadySet_Node0_action N_IsISCOMVersionAlreadySet_Node0_action --> E_IsISCOMVersionAlreadySet S_IsISCOMVersionAlreadySet --> N_IsISCOMVersionAlreadySet_Node0 N_IsISCOMVersionAlreadySet_Node0 -- No --> E_IsISCOMVersionAlreadySet
File: CCISCOM.cbl
GIVEN:
ISCOM communication area exists with a SIT version field and WS-ISCOM-VERSION contains the expected version
WHEN:
The system compares CC-SIT-VERSION of ISCOM with WS-ISCOM-VERSION
THEN:
If versions match, proceed with simple data transfer; if versions don't match, proceed with full initialization
β Consolidated Acceptance Criteria
- Version compatibility check passes → copy CC-COMMON-AREA from CCCOM to CC-COMMON-AREA of ISCOM
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TransferCommonAreaDatafromCCCOMtoISCOM(["Start Step"])
E_TransferCommonAreaDatafromCCCOMtoISCOM(["End Step"])
N_TransferCommonAreaDatafromCCCOMtoISCOM_Node0{"Version compatibility check passes"}:::decision
N_TransferCommonAreaDatafromCCCOMtoISCOM_Node0_action["Copy CC-COMMON-AREA from CCCOM to
CC-COMMON-AREA of ISCOM"]:::main N_TransferCommonAreaDatafromCCCOMtoISCOM_Node0 -- Yes --> N_TransferCommonAreaDatafromCCCOMtoISCOM_Node0_action N_TransferCommonAreaDatafromCCCOMtoISCOM_Node0_action --> E_TransferCommonAreaDatafromCCCOMtoISCOM S_TransferCommonAreaDatafromCCCOMtoISCOM --> N_TransferCommonAreaDatafromCCCOMtoISCOM_Node0 N_TransferCommonAreaDatafromCCCOMtoISCOM_Node0 -- No --> E_TransferCommonAreaDatafromCCCOMtoISCOM
CC-COMMON-AREA of ISCOM"]:::main N_TransferCommonAreaDatafromCCCOMtoISCOM_Node0 -- Yes --> N_TransferCommonAreaDatafromCCCOMtoISCOM_Node0_action N_TransferCommonAreaDatafromCCCOMtoISCOM_Node0_action --> E_TransferCommonAreaDatafromCCCOMtoISCOM S_TransferCommonAreaDatafromCCCOMtoISCOM --> N_TransferCommonAreaDatafromCCCOMtoISCOM_Node0 N_TransferCommonAreaDatafromCCCOMtoISCOM_Node0 -- No --> E_TransferCommonAreaDatafromCCCOMtoISCOM
File: CCISCOM.cbl
GIVEN:
CCCOM and ISCOM communication areas exist with CC-COMMON-AREA fields
WHEN:
Version compatibility check passes
THEN:
Copy CC-COMMON-AREA from CCCOM to CC-COMMON-AREA of ISCOM
β Consolidated Acceptance Criteria
- Common area data transfer is completed → set CC-SIT-VERSION of ISCOM to WS-ISCOM-VERSION
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetISCOMVersion(["Start Step"])
E_SetISCOMVersion(["End Step"])
N_SetISCOMVersion_Node0{"Common area data transfer is
completed"}:::decision N_SetISCOMVersion_Node0_action["Set CC-SIT-VERSION of ISCOM to
WS-ISCOM-VERSION"]:::main N_SetISCOMVersion_Node0 -- Yes --> N_SetISCOMVersion_Node0_action N_SetISCOMVersion_Node0_action --> E_SetISCOMVersion S_SetISCOMVersion --> N_SetISCOMVersion_Node0 N_SetISCOMVersion_Node0 -- No --> E_SetISCOMVersion
completed"}:::decision N_SetISCOMVersion_Node0_action["Set CC-SIT-VERSION of ISCOM to
WS-ISCOM-VERSION"]:::main N_SetISCOMVersion_Node0 -- Yes --> N_SetISCOMVersion_Node0_action N_SetISCOMVersion_Node0_action --> E_SetISCOMVersion S_SetISCOMVersion --> N_SetISCOMVersion_Node0 N_SetISCOMVersion_Node0 -- No --> E_SetISCOMVersion
File: CCISCOM.cbl
GIVEN:
WS-ISCOM-VERSION contains the current version and ISCOM has CC-SIT-VERSION field
WHEN:
Common area data transfer is completed
THEN:
Set CC-SIT-VERSION of ISCOM to WS-ISCOM-VERSION
β Consolidated Acceptance Criteria
- The system processes ISCOM initialization → iSCOM structure is populated with default values from ISCOMVAL
- The system processes LT-PCBS data transfer → lT-PCBS data (CC-LT-PCBS) is copied from CCCOM to ISCOM
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeISCOMwithDefaultValues(["Start Step"])
E_InitializeISCOMwithDefaultValues(["End Step"])
N_InitializeISCOMwithDefaultValues_Node0{"The system processes ISCOM
initialization"}:::decision N_InitializeISCOMwithDefaultValues_Node0_action["ISCOM structure is populated with
default values from ISCOMVAL"]:::main N_InitializeISCOMwithDefaultValues_Node0 -- Yes --> N_InitializeISCOMwithDefaultValues_Node0_action N_InitializeISCOMwithDefaultValues_Node0_action --> E_InitializeISCOMwithDefaultValues S_InitializeISCOMwithDefaultValues --> N_InitializeISCOMwithDefaultValues_Node0 N_InitializeISCOMwithDefaultValues_Node1{"The system processes LT-PCBS data
transfer"}:::decision N_InitializeISCOMwithDefaultValues_Node1_action["LT-PCBS data CC-LT-PCBS is copied
from CCCOM to ISCOM"]:::main N_InitializeISCOMwithDefaultValues_Node1 -- Yes --> N_InitializeISCOMwithDefaultValues_Node1_action N_InitializeISCOMwithDefaultValues_Node1_action --> E_InitializeISCOMwithDefaultValues N_InitializeISCOMwithDefaultValues_Node0 -- No --> N_InitializeISCOMwithDefaultValues_Node1 N_InitializeISCOMwithDefaultValues_Node1 -- No --> E_InitializeISCOMwithDefaultValues
initialization"}:::decision N_InitializeISCOMwithDefaultValues_Node0_action["ISCOM structure is populated with
default values from ISCOMVAL"]:::main N_InitializeISCOMwithDefaultValues_Node0 -- Yes --> N_InitializeISCOMwithDefaultValues_Node0_action N_InitializeISCOMwithDefaultValues_Node0_action --> E_InitializeISCOMwithDefaultValues S_InitializeISCOMwithDefaultValues --> N_InitializeISCOMwithDefaultValues_Node0 N_InitializeISCOMwithDefaultValues_Node1{"The system processes LT-PCBS data
transfer"}:::decision N_InitializeISCOMwithDefaultValues_Node1_action["LT-PCBS data CC-LT-PCBS is copied
from CCCOM to ISCOM"]:::main N_InitializeISCOMwithDefaultValues_Node1 -- Yes --> N_InitializeISCOMwithDefaultValues_Node1_action N_InitializeISCOMwithDefaultValues_Node1_action --> E_InitializeISCOMwithDefaultValues N_InitializeISCOMwithDefaultValues_Node0 -- No --> N_InitializeISCOMwithDefaultValues_Node1 N_InitializeISCOMwithDefaultValues_Node1 -- No --> E_InitializeISCOMwithDefaultValues
File: CCISCOM.cbl
Exclusion / Alternative Path
GIVEN:
ISCOM version (CC-SIT-VERSION OF ISCOM) does not equal the working storage ISCOM version (WS-ISCOM-VERSION)
WHEN:
The system processes ISCOM initialization
THEN:
ISCOM structure is populated with default values from ISCOMVAL
File: CCISCOM.cbl
Exclusion / Alternative Path
GIVEN:
ISCOM version does not match expected version and initialization is in progress
WHEN:
The system processes LT-PCBS data transfer
THEN:
LT-PCBS data (CC-LT-PCBS) is copied from CCCOM to ISCOM
β Consolidated Acceptance Criteria
- The system processes common area data transfer → common area data (CC-COMMON-AREA) is copied from CCCOM to ISCOM
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyCommonAreaDatafromCCCOM(["Start Step"])
E_CopyCommonAreaDatafromCCCOM(["End Step"])
N_CopyCommonAreaDatafromCCCOM_Node0{"The system processes common area
data transfer"}:::decision N_CopyCommonAreaDatafromCCCOM_Node0_action["Common area data CC-COMMON-AREA is
copied from CCCOM to ISCOM"]:::main N_CopyCommonAreaDatafromCCCOM_Node0 -- Yes --> N_CopyCommonAreaDatafromCCCOM_Node0_action N_CopyCommonAreaDatafromCCCOM_Node0_action --> E_CopyCommonAreaDatafromCCCOM S_CopyCommonAreaDatafromCCCOM --> N_CopyCommonAreaDatafromCCCOM_Node0 N_CopyCommonAreaDatafromCCCOM_Node0 -- No --> E_CopyCommonAreaDatafromCCCOM
data transfer"}:::decision N_CopyCommonAreaDatafromCCCOM_Node0_action["Common area data CC-COMMON-AREA is
copied from CCCOM to ISCOM"]:::main N_CopyCommonAreaDatafromCCCOM_Node0 -- Yes --> N_CopyCommonAreaDatafromCCCOM_Node0_action N_CopyCommonAreaDatafromCCCOM_Node0_action --> E_CopyCommonAreaDatafromCCCOM S_CopyCommonAreaDatafromCCCOM --> N_CopyCommonAreaDatafromCCCOM_Node0 N_CopyCommonAreaDatafromCCCOM_Node0 -- No --> E_CopyCommonAreaDatafromCCCOM
File: CCISCOM.cbl
Exclusion / Alternative Path
GIVEN:
ISCOM version does not match expected version and ISCOM has been initialized with default values
WHEN:
The system processes common area data transfer
THEN:
Common area data (CC-COMMON-AREA) is copied from CCCOM to ISCOM
β Consolidated Acceptance Criteria
- The system finalizes ISCOM structure setup → iSCOM version (CC-SIT-VERSION OF ISCOM) is set to the working storage ISCOM version (WS-ISCOM-VERSION)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetISCOMVersionNumber(["Start Step"])
E_SetISCOMVersionNumber(["End Step"])
N_SetISCOMVersionNumber_Node0{"The system finalizes ISCOM
structure setup"}:::decision N_SetISCOMVersionNumber_Node0_action["ISCOM version CC-SIT-VERSION OF
ISCOM is set to the working storage
ISCOM version WS-ISCOM-VERSION"]:::main N_SetISCOMVersionNumber_Node0 -- Yes --> N_SetISCOMVersionNumber_Node0_action N_SetISCOMVersionNumber_Node0_action --> E_SetISCOMVersionNumber S_SetISCOMVersionNumber --> N_SetISCOMVersionNumber_Node0 N_SetISCOMVersionNumber_Node0 -- No --> E_SetISCOMVersionNumber
structure setup"}:::decision N_SetISCOMVersionNumber_Node0_action["ISCOM version CC-SIT-VERSION OF
ISCOM is set to the working storage
ISCOM version WS-ISCOM-VERSION"]:::main N_SetISCOMVersionNumber_Node0 -- Yes --> N_SetISCOMVersionNumber_Node0_action N_SetISCOMVersionNumber_Node0_action --> E_SetISCOMVersionNumber S_SetISCOMVersionNumber --> N_SetISCOMVersionNumber_Node0 N_SetISCOMVersionNumber_Node0 -- No --> E_SetISCOMVersionNumber
File: CCISCOM.cbl
GIVEN:
ISCOM has been initialized and common area data has been copied
WHEN:
The system finalizes ISCOM structure setup
THEN:
ISCOM version (CC-SIT-VERSION OF ISCOM) is set to the working storage ISCOM version (WS-ISCOM-VERSION)
β Consolidated Acceptance Criteria
- Cross-reference setup is initiated → cCCOM address reference is stored in ISCOM structure AND ISCOM address reference is stored in CCCOM structure AND bidirectional references are established
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CrossReferenceAddressSetupSetupbidirectionaladdressreferencesbetweenCCCOMandISCOMstructures(["Start Step"])
E_CrossReferenceAddressSetupSetupbidirectionaladdressreferencesbetweenCCCOMandISCOMstructures(["End Step"])
N_CrossReferenceAddressSetupSetupbidirectionaladdressreferencesbetweenCCCOMandISCOMstructures_Node0{"Cross-reference setup is initiated"}:::decision
N_CrossReferenceAddressSetupSetupbidirectionaladdressreferencesbetweenCCCOMandISCOMstructures_Node0_action["CCCOM address reference is stored
in ISCOM structure AND ISCOM address
reference is stored in CCCOM
structure AND bidirectional
references are established"]:::main N_CrossReferenceAddressSetupSetupbidirectionaladdressreferencesbetweenCCCOMandISCOMstructures_Node0 -- Yes --> N_CrossReferenceAddressSetupSetupbidirectionaladdressreferencesbetweenCCCOMandISCOMstructures_Node0_action N_CrossReferenceAddressSetupSetupbidirectionaladdressreferencesbetweenCCCOMandISCOMstructures_Node0_action --> E_CrossReferenceAddressSetupSetupbidirectionaladdressreferencesbetweenCCCOMandISCOMstructures S_CrossReferenceAddressSetupSetupbidirectionaladdressreferencesbetweenCCCOMandISCOMstructures --> N_CrossReferenceAddressSetupSetupbidirectionaladdressreferencesbetweenCCCOMandISCOMstructures_Node0 N_CrossReferenceAddressSetupSetupbidirectionaladdressreferencesbetweenCCCOMandISCOMstructures_Node0 -- No --> E_CrossReferenceAddressSetupSetupbidirectionaladdressreferencesbetweenCCCOMandISCOMstructures
in ISCOM structure AND ISCOM address
reference is stored in CCCOM
structure AND bidirectional
references are established"]:::main N_CrossReferenceAddressSetupSetupbidirectionaladdressreferencesbetweenCCCOMandISCOMstructures_Node0 -- Yes --> N_CrossReferenceAddressSetupSetupbidirectionaladdressreferencesbetweenCCCOMandISCOMstructures_Node0_action N_CrossReferenceAddressSetupSetupbidirectionaladdressreferencesbetweenCCCOMandISCOMstructures_Node0_action --> E_CrossReferenceAddressSetupSetupbidirectionaladdressreferencesbetweenCCCOMandISCOMstructures S_CrossReferenceAddressSetupSetupbidirectionaladdressreferencesbetweenCCCOMandISCOMstructures --> N_CrossReferenceAddressSetupSetupbidirectionaladdressreferencesbetweenCCCOMandISCOMstructures_Node0 N_CrossReferenceAddressSetupSetupbidirectionaladdressreferencesbetweenCCCOMandISCOMstructures_Node0 -- No --> E_CrossReferenceAddressSetupSetupbidirectionaladdressreferencesbetweenCCCOMandISCOMstructures
File: CCISCOM.cbl
GIVEN:
CCCOM and ISCOM communication structures exist and need to reference each other
WHEN:
Cross-reference setup is initiated
THEN:
- Cccom address reference is stored in iscom structure
- Iscom address reference is stored in cccom structure
- Bidirectional references are established
β Consolidated Acceptance Criteria
- The system performs version compatibility processing → cC-LT-PCBS data from CCCOM structure is copied to CC-LT-PCBS field in ISCOM structure
- The system performs reverse version compatibility processing via ISCCCOM entry point → cC-LT-PCBS data from ISCOM structure is copied to CC-LT-PCBS field in CCCOM structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TransferPCBDatatoISCOMStructure(["Start Step"])
E_TransferPCBDatatoISCOMStructure(["End Step"])
N_TransferPCBDatatoISCOMStructure_Node0{"The system performs version
compatibility processing"}:::decision N_TransferPCBDatatoISCOMStructure_Node0_action["CC-LT-PCBS data from CCCOM
structure is copied to CC-LT-PCBS
field in ISCOM structure"]:::main N_TransferPCBDatatoISCOMStructure_Node0 -- Yes --> N_TransferPCBDatatoISCOMStructure_Node0_action N_TransferPCBDatatoISCOMStructure_Node0_action --> E_TransferPCBDatatoISCOMStructure S_TransferPCBDatatoISCOMStructure --> N_TransferPCBDatatoISCOMStructure_Node0 N_TransferPCBDatatoISCOMStructure_Node1{"The system performs reverse version
compatibility processing via ISCCCOM
entry point"}:::decision N_TransferPCBDatatoISCOMStructure_Node1_action["CC-LT-PCBS data from ISCOM
structure is copied to CC-LT-PCBS
field in CCCOM structure"]:::main N_TransferPCBDatatoISCOMStructure_Node1 -- Yes --> N_TransferPCBDatatoISCOMStructure_Node1_action N_TransferPCBDatatoISCOMStructure_Node1_action --> E_TransferPCBDatatoISCOMStructure N_TransferPCBDatatoISCOMStructure_Node0 -- No --> N_TransferPCBDatatoISCOMStructure_Node1 N_TransferPCBDatatoISCOMStructure_Node1 -- No --> E_TransferPCBDatatoISCOMStructure
compatibility processing"}:::decision N_TransferPCBDatatoISCOMStructure_Node0_action["CC-LT-PCBS data from CCCOM
structure is copied to CC-LT-PCBS
field in ISCOM structure"]:::main N_TransferPCBDatatoISCOMStructure_Node0 -- Yes --> N_TransferPCBDatatoISCOMStructure_Node0_action N_TransferPCBDatatoISCOMStructure_Node0_action --> E_TransferPCBDatatoISCOMStructure S_TransferPCBDatatoISCOMStructure --> N_TransferPCBDatatoISCOMStructure_Node0 N_TransferPCBDatatoISCOMStructure_Node1{"The system performs reverse version
compatibility processing via ISCCCOM
entry point"}:::decision N_TransferPCBDatatoISCOMStructure_Node1_action["CC-LT-PCBS data from ISCOM
structure is copied to CC-LT-PCBS
field in CCCOM structure"]:::main N_TransferPCBDatatoISCOMStructure_Node1 -- Yes --> N_TransferPCBDatatoISCOMStructure_Node1_action N_TransferPCBDatatoISCOMStructure_Node1_action --> E_TransferPCBDatatoISCOMStructure N_TransferPCBDatatoISCOMStructure_Node0 -- No --> N_TransferPCBDatatoISCOMStructure_Node1 N_TransferPCBDatatoISCOMStructure_Node1 -- No --> E_TransferPCBDatatoISCOMStructure
File: CCISCOM.cbl
Exclusion / Alternative Path
GIVEN:
CCCOM and ISCOM structures exist and CC-SIT-VERSION of ISCOM does not equal WS-ISCOM-VERSION
WHEN:
The system performs version compatibility processing
THEN:
CC-LT-PCBS data from CCCOM structure is copied to CC-LT-PCBS field in ISCOM structure
File: CCISCOM.cbl
Exclusion / Alternative Path
GIVEN:
ISCOM and CCCOM structures exist and CC-SIT-VERSION of CCCOM does not equal WS-CCCOM-VERSION
WHEN:
The system performs reverse version compatibility processing via ISCCCOM entry point
THEN:
CC-LT-PCBS data from ISCOM structure is copied to CC-LT-PCBS field in CCCOM structure
β Consolidated Acceptance Criteria
- The system starts processing database entries → the index counter is set to position 1 to begin scanning from the first entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeIndexI1(["Start Step"])
E_InitializeIndexI1(["End Step"])
N_InitializeIndexI1_Node0{"The system starts processing
database entries"}:::decision N_InitializeIndexI1_Node0_action["The index counter is set to
position 1 to begin scanning from
the first entry"]:::main N_InitializeIndexI1_Node0 -- Yes --> N_InitializeIndexI1_Node0_action N_InitializeIndexI1_Node0_action --> E_InitializeIndexI1 S_InitializeIndexI1 --> N_InitializeIndexI1_Node0 N_InitializeIndexI1_Node0 -- No --> E_InitializeIndexI1
database entries"}:::decision N_InitializeIndexI1_Node0_action["The index counter is set to
position 1 to begin scanning from
the first entry"]:::main N_InitializeIndexI1_Node0 -- Yes --> N_InitializeIndexI1_Node0_action N_InitializeIndexI1_Node0_action --> E_InitializeIndexI1 S_InitializeIndexI1 --> N_InitializeIndexI1_Node0 N_InitializeIndexI1_Node0 -- No --> E_InitializeIndexI1
File: CCISCOM.cbl
GIVEN:
A database scanning operation needs to begin
WHEN:
The system starts processing database entries
THEN:
The index counter is set to position 1 to begin scanning from the first entry
β Consolidated Acceptance Criteria
- The system checks if the current index exceeds the CCCOM table size limit → if index I is greater than CCCOM table size, terminate the scanning process, otherwise continue to next validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IndexICCCOMTableSize(["Start Step"])
E_IndexICCCOMTableSize(["End Step"])
N_IndexICCCOMTableSize_Node0{"The system checks if the current
index exceeds the CCCOM table size
limit"}:::decision N_IndexICCCOMTableSize_Node0_action["If index I is greater than CCCOM
table size, terminate the scanning
process, otherwise continue to next
validation"]:::exclusion N_IndexICCCOMTableSize_Node0 -- Yes -->|Alternative| N_IndexICCCOMTableSize_Node0_action N_IndexICCCOMTableSize_Node0_action --> E_IndexICCCOMTableSize S_IndexICCCOMTableSize --> N_IndexICCCOMTableSize_Node0 N_IndexICCCOMTableSize_Node0 -- No --> E_IndexICCCOMTableSize
index exceeds the CCCOM table size
limit"}:::decision N_IndexICCCOMTableSize_Node0_action["If index I is greater than CCCOM
table size, terminate the scanning
process, otherwise continue to next
validation"]:::exclusion N_IndexICCCOMTableSize_Node0 -- Yes -->|Alternative| N_IndexICCCOMTableSize_Node0_action N_IndexICCCOMTableSize_Node0_action --> E_IndexICCCOMTableSize S_IndexICCCOMTableSize --> N_IndexICCCOMTableSize_Node0 N_IndexICCCOMTableSize_Node0 -- No --> E_IndexICCCOMTableSize
File: CCISCOM.cbl
GIVEN:
A database entry scanning operation is in progress with current index position I
WHEN:
The system checks if the current index exceeds the CCCOM table size limit
THEN:
If index I is greater than CCCOM table size, terminate the scanning process, otherwise continue to next validation
β Consolidated Acceptance Criteria
- The system examines the database name field at the current position → if the database name contains only spaces (empty), terminate the scanning process, otherwise proceed to process the current entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DatabaseNameatPositionISPACES(["Start Step"])
E_DatabaseNameatPositionISPACES(["End Step"])
N_DatabaseNameatPositionISPACES_Node0{"The system examines the database
name field at the current position"}:::decision N_DatabaseNameatPositionISPACES_Node0_action["If the database name contains only
spaces empty, terminate the scanning
process, otherwise proceed to
process the current entry"]:::exclusion N_DatabaseNameatPositionISPACES_Node0 -- Yes -->|Alternative| N_DatabaseNameatPositionISPACES_Node0_action N_DatabaseNameatPositionISPACES_Node0_action --> E_DatabaseNameatPositionISPACES S_DatabaseNameatPositionISPACES --> N_DatabaseNameatPositionISPACES_Node0 N_DatabaseNameatPositionISPACES_Node0 -- No --> E_DatabaseNameatPositionISPACES
name field at the current position"}:::decision N_DatabaseNameatPositionISPACES_Node0_action["If the database name contains only
spaces empty, terminate the scanning
process, otherwise proceed to
process the current entry"]:::exclusion N_DatabaseNameatPositionISPACES_Node0 -- Yes -->|Alternative| N_DatabaseNameatPositionISPACES_Node0_action N_DatabaseNameatPositionISPACES_Node0_action --> E_DatabaseNameatPositionISPACES S_DatabaseNameatPositionISPACES --> N_DatabaseNameatPositionISPACES_Node0 N_DatabaseNameatPositionISPACES_Node0 -- No --> E_DatabaseNameatPositionISPACES
File: CCISCOM.cbl
GIVEN:
A database entry at position I within the valid table range
WHEN:
The system examines the database name field at the current position
THEN:
If the database name contains only spaces (empty), terminate the scanning process, otherwise proceed to process the current entry
β Consolidated Acceptance Criteria
- The system needs to process the database entry for address mapping → invoke the database address scanning procedure (100-SCAN-CC-DB-ADDR) to handle PCB number processing and database name matching
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessCurrentDatabaseEntry(["Start Step"])
E_ProcessCurrentDatabaseEntry(["End Step"])
N_ProcessCurrentDatabaseEntry_Node0{"The system needs to process the
database entry for address mapping"}:::decision N_ProcessCurrentDatabaseEntry_Node0_action["Invoke the database address
scanning procedure
100-SCAN-CC-DB-ADDR to handle PCB
number processing and database name
matching"]:::main N_ProcessCurrentDatabaseEntry_Node0 -- Yes --> N_ProcessCurrentDatabaseEntry_Node0_action N_ProcessCurrentDatabaseEntry_Node0_action --> E_ProcessCurrentDatabaseEntry S_ProcessCurrentDatabaseEntry --> N_ProcessCurrentDatabaseEntry_Node0 N_ProcessCurrentDatabaseEntry_Node0 -- No --> E_ProcessCurrentDatabaseEntry
database entry for address mapping"}:::decision N_ProcessCurrentDatabaseEntry_Node0_action["Invoke the database address
scanning procedure
100-SCAN-CC-DB-ADDR to handle PCB
number processing and database name
matching"]:::main N_ProcessCurrentDatabaseEntry_Node0 -- Yes --> N_ProcessCurrentDatabaseEntry_Node0_action N_ProcessCurrentDatabaseEntry_Node0_action --> E_ProcessCurrentDatabaseEntry S_ProcessCurrentDatabaseEntry --> N_ProcessCurrentDatabaseEntry_Node0 N_ProcessCurrentDatabaseEntry_Node0 -- No --> E_ProcessCurrentDatabaseEntry
File: CCISCOM.cbl
GIVEN:
A valid database entry at position I with a non-empty database name
WHEN:
The system needs to process the database entry for address mapping
THEN:
- Invoke the database address scanning procedure (100-scan-cc-db-addr) to handle pcb number processing
- Database name matching
β Consolidated Acceptance Criteria
- The system completes processing the current database entry → increment the index I by 1 to move to the next database entry position for continued scanning
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementIndexIby1(["Start Step"])
E_IncrementIndexIby1(["End Step"])
N_IncrementIndexIby1_Node0{"The system completes processing the
current database entry"}:::decision N_IncrementIndexIby1_Node0_action["Increment the index I by 1 to move
to the next database entry position
for continued scanning"]:::main N_IncrementIndexIby1_Node0 -- Yes --> N_IncrementIndexIby1_Node0_action N_IncrementIndexIby1_Node0_action --> E_IncrementIndexIby1 S_IncrementIndexIby1 --> N_IncrementIndexIby1_Node0 N_IncrementIndexIby1_Node0 -- No --> E_IncrementIndexIby1
current database entry"}:::decision N_IncrementIndexIby1_Node0_action["Increment the index I by 1 to move
to the next database entry position
for continued scanning"]:::main N_IncrementIndexIby1_Node0 -- Yes --> N_IncrementIndexIby1_Node0_action N_IncrementIndexIby1_Node0_action --> E_IncrementIndexIby1 S_IncrementIndexIby1 --> N_IncrementIndexIby1_Node0 N_IncrementIndexIby1_Node0 -- No --> E_IncrementIndexIby1
File: CCISCOM.cbl
GIVEN:
A database entry has been successfully processed at position I
WHEN:
The system completes processing the current database entry
THEN:
Increment the index I by 1 to move to the next database entry position for continued scanning
β Consolidated Acceptance Criteria
- The PCB counter initialization is performed → the ISCOM PCB number is set to zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializePCBCountertoZero(["Start Step"])
E_InitializePCBCountertoZero(["End Step"])
N_InitializePCBCountertoZero_Node0{"The PCB counter initialization is
performed"}:::decision N_InitializePCBCountertoZero_Node0_action["The ISCOM PCB number is set to zero"]:::main N_InitializePCBCountertoZero_Node0 -- Yes --> N_InitializePCBCountertoZero_Node0_action N_InitializePCBCountertoZero_Node0_action --> E_InitializePCBCountertoZero S_InitializePCBCountertoZero --> N_InitializePCBCountertoZero_Node0 N_InitializePCBCountertoZero_Node0 -- No --> E_InitializePCBCountertoZero
performed"}:::decision N_InitializePCBCountertoZero_Node0_action["The ISCOM PCB number is set to zero"]:::main N_InitializePCBCountertoZero_Node0 -- Yes --> N_InitializePCBCountertoZero_Node0_action N_InitializePCBCountertoZero_Node0_action --> E_InitializePCBCountertoZero S_InitializePCBCountertoZero --> N_InitializePCBCountertoZero_Node0 N_InitializePCBCountertoZero_Node0 -- No --> E_InitializePCBCountertoZero
File: CCISCOM.cbl
GIVEN:
A database entry is being processed
WHEN:
The PCB counter initialization is performed
THEN:
The ISCOM PCB number is set to zero
β Consolidated Acceptance Criteria
- PCB number extraction is performed → the PCB number from CCCOM database entry at index I is moved to CCCOM-PCB-NUMBER
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractPCBNumberfromDatabaseEntry(["Start Step"])
E_ExtractPCBNumberfromDatabaseEntry(["End Step"])
N_ExtractPCBNumberfromDatabaseEntry_Node0{"PCB number extraction is performed"}:::decision
N_ExtractPCBNumberfromDatabaseEntry_Node0_action["The PCB number from CCCOM database
entry at index I is moved to
CCCOM-PCB-NUMBER"]:::main N_ExtractPCBNumberfromDatabaseEntry_Node0 -- Yes --> N_ExtractPCBNumberfromDatabaseEntry_Node0_action N_ExtractPCBNumberfromDatabaseEntry_Node0_action --> E_ExtractPCBNumberfromDatabaseEntry S_ExtractPCBNumberfromDatabaseEntry --> N_ExtractPCBNumberfromDatabaseEntry_Node0 N_ExtractPCBNumberfromDatabaseEntry_Node0 -- No --> E_ExtractPCBNumberfromDatabaseEntry
entry at index I is moved to
CCCOM-PCB-NUMBER"]:::main N_ExtractPCBNumberfromDatabaseEntry_Node0 -- Yes --> N_ExtractPCBNumberfromDatabaseEntry_Node0_action N_ExtractPCBNumberfromDatabaseEntry_Node0_action --> E_ExtractPCBNumberfromDatabaseEntry S_ExtractPCBNumberfromDatabaseEntry --> N_ExtractPCBNumberfromDatabaseEntry_Node0 N_ExtractPCBNumberfromDatabaseEntry_Node0 -- No --> E_ExtractPCBNumberfromDatabaseEntry
File: CCISCOM.cbl
GIVEN:
A database entry with index I is being processed
WHEN:
PCB number extraction is performed
THEN:
The PCB number from CCCOM database entry at index I is moved to CCCOM-PCB-NUMBER
β Consolidated Acceptance Criteria
- The PCB number validation is performed → the CCCOM-PCB-NUMBER is set to '1'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPCBNumbertoDefault1(["Start Step"])
E_SetPCBNumbertoDefault1(["End Step"])
N_SetPCBNumbertoDefault1_Node0{"The PCB number validation is
performed"}:::decision N_SetPCBNumbertoDefault1_Node0_action["The CCCOM-PCB-NUMBER is set to 1"]:::main N_SetPCBNumbertoDefault1_Node0 -- Yes --> N_SetPCBNumbertoDefault1_Node0_action N_SetPCBNumbertoDefault1_Node0_action --> E_SetPCBNumbertoDefault1 S_SetPCBNumbertoDefault1 --> N_SetPCBNumbertoDefault1_Node0 N_SetPCBNumbertoDefault1_Node0 -- No --> E_SetPCBNumbertoDefault1
performed"}:::decision N_SetPCBNumbertoDefault1_Node0_action["The CCCOM-PCB-NUMBER is set to 1"]:::main N_SetPCBNumbertoDefault1_Node0 -- Yes --> N_SetPCBNumbertoDefault1_Node0_action N_SetPCBNumbertoDefault1_Node0_action --> E_SetPCBNumbertoDefault1 S_SetPCBNumbertoDefault1 --> N_SetPCBNumbertoDefault1_Node0 N_SetPCBNumbertoDefault1_Node0 -- No --> E_SetPCBNumbertoDefault1
File: CCISCOM.cbl
GIVEN:
A database entry is being processed and the CCCOM-PCB-NUMBER is empty or contains spaces
WHEN:
The PCB number validation is performed
THEN:
The CCCOM-PCB-NUMBER is set to '1'
β Consolidated Acceptance Criteria
- The PCB number field contains spaces or is empty → the system assigns default PCB number '1' to the CCCOM PCB number field
- The PCB number field contains a valid non-space value → the system preserves the existing PCB number value without modification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound(["Start Step"])
E_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound(["End Step"])
N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node0{"The PCB number field contains
spaces or is empty"}:::decision N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node0_action["The system assigns default PCB
number 1 to the CCCOM PCB number
field"]:::main N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node0 -- Yes --> N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node0_action N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node0_action --> E_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound S_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound --> N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node0 N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node1{"The PCB number field contains a
valid non-space value"}:::decision N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node1_action["The system preserves the existing
PCB number value without
modification"]:::main N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node1 -- Yes --> N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node1_action N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node1_action --> E_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node0 -- No --> N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node1 N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node1 -- No --> E_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound
spaces or is empty"}:::decision N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node0_action["The system assigns default PCB
number 1 to the CCCOM PCB number
field"]:::main N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node0 -- Yes --> N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node0_action N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node0_action --> E_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound S_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound --> N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node0 N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node1{"The PCB number field contains a
valid non-space value"}:::decision N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node1_action["The system preserves the existing
PCB number value without
modification"]:::main N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node1 -- Yes --> N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node1_action N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node1_action --> E_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node0 -- No --> N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node1 N_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound_Node1 -- No --> E_PCBNumberProcessingProcessandvalidatePCBnumbersdefaultingto1whenspacesarefound
File: CCISCOM.cbl
GIVEN:
A database entry from CCCOM table with PCB number field that may be empty or contain spaces
WHEN:
The PCB number field contains spaces or is empty
THEN:
The system assigns default PCB number '1' to the CCCOM PCB number field
File: CCISCOM.cbl
Exclusion / Alternative Path
GIVEN:
A database entry from CCCOM table with a valid PCB number that is not spaces
WHEN:
The PCB number field contains a valid non-space value
THEN:
The system preserves the existing PCB number value without modification
β Consolidated Acceptance Criteria
- The database name in CCCOM entry matches the database name in ISCOM entry → the system identifies this as a matching database pair and proceeds with PCB number increment and address mapping operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DoDatabaseNamesMatch(["Start Step"])
E_DoDatabaseNamesMatch(["End Step"])
N_DoDatabaseNamesMatch_Node0{"The database name in CCCOM entry
matches the database name in ISCOM
entry"}:::decision N_DoDatabaseNamesMatch_Node0_action["The system identifies this as a
matching database pair and proceeds
with PCB number increment and
address mapping operations"]:::main N_DoDatabaseNamesMatch_Node0 -- Yes --> N_DoDatabaseNamesMatch_Node0_action N_DoDatabaseNamesMatch_Node0_action --> E_DoDatabaseNamesMatch S_DoDatabaseNamesMatch --> N_DoDatabaseNamesMatch_Node0 N_DoDatabaseNamesMatch_Node0 -- No --> E_DoDatabaseNamesMatch
matches the database name in ISCOM
entry"}:::decision N_DoDatabaseNamesMatch_Node0_action["The system identifies this as a
matching database pair and proceeds
with PCB number increment and
address mapping operations"]:::main N_DoDatabaseNamesMatch_Node0 -- Yes --> N_DoDatabaseNamesMatch_Node0_action N_DoDatabaseNamesMatch_Node0_action --> E_DoDatabaseNamesMatch S_DoDatabaseNamesMatch --> N_DoDatabaseNamesMatch_Node0 N_DoDatabaseNamesMatch_Node0 -- No --> E_DoDatabaseNamesMatch
File: CCISCOM.cbl
GIVEN:
A CCCOM database entry at position I and an ISCOM database entry at position J are being compared
WHEN:
The database name in CCCOM entry matches the database name in ISCOM entry
THEN:
- The system identifies this as a matching database pair
- Proceeds with pcb number increment
- Address mapping operations
β Consolidated Acceptance Criteria
- The matching database names are identified → the ISCOM PCB number is incremented by 1 to maintain proper sequencing
- The current ISCOM PCB number equals the CCCOM PCB number for the matched database → the PCB address from CCCOM entry is assigned to the corresponding ISCOM entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NamesMatchProceedwithProcessing(["Start Step"])
E_NamesMatchProceedwithProcessing(["End Step"])
N_NamesMatchProceedwithProcessing_Node0{"The matching database names are
identified"}:::decision N_NamesMatchProceedwithProcessing_Node0_action["The ISCOM PCB number is incremented
by 1 to maintain proper sequencing"]:::main N_NamesMatchProceedwithProcessing_Node0 -- Yes --> N_NamesMatchProceedwithProcessing_Node0_action N_NamesMatchProceedwithProcessing_Node0_action --> E_NamesMatchProceedwithProcessing S_NamesMatchProceedwithProcessing --> N_NamesMatchProceedwithProcessing_Node0 N_NamesMatchProceedwithProcessing_Node1{"The current ISCOM PCB number equals
the CCCOM PCB number for the matched
database"}:::decision N_NamesMatchProceedwithProcessing_Node1_action["The PCB address from CCCOM entry is
assigned to the corresponding ISCOM
entry"]:::main N_NamesMatchProceedwithProcessing_Node1 -- Yes --> N_NamesMatchProceedwithProcessing_Node1_action N_NamesMatchProceedwithProcessing_Node1_action --> E_NamesMatchProceedwithProcessing N_NamesMatchProceedwithProcessing_Node0 -- No --> N_NamesMatchProceedwithProcessing_Node1 N_NamesMatchProceedwithProcessing_Node1 -- No --> E_NamesMatchProceedwithProcessing
identified"}:::decision N_NamesMatchProceedwithProcessing_Node0_action["The ISCOM PCB number is incremented
by 1 to maintain proper sequencing"]:::main N_NamesMatchProceedwithProcessing_Node0 -- Yes --> N_NamesMatchProceedwithProcessing_Node0_action N_NamesMatchProceedwithProcessing_Node0_action --> E_NamesMatchProceedwithProcessing S_NamesMatchProceedwithProcessing --> N_NamesMatchProceedwithProcessing_Node0 N_NamesMatchProceedwithProcessing_Node1{"The current ISCOM PCB number equals
the CCCOM PCB number for the matched
database"}:::decision N_NamesMatchProceedwithProcessing_Node1_action["The PCB address from CCCOM entry is
assigned to the corresponding ISCOM
entry"]:::main N_NamesMatchProceedwithProcessing_Node1 -- Yes --> N_NamesMatchProceedwithProcessing_Node1_action N_NamesMatchProceedwithProcessing_Node1_action --> E_NamesMatchProceedwithProcessing N_NamesMatchProceedwithProcessing_Node0 -- No --> N_NamesMatchProceedwithProcessing_Node1 N_NamesMatchProceedwithProcessing_Node1 -- No --> E_NamesMatchProceedwithProcessing
File: CCISCOM.cbl
GIVEN:
Database names between CCCOM and ISCOM entries have been confirmed as matching
WHEN:
The matching database names are identified
THEN:
The ISCOM PCB number is incremented by 1 to maintain proper sequencing
File: CCISCOM.cbl
GIVEN:
Database names match and ISCOM PCB number has been incremented
WHEN:
The current ISCOM PCB number equals the CCCOM PCB number for the matched database
THEN:
The PCB address from CCCOM entry is assigned to the corresponding ISCOM entry
β Consolidated Acceptance Criteria
- The database name from CCCOM matches the database name from ISCOM → the ISCOM PCB number counter is incremented by 1
- The database name at position I matches the database name at position K → the ISCOM PCB number counter is incremented by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementPCBCounterby1(["Start Step"])
E_IncrementPCBCounterby1(["End Step"])
N_IncrementPCBCounterby1_Node0{"The database name from CCCOM
matches the database name from ISCOM"}:::decision N_IncrementPCBCounterby1_Node0_action["The ISCOM PCB number counter is
incremented by 1"]:::main N_IncrementPCBCounterby1_Node0 -- Yes --> N_IncrementPCBCounterby1_Node0_action N_IncrementPCBCounterby1_Node0_action --> E_IncrementPCBCounterby1 S_IncrementPCBCounterby1 --> N_IncrementPCBCounterby1_Node0 N_IncrementPCBCounterby1_Node1{"The database name at position I
matches the database name at
position K"}:::decision N_IncrementPCBCounterby1_Node1_action["The ISCOM PCB number counter is
incremented by 1"]:::main N_IncrementPCBCounterby1_Node1 -- Yes --> N_IncrementPCBCounterby1_Node1_action N_IncrementPCBCounterby1_Node1_action --> E_IncrementPCBCounterby1 N_IncrementPCBCounterby1_Node0 -- No --> N_IncrementPCBCounterby1_Node1 N_IncrementPCBCounterby1_Node1 -- No --> E_IncrementPCBCounterby1
matches the database name from ISCOM"}:::decision N_IncrementPCBCounterby1_Node0_action["The ISCOM PCB number counter is
incremented by 1"]:::main N_IncrementPCBCounterby1_Node0 -- Yes --> N_IncrementPCBCounterby1_Node0_action N_IncrementPCBCounterby1_Node0_action --> E_IncrementPCBCounterby1 S_IncrementPCBCounterby1 --> N_IncrementPCBCounterby1_Node0 N_IncrementPCBCounterby1_Node1{"The database name at position I
matches the database name at
position K"}:::decision N_IncrementPCBCounterby1_Node1_action["The ISCOM PCB number counter is
incremented by 1"]:::main N_IncrementPCBCounterby1_Node1 -- Yes --> N_IncrementPCBCounterby1_Node1_action N_IncrementPCBCounterby1_Node1_action --> E_IncrementPCBCounterby1 N_IncrementPCBCounterby1_Node0 -- No --> N_IncrementPCBCounterby1_Node1 N_IncrementPCBCounterby1_Node1 -- No --> E_IncrementPCBCounterby1
File: CCISCOM.cbl
GIVEN:
A database name from CCCOM entry (I) and a database name from ISCOM entry (J) are being compared
WHEN:
The database name from CCCOM matches the database name from ISCOM
THEN:
The ISCOM PCB number counter is incremented by 1
File: CCISCOM.cbl
GIVEN:
Two ISCOM database entries at positions I and K are being compared during reverse processing
WHEN:
The database name at position I matches the database name at position K
THEN:
The ISCOM PCB number counter is incremented by 1
β Consolidated Acceptance Criteria
- The system compares the two database names → if the names are identical, proceed to increment PCB counter; otherwise continue to next database entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DatabaseNamesMatch(["Start Step"])
E_DatabaseNamesMatch(["End Step"])
N_DatabaseNamesMatch_Node0{"The system compares the two
database names"}:::decision N_DatabaseNamesMatch_Node0_action["If the names are identical, proceed
to increment PCB counter otherwise
continue to next database entry"]:::main N_DatabaseNamesMatch_Node0 -- Yes --> N_DatabaseNamesMatch_Node0_action N_DatabaseNamesMatch_Node0_action --> E_DatabaseNamesMatch S_DatabaseNamesMatch --> N_DatabaseNamesMatch_Node0 N_DatabaseNamesMatch_Node0 -- No --> E_DatabaseNamesMatch
database names"}:::decision N_DatabaseNamesMatch_Node0_action["If the names are identical, proceed
to increment PCB counter otherwise
continue to next database entry"]:::main N_DatabaseNamesMatch_Node0 -- Yes --> N_DatabaseNamesMatch_Node0_action N_DatabaseNamesMatch_Node0_action --> E_DatabaseNamesMatch S_DatabaseNamesMatch --> N_DatabaseNamesMatch_Node0 N_DatabaseNamesMatch_Node0 -- No --> E_DatabaseNamesMatch
File: CCISCOM.cbl
GIVEN:
A database name from CCCOM entry at position I and a database name from ISCOM entry at position J
WHEN:
The system compares the two database names
THEN:
If the names are identical, proceed to increment PCB counter; otherwise continue to next database entry
β Consolidated Acceptance Criteria
- The system compares the database name from CCCOM entry I with the database name from ISCOM entry J → if the database names are identical, the system proceeds with PCB counter increment; otherwise, it continues to the next entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DatabaseNamesMatchBetweenCCCOMandISCOM(["Start Step"])
E_DatabaseNamesMatchBetweenCCCOMandISCOM(["End Step"])
N_DatabaseNamesMatchBetweenCCCOMandISCOM_Node0{"The system compares the database
name from CCCOM entry I with the
database name from ISCOM entry J"}:::decision N_DatabaseNamesMatchBetweenCCCOMandISCOM_Node0_action["If the database names are
identical, the system proceeds with
PCB counter increment otherwise, it
continues to the next entry"]:::main N_DatabaseNamesMatchBetweenCCCOMandISCOM_Node0 -- Yes --> N_DatabaseNamesMatchBetweenCCCOMandISCOM_Node0_action N_DatabaseNamesMatchBetweenCCCOMandISCOM_Node0_action --> E_DatabaseNamesMatchBetweenCCCOMandISCOM S_DatabaseNamesMatchBetweenCCCOMandISCOM --> N_DatabaseNamesMatchBetweenCCCOMandISCOM_Node0 N_DatabaseNamesMatchBetweenCCCOMandISCOM_Node0 -- No --> E_DatabaseNamesMatchBetweenCCCOMandISCOM
name from CCCOM entry I with the
database name from ISCOM entry J"}:::decision N_DatabaseNamesMatchBetweenCCCOMandISCOM_Node0_action["If the database names are
identical, the system proceeds with
PCB counter increment otherwise, it
continues to the next entry"]:::main N_DatabaseNamesMatchBetweenCCCOMandISCOM_Node0 -- Yes --> N_DatabaseNamesMatchBetweenCCCOMandISCOM_Node0_action N_DatabaseNamesMatchBetweenCCCOMandISCOM_Node0_action --> E_DatabaseNamesMatchBetweenCCCOMandISCOM S_DatabaseNamesMatchBetweenCCCOMandISCOM --> N_DatabaseNamesMatchBetweenCCCOMandISCOM_Node0 N_DatabaseNamesMatchBetweenCCCOMandISCOM_Node0 -- No --> E_DatabaseNamesMatchBetweenCCCOMandISCOM
File: CCISCOM.cbl
GIVEN:
A CCCOM entry at position I and an ISCOM entry at position J both contain database names
WHEN:
The system compares the database name from CCCOM entry I with the database name from ISCOM entry J
THEN:
If the database names are identical, the system proceeds with PCB counter increment; otherwise, it continues to the next entry
β Consolidated Acceptance Criteria
- The system processes the matching database entries → the ISCOM PCB number counter is incremented by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementISCOMPCBCounter(["Start Step"])
E_IncrementISCOMPCBCounter(["End Step"])
N_IncrementISCOMPCBCounter_Node0{"The system processes the matching
database entries"}:::decision N_IncrementISCOMPCBCounter_Node0_action["The ISCOM PCB number counter is
incremented by 1"]:::main N_IncrementISCOMPCBCounter_Node0 -- Yes --> N_IncrementISCOMPCBCounter_Node0_action N_IncrementISCOMPCBCounter_Node0_action --> E_IncrementISCOMPCBCounter S_IncrementISCOMPCBCounter --> N_IncrementISCOMPCBCounter_Node0 N_IncrementISCOMPCBCounter_Node0 -- No --> E_IncrementISCOMPCBCounter
database entries"}:::decision N_IncrementISCOMPCBCounter_Node0_action["The ISCOM PCB number counter is
incremented by 1"]:::main N_IncrementISCOMPCBCounter_Node0 -- Yes --> N_IncrementISCOMPCBCounter_Node0_action N_IncrementISCOMPCBCounter_Node0_action --> E_IncrementISCOMPCBCounter S_IncrementISCOMPCBCounter --> N_IncrementISCOMPCBCounter_Node0 N_IncrementISCOMPCBCounter_Node0 -- No --> E_IncrementISCOMPCBCounter
File: CCISCOM.cbl
GIVEN:
Database names match between CCCOM entry I and ISCOM entry J
WHEN:
The system processes the matching database entries
THEN:
The ISCOM PCB number counter is incremented by 1
β Consolidated Acceptance Criteria
- The system compares the ISCOM PCB number with the CCCOM PCB number → if the PCB numbers are equal, the system proceeds with PCB address mapping; otherwise, it continues processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PCBNumbersMatch(["Start Step"])
E_PCBNumbersMatch(["End Step"])
N_PCBNumbersMatch_Node0{"The system compares the ISCOM PCB
number with the CCCOM PCB number"}:::decision N_PCBNumbersMatch_Node0_action["If the PCB numbers are equal, the
system proceeds with PCB address
mapping otherwise, it continues
processing"]:::main N_PCBNumbersMatch_Node0 -- Yes --> N_PCBNumbersMatch_Node0_action N_PCBNumbersMatch_Node0_action --> E_PCBNumbersMatch S_PCBNumbersMatch --> N_PCBNumbersMatch_Node0 N_PCBNumbersMatch_Node0 -- No --> E_PCBNumbersMatch
number with the CCCOM PCB number"}:::decision N_PCBNumbersMatch_Node0_action["If the PCB numbers are equal, the
system proceeds with PCB address
mapping otherwise, it continues
processing"]:::main N_PCBNumbersMatch_Node0 -- Yes --> N_PCBNumbersMatch_Node0_action N_PCBNumbersMatch_Node0_action --> E_PCBNumbersMatch S_PCBNumbersMatch --> N_PCBNumbersMatch_Node0 N_PCBNumbersMatch_Node0 -- No --> E_PCBNumbersMatch
File: CCISCOM.cbl
GIVEN:
The ISCOM PCB number has been incremented and the CCCOM PCB number is available
WHEN:
The system compares the ISCOM PCB number with the CCCOM PCB number
THEN:
If the PCB numbers are equal, the system proceeds with PCB address mapping; otherwise, it continues processing
β Consolidated Acceptance Criteria
- The system performs PCB address mapping → the PCB address from CCCOM entry I is assigned to ISCOM entry J
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapPCBAddressfromCCCOMtoISCOM(["Start Step"])
E_MapPCBAddressfromCCCOMtoISCOM(["End Step"])
N_MapPCBAddressfromCCCOMtoISCOM_Node0{"The system performs PCB address
mapping"}:::decision N_MapPCBAddressfromCCCOMtoISCOM_Node0_action["The PCB address from CCCOM entry I
is assigned to ISCOM entry J"]:::main N_MapPCBAddressfromCCCOMtoISCOM_Node0 -- Yes --> N_MapPCBAddressfromCCCOMtoISCOM_Node0_action N_MapPCBAddressfromCCCOMtoISCOM_Node0_action --> E_MapPCBAddressfromCCCOMtoISCOM S_MapPCBAddressfromCCCOMtoISCOM --> N_MapPCBAddressfromCCCOMtoISCOM_Node0 N_MapPCBAddressfromCCCOMtoISCOM_Node0 -- No --> E_MapPCBAddressfromCCCOMtoISCOM
mapping"}:::decision N_MapPCBAddressfromCCCOMtoISCOM_Node0_action["The PCB address from CCCOM entry I
is assigned to ISCOM entry J"]:::main N_MapPCBAddressfromCCCOMtoISCOM_Node0 -- Yes --> N_MapPCBAddressfromCCCOMtoISCOM_Node0_action N_MapPCBAddressfromCCCOMtoISCOM_Node0_action --> E_MapPCBAddressfromCCCOMtoISCOM S_MapPCBAddressfromCCCOMtoISCOM --> N_MapPCBAddressfromCCCOMtoISCOM_Node0 N_MapPCBAddressfromCCCOMtoISCOM_Node0 -- No --> E_MapPCBAddressfromCCCOMtoISCOM
File: CCISCOM.cbl
GIVEN:
Database names match and PCB numbers are equal between CCCOM entry I and ISCOM entry J
WHEN:
The system performs PCB address mapping
THEN:
The PCB address from CCCOM entry I is assigned to ISCOM entry J
β Consolidated Acceptance Criteria
- The system checks the CCCOM SIT version against the expected CCCOM version → if versions match, only common area data is transferred and CCCOM version is updated; if versions don't match, full initialization including common area, version update, LT-PCBS transfer, cross-references setup, and database scanning is performed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReverseConversionVersionCheckCheckifCCCOMversionisalreadysetforreverseconversionfromISCOMtoCCCOM(["Start Step"])
E_ReverseConversionVersionCheckCheckifCCCOMversionisalreadysetforreverseconversionfromISCOMtoCCCOM(["End Step"])
N_ReverseConversionVersionCheckCheckifCCCOMversionisalreadysetforreverseconversionfromISCOMtoCCCOM_Node0{"The system checks the CCCOM SIT
version against the expected CCCOM
version"}:::decision N_ReverseConversionVersionCheckCheckifCCCOMversionisalreadysetforreverseconversionfromISCOMtoCCCOM_Node0_action["If versions match, only common area
data is transferred and CCCOM
version is updated if versions don t
match, full initialization including
common area, version update, LT-PCBS
transfer, cross-references setup,
and database scanning is performed"]:::main N_ReverseConversionVersionCheckCheckifCCCOMversionisalreadysetforreverseconversionfromISCOMtoCCCOM_Node0 -- Yes --> N_ReverseConversionVersionCheckCheckifCCCOMversionisalreadysetforreverseconversionfromISCOMtoCCCOM_Node0_action N_ReverseConversionVersionCheckCheckifCCCOMversionisalreadysetforreverseconversionfromISCOMtoCCCOM_Node0_action --> E_ReverseConversionVersionCheckCheckifCCCOMversionisalreadysetforreverseconversionfromISCOMtoCCCOM S_ReverseConversionVersionCheckCheckifCCCOMversionisalreadysetforreverseconversionfromISCOMtoCCCOM --> N_ReverseConversionVersionCheckCheckifCCCOMversionisalreadysetforreverseconversionfromISCOMtoCCCOM_Node0 N_ReverseConversionVersionCheckCheckifCCCOMversionisalreadysetforreverseconversionfromISCOMtoCCCOM_Node0 -- No --> E_ReverseConversionVersionCheckCheckifCCCOMversionisalreadysetforreverseconversionfromISCOMtoCCCOM
version against the expected CCCOM
version"}:::decision N_ReverseConversionVersionCheckCheckifCCCOMversionisalreadysetforreverseconversionfromISCOMtoCCCOM_Node0_action["If versions match, only common area
data is transferred and CCCOM
version is updated if versions don t
match, full initialization including
common area, version update, LT-PCBS
transfer, cross-references setup,
and database scanning is performed"]:::main N_ReverseConversionVersionCheckCheckifCCCOMversionisalreadysetforreverseconversionfromISCOMtoCCCOM_Node0 -- Yes --> N_ReverseConversionVersionCheckCheckifCCCOMversionisalreadysetforreverseconversionfromISCOMtoCCCOM_Node0_action N_ReverseConversionVersionCheckCheckifCCCOMversionisalreadysetforreverseconversionfromISCOMtoCCCOM_Node0_action --> E_ReverseConversionVersionCheckCheckifCCCOMversionisalreadysetforreverseconversionfromISCOMtoCCCOM S_ReverseConversionVersionCheckCheckifCCCOMversionisalreadysetforreverseconversionfromISCOMtoCCCOM --> N_ReverseConversionVersionCheckCheckifCCCOMversionisalreadysetforreverseconversionfromISCOMtoCCCOM_Node0 N_ReverseConversionVersionCheckCheckifCCCOMversionisalreadysetforreverseconversionfromISCOMtoCCCOM_Node0 -- No --> E_ReverseConversionVersionCheckCheckifCCCOMversionisalreadysetforreverseconversionfromISCOMtoCCCOM
File: CCISCOM.cbl
GIVEN:
A reverse conversion process is initiated with ISCOM and CCCOM communication areas
WHEN:
The system checks the CCCOM SIT version against the expected CCCOM version
THEN:
- If versions match, only common area data is transferred
- Cccom version is updated; if versions don't match, full initialization including common area, version update, lt-pcbs transfer, cross-references setup, and database scanning is performed
β Consolidated Acceptance Criteria
- Reverse conversion is performed → common area data is copied from ISCOM to CCCOM and CCCOM SIT version is set to working storage CCCOM version
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_VersionAlreadySetTransferCommonAreaDataOnly(["Start Step"])
E_VersionAlreadySetTransferCommonAreaDataOnly(["End Step"])
N_VersionAlreadySetTransferCommonAreaDataOnly_Node0{"Reverse conversion is performed"}:::decision
N_VersionAlreadySetTransferCommonAreaDataOnly_Node0_action["Common area data is copied from
ISCOM to CCCOM and CCCOM SIT version
is set to working storage CCCOM
version"]:::main N_VersionAlreadySetTransferCommonAreaDataOnly_Node0 -- Yes --> N_VersionAlreadySetTransferCommonAreaDataOnly_Node0_action N_VersionAlreadySetTransferCommonAreaDataOnly_Node0_action --> E_VersionAlreadySetTransferCommonAreaDataOnly S_VersionAlreadySetTransferCommonAreaDataOnly --> N_VersionAlreadySetTransferCommonAreaDataOnly_Node0 N_VersionAlreadySetTransferCommonAreaDataOnly_Node0 -- No --> E_VersionAlreadySetTransferCommonAreaDataOnly
ISCOM to CCCOM and CCCOM SIT version
is set to working storage CCCOM
version"]:::main N_VersionAlreadySetTransferCommonAreaDataOnly_Node0 -- Yes --> N_VersionAlreadySetTransferCommonAreaDataOnly_Node0_action N_VersionAlreadySetTransferCommonAreaDataOnly_Node0_action --> E_VersionAlreadySetTransferCommonAreaDataOnly S_VersionAlreadySetTransferCommonAreaDataOnly --> N_VersionAlreadySetTransferCommonAreaDataOnly_Node0 N_VersionAlreadySetTransferCommonAreaDataOnly_Node0 -- No --> E_VersionAlreadySetTransferCommonAreaDataOnly
File: CCISCOM.cbl
GIVEN:
CCCOM SIT version equals the working storage CCCOM version
WHEN:
Reverse conversion is performed
THEN:
- Common area data is copied from iscom to cccom
- Cccom sit version is set to working storage cccom version
β Consolidated Acceptance Criteria
- Reverse conversion is performed → common area is copied from ISCOM to CCCOM, CCCOM SIT version is updated, LT-PCBS are transferred from ISCOM to CCCOM, cross-reference addresses are established, and database address scanning is initiated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_VersionNotSetProceedwithFullInitialization(["Start Step"])
E_VersionNotSetProceedwithFullInitialization(["End Step"])
N_VersionNotSetProceedwithFullInitialization_Node0{"Reverse conversion is performed"}:::decision
N_VersionNotSetProceedwithFullInitialization_Node0_action["Common area is copied from ISCOM to
CCCOM, CCCOM SIT version is updated,
LT-PCBS are transferred from ISCOM
to CCCOM, cross-reference addresses
are established, and database
address scanning is initiated"]:::main N_VersionNotSetProceedwithFullInitialization_Node0 -- Yes --> N_VersionNotSetProceedwithFullInitialization_Node0_action N_VersionNotSetProceedwithFullInitialization_Node0_action --> E_VersionNotSetProceedwithFullInitialization S_VersionNotSetProceedwithFullInitialization --> N_VersionNotSetProceedwithFullInitialization_Node0 N_VersionNotSetProceedwithFullInitialization_Node0 -- No --> E_VersionNotSetProceedwithFullInitialization
CCCOM, CCCOM SIT version is updated,
LT-PCBS are transferred from ISCOM
to CCCOM, cross-reference addresses
are established, and database
address scanning is initiated"]:::main N_VersionNotSetProceedwithFullInitialization_Node0 -- Yes --> N_VersionNotSetProceedwithFullInitialization_Node0_action N_VersionNotSetProceedwithFullInitialization_Node0_action --> E_VersionNotSetProceedwithFullInitialization S_VersionNotSetProceedwithFullInitialization --> N_VersionNotSetProceedwithFullInitialization_Node0 N_VersionNotSetProceedwithFullInitialization_Node0 -- No --> E_VersionNotSetProceedwithFullInitialization
File: CCISCOM.cbl
Exclusion / Alternative Path
GIVEN:
CCCOM SIT version does not equal the working storage CCCOM version
WHEN:
Reverse conversion is performed
THEN:
Common area is copied from ISCOM to CCCOM, CCCOM SIT version is updated, LT-PCBS are transferred from ISCOM to CCCOM, cross-reference addresses are established, and database address scanning is initiated
β Consolidated Acceptance Criteria
- Version update is required → cCCOM SIT version is set to the working storage CCCOM version value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCCCOMVersiontoExpectedValue(["Start Step"])
E_SetCCCOMVersiontoExpectedValue(["End Step"])
N_SetCCCOMVersiontoExpectedValue_Node0{"Version update is required"}:::decision
N_SetCCCOMVersiontoExpectedValue_Node0_action["CCCOM SIT version is set to the
working storage CCCOM version value"]:::main N_SetCCCOMVersiontoExpectedValue_Node0 -- Yes --> N_SetCCCOMVersiontoExpectedValue_Node0_action N_SetCCCOMVersiontoExpectedValue_Node0_action --> E_SetCCCOMVersiontoExpectedValue S_SetCCCOMVersiontoExpectedValue --> N_SetCCCOMVersiontoExpectedValue_Node0 N_SetCCCOMVersiontoExpectedValue_Node0 -- No --> E_SetCCCOMVersiontoExpectedValue
working storage CCCOM version value"]:::main N_SetCCCOMVersiontoExpectedValue_Node0 -- Yes --> N_SetCCCOMVersiontoExpectedValue_Node0_action N_SetCCCOMVersiontoExpectedValue_Node0_action --> E_SetCCCOMVersiontoExpectedValue S_SetCCCOMVersiontoExpectedValue --> N_SetCCCOMVersiontoExpectedValue_Node0 N_SetCCCOMVersiontoExpectedValue_Node0 -- No --> E_SetCCCOMVersiontoExpectedValue
File: CCISCOM.cbl
GIVEN:
Reverse conversion process is in progress
WHEN:
Version update is required
THEN:
CCCOM SIT version is set to the working storage CCCOM version value
β Consolidated Acceptance Criteria
- Reverse conversion process is initiated from ISCOM to CCCOM → common area data from ISCOM is copied to CCCOM structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TransferCommonAreaDatafromISCOMtoCCCOM(["Start Step"])
E_TransferCommonAreaDatafromISCOMtoCCCOM(["End Step"])
N_TransferCommonAreaDatafromISCOMtoCCCOM_Node0{"Reverse conversion process is
initiated from ISCOM to CCCOM"}:::decision N_TransferCommonAreaDatafromISCOMtoCCCOM_Node0_action["Common area data from ISCOM is
copied to CCCOM structure"]:::main N_TransferCommonAreaDatafromISCOMtoCCCOM_Node0 -- Yes --> N_TransferCommonAreaDatafromISCOMtoCCCOM_Node0_action N_TransferCommonAreaDatafromISCOMtoCCCOM_Node0_action --> E_TransferCommonAreaDatafromISCOMtoCCCOM S_TransferCommonAreaDatafromISCOMtoCCCOM --> N_TransferCommonAreaDatafromISCOMtoCCCOM_Node0 N_TransferCommonAreaDatafromISCOMtoCCCOM_Node0 -- No --> E_TransferCommonAreaDatafromISCOMtoCCCOM
initiated from ISCOM to CCCOM"}:::decision N_TransferCommonAreaDatafromISCOMtoCCCOM_Node0_action["Common area data from ISCOM is
copied to CCCOM structure"]:::main N_TransferCommonAreaDatafromISCOMtoCCCOM_Node0 -- Yes --> N_TransferCommonAreaDatafromISCOMtoCCCOM_Node0_action N_TransferCommonAreaDatafromISCOMtoCCCOM_Node0_action --> E_TransferCommonAreaDatafromISCOMtoCCCOM S_TransferCommonAreaDatafromISCOMtoCCCOM --> N_TransferCommonAreaDatafromISCOMtoCCCOM_Node0 N_TransferCommonAreaDatafromISCOMtoCCCOM_Node0 -- No --> E_TransferCommonAreaDatafromISCOMtoCCCOM
File: CCISCOM.cbl
GIVEN:
ISCOM structure contains common area data and CCCOM structure is available for data transfer
WHEN:
Reverse conversion process is initiated from ISCOM to CCCOM
THEN:
Common area data from ISCOM is copied to CCCOM structure
β Consolidated Acceptance Criteria
- Common area data transfer is completed → cCCOM SIT version is set to the working storage CCCOM version number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCCCOMVersionNumber(["Start Step"])
E_SetCCCOMVersionNumber(["End Step"])
N_SetCCCOMVersionNumber_Node0{"Common area data transfer is
completed"}:::decision N_SetCCCOMVersionNumber_Node0_action["CCCOM SIT version is set to the
working storage CCCOM version number"]:::main N_SetCCCOMVersionNumber_Node0 -- Yes --> N_SetCCCOMVersionNumber_Node0_action N_SetCCCOMVersionNumber_Node0_action --> E_SetCCCOMVersionNumber S_SetCCCOMVersionNumber --> N_SetCCCOMVersionNumber_Node0 N_SetCCCOMVersionNumber_Node0 -- No --> E_SetCCCOMVersionNumber
completed"}:::decision N_SetCCCOMVersionNumber_Node0_action["CCCOM SIT version is set to the
working storage CCCOM version number"]:::main N_SetCCCOMVersionNumber_Node0 -- Yes --> N_SetCCCOMVersionNumber_Node0_action N_SetCCCOMVersionNumber_Node0_action --> E_SetCCCOMVersionNumber S_SetCCCOMVersionNumber --> N_SetCCCOMVersionNumber_Node0 N_SetCCCOMVersionNumber_Node0 -- No --> E_SetCCCOMVersionNumber
File: CCISCOM.cbl
GIVEN:
CCCOM structure is being updated during reverse conversion and working storage contains CCCOM version number
WHEN:
Common area data transfer is completed
THEN:
CCCOM SIT version is set to the working storage CCCOM version number
β Consolidated Acceptance Criteria
- Reverse conversion process is initiated and version compatibility requires PCB data synchronization → pCB information from ISCOM CC-LT-PCBS field is copied to CCCOM CC-LT-PCBS field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TransferPCBDatatoCCCOMStructure(["Start Step"])
E_TransferPCBDatatoCCCOMStructure(["End Step"])
N_TransferPCBDatatoCCCOMStructure_Node0{"reverse conversion process is
initiated and version compatibility
requires PCB data synchronization"}:::decision N_TransferPCBDatatoCCCOMStructure_Node0_action["PCB information from ISCOM
CC-LT-PCBS field is copied to CCCOM
CC-LT-PCBS field"]:::main N_TransferPCBDatatoCCCOMStructure_Node0 -- Yes --> N_TransferPCBDatatoCCCOMStructure_Node0_action N_TransferPCBDatatoCCCOMStructure_Node0_action --> E_TransferPCBDatatoCCCOMStructure S_TransferPCBDatatoCCCOMStructure --> N_TransferPCBDatatoCCCOMStructure_Node0 N_TransferPCBDatatoCCCOMStructure_Node0 -- No --> E_TransferPCBDatatoCCCOMStructure
initiated and version compatibility
requires PCB data synchronization"}:::decision N_TransferPCBDatatoCCCOMStructure_Node0_action["PCB information from ISCOM
CC-LT-PCBS field is copied to CCCOM
CC-LT-PCBS field"]:::main N_TransferPCBDatatoCCCOMStructure_Node0 -- Yes --> N_TransferPCBDatatoCCCOMStructure_Node0_action N_TransferPCBDatatoCCCOMStructure_Node0_action --> E_TransferPCBDatatoCCCOMStructure S_TransferPCBDatatoCCCOMStructure --> N_TransferPCBDatatoCCCOMStructure_Node0 N_TransferPCBDatatoCCCOMStructure_Node0 -- No --> E_TransferPCBDatatoCCCOMStructure
File: CCISCOM.cbl
GIVEN:
ISCOM structure contains PCB information in CC-LT-PCBS field and CCCOM structure is available for data transfer
WHEN:
- Reverse conversion process is initiated
- Version compatibility requires pcb data synchronization
THEN:
PCB information from ISCOM CC-LT-PCBS field is copied to CCCOM CC-LT-PCBS field
β Consolidated Acceptance Criteria
- If the PCB address value → if PCB address is not equal to zero, the entry is identified as active and processing continues; if PCB address equals zero, the entry is skipped as inactive
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PCBAddressZero(["Start Step"])
E_PCBAddressZero(["End Step"])
N_PCBAddressZero_Node0{"The system evaluates the PCB
address value"}:::decision N_PCBAddressZero_Node0_action["If PCB address is not equal to
zero, the entry is identified as
active and processing continues if
PCB address equals zero, the entry
is skipped as inactive"]:::main N_PCBAddressZero_Node0 -- Yes --> N_PCBAddressZero_Node0_action N_PCBAddressZero_Node0_action --> E_PCBAddressZero S_PCBAddressZero --> N_PCBAddressZero_Node0 N_PCBAddressZero_Node0 -- No --> E_PCBAddressZero
address value"}:::decision N_PCBAddressZero_Node0_action["If PCB address is not equal to
zero, the entry is identified as
active and processing continues if
PCB address equals zero, the entry
is skipped as inactive"]:::main N_PCBAddressZero_Node0 -- Yes --> N_PCBAddressZero_Node0_action N_PCBAddressZero_Node0_action --> E_PCBAddressZero S_PCBAddressZero --> N_PCBAddressZero_Node0 N_PCBAddressZero_Node0 -- No --> E_PCBAddressZero
File: CCISCOM.cbl
GIVEN:
An ISCOM entry with a PCB address field
WHEN:
The system evaluates the PCB address value
THEN:
- If pcb address is not equal to zero, the entry is identified as active
- Processing continues; if pcb address equals zero, the entry is skipped as inactive
β Consolidated Acceptance Criteria
- The system begins processing the active entry → iSCOM PCB number is set to 1 to start the numbering sequence
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkasActivePCBEntry(["Start Step"])
E_MarkasActivePCBEntry(["End Step"])
N_MarkasActivePCBEntry_Node0{"The system begins processing the
active entry"}:::decision N_MarkasActivePCBEntry_Node0_action["ISCOM PCB number is set to 1 to
start the numbering sequence"]:::main N_MarkasActivePCBEntry_Node0 -- Yes --> N_MarkasActivePCBEntry_Node0_action N_MarkasActivePCBEntry_Node0_action --> E_MarkasActivePCBEntry S_MarkasActivePCBEntry --> N_MarkasActivePCBEntry_Node0 N_MarkasActivePCBEntry_Node0 -- No --> E_MarkasActivePCBEntry
active entry"}:::decision N_MarkasActivePCBEntry_Node0_action["ISCOM PCB number is set to 1 to
start the numbering sequence"]:::main N_MarkasActivePCBEntry_Node0 -- Yes --> N_MarkasActivePCBEntry_Node0_action N_MarkasActivePCBEntry_Node0_action --> E_MarkasActivePCBEntry S_MarkasActivePCBEntry --> N_MarkasActivePCBEntry_Node0 N_MarkasActivePCBEntry_Node0 -- No --> E_MarkasActivePCBEntry
File: CCISCOM.cbl
GIVEN:
An active ISCOM entry with non-zero PCB address
WHEN:
The system begins processing the active entry
THEN:
ISCOM PCB number is set to 1 to start the numbering sequence
β Consolidated Acceptance Criteria
- The system processes the active PCB entry → the database name from ISCOM entry is copied to the CCCOM entry at the current position
- The system processes the active PCB entry → the PCB address from ISCOM entry is set in the corresponding CCCOM entry
- The system determines the PCB number assignment → if ISCOM PCB number equals '1', CCCOM database number is set to spaces; otherwise ISCOM PCB number is copied to CCCOM database number
- The system completes processing of the active entry → the CCCOM entry counter (J) is incremented by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinueProcessingActiveEntry(["Start Step"])
E_ContinueProcessingActiveEntry(["End Step"])
N_ContinueProcessingActiveEntry_Node0{"The system processes the active PCB
entry"}:::decision N_ContinueProcessingActiveEntry_Node0_action["The database name from ISCOM entry
is copied to the CCCOM entry at the
current position"]:::main N_ContinueProcessingActiveEntry_Node0 -- Yes --> N_ContinueProcessingActiveEntry_Node0_action N_ContinueProcessingActiveEntry_Node0_action --> E_ContinueProcessingActiveEntry S_ContinueProcessingActiveEntry --> N_ContinueProcessingActiveEntry_Node0 N_ContinueProcessingActiveEntry_Node1{"The system processes the active PCB
entry"}:::decision N_ContinueProcessingActiveEntry_Node1_action["The PCB address from ISCOM entry is
set in the corresponding CCCOM entry"]:::main N_ContinueProcessingActiveEntry_Node1 -- Yes --> N_ContinueProcessingActiveEntry_Node1_action N_ContinueProcessingActiveEntry_Node1_action --> E_ContinueProcessingActiveEntry N_ContinueProcessingActiveEntry_Node0 -- No --> N_ContinueProcessingActiveEntry_Node1 N_ContinueProcessingActiveEntry_Node2{"The system determines the PCB
number assignment"}:::decision N_ContinueProcessingActiveEntry_Node2_action["If ISCOM PCB number equals 1 ,
CCCOM database number is set to
spaces otherwise ISCOM PCB number is
copied to CCCOM database number"]:::main N_ContinueProcessingActiveEntry_Node2 -- Yes --> N_ContinueProcessingActiveEntry_Node2_action N_ContinueProcessingActiveEntry_Node2_action --> E_ContinueProcessingActiveEntry N_ContinueProcessingActiveEntry_Node1 -- No --> N_ContinueProcessingActiveEntry_Node2 N_ContinueProcessingActiveEntry_Node3{"The system completes processing of
the active entry"}:::decision N_ContinueProcessingActiveEntry_Node3_action["The CCCOM entry counter J is
incremented by 1"]:::main N_ContinueProcessingActiveEntry_Node3 -- Yes --> N_ContinueProcessingActiveEntry_Node3_action N_ContinueProcessingActiveEntry_Node3_action --> E_ContinueProcessingActiveEntry N_ContinueProcessingActiveEntry_Node2 -- No --> N_ContinueProcessingActiveEntry_Node3 N_ContinueProcessingActiveEntry_Node3 -- No --> E_ContinueProcessingActiveEntry
entry"}:::decision N_ContinueProcessingActiveEntry_Node0_action["The database name from ISCOM entry
is copied to the CCCOM entry at the
current position"]:::main N_ContinueProcessingActiveEntry_Node0 -- Yes --> N_ContinueProcessingActiveEntry_Node0_action N_ContinueProcessingActiveEntry_Node0_action --> E_ContinueProcessingActiveEntry S_ContinueProcessingActiveEntry --> N_ContinueProcessingActiveEntry_Node0 N_ContinueProcessingActiveEntry_Node1{"The system processes the active PCB
entry"}:::decision N_ContinueProcessingActiveEntry_Node1_action["The PCB address from ISCOM entry is
set in the corresponding CCCOM entry"]:::main N_ContinueProcessingActiveEntry_Node1 -- Yes --> N_ContinueProcessingActiveEntry_Node1_action N_ContinueProcessingActiveEntry_Node1_action --> E_ContinueProcessingActiveEntry N_ContinueProcessingActiveEntry_Node0 -- No --> N_ContinueProcessingActiveEntry_Node1 N_ContinueProcessingActiveEntry_Node2{"The system determines the PCB
number assignment"}:::decision N_ContinueProcessingActiveEntry_Node2_action["If ISCOM PCB number equals 1 ,
CCCOM database number is set to
spaces otherwise ISCOM PCB number is
copied to CCCOM database number"]:::main N_ContinueProcessingActiveEntry_Node2 -- Yes --> N_ContinueProcessingActiveEntry_Node2_action N_ContinueProcessingActiveEntry_Node2_action --> E_ContinueProcessingActiveEntry N_ContinueProcessingActiveEntry_Node1 -- No --> N_ContinueProcessingActiveEntry_Node2 N_ContinueProcessingActiveEntry_Node3{"The system completes processing of
the active entry"}:::decision N_ContinueProcessingActiveEntry_Node3_action["The CCCOM entry counter J is
incremented by 1"]:::main N_ContinueProcessingActiveEntry_Node3 -- Yes --> N_ContinueProcessingActiveEntry_Node3_action N_ContinueProcessingActiveEntry_Node3_action --> E_ContinueProcessingActiveEntry N_ContinueProcessingActiveEntry_Node2 -- No --> N_ContinueProcessingActiveEntry_Node3 N_ContinueProcessingActiveEntry_Node3 -- No --> E_ContinueProcessingActiveEntry
File: CCISCOM.cbl
GIVEN:
An active ISCOM entry and a target CCCOM entry position
WHEN:
The system processes the active PCB entry
THEN:
The database name from ISCOM entry is copied to the CCCOM entry at the current position
File: CCISCOM.cbl
GIVEN:
An active ISCOM entry with non-zero PCB address and a target CCCOM entry
WHEN:
The system processes the active PCB entry
THEN:
The PCB address from ISCOM entry is set in the corresponding CCCOM entry
File: CCISCOM.cbl
GIVEN:
A calculated ISCOM PCB number and a target CCCOM entry
WHEN:
The system determines the PCB number assignment
THEN:
If ISCOM PCB number equals '1', CCCOM database number is set to spaces; otherwise ISCOM PCB number is copied to CCCOM database number
File: CCISCOM.cbl
GIVEN:
A processed active ISCOM entry
WHEN:
The system completes processing of the active entry
THEN:
The CCCOM entry counter (J) is incremented by 1
β Consolidated Acceptance Criteria
- The system begins processing the active entry → the PCB sequence number is initialized to 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializePCBSequenceNumberto1(["Start Step"])
E_InitializePCBSequenceNumberto1(["End Step"])
N_InitializePCBSequenceNumberto1_Node0{"The system begins processing the
active entry"}:::decision N_InitializePCBSequenceNumberto1_Node0_action["The PCB sequence number is
initialized to 1"]:::main N_InitializePCBSequenceNumberto1_Node0 -- Yes --> N_InitializePCBSequenceNumberto1_Node0_action N_InitializePCBSequenceNumberto1_Node0_action --> E_InitializePCBSequenceNumberto1 S_InitializePCBSequenceNumberto1 --> N_InitializePCBSequenceNumberto1_Node0 N_InitializePCBSequenceNumberto1_Node0 -- No --> E_InitializePCBSequenceNumberto1
active entry"}:::decision N_InitializePCBSequenceNumberto1_Node0_action["The PCB sequence number is
initialized to 1"]:::main N_InitializePCBSequenceNumberto1_Node0 -- Yes --> N_InitializePCBSequenceNumberto1_Node0_action N_InitializePCBSequenceNumberto1_Node0_action --> E_InitializePCBSequenceNumberto1 S_InitializePCBSequenceNumberto1 --> N_InitializePCBSequenceNumberto1_Node0 N_InitializePCBSequenceNumberto1_Node0 -- No --> E_InitializePCBSequenceNumberto1
File: CCISCOM.cbl
GIVEN:
An active PCB entry has been identified for processing
WHEN:
The system begins processing the active entry
THEN:
The PCB sequence number is initialized to 1
β Consolidated Acceptance Criteria
- The system needs to determine the sequential number for the current database → the system performs PCB number calculation by iterating through previous entries and incrementing the sequence number for each matching database name
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateSequentialPCBNumberforCurrentDatabase(["Start Step"])
E_CalculateSequentialPCBNumberforCurrentDatabase(["End Step"])
N_CalculateSequentialPCBNumberforCurrentDatabase_Node0{"The system needs to determine the
sequential number for the current
database"}:::decision N_CalculateSequentialPCBNumberforCurrentDatabase_Node0_action["The system performs PCB number
calculation by iterating through
previous entries and incrementing
the sequence number for each
matching database name"]:::main N_CalculateSequentialPCBNumberforCurrentDatabase_Node0 -- Yes --> N_CalculateSequentialPCBNumberforCurrentDatabase_Node0_action N_CalculateSequentialPCBNumberforCurrentDatabase_Node0_action --> E_CalculateSequentialPCBNumberforCurrentDatabase S_CalculateSequentialPCBNumberforCurrentDatabase --> N_CalculateSequentialPCBNumberforCurrentDatabase_Node0 N_CalculateSequentialPCBNumberforCurrentDatabase_Node0 -- No --> E_CalculateSequentialPCBNumberforCurrentDatabase
sequential number for the current
database"}:::decision N_CalculateSequentialPCBNumberforCurrentDatabase_Node0_action["The system performs PCB number
calculation by iterating through
previous entries and incrementing
the sequence number for each
matching database name"]:::main N_CalculateSequentialPCBNumberforCurrentDatabase_Node0 -- Yes --> N_CalculateSequentialPCBNumberforCurrentDatabase_Node0_action N_CalculateSequentialPCBNumberforCurrentDatabase_Node0_action --> E_CalculateSequentialPCBNumberforCurrentDatabase S_CalculateSequentialPCBNumberforCurrentDatabase --> N_CalculateSequentialPCBNumberforCurrentDatabase_Node0 N_CalculateSequentialPCBNumberforCurrentDatabase_Node0 -- No --> E_CalculateSequentialPCBNumberforCurrentDatabase
File: CCISCOM.cbl
GIVEN:
A database entry is being processed and PCB sequence number is initialized to 1
WHEN:
The system needs to determine the sequential number for the current database
THEN:
- The system performs pcb number calculation by iterating through previous entries
- Incrementing the sequence number for each matching database name
β Consolidated Acceptance Criteria
- The system is ready to create a new CCCOM entry → the CCCOM entry counter (J) is incremented by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementCCCOMEntryCounter(["Start Step"])
E_IncrementCCCOMEntryCounter(["End Step"])
N_IncrementCCCOMEntryCounter_Node0{"The system is ready to create a new
CCCOM entry"}:::decision N_IncrementCCCOMEntryCounter_Node0_action["The CCCOM entry counter J is
incremented by 1"]:::main N_IncrementCCCOMEntryCounter_Node0 -- Yes --> N_IncrementCCCOMEntryCounter_Node0_action N_IncrementCCCOMEntryCounter_Node0_action --> E_IncrementCCCOMEntryCounter S_IncrementCCCOMEntryCounter --> N_IncrementCCCOMEntryCounter_Node0 N_IncrementCCCOMEntryCounter_Node0 -- No --> E_IncrementCCCOMEntryCounter
CCCOM entry"}:::decision N_IncrementCCCOMEntryCounter_Node0_action["The CCCOM entry counter J is
incremented by 1"]:::main N_IncrementCCCOMEntryCounter_Node0 -- Yes --> N_IncrementCCCOMEntryCounter_Node0_action N_IncrementCCCOMEntryCounter_Node0_action --> E_IncrementCCCOMEntryCounter S_IncrementCCCOMEntryCounter --> N_IncrementCCCOMEntryCounter_Node0 N_IncrementCCCOMEntryCounter_Node0 -- No --> E_IncrementCCCOMEntryCounter
File: CCISCOM.cbl
GIVEN:
An active PCB entry is being processed
WHEN:
The system is ready to create a new CCCOM entry
THEN:
The CCCOM entry counter (J) is incremented by 1
β Consolidated Acceptance Criteria
- The system needs to populate the CCCOM entry with database information → the database name from the current ISCOM entry is copied to the corresponding CCCOM entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyDatabaseNamefromISCOMtoCCCOM(["Start Step"])
E_CopyDatabaseNamefromISCOMtoCCCOM(["End Step"])
N_CopyDatabaseNamefromISCOMtoCCCOM_Node0{"The system needs to populate the
CCCOM entry with database
information"}:::decision N_CopyDatabaseNamefromISCOMtoCCCOM_Node0_action["The database name from the current
ISCOM entry is copied to the
corresponding CCCOM entry"]:::main N_CopyDatabaseNamefromISCOMtoCCCOM_Node0 -- Yes --> N_CopyDatabaseNamefromISCOMtoCCCOM_Node0_action N_CopyDatabaseNamefromISCOMtoCCCOM_Node0_action --> E_CopyDatabaseNamefromISCOMtoCCCOM S_CopyDatabaseNamefromISCOMtoCCCOM --> N_CopyDatabaseNamefromISCOMtoCCCOM_Node0 N_CopyDatabaseNamefromISCOMtoCCCOM_Node0 -- No --> E_CopyDatabaseNamefromISCOMtoCCCOM
CCCOM entry with database
information"}:::decision N_CopyDatabaseNamefromISCOMtoCCCOM_Node0_action["The database name from the current
ISCOM entry is copied to the
corresponding CCCOM entry"]:::main N_CopyDatabaseNamefromISCOMtoCCCOM_Node0 -- Yes --> N_CopyDatabaseNamefromISCOMtoCCCOM_Node0_action N_CopyDatabaseNamefromISCOMtoCCCOM_Node0_action --> E_CopyDatabaseNamefromISCOMtoCCCOM S_CopyDatabaseNamefromISCOMtoCCCOM --> N_CopyDatabaseNamefromISCOMtoCCCOM_Node0 N_CopyDatabaseNamefromISCOMtoCCCOM_Node0 -- No --> E_CopyDatabaseNamefromISCOMtoCCCOM
File: CCISCOM.cbl
GIVEN:
An active PCB entry is being processed and CCCOM counter has been incremented
WHEN:
The system needs to populate the CCCOM entry with database information
THEN:
The database name from the current ISCOM entry is copied to the corresponding CCCOM entry
β Consolidated Acceptance Criteria
- The system needs to establish address mapping → the PCB address from the current ISCOM entry is mapped to the corresponding CCCOM entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapPCBAddressfromISCOMtoCCCOM(["Start Step"])
E_MapPCBAddressfromISCOMtoCCCOM(["End Step"])
N_MapPCBAddressfromISCOMtoCCCOM_Node0{"The system needs to establish
address mapping"}:::decision N_MapPCBAddressfromISCOMtoCCCOM_Node0_action["The PCB address from the current
ISCOM entry is mapped to the
corresponding CCCOM entry"]:::main N_MapPCBAddressfromISCOMtoCCCOM_Node0 -- Yes --> N_MapPCBAddressfromISCOMtoCCCOM_Node0_action N_MapPCBAddressfromISCOMtoCCCOM_Node0_action --> E_MapPCBAddressfromISCOMtoCCCOM S_MapPCBAddressfromISCOMtoCCCOM --> N_MapPCBAddressfromISCOMtoCCCOM_Node0 N_MapPCBAddressfromISCOMtoCCCOM_Node0 -- No --> E_MapPCBAddressfromISCOMtoCCCOM
address mapping"}:::decision N_MapPCBAddressfromISCOMtoCCCOM_Node0_action["The PCB address from the current
ISCOM entry is mapped to the
corresponding CCCOM entry"]:::main N_MapPCBAddressfromISCOMtoCCCOM_Node0 -- Yes --> N_MapPCBAddressfromISCOMtoCCCOM_Node0_action N_MapPCBAddressfromISCOMtoCCCOM_Node0_action --> E_MapPCBAddressfromISCOMtoCCCOM S_MapPCBAddressfromISCOMtoCCCOM --> N_MapPCBAddressfromISCOMtoCCCOM_Node0 N_MapPCBAddressfromISCOMtoCCCOM_Node0 -- No --> E_MapPCBAddressfromISCOMtoCCCOM
File: CCISCOM.cbl
GIVEN:
Database name has been copied from ISCOM to CCCOM
WHEN:
The system needs to establish address mapping
THEN:
The PCB address from the current ISCOM entry is mapped to the corresponding CCCOM entry
β Consolidated Acceptance Criteria
- The system needs to set the database number field → if the PCB sequence number equals 1, the database number is set to spaces indicating first occurrence, otherwise the database number is set to the calculated PCB sequence number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDatabaseNumbertoSpacesorPCBSequenceNumber(["Start Step"])
E_SetDatabaseNumbertoSpacesorPCBSequenceNumber(["End Step"])
N_SetDatabaseNumbertoSpacesorPCBSequenceNumber_Node0{"The system needs to set the
database number field"}:::decision N_SetDatabaseNumbertoSpacesorPCBSequenceNumber_Node0_action["If the PCB sequence number equals
1, the database number is set to
spaces indicating first occurrence,
otherwise the database number is set
to the calculated PCB sequence
number"]:::main N_SetDatabaseNumbertoSpacesorPCBSequenceNumber_Node0 -- Yes --> N_SetDatabaseNumbertoSpacesorPCBSequenceNumber_Node0_action N_SetDatabaseNumbertoSpacesorPCBSequenceNumber_Node0_action --> E_SetDatabaseNumbertoSpacesorPCBSequenceNumber S_SetDatabaseNumbertoSpacesorPCBSequenceNumber --> N_SetDatabaseNumbertoSpacesorPCBSequenceNumber_Node0 N_SetDatabaseNumbertoSpacesorPCBSequenceNumber_Node0 -- No --> E_SetDatabaseNumbertoSpacesorPCBSequenceNumber
database number field"}:::decision N_SetDatabaseNumbertoSpacesorPCBSequenceNumber_Node0_action["If the PCB sequence number equals
1, the database number is set to
spaces indicating first occurrence,
otherwise the database number is set
to the calculated PCB sequence
number"]:::main N_SetDatabaseNumbertoSpacesorPCBSequenceNumber_Node0 -- Yes --> N_SetDatabaseNumbertoSpacesorPCBSequenceNumber_Node0_action N_SetDatabaseNumbertoSpacesorPCBSequenceNumber_Node0_action --> E_SetDatabaseNumbertoSpacesorPCBSequenceNumber S_SetDatabaseNumbertoSpacesorPCBSequenceNumber --> N_SetDatabaseNumbertoSpacesorPCBSequenceNumber_Node0 N_SetDatabaseNumbertoSpacesorPCBSequenceNumber_Node0 -- No --> E_SetDatabaseNumbertoSpacesorPCBSequenceNumber
File: CCISCOM.cbl
GIVEN:
PCB address has been mapped and PCB sequence number has been calculated
WHEN:
The system needs to set the database number field
THEN:
If the PCB sequence number equals 1, the database number is set to spaces indicating first occurrence, otherwise the database number is set to the calculated PCB sequence number
β Consolidated Acceptance Criteria
- The system needs to determine the sequential PCB number for the current database entry → the system counts all previous occurrences of the same database name in positions 1 through I-1 and increments the PCB number for each match found, starting from an initial value of 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PCBSequenceNumberingCalculatesequentialPCBnumbersforactivedatabaseentries(["Start Step"])
E_PCBSequenceNumberingCalculatesequentialPCBnumbersforactivedatabaseentries(["End Step"])
N_PCBSequenceNumberingCalculatesequentialPCBnumbersforactivedatabaseentries_Node0{"The system needs to determine the
sequential PCB number for the
current database entry"}:::decision N_PCBSequenceNumberingCalculatesequentialPCBnumbersforactivedatabaseentries_Node0_action["The system counts all previous
occurrences of the same database
name in positions 1 through I-1 and
increments the PCB number for each
match found, starting from an
initial value of 1"]:::main N_PCBSequenceNumberingCalculatesequentialPCBnumbersforactivedatabaseentries_Node0 -- Yes --> N_PCBSequenceNumberingCalculatesequentialPCBnumbersforactivedatabaseentries_Node0_action N_PCBSequenceNumberingCalculatesequentialPCBnumbersforactivedatabaseentries_Node0_action --> E_PCBSequenceNumberingCalculatesequentialPCBnumbersforactivedatabaseentries S_PCBSequenceNumberingCalculatesequentialPCBnumbersforactivedatabaseentries --> N_PCBSequenceNumberingCalculatesequentialPCBnumbersforactivedatabaseentries_Node0 N_PCBSequenceNumberingCalculatesequentialPCBnumbersforactivedatabaseentries_Node0 -- No --> E_PCBSequenceNumberingCalculatesequentialPCBnumbersforactivedatabaseentries
sequential PCB number for the
current database entry"}:::decision N_PCBSequenceNumberingCalculatesequentialPCBnumbersforactivedatabaseentries_Node0_action["The system counts all previous
occurrences of the same database
name in positions 1 through I-1 and
increments the PCB number for each
match found, starting from an
initial value of 1"]:::main N_PCBSequenceNumberingCalculatesequentialPCBnumbersforactivedatabaseentries_Node0 -- Yes --> N_PCBSequenceNumberingCalculatesequentialPCBnumbersforactivedatabaseentries_Node0_action N_PCBSequenceNumberingCalculatesequentialPCBnumbersforactivedatabaseentries_Node0_action --> E_PCBSequenceNumberingCalculatesequentialPCBnumbersforactivedatabaseentries S_PCBSequenceNumberingCalculatesequentialPCBnumbersforactivedatabaseentries --> N_PCBSequenceNumberingCalculatesequentialPCBnumbersforactivedatabaseentries_Node0 N_PCBSequenceNumberingCalculatesequentialPCBnumbersforactivedatabaseentries_Node0 -- No --> E_PCBSequenceNumberingCalculatesequentialPCBnumbersforactivedatabaseentries
File: CCISCOM.cbl
GIVEN:
An ISCOM table with database entries and a current database entry at position I with a specific database name
WHEN:
The system needs to determine the sequential PCB number for the current database entry
THEN:
- The system counts all previous occurrences of the same database name in positions 1 through i-1
- Increments the pcb number for each match found, starting from an initial value of 1
β Consolidated Acceptance Criteria
- The system needs to determine the PCB sequence number for the database at position I by examining all previous positions from 1 to I-1 → the system increments the PCB sequence number for each previous entry that has the same database name as the current entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StartLoopK1toCurrentPositionI1Iteratethroughpreviousdatabaseentriestocountmatchingdatabasenamesforsequencecalculation(["Start Step"])
E_StartLoopK1toCurrentPositionI1Iteratethroughpreviousdatabaseentriestocountmatchingdatabasenamesforsequencecalculation(["End Step"])
N_StartLoopK1toCurrentPositionI1Iteratethroughpreviousdatabaseentriestocountmatchingdatabasenamesforsequencecalculation_Node0{"The system needs to determine the
PCB sequence number for the database
at position I by examining all
previous positions from 1 to I-1"}:::decision N_StartLoopK1toCurrentPositionI1Iteratethroughpreviousdatabaseentriestocountmatchingdatabasenamesforsequencecalculation_Node0_action["The system increments the PCB
sequence number for each previous
entry that has the same database
name as the current entry"]:::main N_StartLoopK1toCurrentPositionI1Iteratethroughpreviousdatabaseentriestocountmatchingdatabasenamesforsequencecalculation_Node0 -- Yes --> N_StartLoopK1toCurrentPositionI1Iteratethroughpreviousdatabaseentriestocountmatchingdatabasenamesforsequencecalculation_Node0_action N_StartLoopK1toCurrentPositionI1Iteratethroughpreviousdatabaseentriestocountmatchingdatabasenamesforsequencecalculation_Node0_action --> E_StartLoopK1toCurrentPositionI1Iteratethroughpreviousdatabaseentriestocountmatchingdatabasenamesforsequencecalculation S_StartLoopK1toCurrentPositionI1Iteratethroughpreviousdatabaseentriestocountmatchingdatabasenamesforsequencecalculation --> N_StartLoopK1toCurrentPositionI1Iteratethroughpreviousdatabaseentriestocountmatchingdatabasenamesforsequencecalculation_Node0 N_StartLoopK1toCurrentPositionI1Iteratethroughpreviousdatabaseentriestocountmatchingdatabasenamesforsequencecalculation_Node0 -- No --> E_StartLoopK1toCurrentPositionI1Iteratethroughpreviousdatabaseentriestocountmatchingdatabasenamesforsequencecalculation
PCB sequence number for the database
at position I by examining all
previous positions from 1 to I-1"}:::decision N_StartLoopK1toCurrentPositionI1Iteratethroughpreviousdatabaseentriestocountmatchingdatabasenamesforsequencecalculation_Node0_action["The system increments the PCB
sequence number for each previous
entry that has the same database
name as the current entry"]:::main N_StartLoopK1toCurrentPositionI1Iteratethroughpreviousdatabaseentriestocountmatchingdatabasenamesforsequencecalculation_Node0 -- Yes --> N_StartLoopK1toCurrentPositionI1Iteratethroughpreviousdatabaseentriestocountmatchingdatabasenamesforsequencecalculation_Node0_action N_StartLoopK1toCurrentPositionI1Iteratethroughpreviousdatabaseentriestocountmatchingdatabasenamesforsequencecalculation_Node0_action --> E_StartLoopK1toCurrentPositionI1Iteratethroughpreviousdatabaseentriestocountmatchingdatabasenamesforsequencecalculation S_StartLoopK1toCurrentPositionI1Iteratethroughpreviousdatabaseentriestocountmatchingdatabasenamesforsequencecalculation --> N_StartLoopK1toCurrentPositionI1Iteratethroughpreviousdatabaseentriestocountmatchingdatabasenamesforsequencecalculation_Node0 N_StartLoopK1toCurrentPositionI1Iteratethroughpreviousdatabaseentriestocountmatchingdatabasenamesforsequencecalculation_Node0 -- No --> E_StartLoopK1toCurrentPositionI1Iteratethroughpreviousdatabaseentriestocountmatchingdatabasenamesforsequencecalculation
File: CCISCOM.cbl
GIVEN:
An ISCOM table with database entries and a current position I being processed
WHEN:
The system needs to determine the PCB sequence number for the database at position I by examining all previous positions from 1 to I-1
THEN:
The system increments the PCB sequence number for each previous entry that has the same database name as the current entry
β Consolidated Acceptance Criteria
- The system compares the database names at these positions → if the database names match exactly, the system identifies them as the same database requiring sequential PCB numbering
- The database name in ISCOM entry at position K equals the database name in ISCOM entry at position I → the ISCOM PCB number counter is incremented by 1 to track the occurrence of matching database names
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CompareDatabaseNamesISCOMKvsISCOMI(["Start Step"])
E_CompareDatabaseNamesISCOMKvsISCOMI(["End Step"])
N_CompareDatabaseNamesISCOMKvsISCOMI_Node0{"The system compares the database
names at these positions"}:::decision N_CompareDatabaseNamesISCOMKvsISCOMI_Node0_action["If the database names match
exactly, the system identifies them
as the same database requiring
sequential PCB numbering"]:::main N_CompareDatabaseNamesISCOMKvsISCOMI_Node0 -- Yes --> N_CompareDatabaseNamesISCOMKvsISCOMI_Node0_action N_CompareDatabaseNamesISCOMKvsISCOMI_Node0_action --> E_CompareDatabaseNamesISCOMKvsISCOMI S_CompareDatabaseNamesISCOMKvsISCOMI --> N_CompareDatabaseNamesISCOMKvsISCOMI_Node0 N_CompareDatabaseNamesISCOMKvsISCOMI_Node1{"The database name in ISCOM entry at
position K equals the database name
in ISCOM entry at position I"}:::decision N_CompareDatabaseNamesISCOMKvsISCOMI_Node1_action["The ISCOM PCB number counter is
incremented by 1 to track the
occurrence of matching database
names"]:::main N_CompareDatabaseNamesISCOMKvsISCOMI_Node1 -- Yes --> N_CompareDatabaseNamesISCOMKvsISCOMI_Node1_action N_CompareDatabaseNamesISCOMKvsISCOMI_Node1_action --> E_CompareDatabaseNamesISCOMKvsISCOMI N_CompareDatabaseNamesISCOMKvsISCOMI_Node0 -- No --> N_CompareDatabaseNamesISCOMKvsISCOMI_Node1 N_CompareDatabaseNamesISCOMKvsISCOMI_Node1 -- No --> E_CompareDatabaseNamesISCOMKvsISCOMI
names at these positions"}:::decision N_CompareDatabaseNamesISCOMKvsISCOMI_Node0_action["If the database names match
exactly, the system identifies them
as the same database requiring
sequential PCB numbering"]:::main N_CompareDatabaseNamesISCOMKvsISCOMI_Node0 -- Yes --> N_CompareDatabaseNamesISCOMKvsISCOMI_Node0_action N_CompareDatabaseNamesISCOMKvsISCOMI_Node0_action --> E_CompareDatabaseNamesISCOMKvsISCOMI S_CompareDatabaseNamesISCOMKvsISCOMI --> N_CompareDatabaseNamesISCOMKvsISCOMI_Node0 N_CompareDatabaseNamesISCOMKvsISCOMI_Node1{"The database name in ISCOM entry at
position K equals the database name
in ISCOM entry at position I"}:::decision N_CompareDatabaseNamesISCOMKvsISCOMI_Node1_action["The ISCOM PCB number counter is
incremented by 1 to track the
occurrence of matching database
names"]:::main N_CompareDatabaseNamesISCOMKvsISCOMI_Node1 -- Yes --> N_CompareDatabaseNamesISCOMKvsISCOMI_Node1_action N_CompareDatabaseNamesISCOMKvsISCOMI_Node1_action --> E_CompareDatabaseNamesISCOMKvsISCOMI N_CompareDatabaseNamesISCOMKvsISCOMI_Node0 -- No --> N_CompareDatabaseNamesISCOMKvsISCOMI_Node1 N_CompareDatabaseNamesISCOMKvsISCOMI_Node1 -- No --> E_CompareDatabaseNamesISCOMKvsISCOMI
File: CCISCOM.cbl
GIVEN:
Two database entries in the ISCOM table at positions K and I
WHEN:
The system compares the database names at these positions
THEN:
If the database names match exactly, the system identifies them as the same database requiring sequential PCB numbering
File: CCISCOM.cbl
GIVEN:
Two ISCOM table entries with positions K and I are being compared, where K represents the comparison entry and I represents the current processing entry
WHEN:
The database name in ISCOM entry at position K equals the database name in ISCOM entry at position I
THEN:
The ISCOM PCB number counter is incremented by 1 to track the occurrence of matching database names
β Consolidated Acceptance Criteria
- The system finds that the database name at position K matches the database name at position I → the system adds 1 to the PCB sequence number counter to reflect the sequential occurrence of this database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementPCBSequenceNumber(["Start Step"])
E_IncrementPCBSequenceNumber(["End Step"])
N_IncrementPCBSequenceNumber_Node0{"The system finds that the database
name at position K matches the
database name at position I"}:::decision N_IncrementPCBSequenceNumber_Node0_action["The system adds 1 to the PCB
sequence number counter to reflect
the sequential occurrence of this
database"]:::main N_IncrementPCBSequenceNumber_Node0 -- Yes --> N_IncrementPCBSequenceNumber_Node0_action N_IncrementPCBSequenceNumber_Node0_action --> E_IncrementPCBSequenceNumber S_IncrementPCBSequenceNumber --> N_IncrementPCBSequenceNumber_Node0 N_IncrementPCBSequenceNumber_Node0 -- No --> E_IncrementPCBSequenceNumber
name at position K matches the
database name at position I"}:::decision N_IncrementPCBSequenceNumber_Node0_action["The system adds 1 to the PCB
sequence number counter to reflect
the sequential occurrence of this
database"]:::main N_IncrementPCBSequenceNumber_Node0 -- Yes --> N_IncrementPCBSequenceNumber_Node0_action N_IncrementPCBSequenceNumber_Node0_action --> E_IncrementPCBSequenceNumber S_IncrementPCBSequenceNumber --> N_IncrementPCBSequenceNumber_Node0 N_IncrementPCBSequenceNumber_Node0 -- No --> E_IncrementPCBSequenceNumber
File: CCISCOM.cbl
GIVEN:
A PCB sequence number counter (ISCOM-PCB-NUM) and two database entries with matching names
WHEN:
The system finds that the database name at position K matches the database name at position I
THEN:
The system adds 1 to the PCB sequence number counter to reflect the sequential occurrence of this database
β Consolidated Acceptance Criteria
- The system begins processing ISCOM entries for conversion to CCCOM → the CCCOM entry counter (J) is set to zero to track new entries
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeCCCOMEntryCounterto0(["Start Step"])
E_InitializeCCCOMEntryCounterto0(["End Step"])
N_InitializeCCCOMEntryCounterto0_Node0{"The system begins processing ISCOM
entries for conversion to CCCOM"}:::decision N_InitializeCCCOMEntryCounterto0_Node0_action["The CCCOM entry counter J is set to
zero to track new entries"]:::main N_InitializeCCCOMEntryCounterto0_Node0 -- Yes --> N_InitializeCCCOMEntryCounterto0_Node0_action N_InitializeCCCOMEntryCounterto0_Node0_action --> E_InitializeCCCOMEntryCounterto0 S_InitializeCCCOMEntryCounterto0 --> N_InitializeCCCOMEntryCounterto0_Node0 N_InitializeCCCOMEntryCounterto0_Node0 -- No --> E_InitializeCCCOMEntryCounterto0
entries for conversion to CCCOM"}:::decision N_InitializeCCCOMEntryCounterto0_Node0_action["The CCCOM entry counter J is set to
zero to track new entries"]:::main N_InitializeCCCOMEntryCounterto0_Node0 -- Yes --> N_InitializeCCCOMEntryCounterto0_Node0_action N_InitializeCCCOMEntryCounterto0_Node0_action --> E_InitializeCCCOMEntryCounterto0 S_InitializeCCCOMEntryCounterto0 --> N_InitializeCCCOMEntryCounterto0_Node0 N_InitializeCCCOMEntryCounterto0_Node0 -- No --> E_InitializeCCCOMEntryCounterto0
File: CCISCOM.cbl
GIVEN:
The database entry creation process is starting
WHEN:
The system begins processing ISCOM entries for conversion to CCCOM
THEN:
The CCCOM entry counter (J) is set to zero to track new entries
β Consolidated Acceptance Criteria
- The system checks the PCB address of the ISCOM entry → if PCB address is not zero, the entry is considered active and eligible for processing, otherwise it is skipped
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ISCOMEntryHasActivePCBAddress(["Start Step"])
E_ISCOMEntryHasActivePCBAddress(["End Step"])
N_ISCOMEntryHasActivePCBAddress_Node0{"The system checks the PCB address
of the ISCOM entry"}:::decision N_ISCOMEntryHasActivePCBAddress_Node0_action["If PCB address is not zero, the
entry is considered active and
eligible for processing, otherwise
it is skipped"]:::main N_ISCOMEntryHasActivePCBAddress_Node0 -- Yes --> N_ISCOMEntryHasActivePCBAddress_Node0_action N_ISCOMEntryHasActivePCBAddress_Node0_action --> E_ISCOMEntryHasActivePCBAddress S_ISCOMEntryHasActivePCBAddress --> N_ISCOMEntryHasActivePCBAddress_Node0 N_ISCOMEntryHasActivePCBAddress_Node0 -- No --> E_ISCOMEntryHasActivePCBAddress
of the ISCOM entry"}:::decision N_ISCOMEntryHasActivePCBAddress_Node0_action["If PCB address is not zero, the
entry is considered active and
eligible for processing, otherwise
it is skipped"]:::main N_ISCOMEntryHasActivePCBAddress_Node0 -- Yes --> N_ISCOMEntryHasActivePCBAddress_Node0_action N_ISCOMEntryHasActivePCBAddress_Node0_action --> E_ISCOMEntryHasActivePCBAddress S_ISCOMEntryHasActivePCBAddress --> N_ISCOMEntryHasActivePCBAddress_Node0 N_ISCOMEntryHasActivePCBAddress_Node0 -- No --> E_ISCOMEntryHasActivePCBAddress
File: CCISCOM.cbl
GIVEN:
An ISCOM database entry is being evaluated for conversion
WHEN:
The system checks the PCB address of the ISCOM entry
THEN:
- If pcb address is not zero, the entry is considered active
- Eligible for processing, otherwise it is skipped
β Consolidated Acceptance Criteria
- The system processes the ISCOM entry with non-zero PCB address → the system increments the CCCOM entry counter, copies the database name from ISCOM to CCCOM, sets the PCB address, and assigns the database number (spaces if PCB number is '1', otherwise the actual PCB number)
- The system encounters a database name that may have multiple instances → the system counts how many times the same database name appears in ISCOM entries up to the current position to determine the correct PCB sequence number
- The system needs to assign the database number in CCCOM structure → if the PCB sequence number is '1', the database number is set to spaces, otherwise the actual PCB sequence number is assigned as the database number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateNewCCCOMDatabaseEntry(["Start Step"])
E_CreateNewCCCOMDatabaseEntry(["End Step"])
N_CreateNewCCCOMDatabaseEntry_Node0{"The system processes the ISCOM
entry with non-zero PCB address"}:::decision N_CreateNewCCCOMDatabaseEntry_Node0_action["The system increments the CCCOM
entry counter, copies the database
name from ISCOM to CCCOM, sets the
PCB address, and assigns the
database number spaces if PCB number
is 1 , otherwise the actual PCB
number"]:::main N_CreateNewCCCOMDatabaseEntry_Node0 -- Yes --> N_CreateNewCCCOMDatabaseEntry_Node0_action N_CreateNewCCCOMDatabaseEntry_Node0_action --> E_CreateNewCCCOMDatabaseEntry S_CreateNewCCCOMDatabaseEntry --> N_CreateNewCCCOMDatabaseEntry_Node0 N_CreateNewCCCOMDatabaseEntry_Node1{"The system encounters a database
name that may have multiple
instances"}:::decision N_CreateNewCCCOMDatabaseEntry_Node1_action["The system counts how many times
the same database name appears in
ISCOM entries up to the current
position to determine the correct
PCB sequence number"]:::main N_CreateNewCCCOMDatabaseEntry_Node1 -- Yes --> N_CreateNewCCCOMDatabaseEntry_Node1_action N_CreateNewCCCOMDatabaseEntry_Node1_action --> E_CreateNewCCCOMDatabaseEntry N_CreateNewCCCOMDatabaseEntry_Node0 -- No --> N_CreateNewCCCOMDatabaseEntry_Node1 N_CreateNewCCCOMDatabaseEntry_Node2{"The system needs to assign the
database number in CCCOM structure"}:::decision N_CreateNewCCCOMDatabaseEntry_Node2_action["If the PCB sequence number is 1 ,
the database number is set to
spaces, otherwise the actual PCB
sequence number is assigned as the
database number"]:::main N_CreateNewCCCOMDatabaseEntry_Node2 -- Yes --> N_CreateNewCCCOMDatabaseEntry_Node2_action N_CreateNewCCCOMDatabaseEntry_Node2_action --> E_CreateNewCCCOMDatabaseEntry N_CreateNewCCCOMDatabaseEntry_Node1 -- No --> N_CreateNewCCCOMDatabaseEntry_Node2 N_CreateNewCCCOMDatabaseEntry_Node2 -- No --> E_CreateNewCCCOMDatabaseEntry
entry with non-zero PCB address"}:::decision N_CreateNewCCCOMDatabaseEntry_Node0_action["The system increments the CCCOM
entry counter, copies the database
name from ISCOM to CCCOM, sets the
PCB address, and assigns the
database number spaces if PCB number
is 1 , otherwise the actual PCB
number"]:::main N_CreateNewCCCOMDatabaseEntry_Node0 -- Yes --> N_CreateNewCCCOMDatabaseEntry_Node0_action N_CreateNewCCCOMDatabaseEntry_Node0_action --> E_CreateNewCCCOMDatabaseEntry S_CreateNewCCCOMDatabaseEntry --> N_CreateNewCCCOMDatabaseEntry_Node0 N_CreateNewCCCOMDatabaseEntry_Node1{"The system encounters a database
name that may have multiple
instances"}:::decision N_CreateNewCCCOMDatabaseEntry_Node1_action["The system counts how many times
the same database name appears in
ISCOM entries up to the current
position to determine the correct
PCB sequence number"]:::main N_CreateNewCCCOMDatabaseEntry_Node1 -- Yes --> N_CreateNewCCCOMDatabaseEntry_Node1_action N_CreateNewCCCOMDatabaseEntry_Node1_action --> E_CreateNewCCCOMDatabaseEntry N_CreateNewCCCOMDatabaseEntry_Node0 -- No --> N_CreateNewCCCOMDatabaseEntry_Node1 N_CreateNewCCCOMDatabaseEntry_Node2{"The system needs to assign the
database number in CCCOM structure"}:::decision N_CreateNewCCCOMDatabaseEntry_Node2_action["If the PCB sequence number is 1 ,
the database number is set to
spaces, otherwise the actual PCB
sequence number is assigned as the
database number"]:::main N_CreateNewCCCOMDatabaseEntry_Node2 -- Yes --> N_CreateNewCCCOMDatabaseEntry_Node2_action N_CreateNewCCCOMDatabaseEntry_Node2_action --> E_CreateNewCCCOMDatabaseEntry N_CreateNewCCCOMDatabaseEntry_Node1 -- No --> N_CreateNewCCCOMDatabaseEntry_Node2 N_CreateNewCCCOMDatabaseEntry_Node2 -- No --> E_CreateNewCCCOMDatabaseEntry
File: CCISCOM.cbl
GIVEN:
An active ISCOM database entry needs to be converted to CCCOM format
WHEN:
The system processes the ISCOM entry with non-zero PCB address
THEN:
The system increments the CCCOM entry counter, copies the database name from ISCOM to CCCOM, sets the PCB address, and assigns the database number (spaces if PCB number is '1', otherwise the actual PCB number)
File: CCISCOM.cbl
GIVEN:
A database entry is being processed and needs a PCB sequence number
WHEN:
The system encounters a database name that may have multiple instances
THEN:
The system counts how many times the same database name appears in ISCOM entries up to the current position to determine the correct PCB sequence number
File: CCISCOM.cbl
GIVEN:
A PCB sequence number has been calculated for a database entry
WHEN:
The system needs to assign the database number in CCCOM structure
THEN:
If the PCB sequence number is '1', the database number is set to spaces, otherwise the actual PCB sequence number is assigned as the database number
β Consolidated Acceptance Criteria
- The system performs reverse conversion from ISCOM to CCCOM format → the PCB address from ISCOM entry I is copied to CCCOM entry J to establish the database access reference
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyPCBAddressfromISCOMEntryItoCCCOMEntryJ(["Start Step"])
E_CopyPCBAddressfromISCOMEntryItoCCCOMEntryJ(["End Step"])
N_CopyPCBAddressfromISCOMEntryItoCCCOMEntryJ_Node0{"The system performs reverse
conversion from ISCOM to CCCOM
format"}:::decision N_CopyPCBAddressfromISCOMEntryItoCCCOMEntryJ_Node0_action["The PCB address from ISCOM entry I
is copied to CCCOM entry J to
establish the database access
reference"]:::main N_CopyPCBAddressfromISCOMEntryItoCCCOMEntryJ_Node0 -- Yes --> N_CopyPCBAddressfromISCOMEntryItoCCCOMEntryJ_Node0_action N_CopyPCBAddressfromISCOMEntryItoCCCOMEntryJ_Node0_action --> E_CopyPCBAddressfromISCOMEntryItoCCCOMEntryJ S_CopyPCBAddressfromISCOMEntryItoCCCOMEntryJ --> N_CopyPCBAddressfromISCOMEntryItoCCCOMEntryJ_Node0 N_CopyPCBAddressfromISCOMEntryItoCCCOMEntryJ_Node0 -- No --> E_CopyPCBAddressfromISCOMEntryItoCCCOMEntryJ
conversion from ISCOM to CCCOM
format"}:::decision N_CopyPCBAddressfromISCOMEntryItoCCCOMEntryJ_Node0_action["The PCB address from ISCOM entry I
is copied to CCCOM entry J to
establish the database access
reference"]:::main N_CopyPCBAddressfromISCOMEntryItoCCCOMEntryJ_Node0 -- Yes --> N_CopyPCBAddressfromISCOMEntryItoCCCOMEntryJ_Node0_action N_CopyPCBAddressfromISCOMEntryItoCCCOMEntryJ_Node0_action --> E_CopyPCBAddressfromISCOMEntryItoCCCOMEntryJ S_CopyPCBAddressfromISCOMEntryItoCCCOMEntryJ --> N_CopyPCBAddressfromISCOMEntryItoCCCOMEntryJ_Node0 N_CopyPCBAddressfromISCOMEntryItoCCCOMEntryJ_Node0 -- No --> E_CopyPCBAddressfromISCOMEntryItoCCCOMEntryJ
File: CCISCOM.cbl
GIVEN:
An ISCOM entry at position I contains a valid PCB address and a corresponding CCCOM entry exists at position J
WHEN:
The system performs reverse conversion from ISCOM to CCCOM format
THEN:
The PCB address from ISCOM entry I is copied to CCCOM entry J to establish the database access reference
β Consolidated Acceptance Criteria
- The ISCOM PCB number equals '1' indicating this is the first occurrence of this database name → the database number field in the CCCOM entry should be set to spaces to mark it as the primary database reference
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AssignSPACEStoDatabaseNumberFirstOccurrence(["Start Step"])
E_AssignSPACEStoDatabaseNumberFirstOccurrence(["End Step"])
N_AssignSPACEStoDatabaseNumberFirstOccurrence_Node0{"The ISCOM PCB number equals 1
indicating this is the first
occurrence of this database name"}:::decision N_AssignSPACEStoDatabaseNumberFirstOccurrence_Node0_action["The database number field in the
CCCOM entry should be set to spaces
to mark it as the primary database
reference"]:::main N_AssignSPACEStoDatabaseNumberFirstOccurrence_Node0 -- Yes --> N_AssignSPACEStoDatabaseNumberFirstOccurrence_Node0_action N_AssignSPACEStoDatabaseNumberFirstOccurrence_Node0_action --> E_AssignSPACEStoDatabaseNumberFirstOccurrence S_AssignSPACEStoDatabaseNumberFirstOccurrence --> N_AssignSPACEStoDatabaseNumberFirstOccurrence_Node0 N_AssignSPACEStoDatabaseNumberFirstOccurrence_Node0 -- No --> E_AssignSPACEStoDatabaseNumberFirstOccurrence
indicating this is the first
occurrence of this database name"}:::decision N_AssignSPACEStoDatabaseNumberFirstOccurrence_Node0_action["The database number field in the
CCCOM entry should be set to spaces
to mark it as the primary database
reference"]:::main N_AssignSPACEStoDatabaseNumberFirstOccurrence_Node0 -- Yes --> N_AssignSPACEStoDatabaseNumberFirstOccurrence_Node0_action N_AssignSPACEStoDatabaseNumberFirstOccurrence_Node0_action --> E_AssignSPACEStoDatabaseNumberFirstOccurrence S_AssignSPACEStoDatabaseNumberFirstOccurrence --> N_AssignSPACEStoDatabaseNumberFirstOccurrence_Node0 N_AssignSPACEStoDatabaseNumberFirstOccurrence_Node0 -- No --> E_AssignSPACEStoDatabaseNumberFirstOccurrence
File: CCISCOM.cbl
GIVEN:
A database entry is being processed during ISCOM to CCCOM conversion and the ISCOM PCB number has been determined
WHEN:
The ISCOM PCB number equals '1' indicating this is the first occurrence of this database name
THEN:
The database number field in the CCCOM entry should be set to spaces to mark it as the primary database reference
β Consolidated Acceptance Criteria
- The ISCOM PCB number is not equal to '1' indicating this is a subsequent occurrence of this database name → the database number field in the CCCOM entry should be set to the actual ISCOM PCB number to maintain proper sequencing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AssignPCBNumbertoDatabaseNumberSubsequentOccurrence(["Start Step"])
E_AssignPCBNumbertoDatabaseNumberSubsequentOccurrence(["End Step"])
N_AssignPCBNumbertoDatabaseNumberSubsequentOccurrence_Node0{"The ISCOM PCB number is not equal
to 1 indicating this is a subsequent
occurrence of this database name"}:::decision N_AssignPCBNumbertoDatabaseNumberSubsequentOccurrence_Node0_action["The database number field in the
CCCOM entry should be set to the
actual ISCOM PCB number to maintain
proper sequencing"]:::main N_AssignPCBNumbertoDatabaseNumberSubsequentOccurrence_Node0 -- Yes --> N_AssignPCBNumbertoDatabaseNumberSubsequentOccurrence_Node0_action N_AssignPCBNumbertoDatabaseNumberSubsequentOccurrence_Node0_action --> E_AssignPCBNumbertoDatabaseNumberSubsequentOccurrence S_AssignPCBNumbertoDatabaseNumberSubsequentOccurrence --> N_AssignPCBNumbertoDatabaseNumberSubsequentOccurrence_Node0 N_AssignPCBNumbertoDatabaseNumberSubsequentOccurrence_Node0 -- No --> E_AssignPCBNumbertoDatabaseNumberSubsequentOccurrence
to 1 indicating this is a subsequent
occurrence of this database name"}:::decision N_AssignPCBNumbertoDatabaseNumberSubsequentOccurrence_Node0_action["The database number field in the
CCCOM entry should be set to the
actual ISCOM PCB number to maintain
proper sequencing"]:::main N_AssignPCBNumbertoDatabaseNumberSubsequentOccurrence_Node0 -- Yes --> N_AssignPCBNumbertoDatabaseNumberSubsequentOccurrence_Node0_action N_AssignPCBNumbertoDatabaseNumberSubsequentOccurrence_Node0_action --> E_AssignPCBNumbertoDatabaseNumberSubsequentOccurrence S_AssignPCBNumbertoDatabaseNumberSubsequentOccurrence --> N_AssignPCBNumbertoDatabaseNumberSubsequentOccurrence_Node0 N_AssignPCBNumbertoDatabaseNumberSubsequentOccurrence_Node0 -- No --> E_AssignPCBNumbertoDatabaseNumberSubsequentOccurrence
File: CCISCOM.cbl
Exclusion / Alternative Path
GIVEN:
A database entry is being processed during ISCOM to CCCOM conversion and the ISCOM PCB number has been determined
WHEN:
The ISCOM PCB number is not equal to '1' indicating this is a subsequent occurrence of this database name
THEN:
The database number field in the CCCOM entry should be set to the actual ISCOM PCB number to maintain proper sequencing
CERR Sequence (US Train)
Objective: This COBOL program (CERR) serves as an error handling utility that processes error conditions by generating diagnostic dumps and routing error processing to appropriate environment-specific modules. The program determines whether to call production or test error handling routines based on system configuration, and can optionally suppress actual error processing to produce only diagnostic dumps when requested.
πΊοΈ High-Level Visual Map
flowchart TD
A[Program Start]:::start
B[4:Common Error Processing - Call DCCCOM]:::process
C{3:Dump Only Check - WS-DUMP-ONLY?}:::decision
D{2:Environment Detection - CC-PROD-TEST-IMS = WS-PROD?}:::decision
E[5:Production Error Handling - Call CERRPROD]:::process
F[6:Test Error Handling - Call CERRTEST]:::process
G[7:Error Notification Display - Display blocking error message]:::process
H[8:Program Termination - Return control]:::final
A --> B
B --> C
C -->|No| D
C -->|Yes| G
D -->|Yes| E
D -->|No| F
E --> G
F --> G
G --> H
classDef start fill:#67A353
classDef process fill:#08AAD2
classDef decision fill:#FFE347
classDef datasource fill:#2EA597
classDef final fill:#D13313
classDef success fill:#2BB534
classDef error fill:#D13313
π Step-by-Step Logic Trace
β Consolidated Acceptance Criteria
- The system compares CC-PROD-TEST-IMS with WS-PROD value → if CC-PROD-TEST-IMS equals WS-PROD, route to production error handling; otherwise route to test error handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_2EnvironmentDetectionCCPRODTESTIMSWSPROD(["Start Step"])
E_2EnvironmentDetectionCCPRODTESTIMSWSPROD(["End Step"])
N_2EnvironmentDetectionCCPRODTESTIMSWSPROD_Node0{"The system compares
CC-PROD-TEST-IMS with WS-PROD value"}:::decision N_2EnvironmentDetectionCCPRODTESTIMSWSPROD_Node0_action["If CC-PROD-TEST-IMS equals WS-PROD,
route to production error handling
otherwise route to test error
handling"]:::main N_2EnvironmentDetectionCCPRODTESTIMSWSPROD_Node0 -- Yes --> N_2EnvironmentDetectionCCPRODTESTIMSWSPROD_Node0_action N_2EnvironmentDetectionCCPRODTESTIMSWSPROD_Node0_action --> E_2EnvironmentDetectionCCPRODTESTIMSWSPROD S_2EnvironmentDetectionCCPRODTESTIMSWSPROD --> N_2EnvironmentDetectionCCPRODTESTIMSWSPROD_Node0 N_2EnvironmentDetectionCCPRODTESTIMSWSPROD_Node0 -- No --> E_2EnvironmentDetectionCCPRODTESTIMSWSPROD
CC-PROD-TEST-IMS with WS-PROD value"}:::decision N_2EnvironmentDetectionCCPRODTESTIMSWSPROD_Node0_action["If CC-PROD-TEST-IMS equals WS-PROD,
route to production error handling
otherwise route to test error
handling"]:::main N_2EnvironmentDetectionCCPRODTESTIMSWSPROD_Node0 -- Yes --> N_2EnvironmentDetectionCCPRODTESTIMSWSPROD_Node0_action N_2EnvironmentDetectionCCPRODTESTIMSWSPROD_Node0_action --> E_2EnvironmentDetectionCCPRODTESTIMSWSPROD S_2EnvironmentDetectionCCPRODTESTIMSWSPROD --> N_2EnvironmentDetectionCCPRODTESTIMSWSPROD_Node0 N_2EnvironmentDetectionCCPRODTESTIMSWSPROD_Node0 -- No --> E_2EnvironmentDetectionCCPRODTESTIMSWSPROD
File: CERR.cbl
Exclusion / Alternative Path
GIVEN:
The system is not in dump-only mode and environment detection is required
WHEN:
The system compares CC-PROD-TEST-IMS with WS-PROD value
THEN:
If CC-PROD-TEST-IMS equals WS-PROD, route to production error handling; otherwise route to test error handling
β Consolidated Acceptance Criteria
- The system checks the dump-only mode flag WS-DUMP-ONLY → if WS-DUMP-ONLY is true, skip environment-specific error handling and proceed directly to error notification; if WS-DUMP-ONLY is false, continue with environment detection
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_3DumpOnlyCheckWSDUMPONLY(["Start Step"])
E_3DumpOnlyCheckWSDUMPONLY(["End Step"])
N_3DumpOnlyCheckWSDUMPONLY_Node0{"The system checks the dump-only
mode flag WS-DUMP-ONLY"}:::decision N_3DumpOnlyCheckWSDUMPONLY_Node0_action["If WS-DUMP-ONLY is true, skip
environment-specific error handling
and proceed directly to error
notification if WS-DUMP-ONLY is
false, continue with environment
detection"]:::main N_3DumpOnlyCheckWSDUMPONLY_Node0 -- Yes --> N_3DumpOnlyCheckWSDUMPONLY_Node0_action N_3DumpOnlyCheckWSDUMPONLY_Node0_action --> E_3DumpOnlyCheckWSDUMPONLY S_3DumpOnlyCheckWSDUMPONLY --> N_3DumpOnlyCheckWSDUMPONLY_Node0 N_3DumpOnlyCheckWSDUMPONLY_Node0 -- No --> E_3DumpOnlyCheckWSDUMPONLY
mode flag WS-DUMP-ONLY"}:::decision N_3DumpOnlyCheckWSDUMPONLY_Node0_action["If WS-DUMP-ONLY is true, skip
environment-specific error handling
and proceed directly to error
notification if WS-DUMP-ONLY is
false, continue with environment
detection"]:::main N_3DumpOnlyCheckWSDUMPONLY_Node0 -- Yes --> N_3DumpOnlyCheckWSDUMPONLY_Node0_action N_3DumpOnlyCheckWSDUMPONLY_Node0_action --> E_3DumpOnlyCheckWSDUMPONLY S_3DumpOnlyCheckWSDUMPONLY --> N_3DumpOnlyCheckWSDUMPONLY_Node0 N_3DumpOnlyCheckWSDUMPONLY_Node0 -- No --> E_3DumpOnlyCheckWSDUMPONLY
File: CERR.cbl
GIVEN:
The common communication area has been initialized
WHEN:
The system checks the dump-only mode flag WS-DUMP-ONLY
THEN:
- If ws-dump-only is true, skip environment-specific error handling
- Proceed directly to error notification; if ws-dump-only is false, continue with environment detection
β Consolidated Acceptance Criteria
- The program begins error handling workflow → the common communication area CCCOM is initialized through DCCCOM service
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_4CommonErrorProcessingCallDCCCOM(["Start Step"])
E_4CommonErrorProcessingCallDCCCOM(["End Step"])
N_4CommonErrorProcessingCallDCCCOM_Node0{"The program begins error handling
workflow"}:::decision N_4CommonErrorProcessingCallDCCCOM_Node0_action["The common communication area CCCOM
is initialized through DCCCOM
service"]:::exclusion N_4CommonErrorProcessingCallDCCCOM_Node0 -- Yes -->|Alternative| N_4CommonErrorProcessingCallDCCCOM_Node0_action N_4CommonErrorProcessingCallDCCCOM_Node0_action --> E_4CommonErrorProcessingCallDCCCOM S_4CommonErrorProcessingCallDCCCOM --> N_4CommonErrorProcessingCallDCCCOM_Node0 N_4CommonErrorProcessingCallDCCCOM_Node0 -- No --> E_4CommonErrorProcessingCallDCCCOM
workflow"}:::decision N_4CommonErrorProcessingCallDCCCOM_Node0_action["The common communication area CCCOM
is initialized through DCCCOM
service"]:::exclusion N_4CommonErrorProcessingCallDCCCOM_Node0 -- Yes -->|Alternative| N_4CommonErrorProcessingCallDCCCOM_Node0_action N_4CommonErrorProcessingCallDCCCOM_Node0_action --> E_4CommonErrorProcessingCallDCCCOM S_4CommonErrorProcessingCallDCCCOM --> N_4CommonErrorProcessingCallDCCCOM_Node0 N_4CommonErrorProcessingCallDCCCOM_Node0 -- No --> E_4CommonErrorProcessingCallDCCCOM
File: CERR.cbl
GIVEN:
The error processing program starts execution
WHEN:
The program begins error handling workflow
THEN:
The common communication area CCCOM is initialized through DCCCOM service
β Consolidated Acceptance Criteria
- Production error handling is required → the CERRPROD service is invoked with CCCOM communication area to handle production-specific error processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_5ProductionErrorHandlingCallCERRPROD(["Start Step"])
E_5ProductionErrorHandlingCallCERRPROD(["End Step"])
N_5ProductionErrorHandlingCallCERRPROD_Node0{"Production error handling is
required"}:::decision N_5ProductionErrorHandlingCallCERRPROD_Node0_action["The CERRPROD service is invoked
with CCCOM communication area to
handle production-specific error
processing"]:::exclusion N_5ProductionErrorHandlingCallCERRPROD_Node0 -- Yes -->|Alternative| N_5ProductionErrorHandlingCallCERRPROD_Node0_action N_5ProductionErrorHandlingCallCERRPROD_Node0_action --> E_5ProductionErrorHandlingCallCERRPROD S_5ProductionErrorHandlingCallCERRPROD --> N_5ProductionErrorHandlingCallCERRPROD_Node0 N_5ProductionErrorHandlingCallCERRPROD_Node0 -- No --> E_5ProductionErrorHandlingCallCERRPROD
required"}:::decision N_5ProductionErrorHandlingCallCERRPROD_Node0_action["The CERRPROD service is invoked
with CCCOM communication area to
handle production-specific error
processing"]:::exclusion N_5ProductionErrorHandlingCallCERRPROD_Node0 -- Yes -->|Alternative| N_5ProductionErrorHandlingCallCERRPROD_Node0_action N_5ProductionErrorHandlingCallCERRPROD_Node0_action --> E_5ProductionErrorHandlingCallCERRPROD S_5ProductionErrorHandlingCallCERRPROD --> N_5ProductionErrorHandlingCallCERRPROD_Node0 N_5ProductionErrorHandlingCallCERRPROD_Node0 -- No --> E_5ProductionErrorHandlingCallCERRPROD
File: CERR.cbl
GIVEN:
The system has detected production environment (CC-PROD-TEST-IMS equals WS-PROD)
WHEN:
Production error handling is required
THEN:
The CERRPROD service is invoked with CCCOM communication area to handle production-specific error processing
β Consolidated Acceptance Criteria
- Test error handling is required → the CERRTEST service is invoked with CCCOM communication area to handle test-specific error processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_6TestErrorHandlingCallCERRTEST(["Start Step"])
E_6TestErrorHandlingCallCERRTEST(["End Step"])
N_6TestErrorHandlingCallCERRTEST_Node0{"Test error handling is required"}:::decision
N_6TestErrorHandlingCallCERRTEST_Node0_action["The CERRTEST service is invoked
with CCCOM communication area to
handle test-specific error
processing"]:::exclusion N_6TestErrorHandlingCallCERRTEST_Node0 -- Yes -->|Alternative| N_6TestErrorHandlingCallCERRTEST_Node0_action N_6TestErrorHandlingCallCERRTEST_Node0_action --> E_6TestErrorHandlingCallCERRTEST S_6TestErrorHandlingCallCERRTEST --> N_6TestErrorHandlingCallCERRTEST_Node0 N_6TestErrorHandlingCallCERRTEST_Node0 -- No --> E_6TestErrorHandlingCallCERRTEST
with CCCOM communication area to
handle test-specific error
processing"]:::exclusion N_6TestErrorHandlingCallCERRTEST_Node0 -- Yes -->|Alternative| N_6TestErrorHandlingCallCERRTEST_Node0_action N_6TestErrorHandlingCallCERRTEST_Node0_action --> E_6TestErrorHandlingCallCERRTEST S_6TestErrorHandlingCallCERRTEST --> N_6TestErrorHandlingCallCERRTEST_Node0 N_6TestErrorHandlingCallCERRTEST_Node0 -- No --> E_6TestErrorHandlingCallCERRTEST
File: CERR.cbl
Exclusion / Alternative Path
GIVEN:
The system has detected test environment (CC-PROD-TEST-IMS does not equal WS-PROD)
WHEN:
Test error handling is required
THEN:
The CERRTEST service is invoked with CCCOM communication area to handle test-specific error processing
β Consolidated Acceptance Criteria
- Error notification is required → display blocking error message with header and footer delimiters to system error output (SYSERR)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_7ErrorNotificationDisplayDisplayblockingerrormessage(["Start Step"])
E_7ErrorNotificationDisplayDisplayblockingerrormessage(["End Step"])
N_7ErrorNotificationDisplayDisplayblockingerrormessage_Node0{"Error notification is required"}:::decision
N_7ErrorNotificationDisplayDisplayblockingerrormessage_Node0_action["Display blocking error message with
header and footer delimiters to
system error output SYSERR"]:::exclusion N_7ErrorNotificationDisplayDisplayblockingerrormessage_Node0 -- Yes -->|Alternative| N_7ErrorNotificationDisplayDisplayblockingerrormessage_Node0_action N_7ErrorNotificationDisplayDisplayblockingerrormessage_Node0_action --> E_7ErrorNotificationDisplayDisplayblockingerrormessage S_7ErrorNotificationDisplayDisplayblockingerrormessage --> N_7ErrorNotificationDisplayDisplayblockingerrormessage_Node0 N_7ErrorNotificationDisplayDisplayblockingerrormessage_Node0 -- No --> E_7ErrorNotificationDisplayDisplayblockingerrormessage
header and footer delimiters to
system error output SYSERR"]:::exclusion N_7ErrorNotificationDisplayDisplayblockingerrormessage_Node0 -- Yes -->|Alternative| N_7ErrorNotificationDisplayDisplayblockingerrormessage_Node0_action N_7ErrorNotificationDisplayDisplayblockingerrormessage_Node0_action --> E_7ErrorNotificationDisplayDisplayblockingerrormessage S_7ErrorNotificationDisplayDisplayblockingerrormessage --> N_7ErrorNotificationDisplayDisplayblockingerrormessage_Node0 N_7ErrorNotificationDisplayDisplayblockingerrormessage_Node0 -- No --> E_7ErrorNotificationDisplayDisplayblockingerrormessage
File: CERR.cbl
GIVEN:
Error processing has completed (either environment-specific handling or dump-only mode)
WHEN:
Error notification is required
THEN:
- Display blocking error message with header
- Footer delimiters to system error output (syserr)
β Consolidated Acceptance Criteria
- The error processing workflow reaches completion → return control to the calling program using GOBACK statement
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_8ProgramTerminationReturncontrol(["Start Step"])
E_8ProgramTerminationReturncontrol(["End Step"])
N_8ProgramTerminationReturncontrol_Node0{"The error processing workflow
reaches completion"}:::decision N_8ProgramTerminationReturncontrol_Node0_action["Return control to the calling
program using GOBACK statement"]:::exclusion N_8ProgramTerminationReturncontrol_Node0 -- Yes -->|Alternative| N_8ProgramTerminationReturncontrol_Node0_action N_8ProgramTerminationReturncontrol_Node0_action --> E_8ProgramTerminationReturncontrol S_8ProgramTerminationReturncontrol --> N_8ProgramTerminationReturncontrol_Node0 N_8ProgramTerminationReturncontrol_Node0 -- No --> E_8ProgramTerminationReturncontrol
reaches completion"}:::decision N_8ProgramTerminationReturncontrol_Node0_action["Return control to the calling
program using GOBACK statement"]:::exclusion N_8ProgramTerminationReturncontrol_Node0 -- Yes -->|Alternative| N_8ProgramTerminationReturncontrol_Node0_action N_8ProgramTerminationReturncontrol_Node0_action --> E_8ProgramTerminationReturncontrol S_8ProgramTerminationReturncontrol --> N_8ProgramTerminationReturncontrol_Node0 N_8ProgramTerminationReturncontrol_Node0 -- No --> E_8ProgramTerminationReturncontrol
File: CERR.cbl
GIVEN:
All error processing steps and notifications have been completed
WHEN:
The error processing workflow reaches completion
THEN:
Return control to the calling program using GOBACK statement
β Consolidated Acceptance Criteria
- The main procedure begins execution → the communication area CCCOM is initialized through the DCCCOM module
- The dump-only mode is active (WS-DUMP-ONLY is true) → error processing is bypassed and control proceeds to program termination
- The environment indicator CC-PROD-TEST-IMS equals the production value WS-PROD → the production error handler CERRPROD is invoked with CCCOM parameters
- The environment indicator CC-PROD-TEST-IMS does not equal the production value WS-PROD → the test error handler CERRTEST is invoked with CCCOM parameters
- The program reaches the notification phase → a blocking error message is displayed to the system error output
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet(["Start Step"])
E_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet(["End Step"])
N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node0{"The main procedure begins execution"}:::decision
N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node0_action["The communication area CCCOM is
initialized through the DCCCOM
module"]:::main N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node0 -- Yes --> N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node0_action N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node0_action --> E_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet S_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet --> N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node0 N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node1{"The dump-only mode is active
WS-DUMP-ONLY is true"}:::decision N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node1_action["Error processing is bypassed and
control proceeds to program
termination"]:::main N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node1 -- Yes --> N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node1_action N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node1_action --> E_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node0 -- No --> N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node1 N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node2{"The environment indicator
CC-PROD-TEST-IMS equals the
production value WS-PROD"}:::decision N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node2_action["The production error handler
CERRPROD is invoked with CCCOM
parameters"]:::main N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node2 -- Yes --> N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node2_action N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node2_action --> E_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node1 -- No --> N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node2 N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node3{"The environment indicator
CC-PROD-TEST-IMS does not equal the
production value WS-PROD"}:::decision N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node3_action["The test error handler CERRTEST is
invoked with CCCOM parameters"]:::main N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node3 -- Yes --> N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node3_action N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node3_action --> E_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node2 -- No --> N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node3 N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node4{"The program reaches the
notification phase"}:::decision N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node4_action["A blocking error message is
displayed to the system error output"]:::main N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node4 -- Yes --> N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node4_action N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node4_action --> E_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node3 -- No --> N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node4 N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node4 -- No --> E_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet
initialized through the DCCCOM
module"]:::main N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node0 -- Yes --> N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node0_action N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node0_action --> E_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet S_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet --> N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node0 N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node1{"The dump-only mode is active
WS-DUMP-ONLY is true"}:::decision N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node1_action["Error processing is bypassed and
control proceeds to program
termination"]:::main N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node1 -- Yes --> N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node1_action N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node1_action --> E_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node0 -- No --> N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node1 N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node2{"The environment indicator
CC-PROD-TEST-IMS equals the
production value WS-PROD"}:::decision N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node2_action["The production error handler
CERRPROD is invoked with CCCOM
parameters"]:::main N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node2 -- Yes --> N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node2_action N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node2_action --> E_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node1 -- No --> N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node2 N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node3{"The environment indicator
CC-PROD-TEST-IMS does not equal the
production value WS-PROD"}:::decision N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node3_action["The test error handler CERRTEST is
invoked with CCCOM parameters"]:::main N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node3 -- Yes --> N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node3_action N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node3_action --> E_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node2 -- No --> N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node3 N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node4{"The program reaches the
notification phase"}:::decision N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node4_action["A blocking error message is
displayed to the system error output"]:::main N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node4 -- Yes --> N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node4_action N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node4_action --> E_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node3 -- No --> N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node4 N_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet_Node4 -- No --> E_NoexplicitinitializationcodefoundinprovidedCOBOLsnippet
File: CERR.cbl
GIVEN:
The error handling process is starting
WHEN:
The main procedure begins execution
THEN:
The communication area CCCOM is initialized through the DCCCOM module
File: CERR.cbl
GIVEN:
The system has a dump-only mode flag WS-DUMP-ONLY
WHEN:
The dump-only mode is active (WS-DUMP-ONLY is true)
THEN:
- Error processing is bypassed
- Control proceeds to program termination
File: CERR.cbl
Exclusion / Alternative Path
GIVEN:
The system is not in dump-only mode and environment indicator CC-PROD-TEST-IMS is available
WHEN:
The environment indicator CC-PROD-TEST-IMS equals the production value WS-PROD
THEN:
The production error handler CERRPROD is invoked with CCCOM parameters
File: CERR.cbl
Exclusion / Alternative Path
GIVEN:
The system is not in dump-only mode and environment indicator CC-PROD-TEST-IMS is available
WHEN:
The environment indicator CC-PROD-TEST-IMS does not equal the production value WS-PROD
THEN:
The test error handler CERRTEST is invoked with CCCOM parameters
File: CERR.cbl
GIVEN:
The error handling process has completed initialization and conditional processing
WHEN:
The program reaches the notification phase
THEN:
A blocking error message is displayed to the system error output
β Consolidated Acceptance Criteria
- The system compares CC-PROD-TEST-IMS with WS-PROD value → if CC-PROD-TEST-IMS equals WS-PROD then environment is identified as Production, otherwise environment is identified as Test
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CompareCCPRODTESTIMSwithWSPRODValue(["Start Step"])
E_CompareCCPRODTESTIMSwithWSPRODValue(["End Step"])
N_CompareCCPRODTESTIMSwithWSPRODValue_Node0{"The system compares
CC-PROD-TEST-IMS with WS-PROD value"}:::decision N_CompareCCPRODTESTIMSwithWSPRODValue_Node0_action["If CC-PROD-TEST-IMS equals WS-PROD
then environment is identified as
Production, otherwise environment is
identified as Test"]:::main N_CompareCCPRODTESTIMSwithWSPRODValue_Node0 -- Yes --> N_CompareCCPRODTESTIMSwithWSPRODValue_Node0_action N_CompareCCPRODTESTIMSwithWSPRODValue_Node0_action --> E_CompareCCPRODTESTIMSwithWSPRODValue S_CompareCCPRODTESTIMSwithWSPRODValue --> N_CompareCCPRODTESTIMSwithWSPRODValue_Node0 N_CompareCCPRODTESTIMSwithWSPRODValue_Node0 -- No --> E_CompareCCPRODTESTIMSwithWSPRODValue
CC-PROD-TEST-IMS with WS-PROD value"}:::decision N_CompareCCPRODTESTIMSwithWSPRODValue_Node0_action["If CC-PROD-TEST-IMS equals WS-PROD
then environment is identified as
Production, otherwise environment is
identified as Test"]:::main N_CompareCCPRODTESTIMSwithWSPRODValue_Node0 -- Yes --> N_CompareCCPRODTESTIMSwithWSPRODValue_Node0_action N_CompareCCPRODTESTIMSwithWSPRODValue_Node0_action --> E_CompareCCPRODTESTIMSwithWSPRODValue S_CompareCCPRODTESTIMSwithWSPRODValue --> N_CompareCCPRODTESTIMSwithWSPRODValue_Node0 N_CompareCCPRODTESTIMSwithWSPRODValue_Node0 -- No --> E_CompareCCPRODTESTIMSwithWSPRODValue
File: CERR.cbl
GIVEN:
The system has access to CC-PROD-TEST-IMS environment flag and WS-PROD production environment value
WHEN:
The system compares CC-PROD-TEST-IMS with WS-PROD value
THEN:
If CC-PROD-TEST-IMS equals WS-PROD then environment is identified as Production, otherwise environment is identified as Test
β Consolidated Acceptance Criteria
- The system checks the WS-DUMP-ONLY flag status → if WS-DUMP-ONLY is set to true, skip all further error processing and proceed to program termination; If WS-DUMP-ONLY is false, continue to environment detection for error processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckWSDUMPONLYFlag(["Start Step"])
E_CheckWSDUMPONLYFlag(["End Step"])
N_CheckWSDUMPONLYFlag_Node0{"The system checks the WS-DUMP-ONLY
flag status"}:::decision N_CheckWSDUMPONLYFlag_Node0_action["If WS-DUMP-ONLY is set to true,
skip all further error processing
and proceed to program termination
If WS-DUMP-ONLY is false, continue
to environment detection for error
processing"]:::main N_CheckWSDUMPONLYFlag_Node0 -- Yes --> N_CheckWSDUMPONLYFlag_Node0_action N_CheckWSDUMPONLYFlag_Node0_action --> E_CheckWSDUMPONLYFlag S_CheckWSDUMPONLYFlag --> N_CheckWSDUMPONLYFlag_Node0 N_CheckWSDUMPONLYFlag_Node0 -- No --> E_CheckWSDUMPONLYFlag
flag status"}:::decision N_CheckWSDUMPONLYFlag_Node0_action["If WS-DUMP-ONLY is set to true,
skip all further error processing
and proceed to program termination
If WS-DUMP-ONLY is false, continue
to environment detection for error
processing"]:::main N_CheckWSDUMPONLYFlag_Node0 -- Yes --> N_CheckWSDUMPONLYFlag_Node0_action N_CheckWSDUMPONLYFlag_Node0_action --> E_CheckWSDUMPONLYFlag S_CheckWSDUMPONLYFlag --> N_CheckWSDUMPONLYFlag_Node0 N_CheckWSDUMPONLYFlag_Node0 -- No --> E_CheckWSDUMPONLYFlag
File: CERR.cbl
GIVEN:
The system has initialized communication area and WS-DUMP-ONLY flag is available
WHEN:
The system checks the WS-DUMP-ONLY flag status
THEN:
- If ws-dump-only is set to true, skip all further error processing
- Proceed to program termination; if ws-dump-only is false, continue to environment detection for error processing
β Consolidated Acceptance Criteria
- The main error processing procedure is executed → the system calls DCCCOM program using CCCOM communication area to perform standard error processing initialization
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallDCCCOMProgram(["Start Step"])
E_CallDCCCOMProgram(["End Step"])
N_CallDCCCOMProgram_Node0{"The main error processing procedure
is executed"}:::decision N_CallDCCCOMProgram_Node0_action["The system calls DCCCOM program
using CCCOM communication area to
perform standard error processing
initialization"]:::exclusion N_CallDCCCOMProgram_Node0 -- Yes -->|Alternative| N_CallDCCCOMProgram_Node0_action N_CallDCCCOMProgram_Node0_action --> E_CallDCCCOMProgram S_CallDCCCOMProgram --> N_CallDCCCOMProgram_Node0 N_CallDCCCOMProgram_Node0 -- No --> E_CallDCCCOMProgram
is executed"}:::decision N_CallDCCCOMProgram_Node0_action["The system calls DCCCOM program
using CCCOM communication area to
perform standard error processing
initialization"]:::exclusion N_CallDCCCOMProgram_Node0 -- Yes -->|Alternative| N_CallDCCCOMProgram_Node0_action N_CallDCCCOMProgram_Node0_action --> E_CallDCCCOMProgram S_CallDCCCOMProgram --> N_CallDCCCOMProgram_Node0 N_CallDCCCOMProgram_Node0 -- No --> E_CallDCCCOMProgram
File: CERR.cbl
GIVEN:
The system needs to perform error processing
WHEN:
The main error processing procedure is executed
THEN:
The system calls DCCCOM program using CCCOM communication area to perform standard error processing initialization
β Consolidated Acceptance Criteria
- An error condition requires processing through the production error handler → the system invokes the production error handler CERRPROD with the communication area CCCOM to process the error according to production standards
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallCERRPRODwithCommunicationArea(["Start Step"])
E_CallCERRPRODwithCommunicationArea(["End Step"])
N_CallCERRPRODwithCommunicationArea_Node0{"An error condition requires
processing through the production
error handler"}:::decision N_CallCERRPRODwithCommunicationArea_Node0_action["The system invokes the production
error handler CERRPROD with the
communication area CCCOM to process
the error according to production
standards"]:::exclusion N_CallCERRPRODwithCommunicationArea_Node0 -- Yes -->|Alternative| N_CallCERRPRODwithCommunicationArea_Node0_action N_CallCERRPRODwithCommunicationArea_Node0_action --> E_CallCERRPRODwithCommunicationArea S_CallCERRPRODwithCommunicationArea --> N_CallCERRPRODwithCommunicationArea_Node0 N_CallCERRPRODwithCommunicationArea_Node0 -- No --> E_CallCERRPRODwithCommunicationArea
processing through the production
error handler"}:::decision N_CallCERRPRODwithCommunicationArea_Node0_action["The system invokes the production
error handler CERRPROD with the
communication area CCCOM to process
the error according to production
standards"]:::exclusion N_CallCERRPRODwithCommunicationArea_Node0 -- Yes -->|Alternative| N_CallCERRPRODwithCommunicationArea_Node0_action N_CallCERRPRODwithCommunicationArea_Node0_action --> E_CallCERRPRODwithCommunicationArea S_CallCERRPRODwithCommunicationArea --> N_CallCERRPRODwithCommunicationArea_Node0 N_CallCERRPRODwithCommunicationArea_Node0 -- No --> E_CallCERRPRODwithCommunicationArea
File: CERR.cbl
GIVEN:
The system is running in production environment (CC-PROD-TEST-IMS equals WS-PROD) and dump-only mode is disabled (NOT WS-DUMP-ONLY is true) and communication area CCCOM is available
WHEN:
An error condition requires processing through the production error handler
THEN:
The system invokes the production error handler CERRPROD with the communication area CCCOM to process the error according to production standards
β Consolidated Acceptance Criteria
- An error condition occurs requiring error processing → the system routes the error to the test error handler (CERRTEST) and passes error information through the communication area (CCCOM)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TestEnvironmentDetected(["Start Step"])
E_TestEnvironmentDetected(["End Step"])
N_TestEnvironmentDetected_Node0{"An error condition occurs requiring
error processing"}:::decision N_TestEnvironmentDetected_Node0_action["The system routes the error to the
test error handler CERRTEST and
passes error information through the
communication area CCCOM"]:::exclusion N_TestEnvironmentDetected_Node0 -- Yes -->|Alternative| N_TestEnvironmentDetected_Node0_action N_TestEnvironmentDetected_Node0_action --> E_TestEnvironmentDetected S_TestEnvironmentDetected --> N_TestEnvironmentDetected_Node0 N_TestEnvironmentDetected_Node0 -- No --> E_TestEnvironmentDetected
error processing"}:::decision N_TestEnvironmentDetected_Node0_action["The system routes the error to the
test error handler CERRTEST and
passes error information through the
communication area CCCOM"]:::exclusion N_TestEnvironmentDetected_Node0 -- Yes -->|Alternative| N_TestEnvironmentDetected_Node0_action N_TestEnvironmentDetected_Node0_action --> E_TestEnvironmentDetected S_TestEnvironmentDetected --> N_TestEnvironmentDetected_Node0 N_TestEnvironmentDetected_Node0 -- No --> E_TestEnvironmentDetected
File: CERR.cbl
Exclusion / Alternative Path
GIVEN:
The system is running in test environment (CC-PROD-TEST-IMS is not equal to WS-PROD) and dump-only mode is disabled (WS-DUMP-ONLY is false)
WHEN:
An error condition occurs requiring error processing
THEN:
The system routes the error to the test error handler (CERRTEST) and passes error information through the communication area (CCCOM)
β Consolidated Acceptance Criteria
- An error condition occurs → the system bypasses all error processing routines and skips calling any error handlers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RouteErrortoTestHandler(["Start Step"])
E_RouteErrortoTestHandler(["End Step"])
N_RouteErrortoTestHandler_Node0{"An error condition occurs"}:::decision
N_RouteErrortoTestHandler_Node0_action["The system bypasses all error
processing routines and skips
calling any error handlers"]:::exclusion N_RouteErrortoTestHandler_Node0 -- Yes -->|Alternative| N_RouteErrortoTestHandler_Node0_action N_RouteErrortoTestHandler_Node0_action --> E_RouteErrortoTestHandler S_RouteErrortoTestHandler --> N_RouteErrortoTestHandler_Node0 N_RouteErrortoTestHandler_Node0 -- No --> E_RouteErrortoTestHandler
processing routines and skips
calling any error handlers"]:::exclusion N_RouteErrortoTestHandler_Node0 -- Yes -->|Alternative| N_RouteErrortoTestHandler_Node0_action N_RouteErrortoTestHandler_Node0_action --> E_RouteErrortoTestHandler S_RouteErrortoTestHandler --> N_RouteErrortoTestHandler_Node0 N_RouteErrortoTestHandler_Node0 -- No --> E_RouteErrortoTestHandler
File: CERR.cbl
GIVEN:
The system is operating in dump-only mode (WS-DUMP-ONLY is true)
WHEN:
An error condition occurs
THEN:
- The system bypasses all error processing routines
- Skips calling any error handlers
β Consolidated Acceptance Criteria
- The system determines test environment error handling is needed → the system calls the CERRTEST program and passes the communication area (CCCOM) containing error details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallCERRTESTProgram(["Start Step"])
E_CallCERRTESTProgram(["End Step"])
N_CallCERRTESTProgram_Node0{"The system determines test
environment error handling is needed"}:::decision N_CallCERRTESTProgram_Node0_action["The system calls the CERRTEST
program and passes the communication
area CCCOM containing error details"]:::exclusion N_CallCERRTESTProgram_Node0 -- Yes -->|Alternative| N_CallCERRTESTProgram_Node0_action N_CallCERRTESTProgram_Node0_action --> E_CallCERRTESTProgram S_CallCERRTESTProgram --> N_CallCERRTESTProgram_Node0 N_CallCERRTESTProgram_Node0 -- No --> E_CallCERRTESTProgram
environment error handling is needed"}:::decision N_CallCERRTESTProgram_Node0_action["The system calls the CERRTEST
program and passes the communication
area CCCOM containing error details"]:::exclusion N_CallCERRTESTProgram_Node0 -- Yes -->|Alternative| N_CallCERRTESTProgram_Node0_action N_CallCERRTESTProgram_Node0_action --> E_CallCERRTESTProgram S_CallCERRTESTProgram --> N_CallCERRTESTProgram_Node0 N_CallCERRTESTProgram_Node0 -- No --> E_CallCERRTESTProgram
File: CERR.cbl
Exclusion / Alternative Path
GIVEN:
Error processing is required for test environment and dump mode is not active
WHEN:
The system determines test environment error handling is needed
THEN:
- The system calls the cerrtest program
- Passes the communication area (cccom) containing error details
β Consolidated Acceptance Criteria
- The error notification display process is executed → display a top border line of hash symbols to system error output AND display the blocking error message 'CIMS: BLOCKING ERROR.' to system error output AND display a bottom border line of hash symbols to system error output
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Displayblockingerrormessagetosystemerroroutput(["Start Step"])
E_Displayblockingerrormessagetosystemerroroutput(["End Step"])
N_Displayblockingerrormessagetosystemerroroutput_Node0{"The error notification display
process is executed"}:::decision N_Displayblockingerrormessagetosystemerroroutput_Node0_action["Display a top border line of hash
symbols to system error output AND
display the blocking error message
CIMS: BLOCKING ERROR. to system
error output AND display a bottom
border line of hash symbols to
system error output"]:::exclusion N_Displayblockingerrormessagetosystemerroroutput_Node0 -- Yes -->|Alternative| N_Displayblockingerrormessagetosystemerroroutput_Node0_action N_Displayblockingerrormessagetosystemerroroutput_Node0_action --> E_Displayblockingerrormessagetosystemerroroutput S_Displayblockingerrormessagetosystemerroroutput --> N_Displayblockingerrormessagetosystemerroroutput_Node0 N_Displayblockingerrormessagetosystemerroroutput_Node0 -- No --> E_Displayblockingerrormessagetosystemerroroutput
process is executed"}:::decision N_Displayblockingerrormessagetosystemerroroutput_Node0_action["Display a top border line of hash
symbols to system error output AND
display the blocking error message
CIMS: BLOCKING ERROR. to system
error output AND display a bottom
border line of hash symbols to
system error output"]:::exclusion N_Displayblockingerrormessagetosystemerroroutput_Node0 -- Yes -->|Alternative| N_Displayblockingerrormessagetosystemerroroutput_Node0_action N_Displayblockingerrormessagetosystemerroroutput_Node0_action --> E_Displayblockingerrormessagetosystemerroroutput S_Displayblockingerrormessagetosystemerroroutput --> N_Displayblockingerrormessagetosystemerroroutput_Node0 N_Displayblockingerrormessagetosystemerroroutput_Node0 -- No --> E_Displayblockingerrormessagetosystemerroroutput
File: CERR.cbl
GIVEN:
A blocking error condition has occurred in the CIMS system
WHEN:
The error notification display process is executed
THEN:
- Display a top border line of hash symbols to system error output
- Display the blocking error message 'cims: blocking error.' to system error output
- Display a bottom border line of hash symbols to system error output
β Consolidated Acceptance Criteria
- The program reaches the termination point → the system executes program termination and returns control to the calling program
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProgramTerminationReturncontroltocallingprogramaftererrorprocessingcompletion(["Start Step"])
E_ProgramTerminationReturncontroltocallingprogramaftererrorprocessingcompletion(["End Step"])
N_ProgramTerminationReturncontroltocallingprogramaftererrorprocessingcompletion_Node0{"The program reaches the termination
point"}:::decision N_ProgramTerminationReturncontroltocallingprogramaftererrorprocessingcompletion_Node0_action["The system executes program
termination and returns control to
the calling program"]:::main N_ProgramTerminationReturncontroltocallingprogramaftererrorprocessingcompletion_Node0 -- Yes --> N_ProgramTerminationReturncontroltocallingprogramaftererrorprocessingcompletion_Node0_action N_ProgramTerminationReturncontroltocallingprogramaftererrorprocessingcompletion_Node0_action --> E_ProgramTerminationReturncontroltocallingprogramaftererrorprocessingcompletion S_ProgramTerminationReturncontroltocallingprogramaftererrorprocessingcompletion --> N_ProgramTerminationReturncontroltocallingprogramaftererrorprocessingcompletion_Node0 N_ProgramTerminationReturncontroltocallingprogramaftererrorprocessingcompletion_Node0 -- No --> E_ProgramTerminationReturncontroltocallingprogramaftererrorprocessingcompletion
point"}:::decision N_ProgramTerminationReturncontroltocallingprogramaftererrorprocessingcompletion_Node0_action["The system executes program
termination and returns control to
the calling program"]:::main N_ProgramTerminationReturncontroltocallingprogramaftererrorprocessingcompletion_Node0 -- Yes --> N_ProgramTerminationReturncontroltocallingprogramaftererrorprocessingcompletion_Node0_action N_ProgramTerminationReturncontroltocallingprogramaftererrorprocessingcompletion_Node0_action --> E_ProgramTerminationReturncontroltocallingprogramaftererrorprocessingcompletion S_ProgramTerminationReturncontroltocallingprogramaftererrorprocessingcompletion --> N_ProgramTerminationReturncontroltocallingprogramaftererrorprocessingcompletion_Node0 N_ProgramTerminationReturncontroltocallingprogramaftererrorprocessingcompletion_Node0 -- No --> E_ProgramTerminationReturncontroltocallingprogramaftererrorprocessingcompletion
File: CERR.cbl
GIVEN:
Error processing activities have been completed including communication setup, environment-based error handler execution, and blocking error message display
WHEN:
The program reaches the termination point
THEN:
- The system executes program termination
- Returns control to the calling program
CIMS Sequence (US Train)
Objective: This COBOL program (CIMS) serves as an IMS database interface module that handles IMS database calls by managing Program Communication Blocks (PCBs) and routing database operations. The program receives function codes and PCB information from calling programs, validates and resolves PCB addresses through table lookups, executes IMS database calls via CBLTDLI, and returns status information back to the caller. It supports both ISCOM and CCCOM communication areas and includes automatic conversion between these formats when needed.
πΊοΈ High-Level Visual Map
flowchart TD
A[Start CIMS Program]:::start
B[1:Parameter Address Linkage Setup]:::process
C[2:Function and SSA Parameter Processing]:::process
D{ISCOM Address Available?}:::decision
E[3:ISCOM Address Validation]:::process
F{CCCOM Version Compatible?}:::decision
G[4:CCCOM Version Compatibility Check]:::process
H{PCB Address Valid?}:::decision
I[5:PCB Address Reset Logic]:::process
J[6:PCB Address Resolution]:::process
K{PCB Found?}:::decision
L[7:PCB Address Validation]:::process
M[8:IMS Function Call Execution]:::process
N{GU Function on IO PCB?}:::decision
O[9:IO PCB Date Time Refresh]:::process
P[10:IMS Call Counter Management]:::process
Q[11:PCB Status Information Update]:::process
R{GU or CHKP on IO PCB?}:::decision
S[12:Terminal and User Information Capture]:::process
T{Status Code Blank?}:::decision
U[18:Common Area Synchronization]:::process
V[13:Status Code Validation]:::process
W{Status Code Acceptable?}:::decision
X[14:Error Message Generation]:::process
Y[Success End]:::success
Z[Error End]:::error
IMS1[(IMS Database)]:::datasource
A --> B
B --> C
C --> D
D -->|Yes| E
D -->|No| F
E --> F
F -->|Yes| G
F -->|No| H
G --> H
H -->|Invalid| I
H -->|Null/Blank| J
H -->|Valid| M
I --> M
J --> K
K -->|No| L
K -->|Yes| M
L --> Z
M --> N
IMS1 -.->|Database Call| M
N -->|Yes| O
N -->|No| P
O --> P
P --> Q
Q --> R
R -->|Yes| S
R -->|No| T
S --> T
T -->|Yes| U
T -->|No| V
U --> Y
V --> W
W -->|Yes| U
W -->|No| X
X --> Z
classDef start fill:#67A353
classDef process fill:#08AAD2
classDef decision fill:#FFE347
classDef datasource fill:#2EA597
classDef final fill:#D13313
classDef success fill:#2BB534
classDef error fill:#D13313
π Step-by-Step Logic Trace
β Consolidated Acceptance Criteria
- The system processes the parameter count and argument addresses → memory addresses are established for CCCOM, FUNC, and ADDR-AREA parameters and the argument count is stored for subsequent processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_1ParameterAddressLinkageSetup(["Start Step"])
E_1ParameterAddressLinkageSetup(["End Step"])
N_1ParameterAddressLinkageSetup_Node0{"The system processes the parameter
count and argument addresses"}:::decision N_1ParameterAddressLinkageSetup_Node0_action["Memory addresses are established
for CCCOM, FUNC, and ADDR-AREA
parameters and the argument count is
stored for subsequent processing"]:::main N_1ParameterAddressLinkageSetup_Node0 -- Yes --> N_1ParameterAddressLinkageSetup_Node0_action N_1ParameterAddressLinkageSetup_Node0_action --> E_1ParameterAddressLinkageSetup S_1ParameterAddressLinkageSetup --> N_1ParameterAddressLinkageSetup_Node0 N_1ParameterAddressLinkageSetup_Node0 -- No --> E_1ParameterAddressLinkageSetup
count and argument addresses"}:::decision N_1ParameterAddressLinkageSetup_Node0_action["Memory addresses are established
for CCCOM, FUNC, and ADDR-AREA
parameters and the argument count is
stored for subsequent processing"]:::main N_1ParameterAddressLinkageSetup_Node0 -- Yes --> N_1ParameterAddressLinkageSetup_Node0_action N_1ParameterAddressLinkageSetup_Node0_action --> E_1ParameterAddressLinkageSetup S_1ParameterAddressLinkageSetup --> N_1ParameterAddressLinkageSetup_Node0 N_1ParameterAddressLinkageSetup_Node0 -- No --> E_1ParameterAddressLinkageSetup
File: CIMS.cbl
GIVEN:
A CIMS program is invoked with linkage parameters
WHEN:
- The system processes the parameter count
- Argument addresses
THEN:
- Memory addresses are established for cccom, func, and addr-area parameters
- The argument count is stored for subsequent processing
β Consolidated Acceptance Criteria
- The system processes parameters 4 through 10 representing IO-AREA and SSA1 through SSA6 → function code is stored in CCCOM last IMS function, SSA parameters are mapped to their respective addresses and stored in CCCOM last SSA fields, and IO-AREA address is established when 4 or more arguments are provided
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_2FunctionandSSAParameterProcessing(["Start Step"])
E_2FunctionandSSAParameterProcessing(["End Step"])
N_2FunctionandSSAParameterProcessing_Node0{"The system processes parameters 4
through 10 representing IO-AREA and
SSA1 through SSA6"}:::decision N_2FunctionandSSAParameterProcessing_Node0_action["Function code is stored in CCCOM
last IMS function, SSA parameters
are mapped to their respective
addresses and stored in CCCOM last
SSA fields, and IO-AREA address is
established when 4 or more arguments
are provided"]:::main N_2FunctionandSSAParameterProcessing_Node0 -- Yes --> N_2FunctionandSSAParameterProcessing_Node0_action N_2FunctionandSSAParameterProcessing_Node0_action --> E_2FunctionandSSAParameterProcessing S_2FunctionandSSAParameterProcessing --> N_2FunctionandSSAParameterProcessing_Node0 N_2FunctionandSSAParameterProcessing_Node0 -- No --> E_2FunctionandSSAParameterProcessing
through 10 representing IO-AREA and
SSA1 through SSA6"}:::decision N_2FunctionandSSAParameterProcessing_Node0_action["Function code is stored in CCCOM
last IMS function, SSA parameters
are mapped to their respective
addresses and stored in CCCOM last
SSA fields, and IO-AREA address is
established when 4 or more arguments
are provided"]:::main N_2FunctionandSSAParameterProcessing_Node0 -- Yes --> N_2FunctionandSSAParameterProcessing_Node0_action N_2FunctionandSSAParameterProcessing_Node0_action --> E_2FunctionandSSAParameterProcessing S_2FunctionandSSAParameterProcessing --> N_2FunctionandSSAParameterProcessing_Node0 N_2FunctionandSSAParameterProcessing_Node0 -- No --> E_2FunctionandSSAParameterProcessing
File: CIMS.cbl
GIVEN:
Parameter addresses are established and argument count is available
WHEN:
- The system processes parameters 4 through 10 representing io-area
- Ssa1 through ssa6
THEN:
- Function code is stored in cccom last ims function, ssa parameters are mapped to their respective addresses
- Stored in cccom last ssa fields, and io-area address is established when 4 or more arguments are provided
β Consolidated Acceptance Criteria
- The system checks ISCOM address availability → iSCOM address is established for subsequent processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_3ISCOMAddressValidation(["Start Step"])
E_3ISCOMAddressValidation(["End Step"])
N_3ISCOMAddressValidation_Node0{"The system checks ISCOM address
availability"}:::decision N_3ISCOMAddressValidation_Node0_action["ISCOM address is established for
subsequent processing"]:::main N_3ISCOMAddressValidation_Node0 -- Yes --> N_3ISCOMAddressValidation_Node0_action N_3ISCOMAddressValidation_Node0_action --> E_3ISCOMAddressValidation S_3ISCOMAddressValidation --> N_3ISCOMAddressValidation_Node0 N_3ISCOMAddressValidation_Node0 -- No --> E_3ISCOMAddressValidation
availability"}:::decision N_3ISCOMAddressValidation_Node0_action["ISCOM address is established for
subsequent processing"]:::main N_3ISCOMAddressValidation_Node0 -- Yes --> N_3ISCOMAddressValidation_Node0_action N_3ISCOMAddressValidation_Node0_action --> E_3ISCOMAddressValidation S_3ISCOMAddressValidation --> N_3ISCOMAddressValidation_Node0 N_3ISCOMAddressValidation_Node0 -- No --> E_3ISCOMAddressValidation
File: CIMS.cbl
Exclusion / Alternative Path
GIVEN:
CCCOM ISCOM address is not null and not blank pointer
WHEN:
The system checks ISCOM address availability
THEN:
ISCOM address is established for subsequent processing
β Consolidated Acceptance Criteria
- The system compares CCCOM SIT version with working storage CCCOM version → iSCOM compatibility check is performed only when versions match
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_4CCCOMVersionCompatibilityCheck(["Start Step"])
E_4CCCOMVersionCompatibilityCheck(["End Step"])
N_4CCCOMVersionCompatibilityCheck_Node0{"The system compares CCCOM SIT
version with working storage CCCOM
version"}:::decision N_4CCCOMVersionCompatibilityCheck_Node0_action["ISCOM compatibility check is
performed only when versions match"]:::main N_4CCCOMVersionCompatibilityCheck_Node0 -- Yes --> N_4CCCOMVersionCompatibilityCheck_Node0_action N_4CCCOMVersionCompatibilityCheck_Node0_action --> E_4CCCOMVersionCompatibilityCheck S_4CCCOMVersionCompatibilityCheck --> N_4CCCOMVersionCompatibilityCheck_Node0 N_4CCCOMVersionCompatibilityCheck_Node0 -- No --> E_4CCCOMVersionCompatibilityCheck
version with working storage CCCOM
version"}:::decision N_4CCCOMVersionCompatibilityCheck_Node0_action["ISCOM compatibility check is
performed only when versions match"]:::main N_4CCCOMVersionCompatibilityCheck_Node0 -- Yes --> N_4CCCOMVersionCompatibilityCheck_Node0_action N_4CCCOMVersionCompatibilityCheck_Node0_action --> E_4CCCOMVersionCompatibilityCheck S_4CCCOMVersionCompatibilityCheck --> N_4CCCOMVersionCompatibilityCheck_Node0 N_4CCCOMVersionCompatibilityCheck_Node0 -- No --> E_4CCCOMVersionCompatibilityCheck
File: CIMS.cbl
GIVEN:
CCCOM structure is available with version information
WHEN:
The system compares CCCOM SIT version with working storage CCCOM version
THEN:
ISCOM compatibility check is performed only when versions match
β Consolidated Acceptance Criteria
- Segment level is not '98':
- '99'
- force reset flag is true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_5PCBAddressResetLogic(["Start Step"])
E_5PCBAddressResetLogic(["End Step"])
N_5PCBAddressResetLogic_Node0{"Segment level is not 98 or 99 OR
force reset flag is true"}:::decision N_5PCBAddressResetLogic_Node0_action["First 8 positions of ADDR-AREA are
cleared with spaces"]:::main N_5PCBAddressResetLogic_Node0 -- Yes --> N_5PCBAddressResetLogic_Node0_action N_5PCBAddressResetLogic_Node0_action --> E_5PCBAddressResetLogic S_5PCBAddressResetLogic --> N_5PCBAddressResetLogic_Node0 N_5PCBAddressResetLogic_Node0 -- No --> E_5PCBAddressResetLogic
force reset flag is true"}:::decision N_5PCBAddressResetLogic_Node0_action["First 8 positions of ADDR-AREA are
cleared with spaces"]:::main N_5PCBAddressResetLogic_Node0 -- Yes --> N_5PCBAddressResetLogic_Node0_action N_5PCBAddressResetLogic_Node0_action --> E_5PCBAddressResetLogic S_5PCBAddressResetLogic --> N_5PCBAddressResetLogic_Node0 N_5PCBAddressResetLogic_Node0 -- No --> E_5PCBAddressResetLogic
File: CIMS.cbl
Exclusion / Alternative Path
GIVEN:
ADDR-AREA is not null, PCB address is valid, CCCOM version is compatible, and PCB copy is available
WHEN:
Segment level is not '98' or '99' OR force reset flag is true
THEN:
First 8 positions of ADDR-AREA are cleared with spaces
β Consolidated Acceptance Criteria
- The system searches through up to 249 database name entries → search continues until valid PCB address is found, maximum entries reached, or database name entry is spaces, and matching PCB address is retrieved when database name matches table entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_6PCBAddressResolution(["Start Step"])
E_6PCBAddressResolution(["End Step"])
N_6PCBAddressResolution_Node0{"The system searches through up to
249 database name entries"}:::decision N_6PCBAddressResolution_Node0_action["Search continues until valid PCB
address is found, maximum entries
reached, or database name entry is
spaces, and matching PCB address is
retrieved when database name matches
table entry"]:::main N_6PCBAddressResolution_Node0 -- Yes --> N_6PCBAddressResolution_Node0_action N_6PCBAddressResolution_Node0_action --> E_6PCBAddressResolution S_6PCBAddressResolution --> N_6PCBAddressResolution_Node0 N_6PCBAddressResolution_Node0 -- No --> E_6PCBAddressResolution
249 database name entries"}:::decision N_6PCBAddressResolution_Node0_action["Search continues until valid PCB
address is found, maximum entries
reached, or database name entry is
spaces, and matching PCB address is
retrieved when database name matches
table entry"]:::main N_6PCBAddressResolution_Node0 -- Yes --> N_6PCBAddressResolution_Node0_action N_6PCBAddressResolution_Node0_action --> E_6PCBAddressResolution S_6PCBAddressResolution --> N_6PCBAddressResolution_Node0 N_6PCBAddressResolution_Node0 -- No --> E_6PCBAddressResolution
File: CIMS.cbl
GIVEN:
PCB address is null or blank pointer
WHEN:
The system searches through up to 249 database name entries
THEN:
Search continues until valid PCB address is found, maximum entries reached, or database name entry is spaces, and matching PCB address is retrieved when database name matches table entry
β Consolidated Acceptance Criteria
- PCB address remains null after resolution attempts → error message is generated with PCB name and number information and error handling routine CERR is invoked
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_7PCBAddressValidation(["Start Step"])
E_7PCBAddressValidation(["End Step"])
N_7PCBAddressValidation_Node0{"PCB address remains null after
resolution attempts"}:::decision N_7PCBAddressValidation_Node0_action["Error message is generated with PCB
name and number information and
error handling routine CERR is
invoked"]:::main N_7PCBAddressValidation_Node0 -- Yes --> N_7PCBAddressValidation_Node0_action N_7PCBAddressValidation_Node0_action --> E_7PCBAddressValidation S_7PCBAddressValidation --> N_7PCBAddressValidation_Node0 N_7PCBAddressValidation_Node0 -- No --> E_7PCBAddressValidation
resolution attempts"}:::decision N_7PCBAddressValidation_Node0_action["Error message is generated with PCB
name and number information and
error handling routine CERR is
invoked"]:::main N_7PCBAddressValidation_Node0 -- Yes --> N_7PCBAddressValidation_Node0_action N_7PCBAddressValidation_Node0_action --> E_7PCBAddressValidation S_7PCBAddressValidation --> N_7PCBAddressValidation_Node0 N_7PCBAddressValidation_Node0 -- No --> E_7PCBAddressValidation
File: CIMS.cbl
GIVEN:
PCB address resolution process is completed
WHEN:
PCB address remains null after resolution attempts
THEN:
- Error message is generated with pcb name
- Number information
- Error handling routine cerr is invoked
β Consolidated Acceptance Criteria
- The system invokes CBLTDLI with function, PCB copy, IO area, and SSA parameters → iMS database operation is executed and control returns with status information in PCB
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_8IMSFunctionCallExecution(["Start Step"])
E_8IMSFunctionCallExecution(["End Step"])
N_8IMSFunctionCallExecution_Node0{"The system invokes CBLTDLI with
function, PCB copy, IO area, and SSA
parameters"}:::decision N_8IMSFunctionCallExecution_Node0_action["IMS database operation is executed
and control returns with status
information in PCB"]:::main N_8IMSFunctionCallExecution_Node0 -- Yes --> N_8IMSFunctionCallExecution_Node0_action N_8IMSFunctionCallExecution_Node0_action --> E_8IMSFunctionCallExecution S_8IMSFunctionCallExecution --> N_8IMSFunctionCallExecution_Node0 N_8IMSFunctionCallExecution_Node0 -- No --> E_8IMSFunctionCallExecution
function, PCB copy, IO area, and SSA
parameters"}:::decision N_8IMSFunctionCallExecution_Node0_action["IMS database operation is executed
and control returns with status
information in PCB"]:::main N_8IMSFunctionCallExecution_Node0 -- Yes --> N_8IMSFunctionCallExecution_Node0_action N_8IMSFunctionCallExecution_Node0_action --> E_8IMSFunctionCallExecution S_8IMSFunctionCallExecution --> N_8IMSFunctionCallExecution_Node0 N_8IMSFunctionCallExecution_Node0 -- No --> E_8IMSFunctionCallExecution
File: CIMS.cbl
GIVEN:
Valid PCB address exists, function code is available, and all SSA parameters are processed
WHEN:
The system invokes CBLTDLI with function, PCB copy, IO area, and SSA parameters
THEN:
- Ims database operation is executed
- Control returns with status information in pcb
β Consolidated Acceptance Criteria
- Function is 'GU' (Get Unique) AND PCB address equals CCCOM IO PCB address → iMS call counter is reset to zero, current system date is obtained and stored in CCCOM machine century and date fields, and current system time is captured and stored in CCCOM machine time field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_9IOPCBDateTimeRefresh(["Start Step"])
E_9IOPCBDateTimeRefresh(["End Step"])
N_9IOPCBDateTimeRefresh_Node0{"Function is GU Get Unique AND PCB
address equals CCCOM IO PCB address"}:::decision N_9IOPCBDateTimeRefresh_Node0_action["IMS call counter is reset to zero,
current system date is obtained and
stored in CCCOM machine century and
date fields, and current system time
is captured and stored in CCCOM
machine time field"]:::main N_9IOPCBDateTimeRefresh_Node0 -- Yes --> N_9IOPCBDateTimeRefresh_Node0_action N_9IOPCBDateTimeRefresh_Node0_action --> E_9IOPCBDateTimeRefresh S_9IOPCBDateTimeRefresh --> N_9IOPCBDateTimeRefresh_Node0 N_9IOPCBDateTimeRefresh_Node0 -- No --> E_9IOPCBDateTimeRefresh
address equals CCCOM IO PCB address"}:::decision N_9IOPCBDateTimeRefresh_Node0_action["IMS call counter is reset to zero,
current system date is obtained and
stored in CCCOM machine century and
date fields, and current system time
is captured and stored in CCCOM
machine time field"]:::main N_9IOPCBDateTimeRefresh_Node0 -- Yes --> N_9IOPCBDateTimeRefresh_Node0_action N_9IOPCBDateTimeRefresh_Node0_action --> E_9IOPCBDateTimeRefresh S_9IOPCBDateTimeRefresh --> N_9IOPCBDateTimeRefresh_Node0 N_9IOPCBDateTimeRefresh_Node0 -- No --> E_9IOPCBDateTimeRefresh
File: CIMS.cbl
GIVEN:
IMS function call is completed
WHEN:
Function is 'GU' (Get Unique) AND PCB address equals CCCOM IO PCB address
THEN:
- Ims call counter is reset to zero, current system date is obtained
- Stored in cccom machine century
- Date fields, and current system time is captured
- Stored in cccom machine time field
β Consolidated Acceptance Criteria
- Any IMS database operation is performed → iMS call counter in CCCOM is incremented by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_10IMSCallCounterManagement(["Start Step"])
E_10IMSCallCounterManagement(["End Step"])
N_10IMSCallCounterManagement_Node0{"Any IMS database operation is
performed"}:::decision N_10IMSCallCounterManagement_Node0_action["IMS call counter in CCCOM is
incremented by 1"]:::main N_10IMSCallCounterManagement_Node0 -- Yes --> N_10IMSCallCounterManagement_Node0_action N_10IMSCallCounterManagement_Node0_action --> E_10IMSCallCounterManagement S_10IMSCallCounterManagement --> N_10IMSCallCounterManagement_Node0 N_10IMSCallCounterManagement_Node0 -- No --> E_10IMSCallCounterManagement
performed"}:::decision N_10IMSCallCounterManagement_Node0_action["IMS call counter in CCCOM is
incremented by 1"]:::main N_10IMSCallCounterManagement_Node0 -- Yes --> N_10IMSCallCounterManagement_Node0_action N_10IMSCallCounterManagement_Node0_action --> E_10IMSCallCounterManagement S_10IMSCallCounterManagement --> N_10IMSCallCounterManagement_Node0 N_10IMSCallCounterManagement_Node0 -- No --> E_10IMSCallCounterManagement
File: CIMS.cbl
GIVEN:
IMS function call is executed
WHEN:
Any IMS database operation is performed
THEN:
IMS call counter in CCCOM is incremented by 1
β Consolidated Acceptance Criteria
- PCB information needs to be synchronized with CCCOM → pCB copy is moved to CCCOM copy of PCB field and feedback key length is updated in CCCOM when segment level is not '98' or '99'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_11PCBStatusInformationUpdate(["Start Step"])
E_11PCBStatusInformationUpdate(["End Step"])
N_11PCBStatusInformationUpdate_Node0{"PCB information needs to be
synchronized with CCCOM"}:::decision N_11PCBStatusInformationUpdate_Node0_action["PCB copy is moved to CCCOM copy of
PCB field and feedback key length is
updated in CCCOM when segment level
is not 98 or 99"]:::main N_11PCBStatusInformationUpdate_Node0 -- Yes --> N_11PCBStatusInformationUpdate_Node0_action N_11PCBStatusInformationUpdate_Node0_action --> E_11PCBStatusInformationUpdate S_11PCBStatusInformationUpdate --> N_11PCBStatusInformationUpdate_Node0 N_11PCBStatusInformationUpdate_Node0 -- No --> E_11PCBStatusInformationUpdate
synchronized with CCCOM"}:::decision N_11PCBStatusInformationUpdate_Node0_action["PCB copy is moved to CCCOM copy of
PCB field and feedback key length is
updated in CCCOM when segment level
is not 98 or 99"]:::main N_11PCBStatusInformationUpdate_Node0 -- Yes --> N_11PCBStatusInformationUpdate_Node0_action N_11PCBStatusInformationUpdate_Node0_action --> E_11PCBStatusInformationUpdate S_11PCBStatusInformationUpdate --> N_11PCBStatusInformationUpdate_Node0 N_11PCBStatusInformationUpdate_Node0 -- No --> E_11PCBStatusInformationUpdate
File: CIMS.cbl
GIVEN:
IMS call counter is updated and PCB copy is available
WHEN:
PCB information needs to be synchronized with CCCOM
THEN:
- Pcb copy is moved to cccom copy of pcb field
- Feedback key length is updated in cccom when segment level is not '98' or '99'
β Consolidated Acceptance Criteria
- Function is 'GU' (Get Unique) OR 'CHKP' (Checkpoint) AND PCB address equals CCCOM IO PCB address → cCCOM LTERM name is copied to CCCOM original LTERM field and CCCOM user ID is copied to CCCOM ACF2 user ID field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_12TerminalandUserInformationCapture(["Start Step"])
E_12TerminalandUserInformationCapture(["End Step"])
N_12TerminalandUserInformationCapture_Node0{"Function is GU Get Unique OR CHKP
Checkpoint AND PCB address equals
CCCOM IO PCB address"}:::decision N_12TerminalandUserInformationCapture_Node0_action["CCCOM LTERM name is copied to CCCOM
original LTERM field and CCCOM user
ID is copied to CCCOM ACF2 user ID
field"]:::main N_12TerminalandUserInformationCapture_Node0 -- Yes --> N_12TerminalandUserInformationCapture_Node0_action N_12TerminalandUserInformationCapture_Node0_action --> E_12TerminalandUserInformationCapture S_12TerminalandUserInformationCapture --> N_12TerminalandUserInformationCapture_Node0 N_12TerminalandUserInformationCapture_Node0 -- No --> E_12TerminalandUserInformationCapture
Checkpoint AND PCB address equals
CCCOM IO PCB address"}:::decision N_12TerminalandUserInformationCapture_Node0_action["CCCOM LTERM name is copied to CCCOM
original LTERM field and CCCOM user
ID is copied to CCCOM ACF2 user ID
field"]:::main N_12TerminalandUserInformationCapture_Node0 -- Yes --> N_12TerminalandUserInformationCapture_Node0_action N_12TerminalandUserInformationCapture_Node0_action --> E_12TerminalandUserInformationCapture S_12TerminalandUserInformationCapture --> N_12TerminalandUserInformationCapture_Node0 N_12TerminalandUserInformationCapture_Node0 -- No --> E_12TerminalandUserInformationCapture
File: CIMS.cbl
GIVEN:
PCB status information is updated
WHEN:
Function is 'GU' (Get Unique) OR 'CHKP' (Checkpoint) AND PCB address equals CCCOM IO PCB address
THEN:
- Cccom lterm name is copied to cccom original lterm field
- Cccom user id is copied to cccom acf2 user id field
β Consolidated Acceptance Criteria
- Status code is not blank (spaces) → status code is compared against up to 12 acceptable status codes in CCCOM acceptable status table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_13StatusCodeValidation(["Start Step"])
E_13StatusCodeValidation(["End Step"])
N_13StatusCodeValidation_Node0{"Status code is not blank spaces"}:::decision
N_13StatusCodeValidation_Node0_action["Status code is compared against up
to 12 acceptable status codes in
CCCOM acceptable status table"]:::main N_13StatusCodeValidation_Node0 -- Yes --> N_13StatusCodeValidation_Node0_action N_13StatusCodeValidation_Node0_action --> E_13StatusCodeValidation S_13StatusCodeValidation --> N_13StatusCodeValidation_Node0 N_13StatusCodeValidation_Node0 -- No --> E_13StatusCodeValidation
to 12 acceptable status codes in
CCCOM acceptable status table"]:::main N_13StatusCodeValidation_Node0 -- Yes --> N_13StatusCodeValidation_Node0_action N_13StatusCodeValidation_Node0_action --> E_13StatusCodeValidation S_13StatusCodeValidation --> N_13StatusCodeValidation_Node0 N_13StatusCodeValidation_Node0 -- No --> E_13StatusCodeValidation
File: CIMS.cbl
Exclusion / Alternative Path
GIVEN:
IMS operation is completed with status code in CCCOM
WHEN:
Status code is not blank (spaces)
THEN:
Status code is compared against up to 12 acceptable status codes in CCCOM acceptable status table
β Consolidated Acceptance Criteria
- Status code is not found in acceptable status code table after checking all 12 entries → error message is constructed with status code and 'IMS RC CODE NOT IN ACCEPTABLE LIST' text, error message is stored in CCCOM error message field, and error handling routine CERR is invoked
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_14ErrorMessageGeneration(["Start Step"])
E_14ErrorMessageGeneration(["End Step"])
N_14ErrorMessageGeneration_Node0{"Status code is not found in
acceptable status code table after
checking all 12 entries"}:::decision N_14ErrorMessageGeneration_Node0_action["Error message is constructed with
status code and IMS RC CODE NOT IN
ACCEPTABLE LIST text, error message
is stored in CCCOM error message
field, and error handling routine
CERR is invoked"]:::main N_14ErrorMessageGeneration_Node0 -- Yes --> N_14ErrorMessageGeneration_Node0_action N_14ErrorMessageGeneration_Node0_action --> E_14ErrorMessageGeneration S_14ErrorMessageGeneration --> N_14ErrorMessageGeneration_Node0 N_14ErrorMessageGeneration_Node0 -- No --> E_14ErrorMessageGeneration
acceptable status code table after
checking all 12 entries"}:::decision N_14ErrorMessageGeneration_Node0_action["Error message is constructed with
status code and IMS RC CODE NOT IN
ACCEPTABLE LIST text, error message
is stored in CCCOM error message
field, and error handling routine
CERR is invoked"]:::main N_14ErrorMessageGeneration_Node0 -- Yes --> N_14ErrorMessageGeneration_Node0_action N_14ErrorMessageGeneration_Node0_action --> E_14ErrorMessageGeneration S_14ErrorMessageGeneration --> N_14ErrorMessageGeneration_Node0 N_14ErrorMessageGeneration_Node0 -- No --> E_14ErrorMessageGeneration
File: CIMS.cbl
Exclusion / Alternative Path
GIVEN:
Status code validation is completed
WHEN:
Status code is not found in acceptable status code table after checking all 12 entries
THEN:
Error message is constructed with status code and 'IMS RC CODE NOT IN ACCEPTABLE LIST' text, error message is stored in CCCOM error message field, and error handling routine CERR is invoked
β Consolidated Acceptance Criteria
- CCCOM ISCOM address is not null and not blank pointer → cCCOM common area is copied to ISCOM common area to maintain data consistency
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_18CommonAreaSynchronization(["Start Step"])
E_18CommonAreaSynchronization(["End Step"])
N_18CommonAreaSynchronization_Node0{"CCCOM ISCOM address is not null and
not blank pointer"}:::decision N_18CommonAreaSynchronization_Node0_action["CCCOM common area is copied to
ISCOM common area to maintain data
consistency"]:::main N_18CommonAreaSynchronization_Node0 -- Yes --> N_18CommonAreaSynchronization_Node0_action N_18CommonAreaSynchronization_Node0_action --> E_18CommonAreaSynchronization S_18CommonAreaSynchronization --> N_18CommonAreaSynchronization_Node0 N_18CommonAreaSynchronization_Node0 -- No --> E_18CommonAreaSynchronization
not blank pointer"}:::decision N_18CommonAreaSynchronization_Node0_action["CCCOM common area is copied to
ISCOM common area to maintain data
consistency"]:::main N_18CommonAreaSynchronization_Node0 -- Yes --> N_18CommonAreaSynchronization_Node0_action N_18CommonAreaSynchronization_Node0_action --> E_18CommonAreaSynchronization S_18CommonAreaSynchronization --> N_18CommonAreaSynchronization_Node0 N_18CommonAreaSynchronization_Node0 -- No --> E_18CommonAreaSynchronization
File: CIMS.cbl
Exclusion / Alternative Path
GIVEN:
IMS operation completed successfully with blank status code OR acceptable status code found
WHEN:
- Cccom iscom address is not null
- Not blank pointer
THEN:
CCCOM common area is copied to ISCOM common area to maintain data consistency
β Consolidated Acceptance Criteria
- The system begins parameter processing initialization → the NO-FORCE-RESET flag is set to TRUE to control reset behavior
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetNoForceResetFlag(["Start Step"])
E_SetNoForceResetFlag(["End Step"])
N_SetNoForceResetFlag_Node0{"The system begins parameter
processing initialization"}:::decision N_SetNoForceResetFlag_Node0_action["The NO-FORCE-RESET flag is set to
TRUE to control reset behavior"]:::main N_SetNoForceResetFlag_Node0 -- Yes --> N_SetNoForceResetFlag_Node0_action N_SetNoForceResetFlag_Node0_action --> E_SetNoForceResetFlag S_SetNoForceResetFlag --> N_SetNoForceResetFlag_Node0 N_SetNoForceResetFlag_Node0 -- No --> E_SetNoForceResetFlag
processing initialization"}:::decision N_SetNoForceResetFlag_Node0_action["The NO-FORCE-RESET flag is set to
TRUE to control reset behavior"]:::main N_SetNoForceResetFlag_Node0 -- Yes --> N_SetNoForceResetFlag_Node0_action N_SetNoForceResetFlag_Node0_action --> E_SetNoForceResetFlag S_SetNoForceResetFlag --> N_SetNoForceResetFlag_Node0 N_SetNoForceResetFlag_Node0 -- No --> E_SetNoForceResetFlag
File: CIMS.cbl
GIVEN:
The CIMS program is starting parameter linkage setup
WHEN:
The system begins parameter processing initialization
THEN:
The NO-FORCE-RESET flag is set to TRUE to control reset behavior
β Consolidated Acceptance Criteria
- The system needs to establish parameter address linkage → the ADDRESS-LINKAGE-PARAMETERS routine is performed to set up parameter addressing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExecuteAddressLinkageParametersRoutine(["Start Step"])
E_ExecuteAddressLinkageParametersRoutine(["End Step"])
N_ExecuteAddressLinkageParametersRoutine_Node0{"The system needs to establish
parameter address linkage"}:::decision N_ExecuteAddressLinkageParametersRoutine_Node0_action["The ADDRESS-LINKAGE-PARAMETERS
routine is performed to set up
parameter addressing"]:::main N_ExecuteAddressLinkageParametersRoutine_Node0 -- Yes --> N_ExecuteAddressLinkageParametersRoutine_Node0_action N_ExecuteAddressLinkageParametersRoutine_Node0_action --> E_ExecuteAddressLinkageParametersRoutine S_ExecuteAddressLinkageParametersRoutine --> N_ExecuteAddressLinkageParametersRoutine_Node0 N_ExecuteAddressLinkageParametersRoutine_Node0 -- No --> E_ExecuteAddressLinkageParametersRoutine
parameter address linkage"}:::decision N_ExecuteAddressLinkageParametersRoutine_Node0_action["The ADDRESS-LINKAGE-PARAMETERS
routine is performed to set up
parameter addressing"]:::main N_ExecuteAddressLinkageParametersRoutine_Node0 -- Yes --> N_ExecuteAddressLinkageParametersRoutine_Node0_action N_ExecuteAddressLinkageParametersRoutine_Node0_action --> E_ExecuteAddressLinkageParametersRoutine S_ExecuteAddressLinkageParametersRoutine --> N_ExecuteAddressLinkageParametersRoutine_Node0 N_ExecuteAddressLinkageParametersRoutine_Node0 -- No --> E_ExecuteAddressLinkageParametersRoutine
File: CIMS.cbl
GIVEN:
The NO-FORCE-RESET flag has been set
WHEN:
The system needs to establish parameter address linkage
THEN:
The ADDRESS-LINKAGE-PARAMETERS routine is performed to set up parameter addressing
β Consolidated Acceptance Criteria
- The system needs to determine the number of parameters passed → the parameter count is moved from CSILKCRD-PARMS-COUNT to ARG-COUNT
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetParameterCountfromLinkage(["Start Step"])
E_GetParameterCountfromLinkage(["End Step"])
N_GetParameterCountfromLinkage_Node0{"The system needs to determine the
number of parameters passed"}:::decision N_GetParameterCountfromLinkage_Node0_action["The parameter count is moved from
CSILKCRD-PARMS-COUNT to ARG-COUNT"]:::main N_GetParameterCountfromLinkage_Node0 -- Yes --> N_GetParameterCountfromLinkage_Node0_action N_GetParameterCountfromLinkage_Node0_action --> E_GetParameterCountfromLinkage S_GetParameterCountfromLinkage --> N_GetParameterCountfromLinkage_Node0 N_GetParameterCountfromLinkage_Node0 -- No --> E_GetParameterCountfromLinkage
number of parameters passed"}:::decision N_GetParameterCountfromLinkage_Node0_action["The parameter count is moved from
CSILKCRD-PARMS-COUNT to ARG-COUNT"]:::main N_GetParameterCountfromLinkage_Node0 -- Yes --> N_GetParameterCountfromLinkage_Node0_action N_GetParameterCountfromLinkage_Node0_action --> E_GetParameterCountfromLinkage S_GetParameterCountfromLinkage --> N_GetParameterCountfromLinkage_Node0 N_GetParameterCountfromLinkage_Node0 -- No --> E_GetParameterCountfromLinkage
File: CIMS.cbl
GIVEN:
The address linkage parameters routine has been executed
WHEN:
The system needs to determine the number of parameters passed
THEN:
The parameter count is moved from CSILKCRD-PARMS-COUNT to ARG-COUNT
β Consolidated Acceptance Criteria
- The system needs to access the CCCOM control block → the address of CCCOM is set to the address stored in ARG-ADDR position 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCCCOMAddressfromParameter1(["Start Step"])
E_SetCCCOMAddressfromParameter1(["End Step"])
N_SetCCCOMAddressfromParameter1_Node0{"The system needs to access the
CCCOM control block"}:::decision N_SetCCCOMAddressfromParameter1_Node0_action["The address of CCCOM is set to the
address stored in ARG-ADDR position
1"]:::main N_SetCCCOMAddressfromParameter1_Node0 -- Yes --> N_SetCCCOMAddressfromParameter1_Node0_action N_SetCCCOMAddressfromParameter1_Node0_action --> E_SetCCCOMAddressfromParameter1 S_SetCCCOMAddressfromParameter1 --> N_SetCCCOMAddressfromParameter1_Node0 N_SetCCCOMAddressfromParameter1_Node0 -- No --> E_SetCCCOMAddressfromParameter1
CCCOM control block"}:::decision N_SetCCCOMAddressfromParameter1_Node0_action["The address of CCCOM is set to the
address stored in ARG-ADDR position
1"]:::main N_SetCCCOMAddressfromParameter1_Node0 -- Yes --> N_SetCCCOMAddressfromParameter1_Node0_action N_SetCCCOMAddressfromParameter1_Node0_action --> E_SetCCCOMAddressfromParameter1 S_SetCCCOMAddressfromParameter1 --> N_SetCCCOMAddressfromParameter1_Node0 N_SetCCCOMAddressfromParameter1_Node0 -- No --> E_SetCCCOMAddressfromParameter1
File: CIMS.cbl
GIVEN:
The parameter count has been retrieved from linkage data
WHEN:
The system needs to access the CCCOM control block
THEN:
The address of CCCOM is set to the address stored in ARG-ADDR position 1
β Consolidated Acceptance Criteria
- The system needs to access the function code for database operations → the address of FUNC is set to the address stored in ARG-ADDR position 2
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFunctionCodeAddressfromParameter2(["Start Step"])
E_SetFunctionCodeAddressfromParameter2(["End Step"])
N_SetFunctionCodeAddressfromParameter2_Node0{"The system needs to access the
function code for database
operations"}:::decision N_SetFunctionCodeAddressfromParameter2_Node0_action["The address of FUNC is set to the
address stored in ARG-ADDR position
2"]:::main N_SetFunctionCodeAddressfromParameter2_Node0 -- Yes --> N_SetFunctionCodeAddressfromParameter2_Node0_action N_SetFunctionCodeAddressfromParameter2_Node0_action --> E_SetFunctionCodeAddressfromParameter2 S_SetFunctionCodeAddressfromParameter2 --> N_SetFunctionCodeAddressfromParameter2_Node0 N_SetFunctionCodeAddressfromParameter2_Node0 -- No --> E_SetFunctionCodeAddressfromParameter2
function code for database
operations"}:::decision N_SetFunctionCodeAddressfromParameter2_Node0_action["The address of FUNC is set to the
address stored in ARG-ADDR position
2"]:::main N_SetFunctionCodeAddressfromParameter2_Node0 -- Yes --> N_SetFunctionCodeAddressfromParameter2_Node0_action N_SetFunctionCodeAddressfromParameter2_Node0_action --> E_SetFunctionCodeAddressfromParameter2 S_SetFunctionCodeAddressfromParameter2 --> N_SetFunctionCodeAddressfromParameter2_Node0 N_SetFunctionCodeAddressfromParameter2_Node0 -- No --> E_SetFunctionCodeAddressfromParameter2
File: CIMS.cbl
GIVEN:
The CCCOM control block address has been established
WHEN:
The system needs to access the function code for database operations
THEN:
The address of FUNC is set to the address stored in ARG-ADDR position 2
β Consolidated Acceptance Criteria
- The system needs to access the PCB address area for database operations → the address of ADDR-AREA is set to the address stored in ARG-ADDR position 3
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPCBAddressAreafromParameter3(["Start Step"])
E_SetPCBAddressAreafromParameter3(["End Step"])
N_SetPCBAddressAreafromParameter3_Node0{"The system needs to access the PCB
address area for database operations"}:::decision N_SetPCBAddressAreafromParameter3_Node0_action["The address of ADDR-AREA is set to
the address stored in ARG-ADDR
position 3"]:::main N_SetPCBAddressAreafromParameter3_Node0 -- Yes --> N_SetPCBAddressAreafromParameter3_Node0_action N_SetPCBAddressAreafromParameter3_Node0_action --> E_SetPCBAddressAreafromParameter3 S_SetPCBAddressAreafromParameter3 --> N_SetPCBAddressAreafromParameter3_Node0 N_SetPCBAddressAreafromParameter3_Node0 -- No --> E_SetPCBAddressAreafromParameter3
address area for database operations"}:::decision N_SetPCBAddressAreafromParameter3_Node0_action["The address of ADDR-AREA is set to
the address stored in ARG-ADDR
position 3"]:::main N_SetPCBAddressAreafromParameter3_Node0 -- Yes --> N_SetPCBAddressAreafromParameter3_Node0_action N_SetPCBAddressAreafromParameter3_Node0_action --> E_SetPCBAddressAreafromParameter3 S_SetPCBAddressAreafromParameter3 --> N_SetPCBAddressAreafromParameter3_Node0 N_SetPCBAddressAreafromParameter3_Node0 -- No --> E_SetPCBAddressAreafromParameter3
File: CIMS.cbl
GIVEN:
The function code address has been established
WHEN:
The system needs to access the PCB address area for database operations
THEN:
The address of ADDR-AREA is set to the address stored in ARG-ADDR position 3
β Consolidated Acceptance Criteria
- The function parameter processing begins → the function code is stored in the last IMS function field of the common control area
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreIMSFunctionCode(["Start Step"])
E_StoreIMSFunctionCode(["End Step"])
N_StoreIMSFunctionCode_Node0{"The function parameter processing
begins"}:::decision N_StoreIMSFunctionCode_Node0_action["The function code is stored in the
last IMS function field of the
common control area"]:::main N_StoreIMSFunctionCode_Node0 -- Yes --> N_StoreIMSFunctionCode_Node0_action N_StoreIMSFunctionCode_Node0_action --> E_StoreIMSFunctionCode S_StoreIMSFunctionCode --> N_StoreIMSFunctionCode_Node0 N_StoreIMSFunctionCode_Node0 -- No --> E_StoreIMSFunctionCode
begins"}:::decision N_StoreIMSFunctionCode_Node0_action["The function code is stored in the
last IMS function field of the
common control area"]:::main N_StoreIMSFunctionCode_Node0 -- Yes --> N_StoreIMSFunctionCode_Node0_action N_StoreIMSFunctionCode_Node0_action --> E_StoreIMSFunctionCode S_StoreIMSFunctionCode --> N_StoreIMSFunctionCode_Node0 N_StoreIMSFunctionCode_Node0 -- No --> E_StoreIMSFunctionCode
File: CIMS.cbl
GIVEN:
An IMS function code is provided as input parameter
WHEN:
The function parameter processing begins
THEN:
The function code is stored in the last IMS function field of the common control area
β Consolidated Acceptance Criteria
- Before capturing new SSA parameters → the last SSA field in the common control area is cleared to spaces
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearPreviousSSAData(["Start Step"])
E_ClearPreviousSSAData(["End Step"])
N_ClearPreviousSSAData_Node0{"Before capturing new SSA parameters"}:::decision
N_ClearPreviousSSAData_Node0_action["The last SSA field in the common
control area is cleared to spaces"]:::main N_ClearPreviousSSAData_Node0 -- Yes --> N_ClearPreviousSSAData_Node0_action N_ClearPreviousSSAData_Node0_action --> E_ClearPreviousSSAData S_ClearPreviousSSAData --> N_ClearPreviousSSAData_Node0 N_ClearPreviousSSAData_Node0 -- No --> E_ClearPreviousSSAData
control area is cleared to spaces"]:::main N_ClearPreviousSSAData_Node0 -- Yes --> N_ClearPreviousSSAData_Node0_action N_ClearPreviousSSAData_Node0_action --> E_ClearPreviousSSAData S_ClearPreviousSSAData --> N_ClearPreviousSSAData_Node0 N_ClearPreviousSSAData_Node0 -- No --> E_ClearPreviousSSAData
File: CIMS.cbl
GIVEN:
SSA parameter processing is initiated
WHEN:
Before capturing new SSA parameters
THEN:
The last SSA field in the common control area is cleared to spaces
β Consolidated Acceptance Criteria
- Parameter count is 4 or greater → iO area address is set from the 4th argument and stored in the common control area
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ParameterCount4(["Start Step"])
E_ParameterCount4(["End Step"])
N_ParameterCount4_Node0{"Parameter count is 4 or greater"}:::decision
N_ParameterCount4_Node0_action["IO area address is set from the 4th
argument and stored in the common
control area"]:::main N_ParameterCount4_Node0 -- Yes --> N_ParameterCount4_Node0_action N_ParameterCount4_Node0_action --> E_ParameterCount4 S_ParameterCount4 --> N_ParameterCount4_Node0 N_ParameterCount4_Node0 -- No --> E_ParameterCount4
argument and stored in the common
control area"]:::main N_ParameterCount4_Node0 -- Yes --> N_ParameterCount4_Node0_action N_ParameterCount4_Node0_action --> E_ParameterCount4 S_ParameterCount4 --> N_ParameterCount4_Node0 N_ParameterCount4_Node0 -- No --> E_ParameterCount4
File: CIMS.cbl
GIVEN:
Parameter count and argument addresses are available
WHEN:
Parameter count is 4 or greater
THEN:
- Io area address is set from the 4th argument
- Stored in the common control area
β Consolidated Acceptance Criteria
- Parameter count is 5 or greater → sSA1 address is set from the 5th argument and SSA1 content is stored in the last SSA1 field of the common control area
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ParameterCount5(["Start Step"])
E_ParameterCount5(["End Step"])
N_ParameterCount5_Node0{"Parameter count is 5 or greater"}:::decision
N_ParameterCount5_Node0_action["SSA1 address is set from the 5th
argument and SSA1 content is stored
in the last SSA1 field of the common
control area"]:::main N_ParameterCount5_Node0 -- Yes --> N_ParameterCount5_Node0_action N_ParameterCount5_Node0_action --> E_ParameterCount5 S_ParameterCount5 --> N_ParameterCount5_Node0 N_ParameterCount5_Node0 -- No --> E_ParameterCount5
argument and SSA1 content is stored
in the last SSA1 field of the common
control area"]:::main N_ParameterCount5_Node0 -- Yes --> N_ParameterCount5_Node0_action N_ParameterCount5_Node0_action --> E_ParameterCount5 S_ParameterCount5 --> N_ParameterCount5_Node0 N_ParameterCount5_Node0 -- No --> E_ParameterCount5
File: CIMS.cbl
GIVEN:
Parameter count and argument addresses are available
WHEN:
Parameter count is 5 or greater
THEN:
- Ssa1 address is set from the 5th argument
- Ssa1 content is stored in the last ssa1 field of the common control area
β Consolidated Acceptance Criteria
- Parameter count is 6 or greater → sSA2 address is set from the 6th argument and SSA2 content is stored in the last SSA2 field of the common control area
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ParameterCount6(["Start Step"])
E_ParameterCount6(["End Step"])
N_ParameterCount6_Node0{"Parameter count is 6 or greater"}:::decision
N_ParameterCount6_Node0_action["SSA2 address is set from the 6th
argument and SSA2 content is stored
in the last SSA2 field of the common
control area"]:::main N_ParameterCount6_Node0 -- Yes --> N_ParameterCount6_Node0_action N_ParameterCount6_Node0_action --> E_ParameterCount6 S_ParameterCount6 --> N_ParameterCount6_Node0 N_ParameterCount6_Node0 -- No --> E_ParameterCount6
argument and SSA2 content is stored
in the last SSA2 field of the common
control area"]:::main N_ParameterCount6_Node0 -- Yes --> N_ParameterCount6_Node0_action N_ParameterCount6_Node0_action --> E_ParameterCount6 S_ParameterCount6 --> N_ParameterCount6_Node0 N_ParameterCount6_Node0 -- No --> E_ParameterCount6
File: CIMS.cbl
GIVEN:
Parameter count and argument addresses are available
WHEN:
Parameter count is 6 or greater
THEN:
- Ssa2 address is set from the 6th argument
- Ssa2 content is stored in the last ssa2 field of the common control area
β Consolidated Acceptance Criteria
- Parameter count is 7 or greater → sSA3 address is set from the 7th argument and SSA3 content is stored in the last SSA3 field of the common control area
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ParameterCount7(["Start Step"])
E_ParameterCount7(["End Step"])
N_ParameterCount7_Node0{"Parameter count is 7 or greater"}:::decision
N_ParameterCount7_Node0_action["SSA3 address is set from the 7th
argument and SSA3 content is stored
in the last SSA3 field of the common
control area"]:::main N_ParameterCount7_Node0 -- Yes --> N_ParameterCount7_Node0_action N_ParameterCount7_Node0_action --> E_ParameterCount7 S_ParameterCount7 --> N_ParameterCount7_Node0 N_ParameterCount7_Node0 -- No --> E_ParameterCount7
argument and SSA3 content is stored
in the last SSA3 field of the common
control area"]:::main N_ParameterCount7_Node0 -- Yes --> N_ParameterCount7_Node0_action N_ParameterCount7_Node0_action --> E_ParameterCount7 S_ParameterCount7 --> N_ParameterCount7_Node0 N_ParameterCount7_Node0 -- No --> E_ParameterCount7
File: CIMS.cbl
GIVEN:
Parameter count and argument addresses are available
WHEN:
Parameter count is 7 or greater
THEN:
- Ssa3 address is set from the 7th argument
- Ssa3 content is stored in the last ssa3 field of the common control area
β Consolidated Acceptance Criteria
- Parameter count is 8 or greater → sSA4 address is set from the 8th argument and SSA4 content is stored in the last SSA4 field of the common control area
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ParameterCount8(["Start Step"])
E_ParameterCount8(["End Step"])
N_ParameterCount8_Node0{"Parameter count is 8 or greater"}:::decision
N_ParameterCount8_Node0_action["SSA4 address is set from the 8th
argument and SSA4 content is stored
in the last SSA4 field of the common
control area"]:::main N_ParameterCount8_Node0 -- Yes --> N_ParameterCount8_Node0_action N_ParameterCount8_Node0_action --> E_ParameterCount8 S_ParameterCount8 --> N_ParameterCount8_Node0 N_ParameterCount8_Node0 -- No --> E_ParameterCount8
argument and SSA4 content is stored
in the last SSA4 field of the common
control area"]:::main N_ParameterCount8_Node0 -- Yes --> N_ParameterCount8_Node0_action N_ParameterCount8_Node0_action --> E_ParameterCount8 S_ParameterCount8 --> N_ParameterCount8_Node0 N_ParameterCount8_Node0 -- No --> E_ParameterCount8
File: CIMS.cbl
GIVEN:
Parameter count and argument addresses are available
WHEN:
Parameter count is 8 or greater
THEN:
- Ssa4 address is set from the 8th argument
- Ssa4 content is stored in the last ssa4 field of the common control area
β Consolidated Acceptance Criteria
- Parameter count is 9 or greater → sSA5 address is set from the 9th argument and SSA5 content is stored in the last SSA5 field of the common control area
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ParameterCount9(["Start Step"])
E_ParameterCount9(["End Step"])
N_ParameterCount9_Node0{"Parameter count is 9 or greater"}:::decision
N_ParameterCount9_Node0_action["SSA5 address is set from the 9th
argument and SSA5 content is stored
in the last SSA5 field of the common
control area"]:::main N_ParameterCount9_Node0 -- Yes --> N_ParameterCount9_Node0_action N_ParameterCount9_Node0_action --> E_ParameterCount9 S_ParameterCount9 --> N_ParameterCount9_Node0 N_ParameterCount9_Node0 -- No --> E_ParameterCount9
argument and SSA5 content is stored
in the last SSA5 field of the common
control area"]:::main N_ParameterCount9_Node0 -- Yes --> N_ParameterCount9_Node0_action N_ParameterCount9_Node0_action --> E_ParameterCount9 S_ParameterCount9 --> N_ParameterCount9_Node0 N_ParameterCount9_Node0 -- No --> E_ParameterCount9
File: CIMS.cbl
GIVEN:
Parameter count and argument addresses are available
WHEN:
Parameter count is 9 or greater
THEN:
- Ssa5 address is set from the 9th argument
- Ssa5 content is stored in the last ssa5 field of the common control area
β Consolidated Acceptance Criteria
- Parameter count is 10 or greater → sSA6 address is set from the 10th argument and SSA6 content is stored in the last SSA6 field of the common control area
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ParameterCount10(["Start Step"])
E_ParameterCount10(["End Step"])
N_ParameterCount10_Node0{"Parameter count is 10 or greater"}:::decision
N_ParameterCount10_Node0_action["SSA6 address is set from the 10th
argument and SSA6 content is stored
in the last SSA6 field of the common
control area"]:::main N_ParameterCount10_Node0 -- Yes --> N_ParameterCount10_Node0_action N_ParameterCount10_Node0_action --> E_ParameterCount10 S_ParameterCount10 --> N_ParameterCount10_Node0 N_ParameterCount10_Node0 -- No --> E_ParameterCount10
argument and SSA6 content is stored
in the last SSA6 field of the common
control area"]:::main N_ParameterCount10_Node0 -- Yes --> N_ParameterCount10_Node0_action N_ParameterCount10_Node0_action --> E_ParameterCount10 S_ParameterCount10 --> N_ParameterCount10_Node0 N_ParameterCount10_Node0 -- No --> E_ParameterCount10
File: CIMS.cbl
GIVEN:
Parameter count and argument addresses are available
WHEN:
Parameter count is 10 or greater
THEN:
- Ssa6 address is set from the 10th argument
- Ssa6 content is stored in the last ssa6 field of the common control area
β Consolidated Acceptance Criteria
- The system checks for ISCOM address availability during communication setup → if ISCOM address is not null and not blank, the system establishes the ISCOM communication channel, otherwise it continues processing without ISCOM communication
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckISCOMAddressinCCCOM(["Start Step"])
E_CheckISCOMAddressinCCCOM(["End Step"])
N_CheckISCOMAddressinCCCOM_Node0{"The system checks for ISCOM address
availability during communication
setup"}:::decision N_CheckISCOMAddressinCCCOM_Node0_action["If ISCOM address is not null and
not blank, the system establishes
the ISCOM communication channel,
otherwise it continues processing
without ISCOM communication"]:::main N_CheckISCOMAddressinCCCOM_Node0 -- Yes --> N_CheckISCOMAddressinCCCOM_Node0_action N_CheckISCOMAddressinCCCOM_Node0_action --> E_CheckISCOMAddressinCCCOM S_CheckISCOMAddressinCCCOM --> N_CheckISCOMAddressinCCCOM_Node0 N_CheckISCOMAddressinCCCOM_Node0 -- No --> E_CheckISCOMAddressinCCCOM
availability during communication
setup"}:::decision N_CheckISCOMAddressinCCCOM_Node0_action["If ISCOM address is not null and
not blank, the system establishes
the ISCOM communication channel,
otherwise it continues processing
without ISCOM communication"]:::main N_CheckISCOMAddressinCCCOM_Node0 -- Yes --> N_CheckISCOMAddressinCCCOM_Node0_action N_CheckISCOMAddressinCCCOM_Node0_action --> E_CheckISCOMAddressinCCCOM S_CheckISCOMAddressinCCCOM --> N_CheckISCOMAddressinCCCOM_Node0 N_CheckISCOMAddressinCCCOM_Node0 -- No --> E_CheckISCOMAddressinCCCOM
File: CIMS.cbl
GIVEN:
The system has a common control area (CCCOM) that may contain an ISCOM address and the system version matches the expected CCCOM version
WHEN:
The system checks for ISCOM address availability during communication setup
THEN:
- If iscom address is not null
- Not blank, the system establishes the iscom communication channel, otherwise it continues processing without iscom communication
β Consolidated Acceptance Criteria
- The system needs to establish ISCOM communication → the system sets the address of ISCOM to the CCCOM ISCOM address to enable communication
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetISCOMAddressforCommunication(["Start Step"])
E_SetISCOMAddressforCommunication(["End Step"])
N_SetISCOMAddressforCommunication_Node0{"The system needs to establish ISCOM
communication"}:::decision N_SetISCOMAddressforCommunication_Node0_action["The system sets the address of
ISCOM to the CCCOM ISCOM address to
enable communication"]:::main N_SetISCOMAddressforCommunication_Node0 -- Yes --> N_SetISCOMAddressforCommunication_Node0_action N_SetISCOMAddressforCommunication_Node0_action --> E_SetISCOMAddressforCommunication S_SetISCOMAddressforCommunication --> N_SetISCOMAddressforCommunication_Node0 N_SetISCOMAddressforCommunication_Node0 -- No --> E_SetISCOMAddressforCommunication
communication"}:::decision N_SetISCOMAddressforCommunication_Node0_action["The system sets the address of
ISCOM to the CCCOM ISCOM address to
enable communication"]:::main N_SetISCOMAddressforCommunication_Node0 -- Yes --> N_SetISCOMAddressforCommunication_Node0_action N_SetISCOMAddressforCommunication_Node0_action --> E_SetISCOMAddressforCommunication S_SetISCOMAddressforCommunication --> N_SetISCOMAddressforCommunication_Node0 N_SetISCOMAddressforCommunication_Node0 -- No --> E_SetISCOMAddressforCommunication
File: CIMS.cbl
Exclusion / Alternative Path
GIVEN:
A valid ISCOM address exists in CCCOM that is not null and not blank
WHEN:
The system needs to establish ISCOM communication
THEN:
The system sets the address of ISCOM to the CCCOM ISCOM address to enable communication
β Consolidated Acceptance Criteria
- The system checks CCCOM version compatibility → the system compares CCCOM version against expected version and determines whether to proceed with ISCOM checks
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckCCCOMVersion(["Start Step"])
E_CheckCCCOMVersion(["End Step"])
N_CheckCCCOMVersion_Node0{"The system checks CCCOM version
compatibility"}:::decision N_CheckCCCOMVersion_Node0_action["The system compares CCCOM version
against expected version and
determines whether to proceed with
ISCOM checks"]:::main N_CheckCCCOMVersion_Node0 -- Yes --> N_CheckCCCOMVersion_Node0_action N_CheckCCCOMVersion_Node0_action --> E_CheckCCCOMVersion S_CheckCCCOMVersion --> N_CheckCCCOMVersion_Node0 N_CheckCCCOMVersion_Node0 -- No --> E_CheckCCCOMVersion
compatibility"}:::decision N_CheckCCCOMVersion_Node0_action["The system compares CCCOM version
against expected version and
determines whether to proceed with
ISCOM checks"]:::main N_CheckCCCOMVersion_Node0 -- Yes --> N_CheckCCCOMVersion_Node0_action N_CheckCCCOMVersion_Node0_action --> E_CheckCCCOMVersion S_CheckCCCOMVersion --> N_CheckCCCOMVersion_Node0 N_CheckCCCOMVersion_Node0 -- No --> E_CheckCCCOMVersion
File: CIMS.cbl
GIVEN:
A CCCOM control block with a version identifier and a system with an expected CCCOM version
WHEN:
The system checks CCCOM version compatibility
THEN:
- The system compares cccom version against expected version
- Determines whether to proceed with iscom checks
β Consolidated Acceptance Criteria
- CCCOM version equals the expected system version → system proceeds with ISCOM compatibility checks, otherwise skips ISCOM processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CCCOMVersionExpectedVersion(["Start Step"])
E_CCCOMVersionExpectedVersion(["End Step"])
N_CCCOMVersionExpectedVersion_Node0{"CCCOM version equals the expected
system version"}:::decision N_CCCOMVersionExpectedVersion_Node0_action["System proceeds with ISCOM
compatibility checks, otherwise
skips ISCOM processing"]:::main N_CCCOMVersionExpectedVersion_Node0 -- Yes --> N_CCCOMVersionExpectedVersion_Node0_action N_CCCOMVersionExpectedVersion_Node0_action --> E_CCCOMVersionExpectedVersion S_CCCOMVersionExpectedVersion --> N_CCCOMVersionExpectedVersion_Node0 N_CCCOMVersionExpectedVersion_Node0 -- No --> E_CCCOMVersionExpectedVersion
system version"}:::decision N_CCCOMVersionExpectedVersion_Node0_action["System proceeds with ISCOM
compatibility checks, otherwise
skips ISCOM processing"]:::main N_CCCOMVersionExpectedVersion_Node0 -- Yes --> N_CCCOMVersionExpectedVersion_Node0_action N_CCCOMVersionExpectedVersion_Node0_action --> E_CCCOMVersionExpectedVersion S_CCCOMVersionExpectedVersion --> N_CCCOMVersionExpectedVersion_Node0 N_CCCOMVersionExpectedVersion_Node0 -- No --> E_CCCOMVersionExpectedVersion
File: CIMS.cbl
GIVEN:
CCCOM version has been validated against expected system version
WHEN:
CCCOM version equals the expected system version
THEN:
System proceeds with ISCOM compatibility checks, otherwise skips ISCOM processing
β Consolidated Acceptance Criteria
- System needs to perform ISCOM address calculations → system sets the base address pointer to the CCCOM database PCBs area
- ISCOM detection process begins → the base address pointer is set to the CCCOM database PCB control blocks area
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBaseAddresstoCCCOMDBPCBs(["Start Step"])
E_SetBaseAddresstoCCCOMDBPCBs(["End Step"])
N_SetBaseAddresstoCCCOMDBPCBs_Node0{"System needs to perform ISCOM
address calculations"}:::decision N_SetBaseAddresstoCCCOMDBPCBs_Node0_action["System sets the base address
pointer to the CCCOM database PCBs
area"]:::main N_SetBaseAddresstoCCCOMDBPCBs_Node0 -- Yes --> N_SetBaseAddresstoCCCOMDBPCBs_Node0_action N_SetBaseAddresstoCCCOMDBPCBs_Node0_action --> E_SetBaseAddresstoCCCOMDBPCBs S_SetBaseAddresstoCCCOMDBPCBs --> N_SetBaseAddresstoCCCOMDBPCBs_Node0 N_SetBaseAddresstoCCCOMDBPCBs_Node1{"ISCOM detection process begins"}:::decision N_SetBaseAddresstoCCCOMDBPCBs_Node1_action["The base address pointer is set to
the CCCOM database PCB control
blocks area"]:::main N_SetBaseAddresstoCCCOMDBPCBs_Node1 -- Yes --> N_SetBaseAddresstoCCCOMDBPCBs_Node1_action N_SetBaseAddresstoCCCOMDBPCBs_Node1_action --> E_SetBaseAddresstoCCCOMDBPCBs N_SetBaseAddresstoCCCOMDBPCBs_Node0 -- No --> N_SetBaseAddresstoCCCOMDBPCBs_Node1 N_SetBaseAddresstoCCCOMDBPCBs_Node1 -- No --> E_SetBaseAddresstoCCCOMDBPCBs
address calculations"}:::decision N_SetBaseAddresstoCCCOMDBPCBs_Node0_action["System sets the base address
pointer to the CCCOM database PCBs
area"]:::main N_SetBaseAddresstoCCCOMDBPCBs_Node0 -- Yes --> N_SetBaseAddresstoCCCOMDBPCBs_Node0_action N_SetBaseAddresstoCCCOMDBPCBs_Node0_action --> E_SetBaseAddresstoCCCOMDBPCBs S_SetBaseAddresstoCCCOMDBPCBs --> N_SetBaseAddresstoCCCOMDBPCBs_Node0 N_SetBaseAddresstoCCCOMDBPCBs_Node1{"ISCOM detection process begins"}:::decision N_SetBaseAddresstoCCCOMDBPCBs_Node1_action["The base address pointer is set to
the CCCOM database PCB control
blocks area"]:::main N_SetBaseAddresstoCCCOMDBPCBs_Node1 -- Yes --> N_SetBaseAddresstoCCCOMDBPCBs_Node1_action N_SetBaseAddresstoCCCOMDBPCBs_Node1_action --> E_SetBaseAddresstoCCCOMDBPCBs N_SetBaseAddresstoCCCOMDBPCBs_Node0 -- No --> N_SetBaseAddresstoCCCOMDBPCBs_Node1 N_SetBaseAddresstoCCCOMDBPCBs_Node1 -- No --> E_SetBaseAddresstoCCCOMDBPCBs
File: CIMS.cbl
GIVEN:
CCCOM version compatibility has been confirmed and CCCOM contains database PCB area
WHEN:
System needs to perform ISCOM address calculations
THEN:
System sets the base address pointer to the CCCOM database PCBs area
File: CIMS.cbl
GIVEN:
The system needs to detect ISCOM format usage
WHEN:
ISCOM detection process begins
THEN:
The base address pointer is set to the CCCOM database PCB control blocks area
β Consolidated Acceptance Criteria
- System needs to calculate ISCOM address offset → system sets the offset address pointer to the provided address area
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetOffsetAddresstoAddressArea(["Start Step"])
E_SetOffsetAddresstoAddressArea(["End Step"])
N_SetOffsetAddresstoAddressArea_Node0{"System needs to calculate ISCOM
address offset"}:::decision N_SetOffsetAddresstoAddressArea_Node0_action["System sets the offset address
pointer to the provided address area"]:::main N_SetOffsetAddresstoAddressArea_Node0 -- Yes --> N_SetOffsetAddresstoAddressArea_Node0_action N_SetOffsetAddresstoAddressArea_Node0_action --> E_SetOffsetAddresstoAddressArea S_SetOffsetAddresstoAddressArea --> N_SetOffsetAddresstoAddressArea_Node0 N_SetOffsetAddresstoAddressArea_Node0 -- No --> E_SetOffsetAddresstoAddressArea
address offset"}:::decision N_SetOffsetAddresstoAddressArea_Node0_action["System sets the offset address
pointer to the provided address area"]:::main N_SetOffsetAddresstoAddressArea_Node0 -- Yes --> N_SetOffsetAddresstoAddressArea_Node0_action N_SetOffsetAddresstoAddressArea_Node0_action --> E_SetOffsetAddresstoAddressArea S_SetOffsetAddresstoAddressArea --> N_SetOffsetAddresstoAddressArea_Node0 N_SetOffsetAddresstoAddressArea_Node0 -- No --> E_SetOffsetAddresstoAddressArea
File: CIMS.cbl
GIVEN:
Base address has been set to CCCOM database PCBs and an address area is available
WHEN:
System needs to calculate ISCOM address offset
THEN:
System sets the offset address pointer to the provided address area
β Consolidated Acceptance Criteria
- System needs to determine ISCOM table boundaries → system computes the length of ISCOM database PCBs area and stores as table size
- Calculating table boundaries for validation → the ISCOM table size is computed based on the length of CCCOM database PCBs
- The system needs to validate address offset ranges → the table size is calculated using the length of CC-DB-PCBS and stored in WS-CIMS-TABLE-SIZE
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateISCOMTableSize(["Start Step"])
E_CalculateISCOMTableSize(["End Step"])
N_CalculateISCOMTableSize_Node0{"System needs to determine ISCOM
table boundaries"}:::decision N_CalculateISCOMTableSize_Node0_action["System computes the length of ISCOM
database PCBs area and stores as
table size"]:::main N_CalculateISCOMTableSize_Node0 -- Yes --> N_CalculateISCOMTableSize_Node0_action N_CalculateISCOMTableSize_Node0_action --> E_CalculateISCOMTableSize S_CalculateISCOMTableSize --> N_CalculateISCOMTableSize_Node0 N_CalculateISCOMTableSize_Node1{"Calculating table boundaries for
validation"}:::decision N_CalculateISCOMTableSize_Node1_action["The ISCOM table size is computed
based on the length of CCCOM
database PCBs"]:::main N_CalculateISCOMTableSize_Node1 -- Yes --> N_CalculateISCOMTableSize_Node1_action N_CalculateISCOMTableSize_Node1_action --> E_CalculateISCOMTableSize N_CalculateISCOMTableSize_Node0 -- No --> N_CalculateISCOMTableSize_Node1 N_CalculateISCOMTableSize_Node2{"The system needs to validate
address offset ranges"}:::decision N_CalculateISCOMTableSize_Node2_action["The table size is calculated using
the length of CC-DB-PCBS and stored
in WS-CIMS-TABLE-SIZE"]:::main N_CalculateISCOMTableSize_Node2 -- Yes --> N_CalculateISCOMTableSize_Node2_action N_CalculateISCOMTableSize_Node2_action --> E_CalculateISCOMTableSize N_CalculateISCOMTableSize_Node1 -- No --> N_CalculateISCOMTableSize_Node2 N_CalculateISCOMTableSize_Node2 -- No --> E_CalculateISCOMTableSize
table boundaries"}:::decision N_CalculateISCOMTableSize_Node0_action["System computes the length of ISCOM
database PCBs area and stores as
table size"]:::main N_CalculateISCOMTableSize_Node0 -- Yes --> N_CalculateISCOMTableSize_Node0_action N_CalculateISCOMTableSize_Node0_action --> E_CalculateISCOMTableSize S_CalculateISCOMTableSize --> N_CalculateISCOMTableSize_Node0 N_CalculateISCOMTableSize_Node1{"Calculating table boundaries for
validation"}:::decision N_CalculateISCOMTableSize_Node1_action["The ISCOM table size is computed
based on the length of CCCOM
database PCBs"]:::main N_CalculateISCOMTableSize_Node1 -- Yes --> N_CalculateISCOMTableSize_Node1_action N_CalculateISCOMTableSize_Node1_action --> E_CalculateISCOMTableSize N_CalculateISCOMTableSize_Node0 -- No --> N_CalculateISCOMTableSize_Node1 N_CalculateISCOMTableSize_Node2{"The system needs to validate
address offset ranges"}:::decision N_CalculateISCOMTableSize_Node2_action["The table size is calculated using
the length of CC-DB-PCBS and stored
in WS-CIMS-TABLE-SIZE"]:::main N_CalculateISCOMTableSize_Node2 -- Yes --> N_CalculateISCOMTableSize_Node2_action N_CalculateISCOMTableSize_Node2_action --> E_CalculateISCOMTableSize N_CalculateISCOMTableSize_Node1 -- No --> N_CalculateISCOMTableSize_Node2 N_CalculateISCOMTableSize_Node2 -- No --> E_CalculateISCOMTableSize
File: CIMS.cbl
GIVEN:
ISCOM structure is available with database PCBs area
WHEN:
System needs to determine ISCOM table boundaries
THEN:
- System computes the length of iscom database pcbs area
- Stores as table size
File: CIMS.cbl
GIVEN:
ISCOM detection addresses are established
WHEN:
Calculating table boundaries for validation
THEN:
The ISCOM table size is computed based on the length of CCCOM database PCBs
File: CIMS.cbl
GIVEN:
The ISCOM structure CC-DB-PCBS is available
WHEN:
The system needs to validate address offset ranges
THEN:
- The table size is calculated using the length of cc-db-pcbs
- Stored in ws-cims-table-size
β Consolidated Acceptance Criteria
- Base address value is greater than zero → system uses method 1 for address calculation, otherwise uses method 2
- The base address value is evaluated → if base address is greater than zero, use offset minus base calculation method, otherwise use base minus offset calculation method
- Base address value is greater than zero → address-1 is set to offset address value and Address-2 is set to base address value
- The base address is greater than zero → address 1 is set to offset address and Address 2 is set to base address, otherwise Address 1 is set to base address and Address 2 is set to offset address
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BaseAddressZero(["Start Step"])
E_BaseAddressZero(["End Step"])
N_BaseAddressZero_Node0{"Base address value is greater than
zero"}:::decision N_BaseAddressZero_Node0_action["System uses method 1 for address
calculation, otherwise uses method 2"]:::main N_BaseAddressZero_Node0 -- Yes --> N_BaseAddressZero_Node0_action N_BaseAddressZero_Node0_action --> E_BaseAddressZero S_BaseAddressZero --> N_BaseAddressZero_Node0 N_BaseAddressZero_Node1{"The base address value is evaluated"}:::decision N_BaseAddressZero_Node1_action["If base address is greater than
zero, use offset minus base
calculation method, otherwise use
base minus offset calculation method"]:::main N_BaseAddressZero_Node1 -- Yes --> N_BaseAddressZero_Node1_action N_BaseAddressZero_Node1_action --> E_BaseAddressZero N_BaseAddressZero_Node0 -- No --> N_BaseAddressZero_Node1 N_BaseAddressZero_Node2{"Base address value is greater than
zero"}:::decision N_BaseAddressZero_Node2_action["Address-1 is set to offset address
value and Address-2 is set to base
address value"]:::main N_BaseAddressZero_Node2 -- Yes --> N_BaseAddressZero_Node2_action N_BaseAddressZero_Node2_action --> E_BaseAddressZero N_BaseAddressZero_Node1 -- No --> N_BaseAddressZero_Node2 N_BaseAddressZero_Node3{"The base address is greater than
zero"}:::decision N_BaseAddressZero_Node3_action["Address 1 is set to offset address
and Address 2 is set to base
address, otherwise Address 1 is set
to base address and Address 2 is set
to offset address"]:::main N_BaseAddressZero_Node3 -- Yes --> N_BaseAddressZero_Node3_action N_BaseAddressZero_Node3_action --> E_BaseAddressZero N_BaseAddressZero_Node2 -- No --> N_BaseAddressZero_Node3 N_BaseAddressZero_Node3 -- No --> E_BaseAddressZero
zero"}:::decision N_BaseAddressZero_Node0_action["System uses method 1 for address
calculation, otherwise uses method 2"]:::main N_BaseAddressZero_Node0 -- Yes --> N_BaseAddressZero_Node0_action N_BaseAddressZero_Node0_action --> E_BaseAddressZero S_BaseAddressZero --> N_BaseAddressZero_Node0 N_BaseAddressZero_Node1{"The base address value is evaluated"}:::decision N_BaseAddressZero_Node1_action["If base address is greater than
zero, use offset minus base
calculation method, otherwise use
base minus offset calculation method"]:::main N_BaseAddressZero_Node1 -- Yes --> N_BaseAddressZero_Node1_action N_BaseAddressZero_Node1_action --> E_BaseAddressZero N_BaseAddressZero_Node0 -- No --> N_BaseAddressZero_Node1 N_BaseAddressZero_Node2{"Base address value is greater than
zero"}:::decision N_BaseAddressZero_Node2_action["Address-1 is set to offset address
value and Address-2 is set to base
address value"]:::main N_BaseAddressZero_Node2 -- Yes --> N_BaseAddressZero_Node2_action N_BaseAddressZero_Node2_action --> E_BaseAddressZero N_BaseAddressZero_Node1 -- No --> N_BaseAddressZero_Node2 N_BaseAddressZero_Node3{"The base address is greater than
zero"}:::decision N_BaseAddressZero_Node3_action["Address 1 is set to offset address
and Address 2 is set to base
address, otherwise Address 1 is set
to base address and Address 2 is set
to offset address"]:::main N_BaseAddressZero_Node3 -- Yes --> N_BaseAddressZero_Node3_action N_BaseAddressZero_Node3_action --> E_BaseAddressZero N_BaseAddressZero_Node2 -- No --> N_BaseAddressZero_Node3 N_BaseAddressZero_Node3 -- No --> E_BaseAddressZero
File: CIMS.cbl
GIVEN:
Base address and offset address have been established for ISCOM calculations
WHEN:
Base address value is greater than zero
THEN:
System uses method 1 for address calculation, otherwise uses method 2
File: CIMS.cbl
GIVEN:
Base and offset addresses are established for ISCOM detection
WHEN:
The base address value is evaluated
THEN:
If base address is greater than zero, use offset minus base calculation method, otherwise use base minus offset calculation method
File: CIMS.cbl
GIVEN:
Base address is set to CCCOM DB-PCBS address and offset address is set to ADDR-AREA address
WHEN:
Base address value is greater than zero
THEN:
- Address-1 is set to offset address value
- Address-2 is set to base address value
File: CIMS.cbl
GIVEN:
Base address and offset address are available for calculation
WHEN:
The base address is greater than zero
THEN:
- Address 1 is set to offset address
- Address 2 is set to base address, otherwise address 1 is set to base address
- Address 2 is set to offset address
β Consolidated Acceptance Criteria
- System applies address calculation method 1 → system assigns offset address to address-1 and base address to address-2 for final offset computation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateAddressOffsetMethod1(["Start Step"])
E_CalculateAddressOffsetMethod1(["End Step"])
N_CalculateAddressOffsetMethod1_Node0{"System applies address calculation
method 1"}:::decision N_CalculateAddressOffsetMethod1_Node0_action["System assigns offset address to
address-1 and base address to
address-2 for final offset
computation"]:::main N_CalculateAddressOffsetMethod1_Node0 -- Yes --> N_CalculateAddressOffsetMethod1_Node0_action N_CalculateAddressOffsetMethod1_Node0_action --> E_CalculateAddressOffsetMethod1 S_CalculateAddressOffsetMethod1 --> N_CalculateAddressOffsetMethod1_Node0 N_CalculateAddressOffsetMethod1_Node0 -- No --> E_CalculateAddressOffsetMethod1
method 1"}:::decision N_CalculateAddressOffsetMethod1_Node0_action["System assigns offset address to
address-1 and base address to
address-2 for final offset
computation"]:::main N_CalculateAddressOffsetMethod1_Node0 -- Yes --> N_CalculateAddressOffsetMethod1_Node0_action N_CalculateAddressOffsetMethod1_Node0_action --> E_CalculateAddressOffsetMethod1 S_CalculateAddressOffsetMethod1 --> N_CalculateAddressOffsetMethod1_Node0 N_CalculateAddressOffsetMethod1_Node0 -- No --> E_CalculateAddressOffsetMethod1
File: CIMS.cbl
GIVEN:
Base address is greater than zero and offset address is available
WHEN:
System applies address calculation method 1
THEN:
- System assigns offset address to address-1
- Base address to address-2 for final offset computation
β Consolidated Acceptance Criteria
- System applies address calculation method 2 → system assigns base address to address-1 and offset address to address-2 for final offset computation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateAddressOffsetMethod2(["Start Step"])
E_CalculateAddressOffsetMethod2(["End Step"])
N_CalculateAddressOffsetMethod2_Node0{"System applies address calculation
method 2"}:::decision N_CalculateAddressOffsetMethod2_Node0_action["System assigns base address to
address-1 and offset address to
address-2 for final offset
computation"]:::main N_CalculateAddressOffsetMethod2_Node0 -- Yes --> N_CalculateAddressOffsetMethod2_Node0_action N_CalculateAddressOffsetMethod2_Node0_action --> E_CalculateAddressOffsetMethod2 S_CalculateAddressOffsetMethod2 --> N_CalculateAddressOffsetMethod2_Node0 N_CalculateAddressOffsetMethod2_Node0 -- No --> E_CalculateAddressOffsetMethod2
method 2"}:::decision N_CalculateAddressOffsetMethod2_Node0_action["System assigns base address to
address-1 and offset address to
address-2 for final offset
computation"]:::main N_CalculateAddressOffsetMethod2_Node0 -- Yes --> N_CalculateAddressOffsetMethod2_Node0_action N_CalculateAddressOffsetMethod2_Node0_action --> E_CalculateAddressOffsetMethod2 S_CalculateAddressOffsetMethod2 --> N_CalculateAddressOffsetMethod2_Node0 N_CalculateAddressOffsetMethod2_Node0 -- No --> E_CalculateAddressOffsetMethod2
File: CIMS.cbl
Exclusion / Alternative Path
GIVEN:
Base address is not greater than zero and offset address is available
WHEN:
System applies address calculation method 2
THEN:
- System assigns base address to address-1
- Offset address to address-2 for final offset computation
β Consolidated Acceptance Criteria
- System performs final address offset calculation → system computes address offset as the difference between address-1 and address-2
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ComputeFinalAddressOffset(["Start Step"])
E_ComputeFinalAddressOffset(["End Step"])
N_ComputeFinalAddressOffset_Node0{"System performs final address
offset calculation"}:::decision N_ComputeFinalAddressOffset_Node0_action["System computes address offset as
the difference between address-1 and
address-2"]:::main N_ComputeFinalAddressOffset_Node0 -- Yes --> N_ComputeFinalAddressOffset_Node0_action N_ComputeFinalAddressOffset_Node0_action --> E_ComputeFinalAddressOffset S_ComputeFinalAddressOffset --> N_ComputeFinalAddressOffset_Node0 N_ComputeFinalAddressOffset_Node0 -- No --> E_ComputeFinalAddressOffset
offset calculation"}:::decision N_ComputeFinalAddressOffset_Node0_action["System computes address offset as
the difference between address-1 and
address-2"]:::main N_ComputeFinalAddressOffset_Node0 -- Yes --> N_ComputeFinalAddressOffset_Node0_action N_ComputeFinalAddressOffset_Node0_action --> E_ComputeFinalAddressOffset S_ComputeFinalAddressOffset --> N_ComputeFinalAddressOffset_Node0 N_ComputeFinalAddressOffset_Node0 -- No --> E_ComputeFinalAddressOffset
File: CIMS.cbl
GIVEN:
Address-1 and address-2 have been assigned based on selected calculation method
WHEN:
System performs final address offset calculation
THEN:
- System computes address offset as the difference between address-1
- Address-2
β Consolidated Acceptance Criteria
- The system checks if the address area is not null → the system proceeds with PCB address validation if address area is available, otherwise uses default CSI address area
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckAddressAreaAvailability(["Start Step"])
E_CheckAddressAreaAvailability(["End Step"])
N_CheckAddressAreaAvailability_Node0{"The system checks if the address
area is not null"}:::decision N_CheckAddressAreaAvailability_Node0_action["The system proceeds with PCB
address validation if address area
is available, otherwise uses default
CSI address area"]:::main N_CheckAddressAreaAvailability_Node0 -- Yes --> N_CheckAddressAreaAvailability_Node0_action N_CheckAddressAreaAvailability_Node0_action --> E_CheckAddressAreaAvailability S_CheckAddressAreaAvailability --> N_CheckAddressAreaAvailability_Node0 N_CheckAddressAreaAvailability_Node0 -- No --> E_CheckAddressAreaAvailability
area is not null"}:::decision N_CheckAddressAreaAvailability_Node0_action["The system proceeds with PCB
address validation if address area
is available, otherwise uses default
CSI address area"]:::main N_CheckAddressAreaAvailability_Node0 -- Yes --> N_CheckAddressAreaAvailability_Node0_action N_CheckAddressAreaAvailability_Node0_action --> E_CheckAddressAreaAvailability S_CheckAddressAreaAvailability --> N_CheckAddressAreaAvailability_Node0 N_CheckAddressAreaAvailability_Node0 -- No --> E_CheckAddressAreaAvailability
File: CIMS.cbl
Exclusion / Alternative Path
GIVEN:
A PCB address reset operation is initiated
WHEN:
The system checks if the address area is not null
THEN:
The system proceeds with PCB address validation if address area is available, otherwise uses default CSI address area
β Consolidated Acceptance Criteria
- If if PCB address is not null and not blank pointer → the system continues with version compatibility check if PCB address is valid, otherwise skips PCB reset logic
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PCBAddressValidandNotBlank(["Start Step"])
E_PCBAddressValidandNotBlank(["End Step"])
N_PCBAddressValidandNotBlank_Node0{"The system evaluates if PCB address
is not null and not blank pointer"}:::decision N_PCBAddressValidandNotBlank_Node0_action["The system continues with version
compatibility check if PCB address
is valid, otherwise skips PCB reset
logic"]:::main N_PCBAddressValidandNotBlank_Node0 -- Yes --> N_PCBAddressValidandNotBlank_Node0_action N_PCBAddressValidandNotBlank_Node0_action --> E_PCBAddressValidandNotBlank S_PCBAddressValidandNotBlank --> N_PCBAddressValidandNotBlank_Node0 N_PCBAddressValidandNotBlank_Node0 -- No --> E_PCBAddressValidandNotBlank
is not null and not blank pointer"}:::decision N_PCBAddressValidandNotBlank_Node0_action["The system continues with version
compatibility check if PCB address
is valid, otherwise skips PCB reset
logic"]:::main N_PCBAddressValidandNotBlank_Node0 -- Yes --> N_PCBAddressValidandNotBlank_Node0_action N_PCBAddressValidandNotBlank_Node0_action --> E_PCBAddressValidandNotBlank S_PCBAddressValidandNotBlank --> N_PCBAddressValidandNotBlank_Node0 N_PCBAddressValidandNotBlank_Node0 -- No --> E_PCBAddressValidandNotBlank
File: CIMS.cbl
Exclusion / Alternative Path
GIVEN:
An address area is available for processing
WHEN:
- The system evaluates if pcb address is not null
- Not blank pointer
THEN:
The system continues with version compatibility check if PCB address is valid, otherwise skips PCB reset logic
β Consolidated Acceptance Criteria
- The system compares CC-SIT-VERSION of CCCOM with WS-CCCOM-VERSION → the system proceeds with PCB copy address setup if versions match, otherwise skips PCB reset processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CCCOMVersionCompatible(["Start Step"])
E_CCCOMVersionCompatible(["End Step"])
N_CCCOMVersionCompatible_Node0{"The system compares CC-SIT-VERSION
of CCCOM with WS-CCCOM-VERSION"}:::decision N_CCCOMVersionCompatible_Node0_action["The system proceeds with PCB copy
address setup if versions match,
otherwise skips PCB reset processing"]:::main N_CCCOMVersionCompatible_Node0 -- Yes --> N_CCCOMVersionCompatible_Node0_action N_CCCOMVersionCompatible_Node0_action --> E_CCCOMVersionCompatible S_CCCOMVersionCompatible --> N_CCCOMVersionCompatible_Node0 N_CCCOMVersionCompatible_Node0 -- No --> E_CCCOMVersionCompatible
of CCCOM with WS-CCCOM-VERSION"}:::decision N_CCCOMVersionCompatible_Node0_action["The system proceeds with PCB copy
address setup if versions match,
otherwise skips PCB reset processing"]:::main N_CCCOMVersionCompatible_Node0 -- Yes --> N_CCCOMVersionCompatible_Node0_action N_CCCOMVersionCompatible_Node0_action --> E_CCCOMVersionCompatible S_CCCOMVersionCompatible --> N_CCCOMVersionCompatible_Node0 N_CCCOMVersionCompatible_Node0 -- No --> E_CCCOMVersionCompatible
File: CIMS.cbl
GIVEN:
A valid PCB address exists
WHEN:
The system compares CC-SIT-VERSION of CCCOM with WS-CCCOM-VERSION
THEN:
The system proceeds with PCB copy address setup if versions match, otherwise skips PCB reset processing
β Consolidated Acceptance Criteria
- The system sets the address of LK-COPY-OF-PCB to PCB-ADDR → the PCB copy address is established for subsequent segment level validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPCBCopyAddress(["Start Step"])
E_SetPCBCopyAddress(["End Step"])
N_SetPCBCopyAddress_Node0{"The system sets the address of
LK-COPY-OF-PCB to PCB-ADDR"}:::decision N_SetPCBCopyAddress_Node0_action["The PCB copy address is established
for subsequent segment level
validation"]:::main N_SetPCBCopyAddress_Node0 -- Yes --> N_SetPCBCopyAddress_Node0_action N_SetPCBCopyAddress_Node0_action --> E_SetPCBCopyAddress S_SetPCBCopyAddress --> N_SetPCBCopyAddress_Node0 N_SetPCBCopyAddress_Node0 -- No --> E_SetPCBCopyAddress
LK-COPY-OF-PCB to PCB-ADDR"}:::decision N_SetPCBCopyAddress_Node0_action["The PCB copy address is established
for subsequent segment level
validation"]:::main N_SetPCBCopyAddress_Node0 -- Yes --> N_SetPCBCopyAddress_Node0_action N_SetPCBCopyAddress_Node0_action --> E_SetPCBCopyAddress S_SetPCBCopyAddress --> N_SetPCBCopyAddress_Node0 N_SetPCBCopyAddress_Node0 -- No --> E_SetPCBCopyAddress
File: CIMS.cbl
GIVEN:
CCCOM version is compatible with system version
WHEN:
The system sets the address of LK-COPY-OF-PCB to PCB-ADDR
THEN:
The PCB copy address is established for subsequent segment level validation
β Consolidated Acceptance Criteria
- The system checks if LK-SEG-LEVEL is not equal to '98' and not equal to '99' → the system identifies invalid segment level requiring address reset if condition is true, otherwise checks for force reset requirement
- The segment level is not equal to '98' and not equal to '99' → the system proceeds to copy the feedback key length information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SegmentLevelValid(["Start Step"])
E_SegmentLevelValid(["End Step"])
N_SegmentLevelValid_Node0{"The system checks if LK-SEG-LEVEL
is not equal to 98 and not equal to
99"}:::decision N_SegmentLevelValid_Node0_action["The system identifies invalid
segment level requiring address
reset if condition is true,
otherwise checks for force reset
requirement"]:::main N_SegmentLevelValid_Node0 -- Yes --> N_SegmentLevelValid_Node0_action N_SegmentLevelValid_Node0_action --> E_SegmentLevelValid S_SegmentLevelValid --> N_SegmentLevelValid_Node0 N_SegmentLevelValid_Node1{"The segment level is not equal to
98 and not equal to 99"}:::decision N_SegmentLevelValid_Node1_action["The system proceeds to copy the
feedback key length information"]:::main N_SegmentLevelValid_Node1 -- Yes --> N_SegmentLevelValid_Node1_action N_SegmentLevelValid_Node1_action --> E_SegmentLevelValid N_SegmentLevelValid_Node0 -- No --> N_SegmentLevelValid_Node1 N_SegmentLevelValid_Node1 -- No --> E_SegmentLevelValid
is not equal to 98 and not equal to
99"}:::decision N_SegmentLevelValid_Node0_action["The system identifies invalid
segment level requiring address
reset if condition is true,
otherwise checks for force reset
requirement"]:::main N_SegmentLevelValid_Node0 -- Yes --> N_SegmentLevelValid_Node0_action N_SegmentLevelValid_Node0_action --> E_SegmentLevelValid S_SegmentLevelValid --> N_SegmentLevelValid_Node0 N_SegmentLevelValid_Node1{"The segment level is not equal to
98 and not equal to 99"}:::decision N_SegmentLevelValid_Node1_action["The system proceeds to copy the
feedback key length information"]:::main N_SegmentLevelValid_Node1 -- Yes --> N_SegmentLevelValid_Node1_action N_SegmentLevelValid_Node1_action --> E_SegmentLevelValid N_SegmentLevelValid_Node0 -- No --> N_SegmentLevelValid_Node1 N_SegmentLevelValid_Node1 -- No --> E_SegmentLevelValid
File: CIMS.cbl
Exclusion / Alternative Path
GIVEN:
PCB copy address is established
WHEN:
The system checks if LK-SEG-LEVEL is not equal to '98' and not equal to '99'
THEN:
The system identifies invalid segment level requiring address reset if condition is true, otherwise checks for force reset requirement
File: CIMS.cbl
Exclusion / Alternative Path
GIVEN:
PCB status information contains a segment level code in LK-SEG-LEVEL
WHEN:
The segment level is not equal to '98' and not equal to '99'
THEN:
The system proceeds to copy the feedback key length information
β Consolidated Acceptance Criteria
- If the FORCE-RESET flag → the system proceeds with address reset if force reset is required, otherwise continues normal processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ForceResetRequired(["Start Step"])
E_ForceResetRequired(["End Step"])
N_ForceResetRequired_Node0{"The system evaluates the
FORCE-RESET flag"}:::decision N_ForceResetRequired_Node0_action["The system proceeds with address
reset if force reset is required,
otherwise continues normal
processing"]:::main N_ForceResetRequired_Node0 -- Yes --> N_ForceResetRequired_Node0_action N_ForceResetRequired_Node0_action --> E_ForceResetRequired S_ForceResetRequired --> N_ForceResetRequired_Node0 N_ForceResetRequired_Node0 -- No --> E_ForceResetRequired
FORCE-RESET flag"}:::decision N_ForceResetRequired_Node0_action["The system proceeds with address
reset if force reset is required,
otherwise continues normal
processing"]:::main N_ForceResetRequired_Node0 -- Yes --> N_ForceResetRequired_Node0_action N_ForceResetRequired_Node0_action --> E_ForceResetRequired S_ForceResetRequired --> N_ForceResetRequired_Node0 N_ForceResetRequired_Node0 -- No --> E_ForceResetRequired
File: CIMS.cbl
GIVEN:
Segment level is valid (98 or 99)
WHEN:
The system evaluates the FORCE-RESET flag
THEN:
The system proceeds with address reset if force reset is required, otherwise continues normal processing
β Consolidated Acceptance Criteria
- The system executes the address area reset operation → the first 8 positions of the address area are set to spaces to clear the PCB address
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ResetPCBAddressAreatoSpaces(["Start Step"])
E_ResetPCBAddressAreatoSpaces(["End Step"])
N_ResetPCBAddressAreatoSpaces_Node0{"The system executes the address
area reset operation"}:::decision N_ResetPCBAddressAreatoSpaces_Node0_action["The first 8 positions of the
address area are set to spaces to
clear the PCB address"]:::main N_ResetPCBAddressAreatoSpaces_Node0 -- Yes --> N_ResetPCBAddressAreatoSpaces_Node0_action N_ResetPCBAddressAreatoSpaces_Node0_action --> E_ResetPCBAddressAreatoSpaces S_ResetPCBAddressAreatoSpaces --> N_ResetPCBAddressAreatoSpaces_Node0 N_ResetPCBAddressAreatoSpaces_Node0 -- No --> E_ResetPCBAddressAreatoSpaces
area reset operation"}:::decision N_ResetPCBAddressAreatoSpaces_Node0_action["The first 8 positions of the
address area are set to spaces to
clear the PCB address"]:::main N_ResetPCBAddressAreatoSpaces_Node0 -- Yes --> N_ResetPCBAddressAreatoSpaces_Node0_action N_ResetPCBAddressAreatoSpaces_Node0_action --> E_ResetPCBAddressAreatoSpaces S_ResetPCBAddressAreatoSpaces --> N_ResetPCBAddressAreatoSpaces_Node0 N_ResetPCBAddressAreatoSpaces_Node0 -- No --> E_ResetPCBAddressAreatoSpaces
File: CIMS.cbl
GIVEN:
Either segment level is invalid or force reset is required
WHEN:
The system executes the address area reset operation
THEN:
The first 8 positions of the address area are set to spaces to clear the PCB address
β Consolidated Acceptance Criteria
- The system needs to continue processing without a valid address area → the system sets the address area to CSI-ADDR-AREA and generates a zero PCB address error message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinueProcessing(["Start Step"])
E_ContinueProcessing(["End Step"])
N_ContinueProcessing_Node0{"The system needs to continue
processing without a valid address
area"}:::decision N_ContinueProcessing_Node0_action["The system sets the address area to
CSI-ADDR-AREA and generates a zero
PCB address error message"]:::main N_ContinueProcessing_Node0 -- Yes --> N_ContinueProcessing_Node0_action N_ContinueProcessing_Node0_action --> E_ContinueProcessing S_ContinueProcessing --> N_ContinueProcessing_Node0 N_ContinueProcessing_Node0 -- No --> E_ContinueProcessing
processing without a valid address
area"}:::decision N_ContinueProcessing_Node0_action["The system sets the address area to
CSI-ADDR-AREA and generates a zero
PCB address error message"]:::main N_ContinueProcessing_Node0 -- Yes --> N_ContinueProcessing_Node0_action N_ContinueProcessing_Node0_action --> E_ContinueProcessing S_ContinueProcessing --> N_ContinueProcessing_Node0 N_ContinueProcessing_Node0 -- No --> E_ContinueProcessing
File: CIMS.cbl
Exclusion / Alternative Path
GIVEN:
The address area is null or not available
WHEN:
The system needs to continue processing without a valid address area
THEN:
- The system sets the address area to csi-addr-area
- Generates a zero pcb address error message
β Consolidated Acceptance Criteria
- The PCB address equals null or blank pointer → the system identifies that PCB address resolution is required
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PCBAddressisNullorBlank(["Start Step"])
E_PCBAddressisNullorBlank(["End Step"])
N_PCBAddressisNullorBlank_Node0{"The PCB address equals null or
blank pointer"}:::decision N_PCBAddressisNullorBlank_Node0_action["The system identifies that PCB
address resolution is required"]:::main N_PCBAddressisNullorBlank_Node0 -- Yes --> N_PCBAddressisNullorBlank_Node0_action N_PCBAddressisNullorBlank_Node0_action --> E_PCBAddressisNullorBlank S_PCBAddressisNullorBlank --> N_PCBAddressisNullorBlank_Node0 N_PCBAddressisNullorBlank_Node0 -- No --> E_PCBAddressisNullorBlank
blank pointer"}:::decision N_PCBAddressisNullorBlank_Node0_action["The system identifies that PCB
address resolution is required"]:::main N_PCBAddressisNullorBlank_Node0 -- Yes --> N_PCBAddressisNullorBlank_Node0_action N_PCBAddressisNullorBlank_Node0_action --> E_PCBAddressisNullorBlank S_PCBAddressisNullorBlank --> N_PCBAddressisNullorBlank_Node0 N_PCBAddressisNullorBlank_Node0 -- No --> E_PCBAddressisNullorBlank
File: CIMS.cbl
GIVEN:
A PCB address value exists in the system
WHEN:
The PCB address equals null or blank pointer
THEN:
The system identifies that PCB address resolution is required
β Consolidated Acceptance Criteria
- The system prepares to search for valid PCB address → the PCB address is set to null value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ResetPCBAddresstoNull(["Start Step"])
E_ResetPCBAddresstoNull(["End Step"])
N_ResetPCBAddresstoNull_Node0{"The system prepares to search for
valid PCB address"}:::decision N_ResetPCBAddresstoNull_Node0_action["The PCB address is set to null
value"]:::main N_ResetPCBAddresstoNull_Node0 -- Yes --> N_ResetPCBAddresstoNull_Node0_action N_ResetPCBAddresstoNull_Node0_action --> E_ResetPCBAddresstoNull S_ResetPCBAddresstoNull --> N_ResetPCBAddresstoNull_Node0 N_ResetPCBAddresstoNull_Node0 -- No --> E_ResetPCBAddresstoNull
valid PCB address"}:::decision N_ResetPCBAddresstoNull_Node0_action["The PCB address is set to null
value"]:::main N_ResetPCBAddresstoNull_Node0 -- Yes --> N_ResetPCBAddresstoNull_Node0_action N_ResetPCBAddresstoNull_Node0_action --> E_ResetPCBAddresstoNull S_ResetPCBAddresstoNull --> N_ResetPCBAddresstoNull_Node0 N_ResetPCBAddresstoNull_Node0 -- No --> E_ResetPCBAddresstoNull
File: CIMS.cbl
GIVEN:
PCB address resolution process is initiated
WHEN:
The system prepares to search for valid PCB address
THEN:
The PCB address is set to null value
β Consolidated Acceptance Criteria
- The system initializes the search process → the table counter is set to 1 to start from first entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeTableSearchCounterto1(["Start Step"])
E_InitializeTableSearchCounterto1(["End Step"])
N_InitializeTableSearchCounterto1_Node0{"The system initializes the search
process"}:::decision N_InitializeTableSearchCounterto1_Node0_action["The table counter is set to 1 to
start from first entry"]:::main N_InitializeTableSearchCounterto1_Node0 -- Yes --> N_InitializeTableSearchCounterto1_Node0_action N_InitializeTableSearchCounterto1_Node0_action --> E_InitializeTableSearchCounterto1 S_InitializeTableSearchCounterto1 --> N_InitializeTableSearchCounterto1_Node0 N_InitializeTableSearchCounterto1_Node0 -- No --> E_InitializeTableSearchCounterto1
process"}:::decision N_InitializeTableSearchCounterto1_Node0_action["The table counter is set to 1 to
start from first entry"]:::main N_InitializeTableSearchCounterto1_Node0 -- Yes --> N_InitializeTableSearchCounterto1_Node0_action N_InitializeTableSearchCounterto1_Node0_action --> E_InitializeTableSearchCounterto1 S_InitializeTableSearchCounterto1 --> N_InitializeTableSearchCounterto1_Node0 N_InitializeTableSearchCounterto1_Node0 -- No --> E_InitializeTableSearchCounterto1
File: CIMS.cbl
GIVEN:
PCB address table search is about to begin
WHEN:
The system initializes the search process
THEN:
The table counter is set to 1 to start from first entry
β Consolidated Acceptance Criteria
- The counter is evaluated against the maximum table size → if counter is less than or equal to 249, continue search; otherwise terminate search
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Counter249(["Start Step"])
E_Counter249(["End Step"])
N_Counter249_Node0{"The counter is evaluated against
the maximum table size"}:::decision N_Counter249_Node0_action["If counter is less than or equal to
249, continue search otherwise
terminate search"]:::exclusion N_Counter249_Node0 -- Yes -->|Alternative| N_Counter249_Node0_action N_Counter249_Node0_action --> E_Counter249 S_Counter249 --> N_Counter249_Node0 N_Counter249_Node0 -- No --> E_Counter249
the maximum table size"}:::decision N_Counter249_Node0_action["If counter is less than or equal to
249, continue search otherwise
terminate search"]:::exclusion N_Counter249_Node0 -- Yes -->|Alternative| N_Counter249_Node0_action N_Counter249_Node0_action --> E_Counter249 S_Counter249 --> N_Counter249_Node0 N_Counter249_Node0 -- No --> E_Counter249
File: CIMS.cbl
GIVEN:
A table counter value during PCB address search
WHEN:
The counter is evaluated against the maximum table size
THEN:
If counter is less than or equal to 249, continue search; otherwise terminate search
β Consolidated Acceptance Criteria
- The PCB name equals '1' → the system identifies this as a special case requiring name clearing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PCBNameEquals1(["Start Step"])
E_PCBNameEquals1(["End Step"])
N_PCBNameEquals1_Node0{"The PCB name equals 1"}:::decision
N_PCBNameEquals1_Node0_action["The system identifies this as a
special case requiring name clearing"]:::main N_PCBNameEquals1_Node0 -- Yes --> N_PCBNameEquals1_Node0_action N_PCBNameEquals1_Node0_action --> E_PCBNameEquals1 S_PCBNameEquals1 --> N_PCBNameEquals1_Node0 N_PCBNameEquals1_Node0 -- No --> E_PCBNameEquals1
special case requiring name clearing"]:::main N_PCBNameEquals1_Node0 -- Yes --> N_PCBNameEquals1_Node0_action N_PCBNameEquals1_Node0_action --> E_PCBNameEquals1 S_PCBNameEquals1 --> N_PCBNameEquals1_Node0 N_PCBNameEquals1_Node0 -- No --> E_PCBNameEquals1
File: CIMS.cbl
GIVEN:
A PCB name value during address resolution
WHEN:
The PCB name equals '1'
THEN:
The system identifies this as a special case requiring name clearing
β Consolidated Acceptance Criteria
- Special case processing is applied → the PCB name is set to spaces
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearPCBNametoSpaces(["Start Step"])
E_ClearPCBNametoSpaces(["End Step"])
N_ClearPCBNametoSpaces_Node0{"Special case processing is applied"}:::decision
N_ClearPCBNametoSpaces_Node0_action["The PCB name is set to spaces"]:::main
N_ClearPCBNametoSpaces_Node0 -- Yes --> N_ClearPCBNametoSpaces_Node0_action
N_ClearPCBNametoSpaces_Node0_action --> E_ClearPCBNametoSpaces
S_ClearPCBNametoSpaces --> N_ClearPCBNametoSpaces_Node0
N_ClearPCBNametoSpaces_Node0 -- No --> E_ClearPCBNametoSpaces
File: CIMS.cbl
GIVEN:
PCB name has value '1'
WHEN:
Special case processing is applied
THEN:
The PCB name is set to spaces
β Consolidated Acceptance Criteria
- The PCB name is compared with the database name table entry → if names match, proceed to address assignment; otherwise continue search
- The PCB name matches a database name entry in the table at position I → the system should retrieve the corresponding PCB address from the same table position
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PCBNameMatchesTableEntry(["Start Step"])
E_PCBNameMatchesTableEntry(["End Step"])
N_PCBNameMatchesTableEntry_Node0{"The PCB name is compared with the
database name table entry"}:::decision N_PCBNameMatchesTableEntry_Node0_action["If names match, proceed to address
assignment otherwise continue search"]:::main N_PCBNameMatchesTableEntry_Node0 -- Yes --> N_PCBNameMatchesTableEntry_Node0_action N_PCBNameMatchesTableEntry_Node0_action --> E_PCBNameMatchesTableEntry S_PCBNameMatchesTableEntry --> N_PCBNameMatchesTableEntry_Node0 N_PCBNameMatchesTableEntry_Node1{"The PCB name matches a database
name entry in the table at position
I"}:::decision N_PCBNameMatchesTableEntry_Node1_action["The system should retrieve the
corresponding PCB address from the
same table position"]:::main N_PCBNameMatchesTableEntry_Node1 -- Yes --> N_PCBNameMatchesTableEntry_Node1_action N_PCBNameMatchesTableEntry_Node1_action --> E_PCBNameMatchesTableEntry N_PCBNameMatchesTableEntry_Node0 -- No --> N_PCBNameMatchesTableEntry_Node1 N_PCBNameMatchesTableEntry_Node1 -- No --> E_PCBNameMatchesTableEntry
database name table entry"}:::decision N_PCBNameMatchesTableEntry_Node0_action["If names match, proceed to address
assignment otherwise continue search"]:::main N_PCBNameMatchesTableEntry_Node0 -- Yes --> N_PCBNameMatchesTableEntry_Node0_action N_PCBNameMatchesTableEntry_Node0_action --> E_PCBNameMatchesTableEntry S_PCBNameMatchesTableEntry --> N_PCBNameMatchesTableEntry_Node0 N_PCBNameMatchesTableEntry_Node1{"The PCB name matches a database
name entry in the table at position
I"}:::decision N_PCBNameMatchesTableEntry_Node1_action["The system should retrieve the
corresponding PCB address from the
same table position"]:::main N_PCBNameMatchesTableEntry_Node1 -- Yes --> N_PCBNameMatchesTableEntry_Node1_action N_PCBNameMatchesTableEntry_Node1_action --> E_PCBNameMatchesTableEntry N_PCBNameMatchesTableEntry_Node0 -- No --> N_PCBNameMatchesTableEntry_Node1 N_PCBNameMatchesTableEntry_Node1 -- No --> E_PCBNameMatchesTableEntry
File: CIMS.cbl
GIVEN:
A PCB name and current table entry during search
WHEN:
The PCB name is compared with the database name table entry
THEN:
If names match, proceed to address assignment; otherwise continue search
File: CIMS.cbl
GIVEN:
A PCB name and a database name table with multiple entries
WHEN:
The PCB name matches a database name entry in the table at position I
THEN:
The system should retrieve the corresponding PCB address from the same table position
β Consolidated Acceptance Criteria
- The system locates the corresponding table entry → the PCB address is set to the address value from the matching table entry
- The PCB name matches the table entry → the PCB address should be set to the corresponding address value from the same table position
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPCBAddressfromTableEntry(["Start Step"])
E_SetPCBAddressfromTableEntry(["End Step"])
N_SetPCBAddressfromTableEntry_Node0{"The system locates the
corresponding table entry"}:::decision N_SetPCBAddressfromTableEntry_Node0_action["The PCB address is set to the
address value from the matching
table entry"]:::main N_SetPCBAddressfromTableEntry_Node0 -- Yes --> N_SetPCBAddressfromTableEntry_Node0_action N_SetPCBAddressfromTableEntry_Node0_action --> E_SetPCBAddressfromTableEntry S_SetPCBAddressfromTableEntry --> N_SetPCBAddressfromTableEntry_Node0 N_SetPCBAddressfromTableEntry_Node1{"The PCB name matches the table
entry"}:::decision N_SetPCBAddressfromTableEntry_Node1_action["The PCB address should be set to
the corresponding address value from
the same table position"]:::main N_SetPCBAddressfromTableEntry_Node1 -- Yes --> N_SetPCBAddressfromTableEntry_Node1_action N_SetPCBAddressfromTableEntry_Node1_action --> E_SetPCBAddressfromTableEntry N_SetPCBAddressfromTableEntry_Node0 -- No --> N_SetPCBAddressfromTableEntry_Node1 N_SetPCBAddressfromTableEntry_Node1 -- No --> E_SetPCBAddressfromTableEntry
corresponding table entry"}:::decision N_SetPCBAddressfromTableEntry_Node0_action["The PCB address is set to the
address value from the matching
table entry"]:::main N_SetPCBAddressfromTableEntry_Node0 -- Yes --> N_SetPCBAddressfromTableEntry_Node0_action N_SetPCBAddressfromTableEntry_Node0_action --> E_SetPCBAddressfromTableEntry S_SetPCBAddressfromTableEntry --> N_SetPCBAddressfromTableEntry_Node0 N_SetPCBAddressfromTableEntry_Node1{"The PCB name matches the table
entry"}:::decision N_SetPCBAddressfromTableEntry_Node1_action["The PCB address should be set to
the corresponding address value from
the same table position"]:::main N_SetPCBAddressfromTableEntry_Node1 -- Yes --> N_SetPCBAddressfromTableEntry_Node1_action N_SetPCBAddressfromTableEntry_Node1_action --> E_SetPCBAddressfromTableEntry N_SetPCBAddressfromTableEntry_Node0 -- No --> N_SetPCBAddressfromTableEntry_Node1 N_SetPCBAddressfromTableEntry_Node1 -- No --> E_SetPCBAddressfromTableEntry
File: CIMS.cbl
GIVEN:
A matching PCB name found in database name table
WHEN:
The system locates the corresponding table entry
THEN:
The PCB address is set to the address value from the matching table entry
File: CIMS.cbl
GIVEN:
A matching PCB name has been found in the database name table at position I
WHEN:
The PCB name matches the table entry
THEN:
The PCB address should be set to the corresponding address value from the same table position
β Consolidated Acceptance Criteria
- The system checks if address resolution was successful → if PCB address is not null, resolution is complete; otherwise continue search
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PCBAddressFound(["Start Step"])
E_PCBAddressFound(["End Step"])
N_PCBAddressFound_Node0{"The system checks if address
resolution was successful"}:::decision N_PCBAddressFound_Node0_action["If PCB address is not null,
resolution is complete otherwise
continue search"]:::main N_PCBAddressFound_Node0 -- Yes --> N_PCBAddressFound_Node0_action N_PCBAddressFound_Node0_action --> E_PCBAddressFound S_PCBAddressFound --> N_PCBAddressFound_Node0 N_PCBAddressFound_Node0 -- No --> E_PCBAddressFound
resolution was successful"}:::decision N_PCBAddressFound_Node0_action["If PCB address is not null,
resolution is complete otherwise
continue search"]:::main N_PCBAddressFound_Node0 -- Yes --> N_PCBAddressFound_Node0_action N_PCBAddressFound_Node0_action --> E_PCBAddressFound S_PCBAddressFound --> N_PCBAddressFound_Node0 N_PCBAddressFound_Node0 -- No --> E_PCBAddressFound
File: CIMS.cbl
GIVEN:
PCB address after table lookup attempt
WHEN:
The system checks if address resolution was successful
THEN:
If PCB address is not null, resolution is complete; otherwise continue search
β Consolidated Acceptance Criteria
- The table entry is evaluated for content → if entry contains spaces, terminate search; otherwise increment counter and continue
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TableEntryEmpty(["Start Step"])
E_TableEntryEmpty(["End Step"])
N_TableEntryEmpty_Node0{"The table entry is evaluated for
content"}:::decision N_TableEntryEmpty_Node0_action["If entry contains spaces, terminate
search otherwise increment counter
and continue"]:::exclusion N_TableEntryEmpty_Node0 -- Yes -->|Alternative| N_TableEntryEmpty_Node0_action N_TableEntryEmpty_Node0_action --> E_TableEntryEmpty S_TableEntryEmpty --> N_TableEntryEmpty_Node0 N_TableEntryEmpty_Node0 -- No --> E_TableEntryEmpty
content"}:::decision N_TableEntryEmpty_Node0_action["If entry contains spaces, terminate
search otherwise increment counter
and continue"]:::exclusion N_TableEntryEmpty_Node0 -- Yes -->|Alternative| N_TableEntryEmpty_Node0_action N_TableEntryEmpty_Node0_action --> E_TableEntryEmpty S_TableEntryEmpty --> N_TableEntryEmpty_Node0 N_TableEntryEmpty_Node0 -- No --> E_TableEntryEmpty
File: CIMS.cbl
GIVEN:
Current database name table entry during search
WHEN:
The table entry is evaluated for content
THEN:
- If entry contains spaces, terminate search; otherwise increment counter
- Continue
β Consolidated Acceptance Criteria
- No match found and table entry is not empty → the counter is incremented by 1 to move to next table entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementCounter(["Start Step"])
E_IncrementCounter(["End Step"])
N_IncrementCounter_Node0{"No match found and table entry is
not empty"}:::decision N_IncrementCounter_Node0_action["The counter is incremented by 1 to
move to next table entry"]:::main N_IncrementCounter_Node0 -- Yes --> N_IncrementCounter_Node0_action N_IncrementCounter_Node0_action --> E_IncrementCounter S_IncrementCounter --> N_IncrementCounter_Node0 N_IncrementCounter_Node0 -- No --> E_IncrementCounter
not empty"}:::decision N_IncrementCounter_Node0_action["The counter is incremented by 1 to
move to next table entry"]:::main N_IncrementCounter_Node0 -- Yes --> N_IncrementCounter_Node0_action N_IncrementCounter_Node0_action --> E_IncrementCounter S_IncrementCounter --> N_IncrementCounter_Node0 N_IncrementCounter_Node0 -- No --> E_IncrementCounter
File: CIMS.cbl
Exclusion / Alternative Path
GIVEN:
Current search counter value during table iteration
WHEN:
- No match found
- Table entry is not empty
THEN:
The counter is incremented by 1 to move to next table entry
β Consolidated Acceptance Criteria
- Address resolution process concludes successfully → the system has valid PCB address available for database operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PCBAddressResolutionComplete(["Start Step"])
E_PCBAddressResolutionComplete(["End Step"])
N_PCBAddressResolutionComplete_Node0{"Address resolution process
concludes successfully"}:::decision N_PCBAddressResolutionComplete_Node0_action["The system has valid PCB address
available for database operations"]:::main N_PCBAddressResolutionComplete_Node0 -- Yes --> N_PCBAddressResolutionComplete_Node0_action N_PCBAddressResolutionComplete_Node0_action --> E_PCBAddressResolutionComplete S_PCBAddressResolutionComplete --> N_PCBAddressResolutionComplete_Node0 N_PCBAddressResolutionComplete_Node0 -- No --> E_PCBAddressResolutionComplete
concludes successfully"}:::decision N_PCBAddressResolutionComplete_Node0_action["The system has valid PCB address
available for database operations"]:::main N_PCBAddressResolutionComplete_Node0 -- Yes --> N_PCBAddressResolutionComplete_Node0_action N_PCBAddressResolutionComplete_Node0_action --> E_PCBAddressResolutionComplete S_PCBAddressResolutionComplete --> N_PCBAddressResolutionComplete_Node0 N_PCBAddressResolutionComplete_Node0 -- No --> E_PCBAddressResolutionComplete
File: CIMS.cbl
GIVEN:
Valid PCB address located through table search
WHEN:
Address resolution process concludes successfully
THEN:
The system has valid PCB address available for database operations
β Consolidated Acceptance Criteria
- No matching PCB name found or table boundary exceeded → the system recognizes PCB address resolution has failed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchFailedNoMoreEntries(["Start Step"])
E_SearchFailedNoMoreEntries(["End Step"])
N_SearchFailedNoMoreEntries_Node0{"No matching PCB name found or table
boundary exceeded"}:::decision N_SearchFailedNoMoreEntries_Node0_action["The system recognizes PCB address
resolution has failed"]:::main N_SearchFailedNoMoreEntries_Node0 -- Yes --> N_SearchFailedNoMoreEntries_Node0_action N_SearchFailedNoMoreEntries_Node0_action --> E_SearchFailedNoMoreEntries S_SearchFailedNoMoreEntries --> N_SearchFailedNoMoreEntries_Node0 N_SearchFailedNoMoreEntries_Node0 -- No --> E_SearchFailedNoMoreEntries
boundary exceeded"}:::decision N_SearchFailedNoMoreEntries_Node0_action["The system recognizes PCB address
resolution has failed"]:::main N_SearchFailedNoMoreEntries_Node0 -- Yes --> N_SearchFailedNoMoreEntries_Node0_action N_SearchFailedNoMoreEntries_Node0_action --> E_SearchFailedNoMoreEntries S_SearchFailedNoMoreEntries --> N_SearchFailedNoMoreEntries_Node0 N_SearchFailedNoMoreEntries_Node0 -- No --> E_SearchFailedNoMoreEntries
File: CIMS.cbl
GIVEN:
Completed search through all available table entries
WHEN:
No matching PCB name found or table boundary exceeded
THEN:
The system recognizes PCB address resolution has failed
β Consolidated Acceptance Criteria
- The PCB number equals '1' → the PCB number should be converted to spaces
- The PCB number equals '1' → the PCB number should be cleared to spaces to standardize the search criteria
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PCBNumber1(["Start Step"])
E_PCBNumber1(["End Step"])
N_PCBNumber1_Node0{"The PCB number equals 1"}:::decision
N_PCBNumber1_Node0_action["The PCB number should be converted
to spaces"]:::main N_PCBNumber1_Node0 -- Yes --> N_PCBNumber1_Node0_action N_PCBNumber1_Node0_action --> E_PCBNumber1 S_PCBNumber1 --> N_PCBNumber1_Node0 N_PCBNumber1_Node1{"The PCB number equals 1"}:::decision N_PCBNumber1_Node1_action["The PCB number should be cleared to
spaces to standardize the search
criteria"]:::main N_PCBNumber1_Node1 -- Yes --> N_PCBNumber1_Node1_action N_PCBNumber1_Node1_action --> E_PCBNumber1 N_PCBNumber1_Node0 -- No --> N_PCBNumber1_Node1 N_PCBNumber1_Node1 -- No --> E_PCBNumber1
to spaces"]:::main N_PCBNumber1_Node0 -- Yes --> N_PCBNumber1_Node0_action N_PCBNumber1_Node0_action --> E_PCBNumber1 S_PCBNumber1 --> N_PCBNumber1_Node0 N_PCBNumber1_Node1{"The PCB number equals 1"}:::decision N_PCBNumber1_Node1_action["The PCB number should be cleared to
spaces to standardize the search
criteria"]:::main N_PCBNumber1_Node1 -- Yes --> N_PCBNumber1_Node1_action N_PCBNumber1_Node1_action --> E_PCBNumber1 N_PCBNumber1_Node0 -- No --> N_PCBNumber1_Node1 N_PCBNumber1_Node1 -- No --> E_PCBNumber1
File: CIMS.cbl
GIVEN:
A PCB number value is provided
WHEN:
The PCB number equals '1'
THEN:
The PCB number should be converted to spaces
File: CIMS.cbl
GIVEN:
A PCB number value is provided for table search
WHEN:
The PCB number equals '1'
THEN:
The PCB number should be cleared to spaces to standardize the search criteria
β Consolidated Acceptance Criteria
- The PCB name matches an entry in the database name table at position I → the PCB address should be set to the corresponding PCB address from the table at position I
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PCBNameMatchesDatabaseNameinTable(["Start Step"])
E_PCBNameMatchesDatabaseNameinTable(["End Step"])
N_PCBNameMatchesDatabaseNameinTable_Node0{"The PCB name matches an entry in
the database name table at position
I"}:::decision N_PCBNameMatchesDatabaseNameinTable_Node0_action["The PCB address should be set to
the corresponding PCB address from
the table at position I"]:::main N_PCBNameMatchesDatabaseNameinTable_Node0 -- Yes --> N_PCBNameMatchesDatabaseNameinTable_Node0_action N_PCBNameMatchesDatabaseNameinTable_Node0_action --> E_PCBNameMatchesDatabaseNameinTable S_PCBNameMatchesDatabaseNameinTable --> N_PCBNameMatchesDatabaseNameinTable_Node0 N_PCBNameMatchesDatabaseNameinTable_Node0 -- No --> E_PCBNameMatchesDatabaseNameinTable
the database name table at position
I"}:::decision N_PCBNameMatchesDatabaseNameinTable_Node0_action["The PCB address should be set to
the corresponding PCB address from
the table at position I"]:::main N_PCBNameMatchesDatabaseNameinTable_Node0 -- Yes --> N_PCBNameMatchesDatabaseNameinTable_Node0_action N_PCBNameMatchesDatabaseNameinTable_Node0_action --> E_PCBNameMatchesDatabaseNameinTable S_PCBNameMatchesDatabaseNameinTable --> N_PCBNameMatchesDatabaseNameinTable_Node0 N_PCBNameMatchesDatabaseNameinTable_Node0 -- No --> E_PCBNameMatchesDatabaseNameinTable
File: CIMS.cbl
GIVEN:
A PCB name is provided and database name table exists with entries
WHEN:
The PCB name matches an entry in the database name table at position I
THEN:
The PCB address should be set to the corresponding PCB address from the table at position I
β Consolidated Acceptance Criteria
- The search has not found a matching PCB name and current index I is less than or equal to 249 and the database name at position I is not spaces → the search should continue to the next table entry by incrementing the index
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreTableEntriesAvailable(["Start Step"])
E_MoreTableEntriesAvailable(["End Step"])
N_MoreTableEntriesAvailable_Node0{"The search has not found a matching
PCB name and current index I is less
than or equal to 249 and the
database name at position I is not
spaces"}:::decision N_MoreTableEntriesAvailable_Node0_action["The search should continue to the
next table entry by incrementing the
index"]:::main N_MoreTableEntriesAvailable_Node0 -- Yes --> N_MoreTableEntriesAvailable_Node0_action N_MoreTableEntriesAvailable_Node0_action --> E_MoreTableEntriesAvailable S_MoreTableEntriesAvailable --> N_MoreTableEntriesAvailable_Node0 N_MoreTableEntriesAvailable_Node0 -- No --> E_MoreTableEntriesAvailable
PCB name and current index I is less
than or equal to 249 and the
database name at position I is not
spaces"}:::decision N_MoreTableEntriesAvailable_Node0_action["The search should continue to the
next table entry by incrementing the
index"]:::main N_MoreTableEntriesAvailable_Node0 -- Yes --> N_MoreTableEntriesAvailable_Node0_action N_MoreTableEntriesAvailable_Node0_action --> E_MoreTableEntriesAvailable S_MoreTableEntriesAvailable --> N_MoreTableEntriesAvailable_Node0 N_MoreTableEntriesAvailable_Node0 -- No --> E_MoreTableEntriesAvailable
File: CIMS.cbl
Exclusion / Alternative Path
GIVEN:
A PCB table search is in progress with current index I
WHEN:
- The search has not found a matching pcb name
- Current index i is less than or equal to 249
- The database name at position i is not spaces
THEN:
The search should continue to the next table entry by incrementing the index
β Consolidated Acceptance Criteria
- The system checks the PCB address availability → the system determines if the PCB address is null or blank pointer to decide next processing step
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckPCBAddressStatus(["Start Step"])
E_CheckPCBAddressStatus(["End Step"])
N_CheckPCBAddressStatus_Node0{"The system checks the PCB address
availability"}:::decision N_CheckPCBAddressStatus_Node0_action["The system determines if the PCB
address is null or blank pointer to
decide next processing step"]:::main N_CheckPCBAddressStatus_Node0 -- Yes --> N_CheckPCBAddressStatus_Node0_action N_CheckPCBAddressStatus_Node0_action --> E_CheckPCBAddressStatus S_CheckPCBAddressStatus --> N_CheckPCBAddressStatus_Node0 N_CheckPCBAddressStatus_Node0 -- No --> E_CheckPCBAddressStatus
availability"}:::decision N_CheckPCBAddressStatus_Node0_action["The system determines if the PCB
address is null or blank pointer to
decide next processing step"]:::main N_CheckPCBAddressStatus_Node0 -- Yes --> N_CheckPCBAddressStatus_Node0_action N_CheckPCBAddressStatus_Node0_action --> E_CheckPCBAddressStatus S_CheckPCBAddressStatus --> N_CheckPCBAddressStatus_Node0 N_CheckPCBAddressStatus_Node0 -- No --> E_CheckPCBAddressStatus
File: CIMS.cbl
GIVEN:
A database operation request is being processed
WHEN:
The system checks the PCB address availability
THEN:
The system determines if the PCB address is null or blank pointer to decide next processing step
β Consolidated Acceptance Criteria
- The system needs to generate error information → the system sets the PCB name from PCB-MNE to ZERO-PCB-NAME for error reporting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPCBNametoZEROPCBNAME(["Start Step"])
E_SetPCBNametoZEROPCBNAME(["End Step"])
N_SetPCBNametoZEROPCBNAME_Node0{"The system needs to generate error
information"}:::decision N_SetPCBNametoZEROPCBNAME_Node0_action["The system sets the PCB name from
PCB-MNE to ZERO-PCB-NAME for error
reporting"]:::exclusion N_SetPCBNametoZEROPCBNAME_Node0 -- Yes -->|Alternative| N_SetPCBNametoZEROPCBNAME_Node0_action N_SetPCBNametoZEROPCBNAME_Node0_action --> E_SetPCBNametoZEROPCBNAME S_SetPCBNametoZEROPCBNAME --> N_SetPCBNametoZEROPCBNAME_Node0 N_SetPCBNametoZEROPCBNAME_Node0 -- No --> E_SetPCBNametoZEROPCBNAME
information"}:::decision N_SetPCBNametoZEROPCBNAME_Node0_action["The system sets the PCB name from
PCB-MNE to ZERO-PCB-NAME for error
reporting"]:::exclusion N_SetPCBNametoZEROPCBNAME_Node0 -- Yes -->|Alternative| N_SetPCBNametoZEROPCBNAME_Node0_action N_SetPCBNametoZEROPCBNAME_Node0_action --> E_SetPCBNametoZEROPCBNAME S_SetPCBNametoZEROPCBNAME --> N_SetPCBNametoZEROPCBNAME_Node0 N_SetPCBNametoZEROPCBNAME_Node0 -- No --> E_SetPCBNametoZEROPCBNAME
File: CIMS.cbl
GIVEN:
PCB address validation has failed
WHEN:
The system needs to generate error information
THEN:
The system sets the PCB name from PCB-MNE to ZERO-PCB-NAME for error reporting
β Consolidated Acceptance Criteria
- The system continues error information collection → the system sets the PCB number from PCB-NUM to ZERO-PCB-NUM for error reporting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPCBNumbertoZEROPCBNUM(["Start Step"])
E_SetPCBNumbertoZEROPCBNUM(["End Step"])
N_SetPCBNumbertoZEROPCBNUM_Node0{"The system continues error
information collection"}:::decision N_SetPCBNumbertoZEROPCBNUM_Node0_action["The system sets the PCB number from
PCB-NUM to ZERO-PCB-NUM for error
reporting"]:::exclusion N_SetPCBNumbertoZEROPCBNUM_Node0 -- Yes -->|Alternative| N_SetPCBNumbertoZEROPCBNUM_Node0_action N_SetPCBNumbertoZEROPCBNUM_Node0_action --> E_SetPCBNumbertoZEROPCBNUM S_SetPCBNumbertoZEROPCBNUM --> N_SetPCBNumbertoZEROPCBNUM_Node0 N_SetPCBNumbertoZEROPCBNUM_Node0 -- No --> E_SetPCBNumbertoZEROPCBNUM
information collection"}:::decision N_SetPCBNumbertoZEROPCBNUM_Node0_action["The system sets the PCB number from
PCB-NUM to ZERO-PCB-NUM for error
reporting"]:::exclusion N_SetPCBNumbertoZEROPCBNUM_Node0 -- Yes -->|Alternative| N_SetPCBNumbertoZEROPCBNUM_Node0_action N_SetPCBNumbertoZEROPCBNUM_Node0_action --> E_SetPCBNumbertoZEROPCBNUM S_SetPCBNumbertoZEROPCBNUM --> N_SetPCBNumbertoZEROPCBNUM_Node0 N_SetPCBNumbertoZEROPCBNUM_Node0 -- No --> E_SetPCBNumbertoZEROPCBNUM
File: CIMS.cbl
GIVEN:
PCB address validation has failed and PCB name has been captured
WHEN:
The system continues error information collection
THEN:
The system sets the PCB number from PCB-NUM to ZERO-PCB-NUM for error reporting
β Consolidated Acceptance Criteria
- The system needs to create an error message → the system moves ZERO-PCB-ADDR-ERROR-MESSAGE to CC-ERROR-MESSAGE of CCCOM
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateZeroPCBAddressErrorMessage(["Start Step"])
E_GenerateZeroPCBAddressErrorMessage(["End Step"])
N_GenerateZeroPCBAddressErrorMessage_Node0{"The system needs to create an error
message"}:::decision N_GenerateZeroPCBAddressErrorMessage_Node0_action["The system moves
ZERO-PCB-ADDR-ERROR-MESSAGE to
CC-ERROR-MESSAGE of CCCOM"]:::exclusion N_GenerateZeroPCBAddressErrorMessage_Node0 -- Yes -->|Alternative| N_GenerateZeroPCBAddressErrorMessage_Node0_action N_GenerateZeroPCBAddressErrorMessage_Node0_action --> E_GenerateZeroPCBAddressErrorMessage S_GenerateZeroPCBAddressErrorMessage --> N_GenerateZeroPCBAddressErrorMessage_Node0 N_GenerateZeroPCBAddressErrorMessage_Node0 -- No --> E_GenerateZeroPCBAddressErrorMessage
message"}:::decision N_GenerateZeroPCBAddressErrorMessage_Node0_action["The system moves
ZERO-PCB-ADDR-ERROR-MESSAGE to
CC-ERROR-MESSAGE of CCCOM"]:::exclusion N_GenerateZeroPCBAddressErrorMessage_Node0 -- Yes -->|Alternative| N_GenerateZeroPCBAddressErrorMessage_Node0_action N_GenerateZeroPCBAddressErrorMessage_Node0_action --> E_GenerateZeroPCBAddressErrorMessage S_GenerateZeroPCBAddressErrorMessage --> N_GenerateZeroPCBAddressErrorMessage_Node0 N_GenerateZeroPCBAddressErrorMessage_Node0 -- No --> E_GenerateZeroPCBAddressErrorMessage
File: CIMS.cbl
GIVEN:
PCB address validation has failed and error information has been collected
WHEN:
The system needs to create an error message
THEN:
The system moves ZERO-PCB-ADDR-ERROR-MESSAGE to CC-ERROR-MESSAGE of CCCOM
β Consolidated Acceptance Criteria
- The system needs to handle the error condition → the system calls 'CERR' program using CCCOM to process the error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallErrorHandlerCERR(["Start Step"])
E_CallErrorHandlerCERR(["End Step"])
N_CallErrorHandlerCERR_Node0{"The system needs to handle the
error condition"}:::decision N_CallErrorHandlerCERR_Node0_action["The system calls CERR program using
CCCOM to process the error"]:::exclusion N_CallErrorHandlerCERR_Node0 -- Yes -->|Alternative| N_CallErrorHandlerCERR_Node0_action N_CallErrorHandlerCERR_Node0_action --> E_CallErrorHandlerCERR S_CallErrorHandlerCERR --> N_CallErrorHandlerCERR_Node0 N_CallErrorHandlerCERR_Node0 -- No --> E_CallErrorHandlerCERR
error condition"}:::decision N_CallErrorHandlerCERR_Node0_action["The system calls CERR program using
CCCOM to process the error"]:::exclusion N_CallErrorHandlerCERR_Node0 -- Yes -->|Alternative| N_CallErrorHandlerCERR_Node0_action N_CallErrorHandlerCERR_Node0_action --> E_CallErrorHandlerCERR S_CallErrorHandlerCERR --> N_CallErrorHandlerCERR_Node0 N_CallErrorHandlerCERR_Node0 -- No --> E_CallErrorHandlerCERR
File: CIMS.cbl
GIVEN:
PCB address validation has failed and error message has been generated
WHEN:
The system needs to handle the error condition
THEN:
The system calls 'CERR' program using CCCOM to process the error
β Consolidated Acceptance Criteria
- System prepares IMS call parameters → all parameters are set up for database call execution
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareIMSCallParameters(["Start Step"])
E_PrepareIMSCallParameters(["End Step"])
N_PrepareIMSCallParameters_Node0{"System prepares IMS call parameters"}:::decision
N_PrepareIMSCallParameters_Node0_action["All parameters are set up for
database call execution"]:::main N_PrepareIMSCallParameters_Node0 -- Yes --> N_PrepareIMSCallParameters_Node0_action N_PrepareIMSCallParameters_Node0_action --> E_PrepareIMSCallParameters S_PrepareIMSCallParameters --> N_PrepareIMSCallParameters_Node0 N_PrepareIMSCallParameters_Node0 -- No --> E_PrepareIMSCallParameters
database call execution"]:::main N_PrepareIMSCallParameters_Node0 -- Yes --> N_PrepareIMSCallParameters_Node0_action N_PrepareIMSCallParameters_Node0_action --> E_PrepareIMSCallParameters S_PrepareIMSCallParameters --> N_PrepareIMSCallParameters_Node0 N_PrepareIMSCallParameters_Node0 -- No --> E_PrepareIMSCallParameters
File: CIMS.cbl
GIVEN:
Function code, PCB address, IO area and SSA parameters are available
WHEN:
System prepares IMS call parameters
THEN:
All parameters are set up for database call execution
β Consolidated Acceptance Criteria
- System sets PCB address to copy structure → lK-COPY-OF-PCB is assigned the PCB address for database call
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPCBAddresstoCopyStructure(["Start Step"])
E_SetPCBAddresstoCopyStructure(["End Step"])
N_SetPCBAddresstoCopyStructure_Node0{"System sets PCB address to copy
structure"}:::decision N_SetPCBAddresstoCopyStructure_Node0_action["LK-COPY-OF-PCB is assigned the PCB
address for database call"]:::main N_SetPCBAddresstoCopyStructure_Node0 -- Yes --> N_SetPCBAddresstoCopyStructure_Node0_action N_SetPCBAddresstoCopyStructure_Node0_action --> E_SetPCBAddresstoCopyStructure S_SetPCBAddresstoCopyStructure --> N_SetPCBAddresstoCopyStructure_Node0 N_SetPCBAddresstoCopyStructure_Node0 -- No --> E_SetPCBAddresstoCopyStructure
structure"}:::decision N_SetPCBAddresstoCopyStructure_Node0_action["LK-COPY-OF-PCB is assigned the PCB
address for database call"]:::main N_SetPCBAddresstoCopyStructure_Node0 -- Yes --> N_SetPCBAddresstoCopyStructure_Node0_action N_SetPCBAddresstoCopyStructure_Node0_action --> E_SetPCBAddresstoCopyStructure S_SetPCBAddresstoCopyStructure --> N_SetPCBAddresstoCopyStructure_Node0 N_SetPCBAddresstoCopyStructure_Node0 -- No --> E_SetPCBAddresstoCopyStructure
File: CIMS.cbl
GIVEN:
PCB address is available and valid
WHEN:
System sets PCB address to copy structure
THEN:
LK-COPY-OF-PCB is assigned the PCB address for database call
β Consolidated Acceptance Criteria
- System executes CBLTDLI call with function, PCB copy, IO area and SSA parameters → iMS database operation is performed and control returns to program
- The system executes the database operation → the CBLTDLI program is called with the function, PCB, IO area, and all applicable SSA parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExecuteCBLTDLICall(["Start Step"])
E_ExecuteCBLTDLICall(["End Step"])
N_ExecuteCBLTDLICall_Node0{"System executes CBLTDLI call with
function, PCB copy, IO area and SSA
parameters"}:::decision N_ExecuteCBLTDLICall_Node0_action["IMS database operation is performed
and control returns to program"]:::main N_ExecuteCBLTDLICall_Node0 -- Yes --> N_ExecuteCBLTDLICall_Node0_action N_ExecuteCBLTDLICall_Node0_action --> E_ExecuteCBLTDLICall S_ExecuteCBLTDLICall --> N_ExecuteCBLTDLICall_Node0 N_ExecuteCBLTDLICall_Node1{"The system executes the database
operation"}:::decision N_ExecuteCBLTDLICall_Node1_action["The CBLTDLI program is called with
the function, PCB, IO area, and all
applicable SSA parameters"]:::main N_ExecuteCBLTDLICall_Node1 -- Yes --> N_ExecuteCBLTDLICall_Node1_action N_ExecuteCBLTDLICall_Node1_action --> E_ExecuteCBLTDLICall N_ExecuteCBLTDLICall_Node0 -- No --> N_ExecuteCBLTDLICall_Node1 N_ExecuteCBLTDLICall_Node1 -- No --> E_ExecuteCBLTDLICall
function, PCB copy, IO area and SSA
parameters"}:::decision N_ExecuteCBLTDLICall_Node0_action["IMS database operation is performed
and control returns to program"]:::main N_ExecuteCBLTDLICall_Node0 -- Yes --> N_ExecuteCBLTDLICall_Node0_action N_ExecuteCBLTDLICall_Node0_action --> E_ExecuteCBLTDLICall S_ExecuteCBLTDLICall --> N_ExecuteCBLTDLICall_Node0 N_ExecuteCBLTDLICall_Node1{"The system executes the database
operation"}:::decision N_ExecuteCBLTDLICall_Node1_action["The CBLTDLI program is called with
the function, PCB, IO area, and all
applicable SSA parameters"]:::main N_ExecuteCBLTDLICall_Node1 -- Yes --> N_ExecuteCBLTDLICall_Node1_action N_ExecuteCBLTDLICall_Node1_action --> E_ExecuteCBLTDLICall N_ExecuteCBLTDLICall_Node0 -- No --> N_ExecuteCBLTDLICall_Node1 N_ExecuteCBLTDLICall_Node1 -- No --> E_ExecuteCBLTDLICall
File: CIMS.cbl
GIVEN:
All call parameters are prepared and PCB copy structure is set
WHEN:
- System executes cbltdli call with function, pcb copy, io area
- Ssa parameters
THEN:
- Ims database operation is performed
- Control returns to program
File: CIMS.cbl
GIVEN:
All IMS call parameters have been validated and assembled
WHEN:
The system executes the database operation
THEN:
The CBLTDLI program is called with the function, PCB, IO area, and all applicable SSA parameters
β Consolidated Acceptance Criteria
- System passes function code to IMS database call → function code is included as parameter in CBLTDLI call
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PassFunctionCode(["Start Step"])
E_PassFunctionCode(["End Step"])
N_PassFunctionCode_Node0{"System passes function code to IMS
database call"}:::decision N_PassFunctionCode_Node0_action["Function code is included as
parameter in CBLTDLI call"]:::main N_PassFunctionCode_Node0 -- Yes --> N_PassFunctionCode_Node0_action N_PassFunctionCode_Node0_action --> E_PassFunctionCode S_PassFunctionCode --> N_PassFunctionCode_Node0 N_PassFunctionCode_Node0 -- No --> E_PassFunctionCode
database call"}:::decision N_PassFunctionCode_Node0_action["Function code is included as
parameter in CBLTDLI call"]:::main N_PassFunctionCode_Node0 -- Yes --> N_PassFunctionCode_Node0_action N_PassFunctionCode_Node0_action --> E_PassFunctionCode S_PassFunctionCode --> N_PassFunctionCode_Node0 N_PassFunctionCode_Node0 -- No --> E_PassFunctionCode
File: CIMS.cbl
GIVEN:
Function code is available in FUNC parameter
WHEN:
System passes function code to IMS database call
THEN:
Function code is included as parameter in CBLTDLI call
β Consolidated Acceptance Criteria
- System passes PCB copy to IMS database call → pCB copy is included as parameter in CBLTDLI call
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PassPCBCopy(["Start Step"])
E_PassPCBCopy(["End Step"])
N_PassPCBCopy_Node0{"System passes PCB copy to IMS
database call"}:::decision N_PassPCBCopy_Node0_action["PCB copy is included as parameter
in CBLTDLI call"]:::main N_PassPCBCopy_Node0 -- Yes --> N_PassPCBCopy_Node0_action N_PassPCBCopy_Node0_action --> E_PassPCBCopy S_PassPCBCopy --> N_PassPCBCopy_Node0 N_PassPCBCopy_Node0 -- No --> E_PassPCBCopy
database call"}:::decision N_PassPCBCopy_Node0_action["PCB copy is included as parameter
in CBLTDLI call"]:::main N_PassPCBCopy_Node0 -- Yes --> N_PassPCBCopy_Node0_action N_PassPCBCopy_Node0_action --> E_PassPCBCopy S_PassPCBCopy --> N_PassPCBCopy_Node0 N_PassPCBCopy_Node0 -- No --> E_PassPCBCopy
File: CIMS.cbl
GIVEN:
LK-COPY-OF-PCB is set with PCB address
WHEN:
System passes PCB copy to IMS database call
THEN:
PCB copy is included as parameter in CBLTDLI call
β Consolidated Acceptance Criteria
- System passes IO area to IMS database call → iO area is included as parameter in CBLTDLI call
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PassIOArea(["Start Step"])
E_PassIOArea(["End Step"])
N_PassIOArea_Node0{"System passes IO area to IMS
database call"}:::decision N_PassIOArea_Node0_action["IO area is included as parameter in
CBLTDLI call"]:::main N_PassIOArea_Node0 -- Yes --> N_PassIOArea_Node0_action N_PassIOArea_Node0_action --> E_PassIOArea S_PassIOArea --> N_PassIOArea_Node0 N_PassIOArea_Node0 -- No --> E_PassIOArea
database call"}:::decision N_PassIOArea_Node0_action["IO area is included as parameter in
CBLTDLI call"]:::main N_PassIOArea_Node0 -- Yes --> N_PassIOArea_Node0_action N_PassIOArea_Node0_action --> E_PassIOArea S_PassIOArea --> N_PassIOArea_Node0 N_PassIOArea_Node0 -- No --> E_PassIOArea
File: CIMS.cbl
GIVEN:
IO-AREA is available for data transfer
WHEN:
System passes IO area to IMS database call
THEN:
IO area is included as parameter in CBLTDLI call
β Consolidated Acceptance Criteria
- System passes SSA parameters to IMS database call → all available SSA parameters are included in CBLTDLI call
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PassSSAParameters16(["Start Step"])
E_PassSSAParameters16(["End Step"])
N_PassSSAParameters16_Node0{"System passes SSA parameters to IMS
database call"}:::decision N_PassSSAParameters16_Node0_action["All available SSA parameters are
included in CBLTDLI call"]:::main N_PassSSAParameters16_Node0 -- Yes --> N_PassSSAParameters16_Node0_action N_PassSSAParameters16_Node0_action --> E_PassSSAParameters16 S_PassSSAParameters16 --> N_PassSSAParameters16_Node0 N_PassSSAParameters16_Node0 -- No --> E_PassSSAParameters16
database call"}:::decision N_PassSSAParameters16_Node0_action["All available SSA parameters are
included in CBLTDLI call"]:::main N_PassSSAParameters16_Node0 -- Yes --> N_PassSSAParameters16_Node0_action N_PassSSAParameters16_Node0_action --> E_PassSSAParameters16 S_PassSSAParameters16 --> N_PassSSAParameters16_Node0 N_PassSSAParameters16_Node0 -- No --> E_PassSSAParameters16
File: CIMS.cbl
GIVEN:
SSA1 through SSA6 parameters are available based on argument count
WHEN:
System passes SSA parameters to IMS database call
THEN:
All available SSA parameters are included in CBLTDLI call
β Consolidated Acceptance Criteria
- IMS processes the database operation → database operation is executed and results are returned in PCB and IO area
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IMSDatabaseProcessing(["Start Step"])
E_IMSDatabaseProcessing(["End Step"])
N_IMSDatabaseProcessing_Node0{"IMS processes the database
operation"}:::decision N_IMSDatabaseProcessing_Node0_action["Database operation is executed and
results are returned in PCB and IO
area"]:::main N_IMSDatabaseProcessing_Node0 -- Yes --> N_IMSDatabaseProcessing_Node0_action N_IMSDatabaseProcessing_Node0_action --> E_IMSDatabaseProcessing S_IMSDatabaseProcessing --> N_IMSDatabaseProcessing_Node0 N_IMSDatabaseProcessing_Node0 -- No --> E_IMSDatabaseProcessing
operation"}:::decision N_IMSDatabaseProcessing_Node0_action["Database operation is executed and
results are returned in PCB and IO
area"]:::main N_IMSDatabaseProcessing_Node0 -- Yes --> N_IMSDatabaseProcessing_Node0_action N_IMSDatabaseProcessing_Node0_action --> E_IMSDatabaseProcessing S_IMSDatabaseProcessing --> N_IMSDatabaseProcessing_Node0 N_IMSDatabaseProcessing_Node0 -- No --> E_IMSDatabaseProcessing
File: CIMS.cbl
GIVEN:
All parameters are passed to CBLTDLI call
WHEN:
IMS processes the database operation
THEN:
- Database operation is executed
- Results are returned in pcb
- Io area
β Consolidated Acceptance Criteria
- Control returns to the program → program continues with post-database call processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnControltoProgram(["Start Step"])
E_ReturnControltoProgram(["End Step"])
N_ReturnControltoProgram_Node0{"Control returns to the program"}:::decision
N_ReturnControltoProgram_Node0_action["Program continues with
post-database call processing"]:::main N_ReturnControltoProgram_Node0 -- Yes --> N_ReturnControltoProgram_Node0_action N_ReturnControltoProgram_Node0_action --> E_ReturnControltoProgram S_ReturnControltoProgram --> N_ReturnControltoProgram_Node0 N_ReturnControltoProgram_Node0 -- No --> E_ReturnControltoProgram
post-database call processing"]:::main N_ReturnControltoProgram_Node0 -- Yes --> N_ReturnControltoProgram_Node0_action N_ReturnControltoProgram_Node0_action --> E_ReturnControltoProgram S_ReturnControltoProgram --> N_ReturnControltoProgram_Node0 N_ReturnControltoProgram_Node0 -- No --> E_ReturnControltoProgram
File: CIMS.cbl
GIVEN:
IMS database processing is completed
WHEN:
Control returns to the program
THEN:
Program continues with post-database call processing
β Consolidated Acceptance Criteria
- The system processes the IMS call parameters → the function code is stored in CC-LAST-IMS-FUNC field of the common control area for tracking purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFunctionParameterfromFUNC(["Start Step"])
E_SetFunctionParameterfromFUNC(["End Step"])
N_SetFunctionParameterfromFUNC_Node0{"The system processes the IMS call
parameters"}:::decision N_SetFunctionParameterfromFUNC_Node0_action["The function code is stored in
CC-LAST-IMS-FUNC field of the common
control area for tracking purposes"]:::main N_SetFunctionParameterfromFUNC_Node0 -- Yes --> N_SetFunctionParameterfromFUNC_Node0_action N_SetFunctionParameterfromFUNC_Node0_action --> E_SetFunctionParameterfromFUNC S_SetFunctionParameterfromFUNC --> N_SetFunctionParameterfromFUNC_Node0 N_SetFunctionParameterfromFUNC_Node0 -- No --> E_SetFunctionParameterfromFUNC
parameters"}:::decision N_SetFunctionParameterfromFUNC_Node0_action["The function code is stored in
CC-LAST-IMS-FUNC field of the common
control area for tracking purposes"]:::main N_SetFunctionParameterfromFUNC_Node0 -- Yes --> N_SetFunctionParameterfromFUNC_Node0_action N_SetFunctionParameterfromFUNC_Node0_action --> E_SetFunctionParameterfromFUNC S_SetFunctionParameterfromFUNC --> N_SetFunctionParameterfromFUNC_Node0 N_SetFunctionParameterfromFUNC_Node0 -- No --> E_SetFunctionParameterfromFUNC
File: CIMS.cbl
GIVEN:
An IMS database function code is provided in FUNC parameter
WHEN:
The system processes the IMS call parameters
THEN:
The function code is stored in CC-LAST-IMS-FUNC field of the common control area for tracking purposes
β Consolidated Acceptance Criteria
- The system assembles IMS call parameters → sSA1 parameter is included in the call and stored in CC-LAST-SSA1 field of the common control area
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeSSA1Parameter(["Start Step"])
E_IncludeSSA1Parameter(["End Step"])
N_IncludeSSA1Parameter_Node0{"The system assembles IMS call
parameters"}:::decision N_IncludeSSA1Parameter_Node0_action["SSA1 parameter is included in the
call and stored in CC-LAST-SSA1
field of the common control area"]:::main N_IncludeSSA1Parameter_Node0 -- Yes --> N_IncludeSSA1Parameter_Node0_action N_IncludeSSA1Parameter_Node0_action --> E_IncludeSSA1Parameter S_IncludeSSA1Parameter --> N_IncludeSSA1Parameter_Node0 N_IncludeSSA1Parameter_Node0 -- No --> E_IncludeSSA1Parameter
parameters"}:::decision N_IncludeSSA1Parameter_Node0_action["SSA1 parameter is included in the
call and stored in CC-LAST-SSA1
field of the common control area"]:::main N_IncludeSSA1Parameter_Node0 -- Yes --> N_IncludeSSA1Parameter_Node0_action N_IncludeSSA1Parameter_Node0_action --> E_IncludeSSA1Parameter S_IncludeSSA1Parameter --> N_IncludeSSA1Parameter_Node0 N_IncludeSSA1Parameter_Node0 -- No --> E_IncludeSSA1Parameter
File: CIMS.cbl
GIVEN:
The argument count is 5 or greater
WHEN:
The system assembles IMS call parameters
THEN:
- Ssa1 parameter is included in the call
- Stored in cc-last-ssa1 field of the common control area
β Consolidated Acceptance Criteria
- The system assembles IMS call parameters → sSA2 parameter is included in the call and stored in CC-LAST-SSA2 field of the common control area
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeSSA2Parameter(["Start Step"])
E_IncludeSSA2Parameter(["End Step"])
N_IncludeSSA2Parameter_Node0{"The system assembles IMS call
parameters"}:::decision N_IncludeSSA2Parameter_Node0_action["SSA2 parameter is included in the
call and stored in CC-LAST-SSA2
field of the common control area"]:::main N_IncludeSSA2Parameter_Node0 -- Yes --> N_IncludeSSA2Parameter_Node0_action N_IncludeSSA2Parameter_Node0_action --> E_IncludeSSA2Parameter S_IncludeSSA2Parameter --> N_IncludeSSA2Parameter_Node0 N_IncludeSSA2Parameter_Node0 -- No --> E_IncludeSSA2Parameter
parameters"}:::decision N_IncludeSSA2Parameter_Node0_action["SSA2 parameter is included in the
call and stored in CC-LAST-SSA2
field of the common control area"]:::main N_IncludeSSA2Parameter_Node0 -- Yes --> N_IncludeSSA2Parameter_Node0_action N_IncludeSSA2Parameter_Node0_action --> E_IncludeSSA2Parameter S_IncludeSSA2Parameter --> N_IncludeSSA2Parameter_Node0 N_IncludeSSA2Parameter_Node0 -- No --> E_IncludeSSA2Parameter
File: CIMS.cbl
GIVEN:
The argument count is 6 or greater
WHEN:
The system assembles IMS call parameters
THEN:
- Ssa2 parameter is included in the call
- Stored in cc-last-ssa2 field of the common control area
β Consolidated Acceptance Criteria
- The system assembles IMS call parameters → sSA3 parameter is included in the call and stored in CC-LAST-SSA3 field of the common control area
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeSSA3Parameter(["Start Step"])
E_IncludeSSA3Parameter(["End Step"])
N_IncludeSSA3Parameter_Node0{"The system assembles IMS call
parameters"}:::decision N_IncludeSSA3Parameter_Node0_action["SSA3 parameter is included in the
call and stored in CC-LAST-SSA3
field of the common control area"]:::main N_IncludeSSA3Parameter_Node0 -- Yes --> N_IncludeSSA3Parameter_Node0_action N_IncludeSSA3Parameter_Node0_action --> E_IncludeSSA3Parameter S_IncludeSSA3Parameter --> N_IncludeSSA3Parameter_Node0 N_IncludeSSA3Parameter_Node0 -- No --> E_IncludeSSA3Parameter
parameters"}:::decision N_IncludeSSA3Parameter_Node0_action["SSA3 parameter is included in the
call and stored in CC-LAST-SSA3
field of the common control area"]:::main N_IncludeSSA3Parameter_Node0 -- Yes --> N_IncludeSSA3Parameter_Node0_action N_IncludeSSA3Parameter_Node0_action --> E_IncludeSSA3Parameter S_IncludeSSA3Parameter --> N_IncludeSSA3Parameter_Node0 N_IncludeSSA3Parameter_Node0 -- No --> E_IncludeSSA3Parameter
File: CIMS.cbl
GIVEN:
The argument count is 7 or greater
WHEN:
The system assembles IMS call parameters
THEN:
- Ssa3 parameter is included in the call
- Stored in cc-last-ssa3 field of the common control area
β Consolidated Acceptance Criteria
- The system assembles IMS call parameters → sSA4 parameter is included in the call and stored in CC-LAST-SSA4 field of the common control area
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeSSA4Parameter(["Start Step"])
E_IncludeSSA4Parameter(["End Step"])
N_IncludeSSA4Parameter_Node0{"The system assembles IMS call
parameters"}:::decision N_IncludeSSA4Parameter_Node0_action["SSA4 parameter is included in the
call and stored in CC-LAST-SSA4
field of the common control area"]:::main N_IncludeSSA4Parameter_Node0 -- Yes --> N_IncludeSSA4Parameter_Node0_action N_IncludeSSA4Parameter_Node0_action --> E_IncludeSSA4Parameter S_IncludeSSA4Parameter --> N_IncludeSSA4Parameter_Node0 N_IncludeSSA4Parameter_Node0 -- No --> E_IncludeSSA4Parameter
parameters"}:::decision N_IncludeSSA4Parameter_Node0_action["SSA4 parameter is included in the
call and stored in CC-LAST-SSA4
field of the common control area"]:::main N_IncludeSSA4Parameter_Node0 -- Yes --> N_IncludeSSA4Parameter_Node0_action N_IncludeSSA4Parameter_Node0_action --> E_IncludeSSA4Parameter S_IncludeSSA4Parameter --> N_IncludeSSA4Parameter_Node0 N_IncludeSSA4Parameter_Node0 -- No --> E_IncludeSSA4Parameter
File: CIMS.cbl
GIVEN:
The argument count is 8 or greater
WHEN:
The system assembles IMS call parameters
THEN:
- Ssa4 parameter is included in the call
- Stored in cc-last-ssa4 field of the common control area
β Consolidated Acceptance Criteria
- The system assembles IMS call parameters → sSA5 parameter is included in the call and stored in CC-LAST-SSA5 field of the common control area
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeSSA5Parameter(["Start Step"])
E_IncludeSSA5Parameter(["End Step"])
N_IncludeSSA5Parameter_Node0{"The system assembles IMS call
parameters"}:::decision N_IncludeSSA5Parameter_Node0_action["SSA5 parameter is included in the
call and stored in CC-LAST-SSA5
field of the common control area"]:::main N_IncludeSSA5Parameter_Node0 -- Yes --> N_IncludeSSA5Parameter_Node0_action N_IncludeSSA5Parameter_Node0_action --> E_IncludeSSA5Parameter S_IncludeSSA5Parameter --> N_IncludeSSA5Parameter_Node0 N_IncludeSSA5Parameter_Node0 -- No --> E_IncludeSSA5Parameter
parameters"}:::decision N_IncludeSSA5Parameter_Node0_action["SSA5 parameter is included in the
call and stored in CC-LAST-SSA5
field of the common control area"]:::main N_IncludeSSA5Parameter_Node0 -- Yes --> N_IncludeSSA5Parameter_Node0_action N_IncludeSSA5Parameter_Node0_action --> E_IncludeSSA5Parameter S_IncludeSSA5Parameter --> N_IncludeSSA5Parameter_Node0 N_IncludeSSA5Parameter_Node0 -- No --> E_IncludeSSA5Parameter
File: CIMS.cbl
GIVEN:
The argument count is 9 or greater
WHEN:
The system assembles IMS call parameters
THEN:
- Ssa5 parameter is included in the call
- Stored in cc-last-ssa5 field of the common control area
β Consolidated Acceptance Criteria
- The system assembles IMS call parameters → sSA6 parameter is included in the call and stored in CC-LAST-SSA6 field of the common control area
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeSSA6Parameter(["Start Step"])
E_IncludeSSA6Parameter(["End Step"])
N_IncludeSSA6Parameter_Node0{"The system assembles IMS call
parameters"}:::decision N_IncludeSSA6Parameter_Node0_action["SSA6 parameter is included in the
call and stored in CC-LAST-SSA6
field of the common control area"]:::main N_IncludeSSA6Parameter_Node0 -- Yes --> N_IncludeSSA6Parameter_Node0_action N_IncludeSSA6Parameter_Node0_action --> E_IncludeSSA6Parameter S_IncludeSSA6Parameter --> N_IncludeSSA6Parameter_Node0 N_IncludeSSA6Parameter_Node0 -- No --> E_IncludeSSA6Parameter
parameters"}:::decision N_IncludeSSA6Parameter_Node0_action["SSA6 parameter is included in the
call and stored in CC-LAST-SSA6
field of the common control area"]:::main N_IncludeSSA6Parameter_Node0 -- Yes --> N_IncludeSSA6Parameter_Node0_action N_IncludeSSA6Parameter_Node0_action --> E_IncludeSSA6Parameter S_IncludeSSA6Parameter --> N_IncludeSSA6Parameter_Node0 N_IncludeSSA6Parameter_Node0 -- No --> E_IncludeSSA6Parameter
File: CIMS.cbl
GIVEN:
The argument count is 10 or greater
WHEN:
The system assembles IMS call parameters
THEN:
- Ssa6 parameter is included in the call
- Stored in cc-last-ssa6 field of the common control area
β Consolidated Acceptance Criteria
- The system prepares for IMS call execution → the parameter count is calculated by subtracting 1 from argument count and stored in CC-NUMB-OF-ARGS field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateParameterCount(["Start Step"])
E_CalculateParameterCount(["End Step"])
N_CalculateParameterCount_Node0{"The system prepares for IMS call
execution"}:::decision N_CalculateParameterCount_Node0_action["The parameter count is calculated
by subtracting 1 from argument count
and stored in CC-NUMB-OF-ARGS field"]:::main N_CalculateParameterCount_Node0 -- Yes --> N_CalculateParameterCount_Node0_action N_CalculateParameterCount_Node0_action --> E_CalculateParameterCount S_CalculateParameterCount --> N_CalculateParameterCount_Node0 N_CalculateParameterCount_Node0 -- No --> E_CalculateParameterCount
execution"}:::decision N_CalculateParameterCount_Node0_action["The parameter count is calculated
by subtracting 1 from argument count
and stored in CC-NUMB-OF-ARGS field"]:::main N_CalculateParameterCount_Node0 -- Yes --> N_CalculateParameterCount_Node0_action N_CalculateParameterCount_Node0_action --> E_CalculateParameterCount S_CalculateParameterCount --> N_CalculateParameterCount_Node0 N_CalculateParameterCount_Node0 -- No --> E_CalculateParameterCount
File: CIMS.cbl
GIVEN:
The total argument count has been determined
WHEN:
The system prepares for IMS call execution
THEN:
- The parameter count is calculated by subtracting 1 from argument count
- Stored in cc-numb-of-args field
β Consolidated Acceptance Criteria
- All parameters have been assembled → the status code is set to '**' in CC-STATUS-CODE field to indicate call in progress
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeStatusCodeto(["Start Step"])
E_InitializeStatusCodeto(["End Step"])
N_InitializeStatusCodeto_Node0{"All parameters have been assembled"}:::decision
N_InitializeStatusCodeto_Node0_action["The status code is set to in
CC-STATUS-CODE field to indicate
call in progress"]:::main N_InitializeStatusCodeto_Node0 -- Yes --> N_InitializeStatusCodeto_Node0_action N_InitializeStatusCodeto_Node0_action --> E_InitializeStatusCodeto S_InitializeStatusCodeto --> N_InitializeStatusCodeto_Node0 N_InitializeStatusCodeto_Node0 -- No --> E_InitializeStatusCodeto
CC-STATUS-CODE field to indicate
call in progress"]:::main N_InitializeStatusCodeto_Node0 -- Yes --> N_InitializeStatusCodeto_Node0_action N_InitializeStatusCodeto_Node0_action --> E_InitializeStatusCodeto S_InitializeStatusCodeto --> N_InitializeStatusCodeto_Node0 N_InitializeStatusCodeto_Node0 -- No --> E_InitializeStatusCodeto
File: CIMS.cbl
GIVEN:
The system is preparing to execute an IMS database call
WHEN:
All parameters have been assembled
THEN:
The status code is set to '**' in CC-STATUS-CODE field to indicate call in progress
β Consolidated Acceptance Criteria
- The function is 'GU' (Get Unique) AND the PCB address matches the IO PCB address in CCCOM → the system should proceed to refresh date and time information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckFunctionTypeandPCB(["Start Step"])
E_CheckFunctionTypeandPCB(["End Step"])
N_CheckFunctionTypeandPCB_Node0{"The function is GU Get Unique AND
the PCB address matches the IO PCB
address in CCCOM"}:::decision N_CheckFunctionTypeandPCB_Node0_action["The system should proceed to
refresh date and time information"]:::main N_CheckFunctionTypeandPCB_Node0 -- Yes --> N_CheckFunctionTypeandPCB_Node0_action N_CheckFunctionTypeandPCB_Node0_action --> E_CheckFunctionTypeandPCB S_CheckFunctionTypeandPCB --> N_CheckFunctionTypeandPCB_Node0 N_CheckFunctionTypeandPCB_Node0 -- No --> E_CheckFunctionTypeandPCB
the PCB address matches the IO PCB
address in CCCOM"}:::decision N_CheckFunctionTypeandPCB_Node0_action["The system should proceed to
refresh date and time information"]:::main N_CheckFunctionTypeandPCB_Node0 -- Yes --> N_CheckFunctionTypeandPCB_Node0_action N_CheckFunctionTypeandPCB_Node0_action --> E_CheckFunctionTypeandPCB S_CheckFunctionTypeandPCB --> N_CheckFunctionTypeandPCB_Node0 N_CheckFunctionTypeandPCB_Node0 -- No --> E_CheckFunctionTypeandPCB
File: CIMS.cbl
GIVEN:
A database function call is being processed with a specific function type and PCB address
WHEN:
The function is 'GU' (Get Unique) AND the PCB address matches the IO PCB address in CCCOM
THEN:
- The system should proceed to refresh date
- Time information
β Consolidated Acceptance Criteria
- The date and time refresh process is initiated → the IMS call counter in CCCOM should be reset to zero
- The function is 'GU' (Get Unique) AND the PCB address equals the IO PCB address → the IMS call counter is reset to zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ResetIMSCallCountertoZero(["Start Step"])
E_ResetIMSCallCountertoZero(["End Step"])
N_ResetIMSCallCountertoZero_Node0{"The date and time refresh process
is initiated"}:::decision N_ResetIMSCallCountertoZero_Node0_action["The IMS call counter in CCCOM
should be reset to zero"]:::main N_ResetIMSCallCountertoZero_Node0 -- Yes --> N_ResetIMSCallCountertoZero_Node0_action N_ResetIMSCallCountertoZero_Node0_action --> E_ResetIMSCallCountertoZero S_ResetIMSCallCountertoZero --> N_ResetIMSCallCountertoZero_Node0 N_ResetIMSCallCountertoZero_Node1{"The function is GU Get Unique AND
the PCB address equals the IO PCB
address"}:::decision N_ResetIMSCallCountertoZero_Node1_action["The IMS call counter is reset to
zero"]:::main N_ResetIMSCallCountertoZero_Node1 -- Yes --> N_ResetIMSCallCountertoZero_Node1_action N_ResetIMSCallCountertoZero_Node1_action --> E_ResetIMSCallCountertoZero N_ResetIMSCallCountertoZero_Node0 -- No --> N_ResetIMSCallCountertoZero_Node1 N_ResetIMSCallCountertoZero_Node1 -- No --> E_ResetIMSCallCountertoZero
is initiated"}:::decision N_ResetIMSCallCountertoZero_Node0_action["The IMS call counter in CCCOM
should be reset to zero"]:::main N_ResetIMSCallCountertoZero_Node0 -- Yes --> N_ResetIMSCallCountertoZero_Node0_action N_ResetIMSCallCountertoZero_Node0_action --> E_ResetIMSCallCountertoZero S_ResetIMSCallCountertoZero --> N_ResetIMSCallCountertoZero_Node0 N_ResetIMSCallCountertoZero_Node1{"The function is GU Get Unique AND
the PCB address equals the IO PCB
address"}:::decision N_ResetIMSCallCountertoZero_Node1_action["The IMS call counter is reset to
zero"]:::main N_ResetIMSCallCountertoZero_Node1 -- Yes --> N_ResetIMSCallCountertoZero_Node1_action N_ResetIMSCallCountertoZero_Node1_action --> E_ResetIMSCallCountertoZero N_ResetIMSCallCountertoZero_Node0 -- No --> N_ResetIMSCallCountertoZero_Node1 N_ResetIMSCallCountertoZero_Node1 -- No --> E_ResetIMSCallCountertoZero
File: CIMS.cbl
GIVEN:
A GU function is being executed on the IO PCB
WHEN:
- The date
- Time refresh process is initiated
THEN:
The IMS call counter in CCCOM should be reset to zero
File: CIMS.cbl
GIVEN:
An IMS database function has been executed
WHEN:
The function is 'GU' (Get Unique) AND the PCB address equals the IO PCB address
THEN:
The IMS call counter is reset to zero
β Consolidated Acceptance Criteria
- The system needs to update machine date information → the current system date should be retrieved in CCYYMMDD format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetCurrentSystemDate(["Start Step"])
E_GetCurrentSystemDate(["End Step"])
N_GetCurrentSystemDate_Node0{"The system needs to update machine
date information"}:::decision N_GetCurrentSystemDate_Node0_action["The current system date should be
retrieved in CCYYMMDD format"]:::main N_GetCurrentSystemDate_Node0 -- Yes --> N_GetCurrentSystemDate_Node0_action N_GetCurrentSystemDate_Node0_action --> E_GetCurrentSystemDate S_GetCurrentSystemDate --> N_GetCurrentSystemDate_Node0 N_GetCurrentSystemDate_Node0 -- No --> E_GetCurrentSystemDate
date information"}:::decision N_GetCurrentSystemDate_Node0_action["The current system date should be
retrieved in CCYYMMDD format"]:::main N_GetCurrentSystemDate_Node0 -- Yes --> N_GetCurrentSystemDate_Node0_action N_GetCurrentSystemDate_Node0_action --> E_GetCurrentSystemDate S_GetCurrentSystemDate --> N_GetCurrentSystemDate_Node0 N_GetCurrentSystemDate_Node0 -- No --> E_GetCurrentSystemDate
File: CIMS.cbl
GIVEN:
Date and time refresh is required for IO PCB operation
WHEN:
The system needs to update machine date information
THEN:
The current system date should be retrieved in CCYYMMDD format
β Consolidated Acceptance Criteria
- Machine date information needs to be updated in CCCOM → the century portion (CC) should be moved to the machine century field in CCCOM
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateMachineCenturyinCCCOM(["Start Step"])
E_UpdateMachineCenturyinCCCOM(["End Step"])
N_UpdateMachineCenturyinCCCOM_Node0{"Machine date information needs to
be updated in CCCOM"}:::decision N_UpdateMachineCenturyinCCCOM_Node0_action["The century portion CC should be
moved to the machine century field
in CCCOM"]:::main N_UpdateMachineCenturyinCCCOM_Node0 -- Yes --> N_UpdateMachineCenturyinCCCOM_Node0_action N_UpdateMachineCenturyinCCCOM_Node0_action --> E_UpdateMachineCenturyinCCCOM S_UpdateMachineCenturyinCCCOM --> N_UpdateMachineCenturyinCCCOM_Node0 N_UpdateMachineCenturyinCCCOM_Node0 -- No --> E_UpdateMachineCenturyinCCCOM
be updated in CCCOM"}:::decision N_UpdateMachineCenturyinCCCOM_Node0_action["The century portion CC should be
moved to the machine century field
in CCCOM"]:::main N_UpdateMachineCenturyinCCCOM_Node0 -- Yes --> N_UpdateMachineCenturyinCCCOM_Node0_action N_UpdateMachineCenturyinCCCOM_Node0_action --> E_UpdateMachineCenturyinCCCOM S_UpdateMachineCenturyinCCCOM --> N_UpdateMachineCenturyinCCCOM_Node0 N_UpdateMachineCenturyinCCCOM_Node0 -- No --> E_UpdateMachineCenturyinCCCOM
File: CIMS.cbl
GIVEN:
Current system date has been retrieved in CCYYMMDD format
WHEN:
Machine date information needs to be updated in CCCOM
THEN:
The century portion (CC) should be moved to the machine century field in CCCOM
β Consolidated Acceptance Criteria
- Machine date information needs to be updated in CCCOM → the date portion (YYMMDD) should be moved to the machine date field in CCCOM
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateMachineDateinCCCOM(["Start Step"])
E_UpdateMachineDateinCCCOM(["End Step"])
N_UpdateMachineDateinCCCOM_Node0{"Machine date information needs to
be updated in CCCOM"}:::decision N_UpdateMachineDateinCCCOM_Node0_action["The date portion YYMMDD should be
moved to the machine date field in
CCCOM"]:::main N_UpdateMachineDateinCCCOM_Node0 -- Yes --> N_UpdateMachineDateinCCCOM_Node0_action N_UpdateMachineDateinCCCOM_Node0_action --> E_UpdateMachineDateinCCCOM S_UpdateMachineDateinCCCOM --> N_UpdateMachineDateinCCCOM_Node0 N_UpdateMachineDateinCCCOM_Node0 -- No --> E_UpdateMachineDateinCCCOM
be updated in CCCOM"}:::decision N_UpdateMachineDateinCCCOM_Node0_action["The date portion YYMMDD should be
moved to the machine date field in
CCCOM"]:::main N_UpdateMachineDateinCCCOM_Node0 -- Yes --> N_UpdateMachineDateinCCCOM_Node0_action N_UpdateMachineDateinCCCOM_Node0_action --> E_UpdateMachineDateinCCCOM S_UpdateMachineDateinCCCOM --> N_UpdateMachineDateinCCCOM_Node0 N_UpdateMachineDateinCCCOM_Node0 -- No --> E_UpdateMachineDateinCCCOM
File: CIMS.cbl
GIVEN:
Current system date has been retrieved in CCYYMMDD format
WHEN:
Machine date information needs to be updated in CCCOM
THEN:
The date portion (YYMMDD) should be moved to the machine date field in CCCOM
β Consolidated Acceptance Criteria
- Machine time information needs to be updated → the current system time should be retrieved and stored in the machine time field of CCCOM
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetCurrentSystemTime(["Start Step"])
E_GetCurrentSystemTime(["End Step"])
N_GetCurrentSystemTime_Node0{"Machine time information needs to
be updated"}:::decision N_GetCurrentSystemTime_Node0_action["The current system time should be
retrieved and stored in the machine
time field of CCCOM"]:::main N_GetCurrentSystemTime_Node0 -- Yes --> N_GetCurrentSystemTime_Node0_action N_GetCurrentSystemTime_Node0_action --> E_GetCurrentSystemTime S_GetCurrentSystemTime --> N_GetCurrentSystemTime_Node0 N_GetCurrentSystemTime_Node0 -- No --> E_GetCurrentSystemTime
be updated"}:::decision N_GetCurrentSystemTime_Node0_action["The current system time should be
retrieved and stored in the machine
time field of CCCOM"]:::main N_GetCurrentSystemTime_Node0 -- Yes --> N_GetCurrentSystemTime_Node0_action N_GetCurrentSystemTime_Node0_action --> E_GetCurrentSystemTime S_GetCurrentSystemTime --> N_GetCurrentSystemTime_Node0 N_GetCurrentSystemTime_Node0 -- No --> E_GetCurrentSystemTime
File: CIMS.cbl
GIVEN:
Machine date has been updated in CCCOM
WHEN:
Machine time information needs to be updated
THEN:
- The current system time should be retrieved
- Stored in the machine time field of cccom
β Consolidated Acceptance Criteria
- Any IMS database operation is executed → the IMS call counter is incremented by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementIMSCallCounterby1(["Start Step"])
E_IncrementIMSCallCounterby1(["End Step"])
N_IncrementIMSCallCounterby1_Node0{"Any IMS database operation is
executed"}:::decision N_IncrementIMSCallCounterby1_Node0_action["The IMS call counter is incremented
by 1"]:::main N_IncrementIMSCallCounterby1_Node0 -- Yes --> N_IncrementIMSCallCounterby1_Node0_action N_IncrementIMSCallCounterby1_Node0_action --> E_IncrementIMSCallCounterby1 S_IncrementIMSCallCounterby1 --> N_IncrementIMSCallCounterby1_Node0 N_IncrementIMSCallCounterby1_Node0 -- No --> E_IncrementIMSCallCounterby1
executed"}:::decision N_IncrementIMSCallCounterby1_Node0_action["The IMS call counter is incremented
by 1"]:::main N_IncrementIMSCallCounterby1_Node0 -- Yes --> N_IncrementIMSCallCounterby1_Node0_action N_IncrementIMSCallCounterby1_Node0_action --> E_IncrementIMSCallCounterby1 S_IncrementIMSCallCounterby1 --> N_IncrementIMSCallCounterby1_Node0 N_IncrementIMSCallCounterby1_Node0 -- No --> E_IncrementIMSCallCounterby1
File: CIMS.cbl
GIVEN:
An IMS database function call has been completed
WHEN:
Any IMS database operation is executed
THEN:
The IMS call counter is incremented by 1
β Consolidated Acceptance Criteria
- The system processes the PCB status information update → the complete PCB status information is copied from LK-COPY-OF-PCB to CC-COPY-OF-PCB in CCCOM structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyPCBStatusInformationtoCCCOM(["Start Step"])
E_CopyPCBStatusInformationtoCCCOM(["End Step"])
N_CopyPCBStatusInformationtoCCCOM_Node0{"The system processes the PCB status
information update"}:::decision N_CopyPCBStatusInformationtoCCCOM_Node0_action["The complete PCB status information
is copied from LK-COPY-OF-PCB to
CC-COPY-OF-PCB in CCCOM structure"]:::main N_CopyPCBStatusInformationtoCCCOM_Node0 -- Yes --> N_CopyPCBStatusInformationtoCCCOM_Node0_action N_CopyPCBStatusInformationtoCCCOM_Node0_action --> E_CopyPCBStatusInformationtoCCCOM S_CopyPCBStatusInformationtoCCCOM --> N_CopyPCBStatusInformationtoCCCOM_Node0 N_CopyPCBStatusInformationtoCCCOM_Node0 -- No --> E_CopyPCBStatusInformationtoCCCOM
information update"}:::decision N_CopyPCBStatusInformationtoCCCOM_Node0_action["The complete PCB status information
is copied from LK-COPY-OF-PCB to
CC-COPY-OF-PCB in CCCOM structure"]:::main N_CopyPCBStatusInformationtoCCCOM_Node0 -- Yes --> N_CopyPCBStatusInformationtoCCCOM_Node0_action N_CopyPCBStatusInformationtoCCCOM_Node0_action --> E_CopyPCBStatusInformationtoCCCOM S_CopyPCBStatusInformationtoCCCOM --> N_CopyPCBStatusInformationtoCCCOM_Node0 N_CopyPCBStatusInformationtoCCCOM_Node0 -- No --> E_CopyPCBStatusInformationtoCCCOM
File: CIMS.cbl
GIVEN:
A database operation has been completed and PCB status information is available in LK-COPY-OF-PCB
WHEN:
The system processes the PCB status information update
THEN:
The complete PCB status information is copied from LK-COPY-OF-PCB to CC-COPY-OF-PCB in CCCOM structure
β Consolidated Acceptance Criteria
- The system processes feedback key length information → the feedback key length is copied from LK-LENGTH-FB-KEY to CC-LENGTH-FB-KEY in CCCOM structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyFeedbackKeyLengthtoCCCOM(["Start Step"])
E_CopyFeedbackKeyLengthtoCCCOM(["End Step"])
N_CopyFeedbackKeyLengthtoCCCOM_Node0{"The system processes feedback key
length information"}:::decision N_CopyFeedbackKeyLengthtoCCCOM_Node0_action["The feedback key length is copied
from LK-LENGTH-FB-KEY to
CC-LENGTH-FB-KEY in CCCOM structure"]:::main N_CopyFeedbackKeyLengthtoCCCOM_Node0 -- Yes --> N_CopyFeedbackKeyLengthtoCCCOM_Node0_action N_CopyFeedbackKeyLengthtoCCCOM_Node0_action --> E_CopyFeedbackKeyLengthtoCCCOM S_CopyFeedbackKeyLengthtoCCCOM --> N_CopyFeedbackKeyLengthtoCCCOM_Node0 N_CopyFeedbackKeyLengthtoCCCOM_Node0 -- No --> E_CopyFeedbackKeyLengthtoCCCOM
length information"}:::decision N_CopyFeedbackKeyLengthtoCCCOM_Node0_action["The feedback key length is copied
from LK-LENGTH-FB-KEY to
CC-LENGTH-FB-KEY in CCCOM structure"]:::main N_CopyFeedbackKeyLengthtoCCCOM_Node0 -- Yes --> N_CopyFeedbackKeyLengthtoCCCOM_Node0_action N_CopyFeedbackKeyLengthtoCCCOM_Node0_action --> E_CopyFeedbackKeyLengthtoCCCOM S_CopyFeedbackKeyLengthtoCCCOM --> N_CopyFeedbackKeyLengthtoCCCOM_Node0 N_CopyFeedbackKeyLengthtoCCCOM_Node0 -- No --> E_CopyFeedbackKeyLengthtoCCCOM
File: CIMS.cbl
Exclusion / Alternative Path
GIVEN:
Segment level validation has passed (segment level is not '98' or '99')
WHEN:
The system processes feedback key length information
THEN:
The feedback key length is copied from LK-LENGTH-FB-KEY to CC-LENGTH-FB-KEY in CCCOM structure
β Consolidated Acceptance Criteria
- The function is either 'GU' (Get Unique) or 'CHKP' (Checkpoint) AND the PCB address matches the IO PCB address in the common control area → the system captures the original terminal name from the common control area to the original terminal field AND captures the user ID from the common control area to the ACF2 user ID field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TerminalandUserInformationCaptureCapturesoriginalterminalnameanduserIDforGUandCHKPfunctionsonIOPCB(["Start Step"])
E_TerminalandUserInformationCaptureCapturesoriginalterminalnameanduserIDforGUandCHKPfunctionsonIOPCB(["End Step"])
N_TerminalandUserInformationCaptureCapturesoriginalterminalnameanduserIDforGUandCHKPfunctionsonIOPCB_Node0{"The function is either GU Get
Unique or CHKP Checkpoint AND the
PCB address matches the IO PCB
address in the common control area"}:::decision N_TerminalandUserInformationCaptureCapturesoriginalterminalnameanduserIDforGUandCHKPfunctionsonIOPCB_Node0_action["The system captures the original
terminal name from the common
control area to the original
terminal field AND captures the user
ID from the common control area to
the ACF2 user ID field"]:::main N_TerminalandUserInformationCaptureCapturesoriginalterminalnameanduserIDforGUandCHKPfunctionsonIOPCB_Node0 -- Yes --> N_TerminalandUserInformationCaptureCapturesoriginalterminalnameanduserIDforGUandCHKPfunctionsonIOPCB_Node0_action N_TerminalandUserInformationCaptureCapturesoriginalterminalnameanduserIDforGUandCHKPfunctionsonIOPCB_Node0_action --> E_TerminalandUserInformationCaptureCapturesoriginalterminalnameanduserIDforGUandCHKPfunctionsonIOPCB S_TerminalandUserInformationCaptureCapturesoriginalterminalnameanduserIDforGUandCHKPfunctionsonIOPCB --> N_TerminalandUserInformationCaptureCapturesoriginalterminalnameanduserIDforGUandCHKPfunctionsonIOPCB_Node0 N_TerminalandUserInformationCaptureCapturesoriginalterminalnameanduserIDforGUandCHKPfunctionsonIOPCB_Node0 -- No --> E_TerminalandUserInformationCaptureCapturesoriginalterminalnameanduserIDforGUandCHKPfunctionsonIOPCB
Unique or CHKP Checkpoint AND the
PCB address matches the IO PCB
address in the common control area"}:::decision N_TerminalandUserInformationCaptureCapturesoriginalterminalnameanduserIDforGUandCHKPfunctionsonIOPCB_Node0_action["The system captures the original
terminal name from the common
control area to the original
terminal field AND captures the user
ID from the common control area to
the ACF2 user ID field"]:::main N_TerminalandUserInformationCaptureCapturesoriginalterminalnameanduserIDforGUandCHKPfunctionsonIOPCB_Node0 -- Yes --> N_TerminalandUserInformationCaptureCapturesoriginalterminalnameanduserIDforGUandCHKPfunctionsonIOPCB_Node0_action N_TerminalandUserInformationCaptureCapturesoriginalterminalnameanduserIDforGUandCHKPfunctionsonIOPCB_Node0_action --> E_TerminalandUserInformationCaptureCapturesoriginalterminalnameanduserIDforGUandCHKPfunctionsonIOPCB S_TerminalandUserInformationCaptureCapturesoriginalterminalnameanduserIDforGUandCHKPfunctionsonIOPCB --> N_TerminalandUserInformationCaptureCapturesoriginalterminalnameanduserIDforGUandCHKPfunctionsonIOPCB_Node0 N_TerminalandUserInformationCaptureCapturesoriginalterminalnameanduserIDforGUandCHKPfunctionsonIOPCB_Node0 -- No --> E_TerminalandUserInformationCaptureCapturesoriginalterminalnameanduserIDforGUandCHKPfunctionsonIOPCB
File: CIMS.cbl
GIVEN:
A database function is being executed with a specific PCB address
WHEN:
The function is either 'GU' (Get Unique) or 'CHKP' (Checkpoint) AND the PCB address matches the IO PCB address in the common control area
THEN:
- The system captures the original terminal name from the common control area to the original terminal field
- Captures the user id from the common control area to the acf2 user id field
β Consolidated Acceptance Criteria
- The status code is evaluated for success condition → if the status code equals spaces, the operation is considered successful and processing continues with common area updates
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusCodeSpaces(["Start Step"])
E_StatusCodeSpaces(["End Step"])
N_StatusCodeSpaces_Node0{"The status code is evaluated for
success condition"}:::decision N_StatusCodeSpaces_Node0_action["If the status code equals spaces,
the operation is considered
successful and processing continues
with common area updates"]:::main N_StatusCodeSpaces_Node0 -- Yes --> N_StatusCodeSpaces_Node0_action N_StatusCodeSpaces_Node0_action --> E_StatusCodeSpaces S_StatusCodeSpaces --> N_StatusCodeSpaces_Node0 N_StatusCodeSpaces_Node0 -- No --> E_StatusCodeSpaces
success condition"}:::decision N_StatusCodeSpaces_Node0_action["If the status code equals spaces,
the operation is considered
successful and processing continues
with common area updates"]:::main N_StatusCodeSpaces_Node0 -- Yes --> N_StatusCodeSpaces_Node0_action N_StatusCodeSpaces_Node0_action --> E_StatusCodeSpaces S_StatusCodeSpaces --> N_StatusCodeSpaces_Node0 N_StatusCodeSpaces_Node0 -- No --> E_StatusCodeSpaces
File: CIMS.cbl
GIVEN:
An IMS database operation has been executed and returned a status code
WHEN:
The status code is evaluated for success condition
THEN:
- If the status code equals spaces, the operation is considered successful
- Processing continues with common area updates
β Consolidated Acceptance Criteria
- The system iterates through the acceptable status code table → the validation loop continues while the counter is less than or equal to 12 entries in the acceptable status table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_I12(["Start Step"])
E_I12(["End Step"])
N_I12_Node0{"The system iterates through the
acceptable status code table"}:::decision N_I12_Node0_action["The validation loop continues while
the counter is less than or equal to
12 entries in the acceptable status
table"]:::main N_I12_Node0 -- Yes --> N_I12_Node0_action N_I12_Node0_action --> E_I12 S_I12 --> N_I12_Node0 N_I12_Node0 -- No --> E_I12
acceptable status code table"}:::decision N_I12_Node0_action["The validation loop continues while
the counter is less than or equal to
12 entries in the acceptable status
table"]:::main N_I12_Node0 -- Yes --> N_I12_Node0_action N_I12_Node0_action --> E_I12 S_I12 --> N_I12_Node0 N_I12_Node0 -- No --> E_I12
File: CIMS.cbl
GIVEN:
An IMS operation has returned a non-blank status code and validation against acceptable status table is required
WHEN:
The system iterates through the acceptable status code table
THEN:
The validation loop continues while the counter is less than or equal to 12 entries in the acceptable status table
β Consolidated Acceptance Criteria
- The current status code is compared with the current table entry → if the status code matches the acceptable status table entry, the operation is validated successfully and processing continues
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StatusCodeMatchesEntry(["Start Step"])
E_StatusCodeMatchesEntry(["End Step"])
N_StatusCodeMatchesEntry_Node0{"The current status code is compared
with the current table entry"}:::decision N_StatusCodeMatchesEntry_Node0_action["If the status code matches the
acceptable status table entry, the
operation is validated successfully
and processing continues"]:::main N_StatusCodeMatchesEntry_Node0 -- Yes --> N_StatusCodeMatchesEntry_Node0_action N_StatusCodeMatchesEntry_Node0_action --> E_StatusCodeMatchesEntry S_StatusCodeMatchesEntry --> N_StatusCodeMatchesEntry_Node0 N_StatusCodeMatchesEntry_Node0 -- No --> E_StatusCodeMatchesEntry
with the current table entry"}:::decision N_StatusCodeMatchesEntry_Node0_action["If the status code matches the
acceptable status table entry, the
operation is validated successfully
and processing continues"]:::main N_StatusCodeMatchesEntry_Node0 -- Yes --> N_StatusCodeMatchesEntry_Node0_action N_StatusCodeMatchesEntry_Node0_action --> E_StatusCodeMatchesEntry S_StatusCodeMatchesEntry --> N_StatusCodeMatchesEntry_Node0 N_StatusCodeMatchesEntry_Node0 -- No --> E_StatusCodeMatchesEntry
File: CIMS.cbl
GIVEN:
An IMS status code needs validation and the system is checking against acceptable status table entries
WHEN:
The current status code is compared with the current table entry
THEN:
- If the status code matches the acceptable status table entry, the operation is validated successfully
- Processing continues
β Consolidated Acceptance Criteria
- The system needs to check the next entry in the acceptable status table → the counter is incremented by 1 to move to the next table entry for comparison
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementCounterI(["Start Step"])
E_IncrementCounterI(["End Step"])
N_IncrementCounterI_Node0{"The system needs to check the next
entry in the acceptable status table"}:::decision N_IncrementCounterI_Node0_action["The counter is incremented by 1 to
move to the next table entry for
comparison"]:::main N_IncrementCounterI_Node0 -- Yes --> N_IncrementCounterI_Node0_action N_IncrementCounterI_Node0_action --> E_IncrementCounterI S_IncrementCounterI --> N_IncrementCounterI_Node0 N_IncrementCounterI_Node0 -- No --> E_IncrementCounterI
entry in the acceptable status table"}:::decision N_IncrementCounterI_Node0_action["The counter is incremented by 1 to
move to the next table entry for
comparison"]:::main N_IncrementCounterI_Node0 -- Yes --> N_IncrementCounterI_Node0_action N_IncrementCounterI_Node0_action --> E_IncrementCounterI S_IncrementCounterI --> N_IncrementCounterI_Node0 N_IncrementCounterI_Node0 -- No --> E_IncrementCounterI
File: CIMS.cbl
Exclusion / Alternative Path
GIVEN:
The current IMS status code does not match the current acceptable status table entry
WHEN:
The system needs to check the next entry in the acceptable status table
THEN:
The counter is incremented by 1 to move to the next table entry for comparison
β Consolidated Acceptance Criteria
- The status code is not found in any of the acceptable status table entries → an error message is generated indicating the IMS return code is not in the acceptable list and error processing is invoked
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateErrorMessageStatusCodeNotinAcceptableList(["Start Step"])
E_GenerateErrorMessageStatusCodeNotinAcceptableList(["End Step"])
N_GenerateErrorMessageStatusCodeNotinAcceptableList_Node0{"The status code is not found in any
of the acceptable status table
entries"}:::decision N_GenerateErrorMessageStatusCodeNotinAcceptableList_Node0_action["An error message is generated
indicating the IMS return code is
not in the acceptable list and error
processing is invoked"]:::main N_GenerateErrorMessageStatusCodeNotinAcceptableList_Node0 -- Yes --> N_GenerateErrorMessageStatusCodeNotinAcceptableList_Node0_action N_GenerateErrorMessageStatusCodeNotinAcceptableList_Node0_action --> E_GenerateErrorMessageStatusCodeNotinAcceptableList S_GenerateErrorMessageStatusCodeNotinAcceptableList --> N_GenerateErrorMessageStatusCodeNotinAcceptableList_Node0 N_GenerateErrorMessageStatusCodeNotinAcceptableList_Node0 -- No --> E_GenerateErrorMessageStatusCodeNotinAcceptableList
of the acceptable status table
entries"}:::decision N_GenerateErrorMessageStatusCodeNotinAcceptableList_Node0_action["An error message is generated
indicating the IMS return code is
not in the acceptable list and error
processing is invoked"]:::main N_GenerateErrorMessageStatusCodeNotinAcceptableList_Node0 -- Yes --> N_GenerateErrorMessageStatusCodeNotinAcceptableList_Node0_action N_GenerateErrorMessageStatusCodeNotinAcceptableList_Node0_action --> E_GenerateErrorMessageStatusCodeNotinAcceptableList S_GenerateErrorMessageStatusCodeNotinAcceptableList --> N_GenerateErrorMessageStatusCodeNotinAcceptableList_Node0 N_GenerateErrorMessageStatusCodeNotinAcceptableList_Node0 -- No --> E_GenerateErrorMessageStatusCodeNotinAcceptableList
File: CIMS.cbl
Exclusion / Alternative Path
GIVEN:
An IMS operation has returned a status code that has been checked against all entries in the acceptable status table
WHEN:
The status code is not found in any of the acceptable status table entries
THEN:
- An error message is generated indicating the ims return code is not in the acceptable list
- Error processing is invoked
β Consolidated Acceptance Criteria
- The system performs status code validation by iterating through the acceptable status code table → if the status code matches any entry in the acceptable status table, the operation is considered valid and processing continues with common area updates, otherwise the status code is deemed unacceptable
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AcceptableStatusCodeTableLookupSearchesthroughtheacceptablestatuscodetabletovalidateIMSreturncodes(["Start Step"])
E_AcceptableStatusCodeTableLookupSearchesthroughtheacceptablestatuscodetabletovalidateIMSreturncodes(["End Step"])
N_AcceptableStatusCodeTableLookupSearchesthroughtheacceptablestatuscodetabletovalidateIMSreturncodes_Node0{"The system performs status code
validation by iterating through the
acceptable status code table"}:::decision N_AcceptableStatusCodeTableLookupSearchesthroughtheacceptablestatuscodetabletovalidateIMSreturncodes_Node0_action["If the status code matches any
entry in the acceptable status
table, the operation is considered
valid and processing continues with
common area updates, otherwise the
status code is deemed unacceptable"]:::main N_AcceptableStatusCodeTableLookupSearchesthroughtheacceptablestatuscodetabletovalidateIMSreturncodes_Node0 -- Yes --> N_AcceptableStatusCodeTableLookupSearchesthroughtheacceptablestatuscodetabletovalidateIMSreturncodes_Node0_action N_AcceptableStatusCodeTableLookupSearchesthroughtheacceptablestatuscodetabletovalidateIMSreturncodes_Node0_action --> E_AcceptableStatusCodeTableLookupSearchesthroughtheacceptablestatuscodetabletovalidateIMSreturncodes S_AcceptableStatusCodeTableLookupSearchesthroughtheacceptablestatuscodetabletovalidateIMSreturncodes --> N_AcceptableStatusCodeTableLookupSearchesthroughtheacceptablestatuscodetabletovalidateIMSreturncodes_Node0 N_AcceptableStatusCodeTableLookupSearchesthroughtheacceptablestatuscodetabletovalidateIMSreturncodes_Node0 -- No --> E_AcceptableStatusCodeTableLookupSearchesthroughtheacceptablestatuscodetabletovalidateIMSreturncodes
validation by iterating through the
acceptable status code table"}:::decision N_AcceptableStatusCodeTableLookupSearchesthroughtheacceptablestatuscodetabletovalidateIMSreturncodes_Node0_action["If the status code matches any
entry in the acceptable status
table, the operation is considered
valid and processing continues with
common area updates, otherwise the
status code is deemed unacceptable"]:::main N_AcceptableStatusCodeTableLookupSearchesthroughtheacceptablestatuscodetabletovalidateIMSreturncodes_Node0 -- Yes --> N_AcceptableStatusCodeTableLookupSearchesthroughtheacceptablestatuscodetabletovalidateIMSreturncodes_Node0_action N_AcceptableStatusCodeTableLookupSearchesthroughtheacceptablestatuscodetabletovalidateIMSreturncodes_Node0_action --> E_AcceptableStatusCodeTableLookupSearchesthroughtheacceptablestatuscodetabletovalidateIMSreturncodes S_AcceptableStatusCodeTableLookupSearchesthroughtheacceptablestatuscodetabletovalidateIMSreturncodes --> N_AcceptableStatusCodeTableLookupSearchesthroughtheacceptablestatuscodetabletovalidateIMSreturncodes_Node0 N_AcceptableStatusCodeTableLookupSearchesthroughtheacceptablestatuscodetabletovalidateIMSreturncodes_Node0 -- No --> E_AcceptableStatusCodeTableLookupSearchesthroughtheacceptablestatuscodetabletovalidateIMSreturncodes
File: CIMS.cbl
GIVEN:
A database operation has completed and returned a status code, and there exists a table of acceptable status codes with up to 12 entries
WHEN:
The system performs status code validation by iterating through the acceptable status code table
THEN:
- If the status code matches any entry in the acceptable status table, the operation is considered valid
- Processing continues with common area updates, otherwise the status code is deemed unacceptable
β Consolidated Acceptance Criteria
- The system compares the current status code with the table entry at the current index → if the status code equals the table entry, the status is validated as acceptable and common area updates are performed, otherwise the comparison continues with the next table entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CurrentStatusCodeTableEntry(["Start Step"])
E_CurrentStatusCodeTableEntry(["End Step"])
N_CurrentStatusCodeTableEntry_Node0{"The system compares the current
status code with the table entry at
the current index"}:::decision N_CurrentStatusCodeTableEntry_Node0_action["If the status code equals the table
entry, the status is validated as
acceptable and common area updates
are performed, otherwise the
comparison continues with the next
table entry"]:::main N_CurrentStatusCodeTableEntry_Node0 -- Yes --> N_CurrentStatusCodeTableEntry_Node0_action N_CurrentStatusCodeTableEntry_Node0_action --> E_CurrentStatusCodeTableEntry S_CurrentStatusCodeTableEntry --> N_CurrentStatusCodeTableEntry_Node0 N_CurrentStatusCodeTableEntry_Node0 -- No --> E_CurrentStatusCodeTableEntry
status code with the table entry at
the current index"}:::decision N_CurrentStatusCodeTableEntry_Node0_action["If the status code equals the table
entry, the status is validated as
acceptable and common area updates
are performed, otherwise the
comparison continues with the next
table entry"]:::main N_CurrentStatusCodeTableEntry_Node0 -- Yes --> N_CurrentStatusCodeTableEntry_Node0_action N_CurrentStatusCodeTableEntry_Node0_action --> E_CurrentStatusCodeTableEntry S_CurrentStatusCodeTableEntry --> N_CurrentStatusCodeTableEntry_Node0 N_CurrentStatusCodeTableEntry_Node0 -- No --> E_CurrentStatusCodeTableEntry
File: CIMS.cbl
GIVEN:
A status code from a database operation and a specific entry from the acceptable status code table at index position I
WHEN:
The system compares the current status code with the table entry at the current index
THEN:
- If the status code equals the table entry, the status is validated as acceptable
- Common area updates are performed, otherwise the comparison continues with the next table entry
β Consolidated Acceptance Criteria
- The system checks if the current index I exceeds the maximum table size of 12 entries → if the index is greater than 12, all table entries have been checked and the status code is considered unacceptable, otherwise the iteration continues to the next table entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IndexI12(["Start Step"])
E_IndexI12(["End Step"])
N_IndexI12_Node0{"The system checks if the current
index I exceeds the maximum table
size of 12 entries"}:::decision N_IndexI12_Node0_action["If the index is greater than 12,
all table entries have been checked
and the status code is considered
unacceptable, otherwise the
iteration continues to the next
table entry"]:::main N_IndexI12_Node0 -- Yes --> N_IndexI12_Node0_action N_IndexI12_Node0_action --> E_IndexI12 S_IndexI12 --> N_IndexI12_Node0 N_IndexI12_Node0 -- No --> E_IndexI12
index I exceeds the maximum table
size of 12 entries"}:::decision N_IndexI12_Node0_action["If the index is greater than 12,
all table entries have been checked
and the status code is considered
unacceptable, otherwise the
iteration continues to the next
table entry"]:::main N_IndexI12_Node0 -- Yes --> N_IndexI12_Node0_action N_IndexI12_Node0_action --> E_IndexI12 S_IndexI12 --> N_IndexI12_Node0 N_IndexI12_Node0 -- No --> E_IndexI12
File: CIMS.cbl
GIVEN:
The system is iterating through the acceptable status code table with a current index value I
WHEN:
The system checks if the current index I exceeds the maximum table size of 12 entries
THEN:
- If the index is greater than 12, all table entries have been checked
- The status code is considered unacceptable, otherwise the iteration continues to the next table entry
β Consolidated Acceptance Criteria
- All 12 entries in the acceptable status code table have been checked and no match was found → an error message is constructed containing the status code and the text 'IMS RC CODE NOT IN ACCEPTABLE LIST' and error processing is invoked
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AllTableEntriesCheckedInvalidStatus(["Start Step"])
E_AllTableEntriesCheckedInvalidStatus(["End Step"])
N_AllTableEntriesCheckedInvalidStatus_Node0{"All 12 entries in the acceptable
status code table have been checked
and no match was found"}:::decision N_AllTableEntriesCheckedInvalidStatus_Node0_action["An error message is constructed
containing the status code and the
text IMS RC CODE NOT IN ACCEPTABLE
LIST and error processing is invoked"]:::main N_AllTableEntriesCheckedInvalidStatus_Node0 -- Yes --> N_AllTableEntriesCheckedInvalidStatus_Node0_action N_AllTableEntriesCheckedInvalidStatus_Node0_action --> E_AllTableEntriesCheckedInvalidStatus S_AllTableEntriesCheckedInvalidStatus --> N_AllTableEntriesCheckedInvalidStatus_Node0 N_AllTableEntriesCheckedInvalidStatus_Node0 -- No --> E_AllTableEntriesCheckedInvalidStatus
status code table have been checked
and no match was found"}:::decision N_AllTableEntriesCheckedInvalidStatus_Node0_action["An error message is constructed
containing the status code and the
text IMS RC CODE NOT IN ACCEPTABLE
LIST and error processing is invoked"]:::main N_AllTableEntriesCheckedInvalidStatus_Node0 -- Yes --> N_AllTableEntriesCheckedInvalidStatus_Node0_action N_AllTableEntriesCheckedInvalidStatus_Node0_action --> E_AllTableEntriesCheckedInvalidStatus S_AllTableEntriesCheckedInvalidStatus --> N_AllTableEntriesCheckedInvalidStatus_Node0 N_AllTableEntriesCheckedInvalidStatus_Node0 -- No --> E_AllTableEntriesCheckedInvalidStatus
File: CIMS.cbl
GIVEN:
A database operation status code that has been compared against all entries in the acceptable status code table without finding a match
WHEN:
- All 12 entries in the acceptable status code table have been checked
- No match was found
THEN:
- An error message is constructed containing the status code
- The text 'ims rc code not in acceptable list' and error processing is invoked
β Consolidated Acceptance Criteria
- The system needs to handle the unacceptable status code → the system constructs an error message by concatenating the status code with the text ': IMS RC CODE NOT IN ACCEPTABLE LIST', stores this message in the CCCOM error message field, and calls the error handler 'CERR' with the CCCOM control block
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ErrorMessageGenerationGenerateserrormessageforunacceptableIMSstatuscodes(["Start Step"])
E_ErrorMessageGenerationGenerateserrormessageforunacceptableIMSstatuscodes(["End Step"])
N_ErrorMessageGenerationGenerateserrormessageforunacceptableIMSstatuscodes_Node0{"The system needs to handle the
unacceptable status code"}:::decision N_ErrorMessageGenerationGenerateserrormessageforunacceptableIMSstatuscodes_Node0_action["The system constructs an error
message by concatenating the status
code with the text : IMS RC CODE NOT
IN ACCEPTABLE LIST , stores this
message in the CCCOM error message
field, and calls the error handler
CERR with the CCCOM control block"]:::main N_ErrorMessageGenerationGenerateserrormessageforunacceptableIMSstatuscodes_Node0 -- Yes --> N_ErrorMessageGenerationGenerateserrormessageforunacceptableIMSstatuscodes_Node0_action N_ErrorMessageGenerationGenerateserrormessageforunacceptableIMSstatuscodes_Node0_action --> E_ErrorMessageGenerationGenerateserrormessageforunacceptableIMSstatuscodes S_ErrorMessageGenerationGenerateserrormessageforunacceptableIMSstatuscodes --> N_ErrorMessageGenerationGenerateserrormessageforunacceptableIMSstatuscodes_Node0 N_ErrorMessageGenerationGenerateserrormessageforunacceptableIMSstatuscodes_Node0 -- No --> E_ErrorMessageGenerationGenerateserrormessageforunacceptableIMSstatuscodes
unacceptable status code"}:::decision N_ErrorMessageGenerationGenerateserrormessageforunacceptableIMSstatuscodes_Node0_action["The system constructs an error
message by concatenating the status
code with the text : IMS RC CODE NOT
IN ACCEPTABLE LIST , stores this
message in the CCCOM error message
field, and calls the error handler
CERR with the CCCOM control block"]:::main N_ErrorMessageGenerationGenerateserrormessageforunacceptableIMSstatuscodes_Node0 -- Yes --> N_ErrorMessageGenerationGenerateserrormessageforunacceptableIMSstatuscodes_Node0_action N_ErrorMessageGenerationGenerateserrormessageforunacceptableIMSstatuscodes_Node0_action --> E_ErrorMessageGenerationGenerateserrormessageforunacceptableIMSstatuscodes S_ErrorMessageGenerationGenerateserrormessageforunacceptableIMSstatuscodes --> N_ErrorMessageGenerationGenerateserrormessageforunacceptableIMSstatuscodes_Node0 N_ErrorMessageGenerationGenerateserrormessageforunacceptableIMSstatuscodes_Node0 -- No --> E_ErrorMessageGenerationGenerateserrormessageforunacceptableIMSstatuscodes
File: CIMS.cbl
Exclusion / Alternative Path
GIVEN:
An IMS database operation has completed and returned a status code that is not found in the acceptable status code table after checking all 12 entries
WHEN:
The system needs to handle the unacceptable status code
THEN:
The system constructs an error message by concatenating the status code with the text ': IMS RC CODE NOT IN ACCEPTABLE LIST', stores this message in the CCCOM error message field, and calls the error handler 'CERR' with the CCCOM control block
β Consolidated Acceptance Criteria
- Setting up address comparison parameters → the offset address pointer is set to the current PCB address area
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetOffsetAddresstoCurrentPCBArea(["Start Step"])
E_SetOffsetAddresstoCurrentPCBArea(["End Step"])
N_SetOffsetAddresstoCurrentPCBArea_Node0{"Setting up address comparison
parameters"}:::decision N_SetOffsetAddresstoCurrentPCBArea_Node0_action["The offset address pointer is set
to the current PCB address area"]:::main N_SetOffsetAddresstoCurrentPCBArea_Node0 -- Yes --> N_SetOffsetAddresstoCurrentPCBArea_Node0_action N_SetOffsetAddresstoCurrentPCBArea_Node0_action --> E_SetOffsetAddresstoCurrentPCBArea S_SetOffsetAddresstoCurrentPCBArea --> N_SetOffsetAddresstoCurrentPCBArea_Node0 N_SetOffsetAddresstoCurrentPCBArea_Node0 -- No --> E_SetOffsetAddresstoCurrentPCBArea
parameters"}:::decision N_SetOffsetAddresstoCurrentPCBArea_Node0_action["The offset address pointer is set
to the current PCB address area"]:::main N_SetOffsetAddresstoCurrentPCBArea_Node0 -- Yes --> N_SetOffsetAddresstoCurrentPCBArea_Node0_action N_SetOffsetAddresstoCurrentPCBArea_Node0_action --> E_SetOffsetAddresstoCurrentPCBArea S_SetOffsetAddresstoCurrentPCBArea --> N_SetOffsetAddresstoCurrentPCBArea_Node0 N_SetOffsetAddresstoCurrentPCBArea_Node0 -- No --> E_SetOffsetAddresstoCurrentPCBArea
File: CIMS.cbl
GIVEN:
The base address has been established for ISCOM detection
WHEN:
Setting up address comparison parameters
THEN:
The offset address pointer is set to the current PCB address area
β Consolidated Acceptance Criteria
- Computing address difference for ISCOM detection → address difference is calculated as offset address minus base address
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateAddressDifferenceMethod1OffsetBase(["Start Step"])
E_CalculateAddressDifferenceMethod1OffsetBase(["End Step"])
N_CalculateAddressDifferenceMethod1OffsetBase_Node0{"Computing address difference for
ISCOM detection"}:::decision N_CalculateAddressDifferenceMethod1OffsetBase_Node0_action["Address difference is calculated as
offset address minus base address"]:::main N_CalculateAddressDifferenceMethod1OffsetBase_Node0 -- Yes --> N_CalculateAddressDifferenceMethod1OffsetBase_Node0_action N_CalculateAddressDifferenceMethod1OffsetBase_Node0_action --> E_CalculateAddressDifferenceMethod1OffsetBase S_CalculateAddressDifferenceMethod1OffsetBase --> N_CalculateAddressDifferenceMethod1OffsetBase_Node0 N_CalculateAddressDifferenceMethod1OffsetBase_Node0 -- No --> E_CalculateAddressDifferenceMethod1OffsetBase
ISCOM detection"}:::decision N_CalculateAddressDifferenceMethod1OffsetBase_Node0_action["Address difference is calculated as
offset address minus base address"]:::main N_CalculateAddressDifferenceMethod1OffsetBase_Node0 -- Yes --> N_CalculateAddressDifferenceMethod1OffsetBase_Node0_action N_CalculateAddressDifferenceMethod1OffsetBase_Node0_action --> E_CalculateAddressDifferenceMethod1OffsetBase S_CalculateAddressDifferenceMethod1OffsetBase --> N_CalculateAddressDifferenceMethod1OffsetBase_Node0 N_CalculateAddressDifferenceMethod1OffsetBase_Node0 -- No --> E_CalculateAddressDifferenceMethod1OffsetBase
File: CIMS.cbl
GIVEN:
Base address is greater than zero
WHEN:
Computing address difference for ISCOM detection
THEN:
Address difference is calculated as offset address minus base address
β Consolidated Acceptance Criteria
- Computing address difference for ISCOM detection → address difference is calculated as base address minus offset address
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateAddressDifferenceMethod2BaseOffset(["Start Step"])
E_CalculateAddressDifferenceMethod2BaseOffset(["End Step"])
N_CalculateAddressDifferenceMethod2BaseOffset_Node0{"Computing address difference for
ISCOM detection"}:::decision N_CalculateAddressDifferenceMethod2BaseOffset_Node0_action["Address difference is calculated as
base address minus offset address"]:::main N_CalculateAddressDifferenceMethod2BaseOffset_Node0 -- Yes --> N_CalculateAddressDifferenceMethod2BaseOffset_Node0_action N_CalculateAddressDifferenceMethod2BaseOffset_Node0_action --> E_CalculateAddressDifferenceMethod2BaseOffset S_CalculateAddressDifferenceMethod2BaseOffset --> N_CalculateAddressDifferenceMethod2BaseOffset_Node0 N_CalculateAddressDifferenceMethod2BaseOffset_Node0 -- No --> E_CalculateAddressDifferenceMethod2BaseOffset
ISCOM detection"}:::decision N_CalculateAddressDifferenceMethod2BaseOffset_Node0_action["Address difference is calculated as
base address minus offset address"]:::main N_CalculateAddressDifferenceMethod2BaseOffset_Node0 -- Yes --> N_CalculateAddressDifferenceMethod2BaseOffset_Node0_action N_CalculateAddressDifferenceMethod2BaseOffset_Node0_action --> E_CalculateAddressDifferenceMethod2BaseOffset S_CalculateAddressDifferenceMethod2BaseOffset --> N_CalculateAddressDifferenceMethod2BaseOffset_Node0 N_CalculateAddressDifferenceMethod2BaseOffset_Node0 -- No --> E_CalculateAddressDifferenceMethod2BaseOffset
File: CIMS.cbl
Exclusion / Alternative Path
GIVEN:
Base address is not greater than zero
WHEN:
Computing address difference for ISCOM detection
THEN:
Address difference is calculated as base address minus offset address
β Consolidated Acceptance Criteria
- Converting ISCOM PCB to CCCOM format → table index is calculated as (address offset + 8) divided by 12
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PCBTableIndexCalculation(["Start Step"])
E_PCBTableIndexCalculation(["End Step"])
N_PCBTableIndexCalculation_Node0{"Converting ISCOM PCB to CCCOM
format"}:::decision N_PCBTableIndexCalculation_Node0_action["Table index is calculated as
address offset 8 divided by 12"]:::main N_PCBTableIndexCalculation_Node0 -- Yes --> N_PCBTableIndexCalculation_Node0_action N_PCBTableIndexCalculation_Node0_action --> E_PCBTableIndexCalculation S_PCBTableIndexCalculation --> N_PCBTableIndexCalculation_Node0 N_PCBTableIndexCalculation_Node0 -- No --> E_PCBTableIndexCalculation
format"}:::decision N_PCBTableIndexCalculation_Node0_action["Table index is calculated as
address offset 8 divided by 12"]:::main N_PCBTableIndexCalculation_Node0 -- Yes --> N_PCBTableIndexCalculation_Node0_action N_PCBTableIndexCalculation_Node0_action --> E_PCBTableIndexCalculation S_PCBTableIndexCalculation --> N_PCBTableIndexCalculation_Node0 N_PCBTableIndexCalculation_Node0 -- No --> E_PCBTableIndexCalculation
File: CIMS.cbl
GIVEN:
Address offset has been determined and is within ISCOM range
WHEN:
Converting ISCOM PCB to CCCOM format
THEN:
Table index is calculated as (address offset + 8) divided by 12
β Consolidated Acceptance Criteria
- ISCOM format PCB needs to be converted to CCCOM format → external conversion service CIMSCONV is invoked with ISCOM PCB data, PCB pointer, and table index to perform the conversion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ISCOMPCBConversion(["Start Step"])
E_ISCOMPCBConversion(["End Step"])
N_ISCOMPCBConversion_Node0{"ISCOM format PCB needs to be
converted to CCCOM format"}:::decision N_ISCOMPCBConversion_Node0_action["External conversion service
CIMSCONV is invoked with ISCOM PCB
data, PCB pointer, and table index
to perform the conversion"]:::main N_ISCOMPCBConversion_Node0 -- Yes --> N_ISCOMPCBConversion_Node0_action N_ISCOMPCBConversion_Node0_action --> E_ISCOMPCBConversion S_ISCOMPCBConversion --> N_ISCOMPCBConversion_Node0 N_ISCOMPCBConversion_Node0 -- No --> E_ISCOMPCBConversion
converted to CCCOM format"}:::decision N_ISCOMPCBConversion_Node0_action["External conversion service
CIMSCONV is invoked with ISCOM PCB
data, PCB pointer, and table index
to perform the conversion"]:::main N_ISCOMPCBConversion_Node0 -- Yes --> N_ISCOMPCBConversion_Node0_action N_ISCOMPCBConversion_Node0_action --> E_ISCOMPCBConversion S_ISCOMPCBConversion --> N_ISCOMPCBConversion_Node0 N_ISCOMPCBConversion_Node0 -- No --> E_ISCOMPCBConversion
File: CIMS.cbl
GIVEN:
Table index has been calculated for PCB conversion
WHEN:
ISCOM format PCB needs to be converted to CCCOM format
THEN:
External conversion service CIMSCONV is invoked with ISCOM PCB data, PCB pointer, and table index to perform the conversion
β Consolidated Acceptance Criteria
- Finalizing the conversion process → the address area is updated to point to the converted ISCOM PCB pointer
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetNewPCBAddress(["Start Step"])
E_SetNewPCBAddress(["End Step"])
N_SetNewPCBAddress_Node0{"Finalizing the conversion process"}:::decision
N_SetNewPCBAddress_Node0_action["The address area is updated to
point to the converted ISCOM PCB
pointer"]:::main N_SetNewPCBAddress_Node0 -- Yes --> N_SetNewPCBAddress_Node0_action N_SetNewPCBAddress_Node0_action --> E_SetNewPCBAddress S_SetNewPCBAddress --> N_SetNewPCBAddress_Node0 N_SetNewPCBAddress_Node0 -- No --> E_SetNewPCBAddress
point to the converted ISCOM PCB
pointer"]:::main N_SetNewPCBAddress_Node0 -- Yes --> N_SetNewPCBAddress_Node0_action N_SetNewPCBAddress_Node0_action --> E_SetNewPCBAddress S_SetNewPCBAddress --> N_SetNewPCBAddress_Node0 N_SetNewPCBAddress_Node0 -- No --> E_SetNewPCBAddress
File: CIMS.cbl
GIVEN:
ISCOM PCB has been successfully converted to CCCOM format
WHEN:
Finalizing the conversion process
THEN:
The address area is updated to point to the converted ISCOM PCB pointer
β Consolidated Acceptance Criteria
- Base address value is not greater than zero → address-1 is set to base address value and Address-2 is set to offset address value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetAddress1BaseAddressSetAddress2OffsetAddress(["Start Step"])
E_SetAddress1BaseAddressSetAddress2OffsetAddress(["End Step"])
N_SetAddress1BaseAddressSetAddress2OffsetAddress_Node0{"Base address value is not greater
than zero"}:::decision N_SetAddress1BaseAddressSetAddress2OffsetAddress_Node0_action["Address-1 is set to base address
value and Address-2 is set to offset
address value"]:::main N_SetAddress1BaseAddressSetAddress2OffsetAddress_Node0 -- Yes --> N_SetAddress1BaseAddressSetAddress2OffsetAddress_Node0_action N_SetAddress1BaseAddressSetAddress2OffsetAddress_Node0_action --> E_SetAddress1BaseAddressSetAddress2OffsetAddress S_SetAddress1BaseAddressSetAddress2OffsetAddress --> N_SetAddress1BaseAddressSetAddress2OffsetAddress_Node0 N_SetAddress1BaseAddressSetAddress2OffsetAddress_Node0 -- No --> E_SetAddress1BaseAddressSetAddress2OffsetAddress
than zero"}:::decision N_SetAddress1BaseAddressSetAddress2OffsetAddress_Node0_action["Address-1 is set to base address
value and Address-2 is set to offset
address value"]:::main N_SetAddress1BaseAddressSetAddress2OffsetAddress_Node0 -- Yes --> N_SetAddress1BaseAddressSetAddress2OffsetAddress_Node0_action N_SetAddress1BaseAddressSetAddress2OffsetAddress_Node0_action --> E_SetAddress1BaseAddressSetAddress2OffsetAddress S_SetAddress1BaseAddressSetAddress2OffsetAddress --> N_SetAddress1BaseAddressSetAddress2OffsetAddress_Node0 N_SetAddress1BaseAddressSetAddress2OffsetAddress_Node0 -- No --> E_SetAddress1BaseAddressSetAddress2OffsetAddress
File: CIMS.cbl
Exclusion / Alternative Path
GIVEN:
Base address is set to CCCOM DB-PCBS address and offset address is set to ADDR-AREA address
WHEN:
Base address value is not greater than zero
THEN:
- Address-1 is set to base address value
- Address-2 is set to offset address value
β Consolidated Acceptance Criteria
- Final offset calculation is performed → address offset equals Address-1 minus Address-2
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateFinalOffsetOffsetAddress1Address2(["Start Step"])
E_CalculateFinalOffsetOffsetAddress1Address2(["End Step"])
N_CalculateFinalOffsetOffsetAddress1Address2_Node0{"Final offset calculation is
performed"}:::decision N_CalculateFinalOffsetOffsetAddress1Address2_Node0_action["Address offset equals Address-1
minus Address-2"]:::main N_CalculateFinalOffsetOffsetAddress1Address2_Node0 -- Yes --> N_CalculateFinalOffsetOffsetAddress1Address2_Node0_action N_CalculateFinalOffsetOffsetAddress1Address2_Node0_action --> E_CalculateFinalOffsetOffsetAddress1Address2 S_CalculateFinalOffsetOffsetAddress1Address2 --> N_CalculateFinalOffsetOffsetAddress1Address2_Node0 N_CalculateFinalOffsetOffsetAddress1Address2_Node0 -- No --> E_CalculateFinalOffsetOffsetAddress1Address2
performed"}:::decision N_CalculateFinalOffsetOffsetAddress1Address2_Node0_action["Address offset equals Address-1
minus Address-2"]:::main N_CalculateFinalOffsetOffsetAddress1Address2_Node0 -- Yes --> N_CalculateFinalOffsetOffsetAddress1Address2_Node0_action N_CalculateFinalOffsetOffsetAddress1Address2_Node0_action --> E_CalculateFinalOffsetOffsetAddress1Address2 S_CalculateFinalOffsetOffsetAddress1Address2 --> N_CalculateFinalOffsetOffsetAddress1Address2_Node0 N_CalculateFinalOffsetOffsetAddress1Address2_Node0 -- No --> E_CalculateFinalOffsetOffsetAddress1Address2
File: CIMS.cbl
GIVEN:
Address-1 and Address-2 values have been determined based on base address evaluation
WHEN:
Final offset calculation is performed
THEN:
Address offset equals Address-1 minus Address-2
β Consolidated Acceptance Criteria
- CIMS table size calculation is required → table size is set to the length of CC-DB-PCBS structure in ISCOM
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateCIMSTableSize(["Start Step"])
E_CalculateCIMSTableSize(["End Step"])
N_CalculateCIMSTableSize_Node0{"CIMS table size calculation is
required"}:::decision N_CalculateCIMSTableSize_Node0_action["Table size is set to the length of
CC-DB-PCBS structure in ISCOM"]:::main N_CalculateCIMSTableSize_Node0 -- Yes --> N_CalculateCIMSTableSize_Node0_action N_CalculateCIMSTableSize_Node0_action --> E_CalculateCIMSTableSize S_CalculateCIMSTableSize --> N_CalculateCIMSTableSize_Node0 N_CalculateCIMSTableSize_Node0 -- No --> E_CalculateCIMSTableSize
required"}:::decision N_CalculateCIMSTableSize_Node0_action["Table size is set to the length of
CC-DB-PCBS structure in ISCOM"]:::main N_CalculateCIMSTableSize_Node0 -- Yes --> N_CalculateCIMSTableSize_Node0_action N_CalculateCIMSTableSize_Node0_action --> E_CalculateCIMSTableSize S_CalculateCIMSTableSize --> N_CalculateCIMSTableSize_Node0 N_CalculateCIMSTableSize_Node0 -- No --> E_CalculateCIMSTableSize
File: CIMS.cbl
GIVEN:
CCCOM and ISCOM structures are available
WHEN:
CIMS table size calculation is required
THEN:
Table size is set to the length of CC-DB-PCBS structure in ISCOM
β Consolidated Acceptance Criteria
- The system needs to validate ISCOM table range → the base address of CC-DB-PCBS is retrieved and stored for address calculation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetCCCOMPCBBaseAddress(["Start Step"])
E_GetCCCOMPCBBaseAddress(["End Step"])
N_GetCCCOMPCBBaseAddress_Node0{"The system needs to validate ISCOM
table range"}:::decision N_GetCCCOMPCBBaseAddress_Node0_action["The base address of CC-DB-PCBS is
retrieved and stored for address
calculation"]:::main N_GetCCCOMPCBBaseAddress_Node0 -- Yes --> N_GetCCCOMPCBBaseAddress_Node0_action N_GetCCCOMPCBBaseAddress_Node0_action --> E_GetCCCOMPCBBaseAddress S_GetCCCOMPCBBaseAddress --> N_GetCCCOMPCBBaseAddress_Node0 N_GetCCCOMPCBBaseAddress_Node0 -- No --> E_GetCCCOMPCBBaseAddress
table range"}:::decision N_GetCCCOMPCBBaseAddress_Node0_action["The base address of CC-DB-PCBS is
retrieved and stored for address
calculation"]:::main N_GetCCCOMPCBBaseAddress_Node0 -- Yes --> N_GetCCCOMPCBBaseAddress_Node0_action N_GetCCCOMPCBBaseAddress_Node0_action --> E_GetCCCOMPCBBaseAddress S_GetCCCOMPCBBaseAddress --> N_GetCCCOMPCBBaseAddress_Node0 N_GetCCCOMPCBBaseAddress_Node0 -- No --> E_GetCCCOMPCBBaseAddress
File: CIMS.cbl
GIVEN:
The CCCOM structure contains PCB control block information
WHEN:
The system needs to validate ISCOM table range
THEN:
- The base address of cc-db-pcbs is retrieved
- Stored for address calculation
β Consolidated Acceptance Criteria
- The system performs ISCOM range validation → the offset address is retrieved and stored for comparison with the base address
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetAddressAreaOffsetAddress(["Start Step"])
E_GetAddressAreaOffsetAddress(["End Step"])
N_GetAddressAreaOffsetAddress_Node0{"The system performs ISCOM range
validation"}:::decision N_GetAddressAreaOffsetAddress_Node0_action["The offset address is retrieved and
stored for comparison with the base
address"]:::main N_GetAddressAreaOffsetAddress_Node0 -- Yes --> N_GetAddressAreaOffsetAddress_Node0_action N_GetAddressAreaOffsetAddress_Node0_action --> E_GetAddressAreaOffsetAddress S_GetAddressAreaOffsetAddress --> N_GetAddressAreaOffsetAddress_Node0 N_GetAddressAreaOffsetAddress_Node0 -- No --> E_GetAddressAreaOffsetAddress
validation"}:::decision N_GetAddressAreaOffsetAddress_Node0_action["The offset address is retrieved and
stored for comparison with the base
address"]:::main N_GetAddressAreaOffsetAddress_Node0 -- Yes --> N_GetAddressAreaOffsetAddress_Node0_action N_GetAddressAreaOffsetAddress_Node0_action --> E_GetAddressAreaOffsetAddress S_GetAddressAreaOffsetAddress --> N_GetAddressAreaOffsetAddress_Node0 N_GetAddressAreaOffsetAddress_Node0 -- No --> E_GetAddressAreaOffsetAddress
File: CIMS.cbl
GIVEN:
The address area contains valid offset information
WHEN:
The system performs ISCOM range validation
THEN:
- The offset address is retrieved
- Stored for comparison with the base address
β Consolidated Acceptance Criteria
- The system calculates the final offset → the address offset is computed as Address 1 minus Address 2 and stored in WS-ADDR-OFFSET
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateFinalAddressOffset(["Start Step"])
E_CalculateFinalAddressOffset(["End Step"])
N_CalculateFinalAddressOffset_Node0{"The system calculates the final
offset"}:::decision N_CalculateFinalAddressOffset_Node0_action["The address offset is computed as
Address 1 minus Address 2 and stored
in WS-ADDR-OFFSET"]:::main N_CalculateFinalAddressOffset_Node0 -- Yes --> N_CalculateFinalAddressOffset_Node0_action N_CalculateFinalAddressOffset_Node0_action --> E_CalculateFinalAddressOffset S_CalculateFinalAddressOffset --> N_CalculateFinalAddressOffset_Node0 N_CalculateFinalAddressOffset_Node0 -- No --> E_CalculateFinalAddressOffset
offset"}:::decision N_CalculateFinalAddressOffset_Node0_action["The address offset is computed as
Address 1 minus Address 2 and stored
in WS-ADDR-OFFSET"]:::main N_CalculateFinalAddressOffset_Node0 -- Yes --> N_CalculateFinalAddressOffset_Node0_action N_CalculateFinalAddressOffset_Node0_action --> E_CalculateFinalAddressOffset S_CalculateFinalAddressOffset --> N_CalculateFinalAddressOffset_Node0 N_CalculateFinalAddressOffset_Node0 -- No --> E_CalculateFinalAddressOffset
File: CIMS.cbl
GIVEN:
Address 1 and Address 2 are properly ordered based on base address sign
WHEN:
The system calculates the final offset
THEN:
- The address offset is computed as address 1 minus address 2
- Stored in ws-addr-offset
β Consolidated Acceptance Criteria
- The system validates the offset against table boundaries → if the offset is within the valid ISCOM table range, ISCOM conversion processing is initiated, otherwise standard PCB processing is used
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_OffsetWithinISCOMTableRange(["Start Step"])
E_OffsetWithinISCOMTableRange(["End Step"])
N_OffsetWithinISCOMTableRange_Node0{"The system validates the offset
against table boundaries"}:::decision N_OffsetWithinISCOMTableRange_Node0_action["If the offset is within the valid
ISCOM table range, ISCOM conversion
processing is initiated, otherwise
standard PCB processing is used"]:::main N_OffsetWithinISCOMTableRange_Node0 -- Yes --> N_OffsetWithinISCOMTableRange_Node0_action N_OffsetWithinISCOMTableRange_Node0_action --> E_OffsetWithinISCOMTableRange S_OffsetWithinISCOMTableRange --> N_OffsetWithinISCOMTableRange_Node0 N_OffsetWithinISCOMTableRange_Node0 -- No --> E_OffsetWithinISCOMTableRange
against table boundaries"}:::decision N_OffsetWithinISCOMTableRange_Node0_action["If the offset is within the valid
ISCOM table range, ISCOM conversion
processing is initiated, otherwise
standard PCB processing is used"]:::main N_OffsetWithinISCOMTableRange_Node0 -- Yes --> N_OffsetWithinISCOMTableRange_Node0_action N_OffsetWithinISCOMTableRange_Node0_action --> E_OffsetWithinISCOMTableRange S_OffsetWithinISCOMTableRange --> N_OffsetWithinISCOMTableRange_Node0 N_OffsetWithinISCOMTableRange_Node0 -- No --> E_OffsetWithinISCOMTableRange
File: CIMS.cbl
GIVEN:
The address offset has been calculated and ISCOM table size is known
WHEN:
The system validates the offset against table boundaries
THEN:
If the offset is within the valid ISCOM table range, ISCOM conversion processing is initiated, otherwise standard PCB processing is used
β Consolidated Acceptance Criteria
- The system needs to determine the table index for PCB conversion → add 8 to the address offset, divide the result by 12, and store as the table index
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PCBTableIndexCalculationCalculatestableindexforISCOMtoCCCOMPCBconversionbasedonaddressoffset(["Start Step"])
E_PCBTableIndexCalculationCalculatestableindexforISCOMtoCCCOMPCBconversionbasedonaddressoffset(["End Step"])
N_PCBTableIndexCalculationCalculatestableindexforISCOMtoCCCOMPCBconversionbasedonaddressoffset_Node0{"The system needs to determine the
table index for PCB conversion"}:::decision N_PCBTableIndexCalculationCalculatestableindexforISCOMtoCCCOMPCBconversionbasedonaddressoffset_Node0_action["Add 8 to the address offset, divide
the result by 12, and store as the
table index"]:::main N_PCBTableIndexCalculationCalculatestableindexforISCOMtoCCCOMPCBconversionbasedonaddressoffset_Node0 -- Yes --> N_PCBTableIndexCalculationCalculatestableindexforISCOMtoCCCOMPCBconversionbasedonaddressoffset_Node0_action N_PCBTableIndexCalculationCalculatestableindexforISCOMtoCCCOMPCBconversionbasedonaddressoffset_Node0_action --> E_PCBTableIndexCalculationCalculatestableindexforISCOMtoCCCOMPCBconversionbasedonaddressoffset S_PCBTableIndexCalculationCalculatestableindexforISCOMtoCCCOMPCBconversionbasedonaddressoffset --> N_PCBTableIndexCalculationCalculatestableindexforISCOMtoCCCOMPCBconversionbasedonaddressoffset_Node0 N_PCBTableIndexCalculationCalculatestableindexforISCOMtoCCCOMPCBconversionbasedonaddressoffset_Node0 -- No --> E_PCBTableIndexCalculationCalculatestableindexforISCOMtoCCCOMPCBconversionbasedonaddressoffset
table index for PCB conversion"}:::decision N_PCBTableIndexCalculationCalculatestableindexforISCOMtoCCCOMPCBconversionbasedonaddressoffset_Node0_action["Add 8 to the address offset, divide
the result by 12, and store as the
table index"]:::main N_PCBTableIndexCalculationCalculatestableindexforISCOMtoCCCOMPCBconversionbasedonaddressoffset_Node0 -- Yes --> N_PCBTableIndexCalculationCalculatestableindexforISCOMtoCCCOMPCBconversionbasedonaddressoffset_Node0_action N_PCBTableIndexCalculationCalculatestableindexforISCOMtoCCCOMPCBconversionbasedonaddressoffset_Node0_action --> E_PCBTableIndexCalculationCalculatestableindexforISCOMtoCCCOMPCBconversionbasedonaddressoffset S_PCBTableIndexCalculationCalculatestableindexforISCOMtoCCCOMPCBconversionbasedonaddressoffset --> N_PCBTableIndexCalculationCalculatestableindexforISCOMtoCCCOMPCBconversionbasedonaddressoffset_Node0 N_PCBTableIndexCalculationCalculatestableindexforISCOMtoCCCOMPCBconversionbasedonaddressoffset_Node0 -- No --> E_PCBTableIndexCalculationCalculatestableindexforISCOMtoCCCOMPCBconversionbasedonaddressoffset
File: CIMS.cbl
GIVEN:
An address offset value exists from the difference between base and offset addresses
WHEN:
The system needs to determine the table index for PCB conversion
THEN:
Add 8 to the address offset, divide the result by 12, and store as the table index
β Consolidated Acceptance Criteria
- The system needs to convert ISCOM PCB structure to CCCOM format → call the CIMSCONV service with the ISCOM PCB data, PCB pointer, and calculated table index
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallCIMSCONVwithTableIndex(["Start Step"])
E_CallCIMSCONVwithTableIndex(["End Step"])
N_CallCIMSCONVwithTableIndex_Node0{"The system needs to convert ISCOM
PCB structure to CCCOM format"}:::decision N_CallCIMSCONVwithTableIndex_Node0_action["Call the CIMSCONV service with the
ISCOM PCB data, PCB pointer, and
calculated table index"]:::main N_CallCIMSCONVwithTableIndex_Node0 -- Yes --> N_CallCIMSCONVwithTableIndex_Node0_action N_CallCIMSCONVwithTableIndex_Node0_action --> E_CallCIMSCONVwithTableIndex S_CallCIMSCONVwithTableIndex --> N_CallCIMSCONVwithTableIndex_Node0 N_CallCIMSCONVwithTableIndex_Node0 -- No --> E_CallCIMSCONVwithTableIndex
PCB structure to CCCOM format"}:::decision N_CallCIMSCONVwithTableIndex_Node0_action["Call the CIMSCONV service with the
ISCOM PCB data, PCB pointer, and
calculated table index"]:::main N_CallCIMSCONVwithTableIndex_Node0 -- Yes --> N_CallCIMSCONVwithTableIndex_Node0_action N_CallCIMSCONVwithTableIndex_Node0_action --> E_CallCIMSCONVwithTableIndex S_CallCIMSCONVwithTableIndex --> N_CallCIMSCONVwithTableIndex_Node0 N_CallCIMSCONVwithTableIndex_Node0 -- No --> E_CallCIMSCONVwithTableIndex
File: CIMS.cbl
GIVEN:
A table index has been calculated for PCB conversion and ISCOM PCB data exists
WHEN:
The system needs to convert ISCOM PCB structure to CCCOM format
THEN:
Call the CIMSCONV service with the ISCOM PCB data, PCB pointer, and calculated table index
β Consolidated Acceptance Criteria
- The conversion process is complete → set the address area to point to the converted PCB pointer location
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPCBAddressArea(["Start Step"])
E_SetPCBAddressArea(["End Step"])
N_SetPCBAddressArea_Node0{"The conversion process is complete"}:::decision
N_SetPCBAddressArea_Node0_action["Set the address area to point to
the converted PCB pointer location"]:::main N_SetPCBAddressArea_Node0 -- Yes --> N_SetPCBAddressArea_Node0_action N_SetPCBAddressArea_Node0_action --> E_SetPCBAddressArea S_SetPCBAddressArea --> N_SetPCBAddressArea_Node0 N_SetPCBAddressArea_Node0 -- No --> E_SetPCBAddressArea
the converted PCB pointer location"]:::main N_SetPCBAddressArea_Node0 -- Yes --> N_SetPCBAddressArea_Node0_action N_SetPCBAddressArea_Node0_action --> E_SetPCBAddressArea S_SetPCBAddressArea --> N_SetPCBAddressArea_Node0 N_SetPCBAddressArea_Node0 -- No --> E_SetPCBAddressArea
File: CIMS.cbl
GIVEN:
The CIMSCONV service has successfully converted ISCOM PCB data and returned a PCB pointer
WHEN:
The conversion process is complete
THEN:
Set the address area to point to the converted PCB pointer location
β Consolidated Acceptance Criteria
- The system needs to determine the table index for PCB conversion → the table index is calculated by adding 8 to the address offset and dividing by 12
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateTableIndexfromAddressOffset(["Start Step"])
E_CalculateTableIndexfromAddressOffset(["End Step"])
N_CalculateTableIndexfromAddressOffset_Node0{"The system needs to determine the
table index for PCB conversion"}:::decision N_CalculateTableIndexfromAddressOffset_Node0_action["The table index is calculated by
adding 8 to the address offset and
dividing by 12"]:::main N_CalculateTableIndexfromAddressOffset_Node0 -- Yes --> N_CalculateTableIndexfromAddressOffset_Node0_action N_CalculateTableIndexfromAddressOffset_Node0_action --> E_CalculateTableIndexfromAddressOffset S_CalculateTableIndexfromAddressOffset --> N_CalculateTableIndexfromAddressOffset_Node0 N_CalculateTableIndexfromAddressOffset_Node0 -- No --> E_CalculateTableIndexfromAddressOffset
table index for PCB conversion"}:::decision N_CalculateTableIndexfromAddressOffset_Node0_action["The table index is calculated by
adding 8 to the address offset and
dividing by 12"]:::main N_CalculateTableIndexfromAddressOffset_Node0 -- Yes --> N_CalculateTableIndexfromAddressOffset_Node0_action N_CalculateTableIndexfromAddressOffset_Node0_action --> E_CalculateTableIndexfromAddressOffset S_CalculateTableIndexfromAddressOffset --> N_CalculateTableIndexfromAddressOffset_Node0 N_CalculateTableIndexfromAddressOffset_Node0 -- No --> E_CalculateTableIndexfromAddressOffset
File: CIMS.cbl
GIVEN:
An address offset value is available from ISCOM PCB processing
WHEN:
The system needs to determine the table index for PCB conversion
THEN:
- The table index is calculated by adding 8 to the address offset
- Dividing by 12
β Consolidated Acceptance Criteria
- PCB format conversion is required from ISCOM to CCCOM → the CIMSCONV utility is called with ISCOM PCB parameters and calculated table index to perform the conversion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallCIMSCONVUtilitywithISCOMPCBParameters(["Start Step"])
E_CallCIMSCONVUtilitywithISCOMPCBParameters(["End Step"])
N_CallCIMSCONVUtilitywithISCOMPCBParameters_Node0{"PCB format conversion is required
from ISCOM to CCCOM"}:::decision N_CallCIMSCONVUtilitywithISCOMPCBParameters_Node0_action["The CIMSCONV utility is called with
ISCOM PCB parameters and calculated
table index to perform the
conversion"]:::main N_CallCIMSCONVUtilitywithISCOMPCBParameters_Node0 -- Yes --> N_CallCIMSCONVUtilitywithISCOMPCBParameters_Node0_action N_CallCIMSCONVUtilitywithISCOMPCBParameters_Node0_action --> E_CallCIMSCONVUtilitywithISCOMPCBParameters S_CallCIMSCONVUtilitywithISCOMPCBParameters --> N_CallCIMSCONVUtilitywithISCOMPCBParameters_Node0 N_CallCIMSCONVUtilitywithISCOMPCBParameters_Node0 -- No --> E_CallCIMSCONVUtilitywithISCOMPCBParameters
from ISCOM to CCCOM"}:::decision N_CallCIMSCONVUtilitywithISCOMPCBParameters_Node0_action["The CIMSCONV utility is called with
ISCOM PCB parameters and calculated
table index to perform the
conversion"]:::main N_CallCIMSCONVUtilitywithISCOMPCBParameters_Node0 -- Yes --> N_CallCIMSCONVUtilitywithISCOMPCBParameters_Node0_action N_CallCIMSCONVUtilitywithISCOMPCBParameters_Node0_action --> E_CallCIMSCONVUtilitywithISCOMPCBParameters S_CallCIMSCONVUtilitywithISCOMPCBParameters --> N_CallCIMSCONVUtilitywithISCOMPCBParameters_Node0 N_CallCIMSCONVUtilitywithISCOMPCBParameters_Node0 -- No --> E_CallCIMSCONVUtilitywithISCOMPCBParameters
File: CIMS.cbl
GIVEN:
ISCOM PCB data exists and table index has been calculated
WHEN:
PCB format conversion is required from ISCOM to CCCOM
THEN:
- The cimsconv utility is called with iscom pcb parameters
- Calculated table index to perform the conversion
β Consolidated Acceptance Criteria
- The conversion process is complete → the address area is updated to point to the converted PCB pointer location
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetAddressAreatoConvertedPCBPointer(["Start Step"])
E_SetAddressAreatoConvertedPCBPointer(["End Step"])
N_SetAddressAreatoConvertedPCBPointer_Node0{"The conversion process is complete"}:::decision
N_SetAddressAreatoConvertedPCBPointer_Node0_action["The address area is updated to
point to the converted PCB pointer
location"]:::main N_SetAddressAreatoConvertedPCBPointer_Node0 -- Yes --> N_SetAddressAreatoConvertedPCBPointer_Node0_action N_SetAddressAreatoConvertedPCBPointer_Node0_action --> E_SetAddressAreatoConvertedPCBPointer S_SetAddressAreatoConvertedPCBPointer --> N_SetAddressAreatoConvertedPCBPointer_Node0 N_SetAddressAreatoConvertedPCBPointer_Node0 -- No --> E_SetAddressAreatoConvertedPCBPointer
point to the converted PCB pointer
location"]:::main N_SetAddressAreatoConvertedPCBPointer_Node0 -- Yes --> N_SetAddressAreatoConvertedPCBPointer_Node0_action N_SetAddressAreatoConvertedPCBPointer_Node0_action --> E_SetAddressAreatoConvertedPCBPointer S_SetAddressAreatoConvertedPCBPointer --> N_SetAddressAreatoConvertedPCBPointer_Node0 N_SetAddressAreatoConvertedPCBPointer_Node0 -- No --> E_SetAddressAreatoConvertedPCBPointer
File: CIMS.cbl
GIVEN:
CIMSCONV utility has successfully converted ISCOM PCB to CCCOM format
WHEN:
The conversion process is complete
THEN:
The address area is updated to point to the converted PCB pointer location
β Consolidated Acceptance Criteria
- The common area synchronization process is invoked → the common area data from CCCOM is copied to ISCOM to ensure both structures contain identical shared information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyCommonAreaDatafromCCCOMtoISCOM(["Start Step"])
E_CopyCommonAreaDatafromCCCOMtoISCOM(["End Step"])
N_CopyCommonAreaDatafromCCCOMtoISCOM_Node0{"The common area synchronization
process is invoked"}:::decision N_CopyCommonAreaDatafromCCCOMtoISCOM_Node0_action["The common area data from CCCOM is
copied to ISCOM to ensure both
structures contain identical shared
information"]:::main N_CopyCommonAreaDatafromCCCOMtoISCOM_Node0 -- Yes --> N_CopyCommonAreaDatafromCCCOMtoISCOM_Node0_action N_CopyCommonAreaDatafromCCCOMtoISCOM_Node0_action --> E_CopyCommonAreaDatafromCCCOMtoISCOM S_CopyCommonAreaDatafromCCCOMtoISCOM --> N_CopyCommonAreaDatafromCCCOMtoISCOM_Node0 N_CopyCommonAreaDatafromCCCOMtoISCOM_Node0 -- No --> E_CopyCommonAreaDatafromCCCOMtoISCOM
process is invoked"}:::decision N_CopyCommonAreaDatafromCCCOMtoISCOM_Node0_action["The common area data from CCCOM is
copied to ISCOM to ensure both
structures contain identical shared
information"]:::main N_CopyCommonAreaDatafromCCCOMtoISCOM_Node0 -- Yes --> N_CopyCommonAreaDatafromCCCOMtoISCOM_Node0_action N_CopyCommonAreaDatafromCCCOMtoISCOM_Node0_action --> E_CopyCommonAreaDatafromCCCOMtoISCOM S_CopyCommonAreaDatafromCCCOMtoISCOM --> N_CopyCommonAreaDatafromCCCOMtoISCOM_Node0 N_CopyCommonAreaDatafromCCCOMtoISCOM_Node0 -- No --> E_CopyCommonAreaDatafromCCCOMtoISCOM
File: CIMS.cbl
Exclusion / Alternative Path
GIVEN:
The system has both CCCOM and ISCOM control structures available and the ISCOM address is valid and not blank
WHEN:
The common area synchronization process is invoked
THEN:
The common area data from CCCOM is copied to ISCOM to ensure both structures contain identical shared information
WRITMSGL Sequence (US Train)
Objective: This COBOL program serves as a message writing interface that accepts six single-character parameters and delegates the actual message writing functionality to two other programs - first calling WRITMSG without parameters, then calling WRITMSGX with all six input parameters. The program acts as a wrapper or intermediary that coordinates message output operations by invoking these two specialized message writing routines.
πΊοΈ High-Level Visual Map
flowchart TD
A[Program Start]:::start
B[1:Message Writing Initialization]:::process
C[2:Parameterized Message Writing]:::process
D[Program End]:::final
A --> B
B --> C
C --> D
classDef start fill:#67A353
classDef process fill:#08AAD2
classDef decision fill:#FFE347
classDef datasource fill:#2EA597
classDef final fill:#D13313
classDef success fill:#2BB534
classDef error fill:#D13313
π Step-by-Step Logic Trace
β Consolidated Acceptance Criteria
- The message writing initialization is triggered → the basic message writing function WRITMSG is invoked
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_1MessageWritingInitialization(["Start Step"])
E_1MessageWritingInitialization(["End Step"])
N_1MessageWritingInitialization_Node0{"The message writing initialization
is triggered"}:::decision N_1MessageWritingInitialization_Node0_action["The basic message writing function
WRITMSG is invoked"]:::main N_1MessageWritingInitialization_Node0 -- Yes --> N_1MessageWritingInitialization_Node0_action N_1MessageWritingInitialization_Node0_action --> E_1MessageWritingInitialization S_1MessageWritingInitialization --> N_1MessageWritingInitialization_Node0 N_1MessageWritingInitialization_Node0 -- No --> E_1MessageWritingInitialization
is triggered"}:::decision N_1MessageWritingInitialization_Node0_action["The basic message writing function
WRITMSG is invoked"]:::main N_1MessageWritingInitialization_Node0 -- Yes --> N_1MessageWritingInitialization_Node0_action N_1MessageWritingInitialization_Node0_action --> E_1MessageWritingInitialization S_1MessageWritingInitialization --> N_1MessageWritingInitialization_Node0 N_1MessageWritingInitialization_Node0 -- No --> E_1MessageWritingInitialization
File: WRITMSGL.cbl
GIVEN:
The program has started execution
WHEN:
The message writing initialization is triggered
THEN:
The basic message writing function WRITMSG is invoked
β Consolidated Acceptance Criteria
- The parameterized message writing is triggered → the extended message writing function WRITMSGX is invoked with parameters P1, P2, P3, P4, P5, P6
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_2ParameterizedMessageWriting(["Start Step"])
E_2ParameterizedMessageWriting(["End Step"])
N_2ParameterizedMessageWriting_Node0{"The parameterized message writing
is triggered"}:::decision N_2ParameterizedMessageWriting_Node0_action["The extended message writing
function WRITMSGX is invoked with
parameters P1, P2, P3, P4, P5, P6"]:::main N_2ParameterizedMessageWriting_Node0 -- Yes --> N_2ParameterizedMessageWriting_Node0_action N_2ParameterizedMessageWriting_Node0_action --> E_2ParameterizedMessageWriting S_2ParameterizedMessageWriting --> N_2ParameterizedMessageWriting_Node0 N_2ParameterizedMessageWriting_Node0 -- No --> E_2ParameterizedMessageWriting
is triggered"}:::decision N_2ParameterizedMessageWriting_Node0_action["The extended message writing
function WRITMSGX is invoked with
parameters P1, P2, P3, P4, P5, P6"]:::main N_2ParameterizedMessageWriting_Node0 -- Yes --> N_2ParameterizedMessageWriting_Node0_action N_2ParameterizedMessageWriting_Node0_action --> E_2ParameterizedMessageWriting S_2ParameterizedMessageWriting --> N_2ParameterizedMessageWriting_Node0 N_2ParameterizedMessageWriting_Node0 -- No --> E_2ParameterizedMessageWriting
File: WRITMSGL.cbl
GIVEN:
The basic message writing has been completed and six parameters P1, P2, P3, P4, P5, P6 are available
WHEN:
The parameterized message writing is triggered
THEN:
The extended message writing function WRITMSGX is invoked with parameters P1, P2, P3, P4, P5, P6
β Consolidated Acceptance Criteria
- Message processing workflow is initiated → basic message writing must be completed before parameterized message writing, and program terminates after both operations complete
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProgramStarttoProgramEnd(["Start Step"])
E_ProgramStarttoProgramEnd(["End Step"])
N_ProgramStarttoProgramEnd_Node0{"Message processing workflow is
initiated"}:::decision N_ProgramStarttoProgramEnd_Node0_action["Basic message writing must be
completed before parameterized
message writing, and program
terminates after both operations
complete"]:::main N_ProgramStarttoProgramEnd_Node0 -- Yes --> N_ProgramStarttoProgramEnd_Node0_action N_ProgramStarttoProgramEnd_Node0_action --> E_ProgramStarttoProgramEnd S_ProgramStarttoProgramEnd --> N_ProgramStarttoProgramEnd_Node0 N_ProgramStarttoProgramEnd_Node0 -- No --> E_ProgramStarttoProgramEnd
initiated"}:::decision N_ProgramStarttoProgramEnd_Node0_action["Basic message writing must be
completed before parameterized
message writing, and program
terminates after both operations
complete"]:::main N_ProgramStarttoProgramEnd_Node0 -- Yes --> N_ProgramStarttoProgramEnd_Node0_action N_ProgramStarttoProgramEnd_Node0_action --> E_ProgramStarttoProgramEnd S_ProgramStarttoProgramEnd --> N_ProgramStarttoProgramEnd_Node0 N_ProgramStarttoProgramEnd_Node0 -- No --> E_ProgramStarttoProgramEnd
File: WRITMSGL.cbl
GIVEN:
The program execution begins
WHEN:
Message processing workflow is initiated
THEN:
Basic message writing must be completed before parameterized message writing, and program terminates after both operations complete
β Consolidated Acceptance Criteria
- The program execution begins → the WRITMSG program is called to initialize message writing functionality
- Extended message writing is required → the WRITMSGX program is called with parameters P1, P2, P3, P4, P5, P6
- Message processing is initiated → wRITMSG is called first, followed by WRITMSGX with parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality(["Start Step"])
E_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality(["End Step"])
N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node0{"The program execution begins"}:::decision
N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node0_action["The WRITMSG program is called to
initialize message writing
functionality"]:::main N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node0 -- Yes --> N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node0_action N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node0_action --> E_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality S_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality --> N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node0 N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node1{"Extended message writing is
required"}:::decision N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node1_action["The WRITMSGX program is called with
parameters P1, P2, P3, P4, P5, P6"]:::main N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node1 -- Yes --> N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node1_action N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node1_action --> E_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node0 -- No --> N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node1 N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node2{"Message processing is initiated"}:::decision N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node2_action["WRITMSG is called first, followed
by WRITMSGX with parameters"]:::main N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node2 -- Yes --> N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node2_action N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node2_action --> E_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node1 -- No --> N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node2 N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node2 -- No --> E_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality
initialize message writing
functionality"]:::main N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node0 -- Yes --> N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node0_action N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node0_action --> E_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality S_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality --> N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node0 N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node1{"Extended message writing is
required"}:::decision N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node1_action["The WRITMSGX program is called with
parameters P1, P2, P3, P4, P5, P6"]:::main N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node1 -- Yes --> N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node1_action N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node1_action --> E_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node0 -- No --> N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node1 N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node2{"Message processing is initiated"}:::decision N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node2_action["WRITMSG is called first, followed
by WRITMSGX with parameters"]:::main N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node2 -- Yes --> N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node2_action N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node2_action --> E_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node1 -- No --> N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node2 N_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality_Node2 -- No --> E_MessageWritingInitializationCallstheWRITMSGprogramtoinitializemessagewritingfunctionality
File: WRITMSGL.cbl
GIVEN:
The message writing system needs to be initialized
WHEN:
The program execution begins
THEN:
The WRITMSG program is called to initialize message writing functionality
File: WRITMSGL.cbl
GIVEN:
The message writing system is initialized and six parameters P1, P2, P3, P4, P5, P6 are available
WHEN:
Extended message writing is required
THEN:
The WRITMSGX program is called with parameters P1, P2, P3, P4, P5, P6
File: WRITMSGL.cbl
GIVEN:
Both basic and extended message writing operations are required
WHEN:
Message processing is initiated
THEN:
WRITMSG is called first, followed by WRITMSGX with parameters
β Consolidated Acceptance Criteria
- The system needs to write a formatted message → the WRITMSGX program is called with all six parameters to produce the formatted message output
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallWRITMSGXProgramwithParameters(["Start Step"])
E_CallWRITMSGXProgramwithParameters(["End Step"])
N_CallWRITMSGXProgramwithParameters_Node0{"The system needs to write a
formatted message"}:::decision N_CallWRITMSGXProgramwithParameters_Node0_action["The WRITMSGX program is called with
all six parameters to produce the
formatted message output"]:::main N_CallWRITMSGXProgramwithParameters_Node0 -- Yes --> N_CallWRITMSGXProgramwithParameters_Node0_action N_CallWRITMSGXProgramwithParameters_Node0_action --> E_CallWRITMSGXProgramwithParameters S_CallWRITMSGXProgramwithParameters --> N_CallWRITMSGXProgramwithParameters_Node0 N_CallWRITMSGXProgramwithParameters_Node0 -- No --> E_CallWRITMSGXProgramwithParameters
formatted message"}:::decision N_CallWRITMSGXProgramwithParameters_Node0_action["The WRITMSGX program is called with
all six parameters to produce the
formatted message output"]:::main N_CallWRITMSGXProgramwithParameters_Node0 -- Yes --> N_CallWRITMSGXProgramwithParameters_Node0_action N_CallWRITMSGXProgramwithParameters_Node0_action --> E_CallWRITMSGXProgramwithParameters S_CallWRITMSGXProgramwithParameters --> N_CallWRITMSGXProgramwithParameters_Node0 N_CallWRITMSGXProgramwithParameters_Node0 -- No --> E_CallWRITMSGXProgramwithParameters
File: WRITMSGL.cbl
GIVEN:
Six input parameters P1, P2, P3, P4, P5, P6 are available
WHEN:
The system needs to write a formatted message
THEN:
The WRITMSGX program is called with all six parameters to produce the formatted message output
GCCCARFM Sequence (US Train)
Objective: Orchestrates key processes including Initialize Output Fields, Validate Input Not Blank, Skip Leading Spaces, Extract Alphabetic Prefix, Validate Alphabetic Prefix, and other related sub-functions.
πΊοΈ High-Level Visual Map
flowchart TD
A[Start Car ID Processing]:::start
B[1:Initialize Output Fields]:::process
C{2:Validate Input Not Blank}:::decision
D[3:Skip Leading Spaces]:::process
E[4:Extract Alphabetic Prefix]:::process
F{5:Validate Alphabetic Prefix}:::decision
G[6:Skip Spaces After Prefix]:::process
H[7:Count Numeric Digits]:::process
I[8:Determine Expected Numeric Length]:::process
J{9:Validate Numeric Portion Length}:::decision
K{10:Validate No Trailing Characters}:::decision
L[11:Calculate Positioning]:::process
M[12:Format Numeric Portion]:::process
N[Success - Car ID Formatted]:::success
E1[13:Set Error Codes - Blank Input]:::error
E2[13:Set Error Codes - Invalid Prefix]:::error
E3[13:Set Error Codes - Size Error]:::error
E4[13:Set Error Codes - Invalid Numbers]:::error
E5[13:Set Error Codes - Format Error]:::error
Z[End Processing]:::final
A --> B
B --> C
C -->|Input is Blank| E1
C -->|Input Not Blank| D
D --> E
E --> F
F -->|Invalid Prefix or Length| E2
F -->|Valid Prefix| G
G --> H
H --> I
I --> J
J -->|Digits Exceed Expected| E4
J -->|Valid Digit Count| K
K -->|Invalid Trailing Characters| E5
K -->|No Trailing Characters| L
L --> M
M --> N
N --> Z
E1 --> Z
E2 --> Z
E3 --> Z
E4 --> Z
E5 --> Z
classDef start fill:#67A353
classDef process fill:#08AAD2
classDef decision fill:#FFE347
classDef datasource fill:#2EA597
classDef final fill:#D13313
classDef success fill:#2BB534
classDef error fill:#D13313
π Step-by-Step Logic Trace
β Consolidated Acceptance Criteria
- The processing begins → output field is cleared to spaces and success status is set
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_1InitializeOutputFields(["Start Step"])
E_1InitializeOutputFields(["End Step"])
N_1InitializeOutputFields_Node0{"The processing begins"}:::decision
N_1InitializeOutputFields_Node0_action["Output field is cleared to spaces
and success status is set"]:::main N_1InitializeOutputFields_Node0 -- Yes --> N_1InitializeOutputFields_Node0_action N_1InitializeOutputFields_Node0_action --> E_1InitializeOutputFields S_1InitializeOutputFields --> N_1InitializeOutputFields_Node0 N_1InitializeOutputFields_Node0 -- No --> E_1InitializeOutputFields
and success status is set"]:::main N_1InitializeOutputFields_Node0 -- Yes --> N_1InitializeOutputFields_Node0_action N_1InitializeOutputFields_Node0_action --> E_1InitializeOutputFields S_1InitializeOutputFields --> N_1InitializeOutputFields_Node0 N_1InitializeOutputFields_Node0 -- No --> E_1InitializeOutputFields
File: GCCCARFM.cbl
GIVEN:
Car ID processing is initiated
WHEN:
The processing begins
THEN:
- Output field is cleared to spaces
- Success status is set
β Consolidated Acceptance Criteria
- The input consists entirely of spaces → output is filled with asterisks and blank input error status is set
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_2ValidateInputNotBlank(["Start Step"])
E_2ValidateInputNotBlank(["End Step"])
N_2ValidateInputNotBlank_Node0{"The input consists entirely of
spaces"}:::decision N_2ValidateInputNotBlank_Node0_action["Output is filled with asterisks and
blank input error status is set"]:::main N_2ValidateInputNotBlank_Node0 -- Yes --> N_2ValidateInputNotBlank_Node0_action N_2ValidateInputNotBlank_Node0_action --> E_2ValidateInputNotBlank S_2ValidateInputNotBlank --> N_2ValidateInputNotBlank_Node0 N_2ValidateInputNotBlank_Node0 -- No --> E_2ValidateInputNotBlank
spaces"}:::decision N_2ValidateInputNotBlank_Node0_action["Output is filled with asterisks and
blank input error status is set"]:::main N_2ValidateInputNotBlank_Node0 -- Yes --> N_2ValidateInputNotBlank_Node0_action N_2ValidateInputNotBlank_Node0_action --> E_2ValidateInputNotBlank S_2ValidateInputNotBlank --> N_2ValidateInputNotBlank_Node0 N_2ValidateInputNotBlank_Node0 -- No --> E_2ValidateInputNotBlank
File: GCCCARFM.cbl
GIVEN:
A car ID input is provided for processing
WHEN:
The input consists entirely of spaces
THEN:
- Output is filled with asterisks
- Blank input error status is set
β Consolidated Acceptance Criteria
- Processing the input → leading spaces are counted and skipped to identify the start position of actual car ID data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_3SkipLeadingSpaces(["Start Step"])
E_3SkipLeadingSpaces(["End Step"])
N_3SkipLeadingSpaces_Node0{"Processing the input"}:::decision
N_3SkipLeadingSpaces_Node0_action["Leading spaces are counted and
skipped to identify the start
position of actual car ID data"]:::main N_3SkipLeadingSpaces_Node0 -- Yes --> N_3SkipLeadingSpaces_Node0_action N_3SkipLeadingSpaces_Node0_action --> E_3SkipLeadingSpaces S_3SkipLeadingSpaces --> N_3SkipLeadingSpaces_Node0 N_3SkipLeadingSpaces_Node0 -- No --> E_3SkipLeadingSpaces
skipped to identify the start
position of actual car ID data"]:::main N_3SkipLeadingSpaces_Node0 -- Yes --> N_3SkipLeadingSpaces_Node0_action N_3SkipLeadingSpaces_Node0_action --> E_3SkipLeadingSpaces S_3SkipLeadingSpaces --> N_3SkipLeadingSpaces_Node0 N_3SkipLeadingSpaces_Node0 -- No --> E_3SkipLeadingSpaces
File: GCCCARFM.cbl
GIVEN:
Car ID input may contain leading spaces
WHEN:
Processing the input
THEN:
- Leading spaces are counted
- Skipped to identify the start position of actual car id data
β Consolidated Acceptance Criteria
- Processing characters sequentially → up to 4 consecutive alphabetic characters are extracted as initials, stopping at first non-alphabetic character, space, or after 4 characters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_4ExtractAlphabeticPrefix(["Start Step"])
E_4ExtractAlphabeticPrefix(["End Step"])
N_4ExtractAlphabeticPrefix_Node0{"Processing characters sequentially"}:::decision
N_4ExtractAlphabeticPrefix_Node0_action["Up to 4 consecutive alphabetic
characters are extracted as
initials, stopping at first
non-alphabetic character, space, or
after 4 characters"]:::main N_4ExtractAlphabeticPrefix_Node0 -- Yes --> N_4ExtractAlphabeticPrefix_Node0_action N_4ExtractAlphabeticPrefix_Node0_action --> E_4ExtractAlphabeticPrefix S_4ExtractAlphabeticPrefix --> N_4ExtractAlphabeticPrefix_Node0 N_4ExtractAlphabeticPrefix_Node0 -- No --> E_4ExtractAlphabeticPrefix
characters are extracted as
initials, stopping at first
non-alphabetic character, space, or
after 4 characters"]:::main N_4ExtractAlphabeticPrefix_Node0 -- Yes --> N_4ExtractAlphabeticPrefix_Node0_action N_4ExtractAlphabeticPrefix_Node0_action --> E_4ExtractAlphabeticPrefix S_4ExtractAlphabeticPrefix --> N_4ExtractAlphabeticPrefix_Node0 N_4ExtractAlphabeticPrefix_Node0 -- No --> E_4ExtractAlphabeticPrefix
File: GCCCARFM.cbl
GIVEN:
Car ID input after leading spaces
WHEN:
Processing characters sequentially
THEN:
Up to 4 consecutive alphabetic characters are extracted as initials, stopping at first non-alphabetic character, space, or after 4 characters
β Consolidated Acceptance Criteria
- Input position exceeds 20 characters:
- no alphabetic characters found
- more than 4 alphabetic characters found with invalid following character
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_5ValidateAlphabeticPrefix(["Start Step"])
E_5ValidateAlphabeticPrefix(["End Step"])
N_5ValidateAlphabeticPrefix_Node0{"Input position exceeds 20
characters OR no alphabetic
characters found OR more than 4
alphabetic characters found with
invalid following character"}:::decision N_5ValidateAlphabeticPrefix_Node0_action["Output is filled with asterisks and
invalid prefix error status is set"]:::exclusion N_5ValidateAlphabeticPrefix_Node0 -- Yes -->|Alternative| N_5ValidateAlphabeticPrefix_Node0_action N_5ValidateAlphabeticPrefix_Node0_action --> E_5ValidateAlphabeticPrefix S_5ValidateAlphabeticPrefix --> N_5ValidateAlphabeticPrefix_Node0 N_5ValidateAlphabeticPrefix_Node0 -- No --> E_5ValidateAlphabeticPrefix
characters OR no alphabetic
characters found OR more than 4
alphabetic characters found with
invalid following character"}:::decision N_5ValidateAlphabeticPrefix_Node0_action["Output is filled with asterisks and
invalid prefix error status is set"]:::exclusion N_5ValidateAlphabeticPrefix_Node0 -- Yes -->|Alternative| N_5ValidateAlphabeticPrefix_Node0_action N_5ValidateAlphabeticPrefix_Node0_action --> E_5ValidateAlphabeticPrefix S_5ValidateAlphabeticPrefix --> N_5ValidateAlphabeticPrefix_Node0 N_5ValidateAlphabeticPrefix_Node0 -- No --> E_5ValidateAlphabeticPrefix
File: GCCCARFM.cbl
Exclusion / Alternative Path
GIVEN:
Alphabetic prefix extraction is complete
WHEN:
Input position exceeds 20 characters OR no alphabetic characters found OR more than 4 alphabetic characters found with invalid following character
THEN:
- Output is filled with asterisks
- Invalid prefix error status is set
β Consolidated Acceptance Criteria
- Processing continues after the prefix → any spaces following the prefix are skipped to locate the numeric portion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_6SkipSpacesAfterPrefix(["Start Step"])
E_6SkipSpacesAfterPrefix(["End Step"])
N_6SkipSpacesAfterPrefix_Node0{"Processing continues after the
prefix"}:::decision N_6SkipSpacesAfterPrefix_Node0_action["Any spaces following the prefix are
skipped to locate the numeric
portion"]:::main N_6SkipSpacesAfterPrefix_Node0 -- Yes --> N_6SkipSpacesAfterPrefix_Node0_action N_6SkipSpacesAfterPrefix_Node0_action --> E_6SkipSpacesAfterPrefix S_6SkipSpacesAfterPrefix --> N_6SkipSpacesAfterPrefix_Node0 N_6SkipSpacesAfterPrefix_Node0 -- No --> E_6SkipSpacesAfterPrefix
prefix"}:::decision N_6SkipSpacesAfterPrefix_Node0_action["Any spaces following the prefix are
skipped to locate the numeric
portion"]:::main N_6SkipSpacesAfterPrefix_Node0 -- Yes --> N_6SkipSpacesAfterPrefix_Node0_action N_6SkipSpacesAfterPrefix_Node0_action --> E_6SkipSpacesAfterPrefix S_6SkipSpacesAfterPrefix --> N_6SkipSpacesAfterPrefix_Node0 N_6SkipSpacesAfterPrefix_Node0 -- No --> E_6SkipSpacesAfterPrefix
File: GCCCARFM.cbl
GIVEN:
Valid alphabetic prefix has been extracted
WHEN:
Processing continues after the prefix
THEN:
Any spaces following the prefix are skipped to locate the numeric portion
β Consolidated Acceptance Criteria
- Processing remaining characters → consecutive numeric digits are counted until a space or end of input is encountered
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_7CountNumericDigits(["Start Step"])
E_7CountNumericDigits(["End Step"])
N_7CountNumericDigits_Node0{"Processing remaining characters"}:::decision
N_7CountNumericDigits_Node0_action["Consecutive numeric digits are
counted until a space or end of
input is encountered"]:::main N_7CountNumericDigits_Node0 -- Yes --> N_7CountNumericDigits_Node0_action N_7CountNumericDigits_Node0_action --> E_7CountNumericDigits S_7CountNumericDigits --> N_7CountNumericDigits_Node0 N_7CountNumericDigits_Node0 -- No --> E_7CountNumericDigits
counted until a space or end of
input is encountered"]:::main N_7CountNumericDigits_Node0 -- Yes --> N_7CountNumericDigits_Node0_action N_7CountNumericDigits_Node0_action --> E_7CountNumericDigits S_7CountNumericDigits --> N_7CountNumericDigits_Node0 N_7CountNumericDigits_Node0 -- No --> E_7CountNumericDigits
File: GCCCARFM.cbl
GIVEN:
Position after alphabetic prefix and intermediate spaces
WHEN:
Processing remaining characters
THEN:
Consecutive numeric digits are counted until a space or end of input is encountered
β Consolidated Acceptance Criteria
- Size is 12 → maximum 8 numeric digits are allowed
- Size is 10 → maximum 6 numeric digits are allowed
- Size is neither 12 nor 10 → output is filled with asterisks and invalid size error status is set
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_8DetermineExpectedNumericLength(["Start Step"])
E_8DetermineExpectedNumericLength(["End Step"])
N_8DetermineExpectedNumericLength_Node0{"Size is 12"}:::decision
N_8DetermineExpectedNumericLength_Node0_action["Maximum 8 numeric digits are
allowed"]:::main N_8DetermineExpectedNumericLength_Node0 -- Yes --> N_8DetermineExpectedNumericLength_Node0_action N_8DetermineExpectedNumericLength_Node0_action --> E_8DetermineExpectedNumericLength S_8DetermineExpectedNumericLength --> N_8DetermineExpectedNumericLength_Node0 N_8DetermineExpectedNumericLength_Node1{"Size is 10"}:::decision N_8DetermineExpectedNumericLength_Node1_action["Maximum 6 numeric digits are
allowed"]:::main N_8DetermineExpectedNumericLength_Node1 -- Yes --> N_8DetermineExpectedNumericLength_Node1_action N_8DetermineExpectedNumericLength_Node1_action --> E_8DetermineExpectedNumericLength N_8DetermineExpectedNumericLength_Node0 -- No --> N_8DetermineExpectedNumericLength_Node1 N_8DetermineExpectedNumericLength_Node2{"Size is neither 12 nor 10"}:::decision N_8DetermineExpectedNumericLength_Node2_action["Output is filled with asterisks and
invalid size error status is set"]:::main N_8DetermineExpectedNumericLength_Node2 -- Yes --> N_8DetermineExpectedNumericLength_Node2_action N_8DetermineExpectedNumericLength_Node2_action --> E_8DetermineExpectedNumericLength N_8DetermineExpectedNumericLength_Node1 -- No --> N_8DetermineExpectedNumericLength_Node2 N_8DetermineExpectedNumericLength_Node2 -- No --> E_8DetermineExpectedNumericLength
allowed"]:::main N_8DetermineExpectedNumericLength_Node0 -- Yes --> N_8DetermineExpectedNumericLength_Node0_action N_8DetermineExpectedNumericLength_Node0_action --> E_8DetermineExpectedNumericLength S_8DetermineExpectedNumericLength --> N_8DetermineExpectedNumericLength_Node0 N_8DetermineExpectedNumericLength_Node1{"Size is 10"}:::decision N_8DetermineExpectedNumericLength_Node1_action["Maximum 6 numeric digits are
allowed"]:::main N_8DetermineExpectedNumericLength_Node1 -- Yes --> N_8DetermineExpectedNumericLength_Node1_action N_8DetermineExpectedNumericLength_Node1_action --> E_8DetermineExpectedNumericLength N_8DetermineExpectedNumericLength_Node0 -- No --> N_8DetermineExpectedNumericLength_Node1 N_8DetermineExpectedNumericLength_Node2{"Size is neither 12 nor 10"}:::decision N_8DetermineExpectedNumericLength_Node2_action["Output is filled with asterisks and
invalid size error status is set"]:::main N_8DetermineExpectedNumericLength_Node2 -- Yes --> N_8DetermineExpectedNumericLength_Node2_action N_8DetermineExpectedNumericLength_Node2_action --> E_8DetermineExpectedNumericLength N_8DetermineExpectedNumericLength_Node1 -- No --> N_8DetermineExpectedNumericLength_Node2 N_8DetermineExpectedNumericLength_Node2 -- No --> E_8DetermineExpectedNumericLength
File: GCCCARFM.cbl
GIVEN:
Car ID size parameter is provided
WHEN:
Size is 12
THEN:
Maximum 8 numeric digits are allowed
File: GCCCARFM.cbl
GIVEN:
Car ID size parameter is provided
WHEN:
Size is 10
THEN:
Maximum 6 numeric digits are allowed
File: GCCCARFM.cbl
GIVEN:
Car ID size parameter is provided
WHEN:
Size is neither 12 nor 10
THEN:
- Output is filled with asterisks
- Invalid size error status is set
β Consolidated Acceptance Criteria
- Number of digits exceeds the maximum allowed for the size → output is filled with asterisks and invalid number error status is set
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_9ValidateNumericPortionLength(["Start Step"])
E_9ValidateNumericPortionLength(["End Step"])
N_9ValidateNumericPortionLength_Node0{"Number of digits exceeds the
maximum allowed for the size"}:::decision N_9ValidateNumericPortionLength_Node0_action["Output is filled with asterisks and
invalid number error status is set"]:::main N_9ValidateNumericPortionLength_Node0 -- Yes --> N_9ValidateNumericPortionLength_Node0_action N_9ValidateNumericPortionLength_Node0_action --> E_9ValidateNumericPortionLength S_9ValidateNumericPortionLength --> N_9ValidateNumericPortionLength_Node0 N_9ValidateNumericPortionLength_Node0 -- No --> E_9ValidateNumericPortionLength
maximum allowed for the size"}:::decision N_9ValidateNumericPortionLength_Node0_action["Output is filled with asterisks and
invalid number error status is set"]:::main N_9ValidateNumericPortionLength_Node0 -- Yes --> N_9ValidateNumericPortionLength_Node0_action N_9ValidateNumericPortionLength_Node0_action --> E_9ValidateNumericPortionLength S_9ValidateNumericPortionLength --> N_9ValidateNumericPortionLength_Node0 N_9ValidateNumericPortionLength_Node0 -- No --> E_9ValidateNumericPortionLength
File: GCCCARFM.cbl
GIVEN:
Numeric digits have been counted and maximum allowed digits determined
WHEN:
Number of digits exceeds the maximum allowed for the size
THEN:
- Output is filled with asterisks
- Invalid number error status is set
β Consolidated Acceptance Criteria
- Non-space characters are found after the numeric portion → output is filled with asterisks and format error status is set
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_10ValidateNoTrailingCharacters(["Start Step"])
E_10ValidateNoTrailingCharacters(["End Step"])
N_10ValidateNoTrailingCharacters_Node0{"Non-space characters are found
after the numeric portion"}:::decision N_10ValidateNoTrailingCharacters_Node0_action["Output is filled with asterisks and
format error status is set"]:::main N_10ValidateNoTrailingCharacters_Node0 -- Yes --> N_10ValidateNoTrailingCharacters_Node0_action N_10ValidateNoTrailingCharacters_Node0_action --> E_10ValidateNoTrailingCharacters S_10ValidateNoTrailingCharacters --> N_10ValidateNoTrailingCharacters_Node0 N_10ValidateNoTrailingCharacters_Node0 -- No --> E_10ValidateNoTrailingCharacters
after the numeric portion"}:::decision N_10ValidateNoTrailingCharacters_Node0_action["Output is filled with asterisks and
format error status is set"]:::main N_10ValidateNoTrailingCharacters_Node0 -- Yes --> N_10ValidateNoTrailingCharacters_Node0_action N_10ValidateNoTrailingCharacters_Node0_action --> E_10ValidateNoTrailingCharacters S_10ValidateNoTrailingCharacters --> N_10ValidateNoTrailingCharacters_Node0 N_10ValidateNoTrailingCharacters_Node0 -- No --> E_10ValidateNoTrailingCharacters
File: GCCCARFM.cbl
GIVEN:
Numeric portion processing is complete and input position is before end
WHEN:
Non-space characters are found after the numeric portion
THEN:
- Output is filled with asterisks
- Format error status is set
β Consolidated Acceptance Criteria
- Formatting the output → numeric portion position is calculated as 13 minus the number of numeric bytes
- Formatting the output → numeric portion position is calculated as 11 minus the number of numeric bytes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_11CalculatePositioning(["Start Step"])
E_11CalculatePositioning(["End Step"])
N_11CalculatePositioning_Node0{"Formatting the output"}:::decision
N_11CalculatePositioning_Node0_action["Numeric portion position is
calculated as 13 minus the number of
numeric bytes"]:::main N_11CalculatePositioning_Node0 -- Yes --> N_11CalculatePositioning_Node0_action N_11CalculatePositioning_Node0_action --> E_11CalculatePositioning S_11CalculatePositioning --> N_11CalculatePositioning_Node0 N_11CalculatePositioning_Node1{"Formatting the output"}:::decision N_11CalculatePositioning_Node1_action["Numeric portion position is
calculated as 11 minus the number of
numeric bytes"]:::main N_11CalculatePositioning_Node1 -- Yes --> N_11CalculatePositioning_Node1_action N_11CalculatePositioning_Node1_action --> E_11CalculatePositioning N_11CalculatePositioning_Node0 -- No --> N_11CalculatePositioning_Node1 N_11CalculatePositioning_Node1 -- No --> E_11CalculatePositioning
calculated as 13 minus the number of
numeric bytes"]:::main N_11CalculatePositioning_Node0 -- Yes --> N_11CalculatePositioning_Node0_action N_11CalculatePositioning_Node0_action --> E_11CalculatePositioning S_11CalculatePositioning --> N_11CalculatePositioning_Node0 N_11CalculatePositioning_Node1{"Formatting the output"}:::decision N_11CalculatePositioning_Node1_action["Numeric portion position is
calculated as 11 minus the number of
numeric bytes"]:::main N_11CalculatePositioning_Node1 -- Yes --> N_11CalculatePositioning_Node1_action N_11CalculatePositioning_Node1_action --> E_11CalculatePositioning N_11CalculatePositioning_Node0 -- No --> N_11CalculatePositioning_Node1 N_11CalculatePositioning_Node1 -- No --> E_11CalculatePositioning
File: GCCCARFM.cbl
GIVEN:
Valid car ID components and size 12 format
WHEN:
Formatting the output
THEN:
Numeric portion position is calculated as 13 minus the number of numeric bytes
File: GCCCARFM.cbl
GIVEN:
Valid car ID components and size 10 format
WHEN:
Formatting the output
THEN:
Numeric portion position is calculated as 11 minus the number of numeric bytes
β Consolidated Acceptance Criteria
- Formatting the final output → leading spaces in the numeric portion are replaced with zeros
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_12FormatNumericPortion(["Start Step"])
E_12FormatNumericPortion(["End Step"])
N_12FormatNumericPortion_Node0{"Formatting the final output"}:::decision
N_12FormatNumericPortion_Node0_action["Leading spaces in the numeric
portion are replaced with zeros"]:::main N_12FormatNumericPortion_Node0 -- Yes --> N_12FormatNumericPortion_Node0_action N_12FormatNumericPortion_Node0_action --> E_12FormatNumericPortion S_12FormatNumericPortion --> N_12FormatNumericPortion_Node0 N_12FormatNumericPortion_Node0 -- No --> E_12FormatNumericPortion
portion are replaced with zeros"]:::main N_12FormatNumericPortion_Node0 -- Yes --> N_12FormatNumericPortion_Node0_action N_12FormatNumericPortion_Node0_action --> E_12FormatNumericPortion S_12FormatNumericPortion --> N_12FormatNumericPortion_Node0 N_12FormatNumericPortion_Node0 -- No --> E_12FormatNumericPortion
File: GCCCARFM.cbl
GIVEN:
Numeric portion is positioned in the output
WHEN:
Formatting the final output
THEN:
Leading spaces in the numeric portion are replaced with zeros
β Consolidated Acceptance Criteria
- The system begins processing → the output field is cleared to spaces to ensure no residual data remains from previous processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearOutputFieldSettoSpaces(["Start Step"])
E_ClearOutputFieldSettoSpaces(["End Step"])
N_ClearOutputFieldSettoSpaces_Node0{"The system begins processing"}:::decision
N_ClearOutputFieldSettoSpaces_Node0_action["The output field is cleared to
spaces to ensure no residual data
remains from previous processing"]:::main N_ClearOutputFieldSettoSpaces_Node0 -- Yes --> N_ClearOutputFieldSettoSpaces_Node0_action N_ClearOutputFieldSettoSpaces_Node0_action --> E_ClearOutputFieldSettoSpaces S_ClearOutputFieldSettoSpaces --> N_ClearOutputFieldSettoSpaces_Node0 N_ClearOutputFieldSettoSpaces_Node0 -- No --> E_ClearOutputFieldSettoSpaces
spaces to ensure no residual data
remains from previous processing"]:::main N_ClearOutputFieldSettoSpaces_Node0 -- Yes --> N_ClearOutputFieldSettoSpaces_Node0_action N_ClearOutputFieldSettoSpaces_Node0_action --> E_ClearOutputFieldSettoSpaces S_ClearOutputFieldSettoSpaces --> N_ClearOutputFieldSettoSpaces_Node0 N_ClearOutputFieldSettoSpaces_Node0 -- No --> E_ClearOutputFieldSettoSpaces
File: GCCCARFM.cbl
GIVEN:
The carrier ID processing routine is invoked
WHEN:
The system begins processing
THEN:
The output field is cleared to spaces to ensure no residual data remains from previous processing
β Consolidated Acceptance Criteria
- Initial setup is performed → the processing status is set to success as the default state before any validation occurs
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReturnCodetoSuccess(["Start Step"])
E_SetReturnCodetoSuccess(["End Step"])
N_SetReturnCodetoSuccess_Node0{"Initial setup is performed"}:::decision
N_SetReturnCodetoSuccess_Node0_action["The processing status is set to
success as the default state before
any validation occurs"]:::main N_SetReturnCodetoSuccess_Node0 -- Yes --> N_SetReturnCodetoSuccess_Node0_action N_SetReturnCodetoSuccess_Node0_action --> E_SetReturnCodetoSuccess S_SetReturnCodetoSuccess --> N_SetReturnCodetoSuccess_Node0 N_SetReturnCodetoSuccess_Node0 -- No --> E_SetReturnCodetoSuccess
success as the default state before
any validation occurs"]:::main N_SetReturnCodetoSuccess_Node0 -- Yes --> N_SetReturnCodetoSuccess_Node0_action N_SetReturnCodetoSuccess_Node0_action --> E_SetReturnCodetoSuccess S_SetReturnCodetoSuccess --> N_SetReturnCodetoSuccess_Node0 N_SetReturnCodetoSuccess_Node0 -- No --> E_SetReturnCodetoSuccess
File: GCCCARFM.cbl
GIVEN:
The carrier ID processing routine starts
WHEN:
Initial setup is performed
THEN:
The processing status is set to success as the default state before any validation occurs
β Consolidated Acceptance Criteria
- The input field contains only spaces or is completely empty → the system should reject the input, set the output to error indicator asterisks, mark the return code as input blank error, and exit processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsInputEqualtoSpaces(["Start Step"])
E_IsInputEqualtoSpaces(["End Step"])
N_IsInputEqualtoSpaces_Node0{"The input field contains only
spaces or is completely empty"}:::decision N_IsInputEqualtoSpaces_Node0_action["The system should reject the input,
set the output to error indicator
asterisks, mark the return code as
input blank error, and exit
processing"]:::exclusion N_IsInputEqualtoSpaces_Node0 -- Yes -->|Alternative| N_IsInputEqualtoSpaces_Node0_action N_IsInputEqualtoSpaces_Node0_action --> E_IsInputEqualtoSpaces S_IsInputEqualtoSpaces --> N_IsInputEqualtoSpaces_Node0 N_IsInputEqualtoSpaces_Node0 -- No --> E_IsInputEqualtoSpaces
spaces or is completely empty"}:::decision N_IsInputEqualtoSpaces_Node0_action["The system should reject the input,
set the output to error indicator
asterisks, mark the return code as
input blank error, and exit
processing"]:::exclusion N_IsInputEqualtoSpaces_Node0 -- Yes -->|Alternative| N_IsInputEqualtoSpaces_Node0_action N_IsInputEqualtoSpaces_Node0_action --> E_IsInputEqualtoSpaces S_IsInputEqualtoSpaces --> N_IsInputEqualtoSpaces_Node0 N_IsInputEqualtoSpaces_Node0 -- No --> E_IsInputEqualtoSpaces
File: GCCCARFM.cbl
GIVEN:
A car ID input field is provided for processing
WHEN:
The input field contains only spaces or is completely empty
THEN:
The system should reject the input, set the output to error indicator asterisks, mark the return code as input blank error, and exit processing
β Consolidated Acceptance Criteria
- The input field contains actual data and is not equal to spaces → the system should continue to the next validation step in the processing workflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinuetoNextValidation(["Start Step"])
E_ContinuetoNextValidation(["End Step"])
N_ContinuetoNextValidation_Node0{"The input field contains actual
data and is not equal to spaces"}:::decision N_ContinuetoNextValidation_Node0_action["The system should continue to the
next validation step in the
processing workflow"]:::main N_ContinuetoNextValidation_Node0 -- Yes --> N_ContinuetoNextValidation_Node0_action N_ContinuetoNextValidation_Node0_action --> E_ContinuetoNextValidation S_ContinuetoNextValidation --> N_ContinuetoNextValidation_Node0 N_ContinuetoNextValidation_Node0 -- No --> E_ContinuetoNextValidation
data and is not equal to spaces"}:::decision N_ContinuetoNextValidation_Node0_action["The system should continue to the
next validation step in the
processing workflow"]:::main N_ContinuetoNextValidation_Node0 -- Yes --> N_ContinuetoNextValidation_Node0_action N_ContinuetoNextValidation_Node0_action --> E_ContinuetoNextValidation S_ContinuetoNextValidation --> N_ContinuetoNextValidation_Node0 N_ContinuetoNextValidation_Node0 -- No --> E_ContinuetoNextValidation
File: GCCCARFM.cbl
Exclusion / Alternative Path
GIVEN:
A car ID input field is provided for processing
WHEN:
- The input field contains actual data
- Is not equal to spaces
THEN:
The system should continue to the next validation step in the processing workflow
β Consolidated Acceptance Criteria
- The system begins the leading space detection process → the space counter (TALLY) is set to zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeSpaceCountertoZero(["Start Step"])
E_InitializeSpaceCountertoZero(["End Step"])
N_InitializeSpaceCountertoZero_Node0{"The system begins the leading space
detection process"}:::decision N_InitializeSpaceCountertoZero_Node0_action["The space counter TALLY is set to
zero"]:::main N_InitializeSpaceCountertoZero_Node0 -- Yes --> N_InitializeSpaceCountertoZero_Node0_action N_InitializeSpaceCountertoZero_Node0_action --> E_InitializeSpaceCountertoZero S_InitializeSpaceCountertoZero --> N_InitializeSpaceCountertoZero_Node0 N_InitializeSpaceCountertoZero_Node0 -- No --> E_InitializeSpaceCountertoZero
detection process"}:::decision N_InitializeSpaceCountertoZero_Node0_action["The space counter TALLY is set to
zero"]:::main N_InitializeSpaceCountertoZero_Node0 -- Yes --> N_InitializeSpaceCountertoZero_Node0_action N_InitializeSpaceCountertoZero_Node0_action --> E_InitializeSpaceCountertoZero S_InitializeSpaceCountertoZero --> N_InitializeSpaceCountertoZero_Node0 N_InitializeSpaceCountertoZero_Node0 -- No --> E_InitializeSpaceCountertoZero
File: GCCCARFM.cbl
GIVEN:
A car ID input needs to be processed
WHEN:
The system begins the leading space detection process
THEN:
The space counter (TALLY) is set to zero
β Consolidated Acceptance Criteria
- The system inspects the input field for leading spaces → the total count of leading spaces is stored in the space counter
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CountLeadingSpacesinCarIDInput(["Start Step"])
E_CountLeadingSpacesinCarIDInput(["End Step"])
N_CountLeadingSpacesinCarIDInput_Node0{"The system inspects the input field
for leading spaces"}:::decision N_CountLeadingSpacesinCarIDInput_Node0_action["The total count of leading spaces
is stored in the space counter"]:::main N_CountLeadingSpacesinCarIDInput_Node0 -- Yes --> N_CountLeadingSpacesinCarIDInput_Node0_action N_CountLeadingSpacesinCarIDInput_Node0_action --> E_CountLeadingSpacesinCarIDInput S_CountLeadingSpacesinCarIDInput --> N_CountLeadingSpacesinCarIDInput_Node0 N_CountLeadingSpacesinCarIDInput_Node0 -- No --> E_CountLeadingSpacesinCarIDInput
for leading spaces"}:::decision N_CountLeadingSpacesinCarIDInput_Node0_action["The total count of leading spaces
is stored in the space counter"]:::main N_CountLeadingSpacesinCarIDInput_Node0 -- Yes --> N_CountLeadingSpacesinCarIDInput_Node0_action N_CountLeadingSpacesinCarIDInput_Node0_action --> E_CountLeadingSpacesinCarIDInput S_CountLeadingSpacesinCarIDInput --> N_CountLeadingSpacesinCarIDInput_Node0 N_CountLeadingSpacesinCarIDInput_Node0 -- No --> E_CountLeadingSpacesinCarIDInput
File: GCCCARFM.cbl
GIVEN:
A car ID input field contains data with potential leading spaces
WHEN:
The system inspects the input field for leading spaces
THEN:
The total count of leading spaces is stored in the space counter
β Consolidated Acceptance Criteria
- The system needs to identify the first non-space character position → one is added to the space count to determine the starting position for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Add1toCountertoGetFirstNonSpacePosition(["Start Step"])
E_Add1toCountertoGetFirstNonSpacePosition(["End Step"])
N_Add1toCountertoGetFirstNonSpacePosition_Node0{"The system needs to identify the
first non-space character position"}:::decision N_Add1toCountertoGetFirstNonSpacePosition_Node0_action["One is added to the space count to
determine the starting position for
processing"]:::main N_Add1toCountertoGetFirstNonSpacePosition_Node0 -- Yes --> N_Add1toCountertoGetFirstNonSpacePosition_Node0_action N_Add1toCountertoGetFirstNonSpacePosition_Node0_action --> E_Add1toCountertoGetFirstNonSpacePosition S_Add1toCountertoGetFirstNonSpacePosition --> N_Add1toCountertoGetFirstNonSpacePosition_Node0 N_Add1toCountertoGetFirstNonSpacePosition_Node0 -- No --> E_Add1toCountertoGetFirstNonSpacePosition
first non-space character position"}:::decision N_Add1toCountertoGetFirstNonSpacePosition_Node0_action["One is added to the space count to
determine the starting position for
processing"]:::main N_Add1toCountertoGetFirstNonSpacePosition_Node0 -- Yes --> N_Add1toCountertoGetFirstNonSpacePosition_Node0_action N_Add1toCountertoGetFirstNonSpacePosition_Node0_action --> E_Add1toCountertoGetFirstNonSpacePosition S_Add1toCountertoGetFirstNonSpacePosition --> N_Add1toCountertoGetFirstNonSpacePosition_Node0 N_Add1toCountertoGetFirstNonSpacePosition_Node0 -- No --> E_Add1toCountertoGetFirstNonSpacePosition
File: GCCCARFM.cbl
GIVEN:
The number of leading spaces has been counted
WHEN:
The system needs to identify the first non-space character position
THEN:
One is added to the space count to determine the starting position for processing
β Consolidated Acceptance Criteria
- The system begins to extract alphabetic characters from the carrier ID → the prefix position counter is initialized to 1 to track the first position in the output prefix
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Initializeprefixpositioncounterto1(["Start Step"])
E_Initializeprefixpositioncounterto1(["End Step"])
N_Initializeprefixpositioncounterto1_Node0{"The system begins to extract
alphabetic characters from the
carrier ID"}:::decision N_Initializeprefixpositioncounterto1_Node0_action["The prefix position counter is
initialized to 1 to track the first
position in the output prefix"]:::main N_Initializeprefixpositioncounterto1_Node0 -- Yes --> N_Initializeprefixpositioncounterto1_Node0_action N_Initializeprefixpositioncounterto1_Node0_action --> E_Initializeprefixpositioncounterto1 S_Initializeprefixpositioncounterto1 --> N_Initializeprefixpositioncounterto1_Node0 N_Initializeprefixpositioncounterto1_Node0 -- No --> E_Initializeprefixpositioncounterto1
alphabetic characters from the
carrier ID"}:::decision N_Initializeprefixpositioncounterto1_Node0_action["The prefix position counter is
initialized to 1 to track the first
position in the output prefix"]:::main N_Initializeprefixpositioncounterto1_Node0 -- Yes --> N_Initializeprefixpositioncounterto1_Node0_action N_Initializeprefixpositioncounterto1_Node0_action --> E_Initializeprefixpositioncounterto1 S_Initializeprefixpositioncounterto1 --> N_Initializeprefixpositioncounterto1_Node0 N_Initializeprefixpositioncounterto1_Node0 -- No --> E_Initializeprefixpositioncounterto1
File: GCCCARFM.cbl
GIVEN:
The alphabetic prefix extraction process is starting
WHEN:
The system begins to extract alphabetic characters from the carrier ID
THEN:
The prefix position counter is initialized to 1 to track the first position in the output prefix
β Consolidated Acceptance Criteria
- The system needs to extract alphabetic prefix characters → the extraction starts from the first non-space character position (TALLY position) in the input
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Startfromfirstnonspacecharacterposition(["Start Step"])
E_Startfromfirstnonspacecharacterposition(["End Step"])
N_Startfromfirstnonspacecharacterposition_Node0{"The system needs to extract
alphabetic prefix characters"}:::decision N_Startfromfirstnonspacecharacterposition_Node0_action["The extraction starts from the
first non-space character position
TALLY position in the input"]:::main N_Startfromfirstnonspacecharacterposition_Node0 -- Yes --> N_Startfromfirstnonspacecharacterposition_Node0_action N_Startfromfirstnonspacecharacterposition_Node0_action --> E_Startfromfirstnonspacecharacterposition S_Startfromfirstnonspacecharacterposition --> N_Startfromfirstnonspacecharacterposition_Node0 N_Startfromfirstnonspacecharacterposition_Node0 -- No --> E_Startfromfirstnonspacecharacterposition
alphabetic prefix characters"}:::decision N_Startfromfirstnonspacecharacterposition_Node0_action["The extraction starts from the
first non-space character position
TALLY position in the input"]:::main N_Startfromfirstnonspacecharacterposition_Node0 -- Yes --> N_Startfromfirstnonspacecharacterposition_Node0_action N_Startfromfirstnonspacecharacterposition_Node0_action --> E_Startfromfirstnonspacecharacterposition S_Startfromfirstnonspacecharacterposition --> N_Startfromfirstnonspacecharacterposition_Node0 N_Startfromfirstnonspacecharacterposition_Node0 -- No --> E_Startfromfirstnonspacecharacterposition
File: GCCCARFM.cbl
GIVEN:
The input carrier ID may contain leading spaces
WHEN:
The system needs to extract alphabetic prefix characters
THEN:
The extraction starts from the first non-space character position (TALLY position) in the input
β Consolidated Acceptance Criteria
- If the character for alphabetic prefix extraction → the character is accepted if it is alphabetic, or extraction stops if it is not alphabetic, is a space, or input has ended
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Checkcurrentcharacter(["Start Step"])
E_Checkcurrentcharacter(["End Step"])
N_Checkcurrentcharacter_Node0{"The system evaluates the character
for alphabetic prefix extraction"}:::decision N_Checkcurrentcharacter_Node0_action["The character is accepted if it is
alphabetic, or extraction stops if
it is not alphabetic, is a space, or
input has ended"]:::main N_Checkcurrentcharacter_Node0 -- Yes --> N_Checkcurrentcharacter_Node0_action N_Checkcurrentcharacter_Node0_action --> E_Checkcurrentcharacter S_Checkcurrentcharacter --> N_Checkcurrentcharacter_Node0 N_Checkcurrentcharacter_Node0 -- No --> E_Checkcurrentcharacter
for alphabetic prefix extraction"}:::decision N_Checkcurrentcharacter_Node0_action["The character is accepted if it is
alphabetic, or extraction stops if
it is not alphabetic, is a space, or
input has ended"]:::main N_Checkcurrentcharacter_Node0 -- Yes --> N_Checkcurrentcharacter_Node0_action N_Checkcurrentcharacter_Node0_action --> E_Checkcurrentcharacter S_Checkcurrentcharacter --> N_Checkcurrentcharacter_Node0 N_Checkcurrentcharacter_Node0 -- No --> E_Checkcurrentcharacter
File: GCCCARFM.cbl
GIVEN:
A character at the current position in the carrier ID input
WHEN:
The system evaluates the character for alphabetic prefix extraction
THEN:
The character is accepted if it is alphabetic, or extraction stops if it is not alphabetic, is a space, or input has ended
β Consolidated Acceptance Criteria
- The character needs to be included in the output prefix → the alphabetic character is copied to the current prefix position in the output initials section
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Copyalphabeticcharactertooutputprefix(["Start Step"])
E_Copyalphabeticcharactertooutputprefix(["End Step"])
N_Copyalphabeticcharactertooutputprefix_Node0{"The character needs to be included
in the output prefix"}:::decision N_Copyalphabeticcharactertooutputprefix_Node0_action["The alphabetic character is copied
to the current prefix position in
the output initials section"]:::main N_Copyalphabeticcharactertooutputprefix_Node0 -- Yes --> N_Copyalphabeticcharactertooutputprefix_Node0_action N_Copyalphabeticcharactertooutputprefix_Node0_action --> E_Copyalphabeticcharactertooutputprefix S_Copyalphabeticcharactertooutputprefix --> N_Copyalphabeticcharactertooutputprefix_Node0 N_Copyalphabeticcharactertooutputprefix_Node0 -- No --> E_Copyalphabeticcharactertooutputprefix
in the output prefix"}:::decision N_Copyalphabeticcharactertooutputprefix_Node0_action["The alphabetic character is copied
to the current prefix position in
the output initials section"]:::main N_Copyalphabeticcharactertooutputprefix_Node0 -- Yes --> N_Copyalphabeticcharactertooutputprefix_Node0_action N_Copyalphabeticcharactertooutputprefix_Node0_action --> E_Copyalphabeticcharactertooutputprefix S_Copyalphabeticcharactertooutputprefix --> N_Copyalphabeticcharactertooutputprefix_Node0 N_Copyalphabeticcharactertooutputprefix_Node0 -- No --> E_Copyalphabeticcharactertooutputprefix
File: GCCCARFM.cbl
GIVEN:
A character has been validated as alphabetic
WHEN:
The character needs to be included in the output prefix
THEN:
The alphabetic character is copied to the current prefix position in the output initials section
β Consolidated Acceptance Criteria
- The system continues alphabetic prefix extraction → the input position counter is incremented to move to the next character in the input
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Movetonextcharacterposition(["Start Step"])
E_Movetonextcharacterposition(["End Step"])
N_Movetonextcharacterposition_Node0{"The system continues alphabetic
prefix extraction"}:::decision N_Movetonextcharacterposition_Node0_action["The input position counter is
incremented to move to the next
character in the input"]:::main N_Movetonextcharacterposition_Node0 -- Yes --> N_Movetonextcharacterposition_Node0_action N_Movetonextcharacterposition_Node0_action --> E_Movetonextcharacterposition S_Movetonextcharacterposition --> N_Movetonextcharacterposition_Node0 N_Movetonextcharacterposition_Node0 -- No --> E_Movetonextcharacterposition
prefix extraction"}:::decision N_Movetonextcharacterposition_Node0_action["The input position counter is
incremented to move to the next
character in the input"]:::main N_Movetonextcharacterposition_Node0 -- Yes --> N_Movetonextcharacterposition_Node0_action N_Movetonextcharacterposition_Node0_action --> E_Movetonextcharacterposition S_Movetonextcharacterposition --> N_Movetonextcharacterposition_Node0 N_Movetonextcharacterposition_Node0 -- No --> E_Movetonextcharacterposition
File: GCCCARFM.cbl
GIVEN:
An alphabetic character has been processed and copied to output
WHEN:
The system continues alphabetic prefix extraction
THEN:
The input position counter is incremented to move to the next character in the input
β Consolidated Acceptance Criteria
- The system prepares for the next alphabetic character → the prefix position counter is incremented to point to the next position in the output prefix
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Incrementprefixpositioncounter(["Start Step"])
E_Incrementprefixpositioncounter(["End Step"])
N_Incrementprefixpositioncounter_Node0{"The system prepares for the next
alphabetic character"}:::decision N_Incrementprefixpositioncounter_Node0_action["The prefix position counter is
incremented to point to the next
position in the output prefix"]:::main N_Incrementprefixpositioncounter_Node0 -- Yes --> N_Incrementprefixpositioncounter_Node0_action N_Incrementprefixpositioncounter_Node0_action --> E_Incrementprefixpositioncounter S_Incrementprefixpositioncounter --> N_Incrementprefixpositioncounter_Node0 N_Incrementprefixpositioncounter_Node0 -- No --> E_Incrementprefixpositioncounter
alphabetic character"}:::decision N_Incrementprefixpositioncounter_Node0_action["The prefix position counter is
incremented to point to the next
position in the output prefix"]:::main N_Incrementprefixpositioncounter_Node0 -- Yes --> N_Incrementprefixpositioncounter_Node0_action N_Incrementprefixpositioncounter_Node0_action --> E_Incrementprefixpositioncounter S_Incrementprefixpositioncounter --> N_Incrementprefixpositioncounter_Node0 N_Incrementprefixpositioncounter_Node0 -- No --> E_Incrementprefixpositioncounter
File: GCCCARFM.cbl
GIVEN:
An alphabetic character has been copied to the current prefix position
WHEN:
The system prepares for the next alphabetic character
THEN:
The prefix position counter is incremented to point to the next position in the output prefix
β Consolidated Acceptance Criteria
- A decision is needed whether to continue or stop extraction → extraction continues if prefix length is less than 4, input position is within bounds (β€20), next character is alphabetic, next character is not a space, and prefix position counter is within limit (β€4), otherwise extraction stops
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Continueextraction(["Start Step"])
E_Continueextraction(["End Step"])
N_Continueextraction_Node0{"A decision is needed whether to
continue or stop extraction"}:::decision N_Continueextraction_Node0_action["Extraction continues if prefix
length is less than 4, input
position is within bounds 20, next
character is alphabetic, next
character is not a space, and prefix
position counter is within limit 4,
otherwise extraction stops"]:::main N_Continueextraction_Node0 -- Yes --> N_Continueextraction_Node0_action N_Continueextraction_Node0_action --> E_Continueextraction S_Continueextraction --> N_Continueextraction_Node0 N_Continueextraction_Node0 -- No --> E_Continueextraction
continue or stop extraction"}:::decision N_Continueextraction_Node0_action["Extraction continues if prefix
length is less than 4, input
position is within bounds 20, next
character is alphabetic, next
character is not a space, and prefix
position counter is within limit 4,
otherwise extraction stops"]:::main N_Continueextraction_Node0 -- Yes --> N_Continueextraction_Node0_action N_Continueextraction_Node0_action --> E_Continueextraction S_Continueextraction --> N_Continueextraction_Node0 N_Continueextraction_Node0 -- No --> E_Continueextraction
File: GCCCARFM.cbl
GIVEN:
The system is in the middle of alphabetic prefix extraction
WHEN:
A decision is needed whether to continue or stop extraction
THEN:
Extraction continues if prefix length is less than 4, input position is within bounds (β€20), next character is alphabetic, next character is not a space, and prefix position counter is within limit (β€4), otherwise extraction stops
β Consolidated Acceptance Criteria
- Either 4 alphabetic characters have been extracted, or a non-alphabetic character is encountered, or a space is found, or the end of input is reached → the alphabetic prefix extraction process is completed and control moves to the next processing phase
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Completeprefixextraction(["Start Step"])
E_Completeprefixextraction(["End Step"])
N_Completeprefixextraction_Node0{"Either 4 alphabetic characters have
been extracted, or a non-alphabetic
character is encountered, or a space
is found, or the end of input is
reached"}:::decision N_Completeprefixextraction_Node0_action["The alphabetic prefix extraction
process is completed and control
moves to the next processing phase"]:::main N_Completeprefixextraction_Node0 -- Yes --> N_Completeprefixextraction_Node0_action N_Completeprefixextraction_Node0_action --> E_Completeprefixextraction S_Completeprefixextraction --> N_Completeprefixextraction_Node0 N_Completeprefixextraction_Node0 -- No --> E_Completeprefixextraction
been extracted, or a non-alphabetic
character is encountered, or a space
is found, or the end of input is
reached"}:::decision N_Completeprefixextraction_Node0_action["The alphabetic prefix extraction
process is completed and control
moves to the next processing phase"]:::main N_Completeprefixextraction_Node0 -- Yes --> N_Completeprefixextraction_Node0_action N_Completeprefixextraction_Node0_action --> E_Completeprefixextraction S_Completeprefixextraction --> N_Completeprefixextraction_Node0 N_Completeprefixextraction_Node0 -- No --> E_Completeprefixextraction
File: GCCCARFM.cbl
GIVEN:
The alphabetic prefix extraction has reached a stopping condition
WHEN:
Either 4 alphabetic characters have been extracted, or a non-alphabetic character is encountered, or a space is found, or the end of input is reached
THEN:
- The alphabetic prefix extraction process is completed
- Control moves to the next processing phase
β Consolidated Acceptance Criteria
- The current position counter exceeds 20 → processing should recognize end of input has been reached
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CharacterPositionInputLength(["Start Step"])
E_CharacterPositionInputLength(["End Step"])
N_CharacterPositionInputLength_Node0{"The current position counter
exceeds 20"}:::decision N_CharacterPositionInputLength_Node0_action["Processing should recognize end of
input has been reached"]:::main N_CharacterPositionInputLength_Node0 -- Yes --> N_CharacterPositionInputLength_Node0_action N_CharacterPositionInputLength_Node0_action --> E_CharacterPositionInputLength S_CharacterPositionInputLength --> N_CharacterPositionInputLength_Node0 N_CharacterPositionInputLength_Node0 -- No --> E_CharacterPositionInputLength
exceeds 20"}:::decision N_CharacterPositionInputLength_Node0_action["Processing should recognize end of
input has been reached"]:::main N_CharacterPositionInputLength_Node0 -- Yes --> N_CharacterPositionInputLength_Node0_action N_CharacterPositionInputLength_Node0_action --> E_CharacterPositionInputLength S_CharacterPositionInputLength --> N_CharacterPositionInputLength_Node0 N_CharacterPositionInputLength_Node0 -- No --> E_CharacterPositionInputLength
File: GCCCARFM.cbl
GIVEN:
A current position counter (WS-I1) and input field with maximum length of 20 characters
WHEN:
The current position counter exceeds 20
THEN:
Processing should recognize end of input has been reached
β Consolidated Acceptance Criteria
- The character is alphabetic → the character should be accepted as part of the carrier ID prefix
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CharacterisAlphabetic(["Start Step"])
E_CharacterisAlphabetic(["End Step"])
N_CharacterisAlphabetic_Node0{"The character is alphabetic"}:::decision
N_CharacterisAlphabetic_Node0_action["The character should be accepted as
part of the carrier ID prefix"]:::main N_CharacterisAlphabetic_Node0 -- Yes --> N_CharacterisAlphabetic_Node0_action N_CharacterisAlphabetic_Node0_action --> E_CharacterisAlphabetic S_CharacterisAlphabetic --> N_CharacterisAlphabetic_Node0 N_CharacterisAlphabetic_Node0 -- No --> E_CharacterisAlphabetic
part of the carrier ID prefix"]:::main N_CharacterisAlphabetic_Node0 -- Yes --> N_CharacterisAlphabetic_Node0_action N_CharacterisAlphabetic_Node0_action --> E_CharacterisAlphabetic S_CharacterisAlphabetic --> N_CharacterisAlphabetic_Node0 N_CharacterisAlphabetic_Node0 -- No --> E_CharacterisAlphabetic
File: GCCCARFM.cbl
GIVEN:
A character at the current input position
WHEN:
The character is alphabetic
THEN:
The character should be accepted as part of the carrier ID prefix
β Consolidated Acceptance Criteria
- The character is a space → the character should be recognized as a separator or terminator
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CharacterisSpace(["Start Step"])
E_CharacterisSpace(["End Step"])
N_CharacterisSpace_Node0{"The character is a space"}:::decision
N_CharacterisSpace_Node0_action["The character should be recognized
as a separator or terminator"]:::main N_CharacterisSpace_Node0 -- Yes --> N_CharacterisSpace_Node0_action N_CharacterisSpace_Node0_action --> E_CharacterisSpace S_CharacterisSpace --> N_CharacterisSpace_Node0 N_CharacterisSpace_Node0 -- No --> E_CharacterisSpace
as a separator or terminator"]:::main N_CharacterisSpace_Node0 -- Yes --> N_CharacterisSpace_Node0_action N_CharacterisSpace_Node0_action --> E_CharacterisSpace S_CharacterisSpace --> N_CharacterisSpace_Node0 N_CharacterisSpace_Node0 -- No --> E_CharacterisSpace
File: GCCCARFM.cbl
Exclusion / Alternative Path
GIVEN:
A character at the current input position that is not alphabetic
WHEN:
The character is a space
THEN:
The character should be recognized as a separator or terminator
β Consolidated Acceptance Criteria
- The prefix length counter exceeds 4 characters → the maximum allowed prefix length has been reached
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrefixLengthExceeded4(["Start Step"])
E_PrefixLengthExceeded4(["End Step"])
N_PrefixLengthExceeded4_Node0{"The prefix length counter exceeds 4
characters"}:::decision N_PrefixLengthExceeded4_Node0_action["The maximum allowed prefix length
has been reached"]:::main N_PrefixLengthExceeded4_Node0 -- Yes --> N_PrefixLengthExceeded4_Node0_action N_PrefixLengthExceeded4_Node0_action --> E_PrefixLengthExceeded4 S_PrefixLengthExceeded4 --> N_PrefixLengthExceeded4_Node0 N_PrefixLengthExceeded4_Node0 -- No --> E_PrefixLengthExceeded4
characters"}:::decision N_PrefixLengthExceeded4_Node0_action["The maximum allowed prefix length
has been reached"]:::main N_PrefixLengthExceeded4_Node0 -- Yes --> N_PrefixLengthExceeded4_Node0_action N_PrefixLengthExceeded4_Node0_action --> E_PrefixLengthExceeded4 S_PrefixLengthExceeded4 --> N_PrefixLengthExceeded4_Node0 N_PrefixLengthExceeded4_Node0 -- No --> E_PrefixLengthExceeded4
File: GCCCARFM.cbl
GIVEN:
An alphabetic character found during prefix extraction and current prefix length counter (WS-I2)
WHEN:
The prefix length counter exceeds 4 characters
THEN:
The maximum allowed prefix length has been reached
β Consolidated Acceptance Criteria
- The character is alphabetic and prefix length is within limits → the character should be moved to the output prefix section and position counters incremented
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AlphabeticCharacterFound(["Start Step"])
E_AlphabeticCharacterFound(["End Step"])
N_AlphabeticCharacterFound_Node0{"The character is alphabetic and
prefix length is within limits"}:::decision N_AlphabeticCharacterFound_Node0_action["The character should be moved to
the output prefix section and
position counters incremented"]:::main N_AlphabeticCharacterFound_Node0 -- Yes --> N_AlphabeticCharacterFound_Node0_action N_AlphabeticCharacterFound_Node0_action --> E_AlphabeticCharacterFound S_AlphabeticCharacterFound --> N_AlphabeticCharacterFound_Node0 N_AlphabeticCharacterFound_Node0 -- No --> E_AlphabeticCharacterFound
prefix length is within limits"}:::decision N_AlphabeticCharacterFound_Node0_action["The character should be moved to
the output prefix section and
position counters incremented"]:::main N_AlphabeticCharacterFound_Node0 -- Yes --> N_AlphabeticCharacterFound_Node0_action N_AlphabeticCharacterFound_Node0_action --> E_AlphabeticCharacterFound S_AlphabeticCharacterFound --> N_AlphabeticCharacterFound_Node0 N_AlphabeticCharacterFound_Node0 -- No --> E_AlphabeticCharacterFound
File: GCCCARFM.cbl
Exclusion / Alternative Path
GIVEN:
An alphabetic character at current position and prefix length not exceeding 4
WHEN:
- The character is alphabetic
- Prefix length is within limits
THEN:
- The character should be moved to the output prefix section
- Position counters incremented
β Consolidated Acceptance Criteria
- The character is a space → the current section processing should terminate
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpaceCharacterFound(["Start Step"])
E_SpaceCharacterFound(["End Step"])
N_SpaceCharacterFound_Node0{"The character is a space"}:::decision
N_SpaceCharacterFound_Node0_action["The current section processing
should terminate"]:::exclusion N_SpaceCharacterFound_Node0 -- Yes -->|Alternative| N_SpaceCharacterFound_Node0_action N_SpaceCharacterFound_Node0_action --> E_SpaceCharacterFound S_SpaceCharacterFound --> N_SpaceCharacterFound_Node0 N_SpaceCharacterFound_Node0 -- No --> E_SpaceCharacterFound
should terminate"]:::exclusion N_SpaceCharacterFound_Node0 -- Yes -->|Alternative| N_SpaceCharacterFound_Node0_action N_SpaceCharacterFound_Node0_action --> E_SpaceCharacterFound S_SpaceCharacterFound --> N_SpaceCharacterFound_Node0 N_SpaceCharacterFound_Node0 -- No --> E_SpaceCharacterFound
File: GCCCARFM.cbl
GIVEN:
A space character encountered during input processing
WHEN:
The character is a space
THEN:
The current section processing should terminate
β Consolidated Acceptance Criteria
- The character is encountered during prefix processing → the prefix extraction should terminate as a non-alphabetic character indicates end of prefix section
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NonAlphabeticCharacterFound(["Start Step"])
E_NonAlphabeticCharacterFound(["End Step"])
N_NonAlphabeticCharacterFound_Node0{"The character is encountered during
prefix processing"}:::decision N_NonAlphabeticCharacterFound_Node0_action["The prefix extraction should
terminate as a non-alphabetic
character indicates end of prefix
section"]:::exclusion N_NonAlphabeticCharacterFound_Node0 -- Yes -->|Alternative| N_NonAlphabeticCharacterFound_Node0_action N_NonAlphabeticCharacterFound_Node0_action --> E_NonAlphabeticCharacterFound S_NonAlphabeticCharacterFound --> N_NonAlphabeticCharacterFound_Node0 N_NonAlphabeticCharacterFound_Node0 -- No --> E_NonAlphabeticCharacterFound
prefix processing"}:::decision N_NonAlphabeticCharacterFound_Node0_action["The prefix extraction should
terminate as a non-alphabetic
character indicates end of prefix
section"]:::exclusion N_NonAlphabeticCharacterFound_Node0 -- Yes -->|Alternative| N_NonAlphabeticCharacterFound_Node0_action N_NonAlphabeticCharacterFound_Node0_action --> E_NonAlphabeticCharacterFound S_NonAlphabeticCharacterFound --> N_NonAlphabeticCharacterFound_Node0 N_NonAlphabeticCharacterFound_Node0 -- No --> E_NonAlphabeticCharacterFound
File: GCCCARFM.cbl
GIVEN:
A character that is neither alphabetic nor a space
WHEN:
The character is encountered during prefix processing
THEN:
The prefix extraction should terminate as a non-alphabetic character indicates end of prefix section
β Consolidated Acceptance Criteria
- An additional alphabetic character is encountered after reaching 4 characters → prefix extraction should stop as maximum length has been reached
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MaximumPrefixLengthReached(["Start Step"])
E_MaximumPrefixLengthReached(["End Step"])
N_MaximumPrefixLengthReached_Node0{"An additional alphabetic character
is encountered after reaching 4
characters"}:::decision N_MaximumPrefixLengthReached_Node0_action["Prefix extraction should stop as
maximum length has been reached"]:::main N_MaximumPrefixLengthReached_Node0 -- Yes --> N_MaximumPrefixLengthReached_Node0_action N_MaximumPrefixLengthReached_Node0_action --> E_MaximumPrefixLengthReached S_MaximumPrefixLengthReached --> N_MaximumPrefixLengthReached_Node0 N_MaximumPrefixLengthReached_Node0 -- No --> E_MaximumPrefixLengthReached
is encountered after reaching 4
characters"}:::decision N_MaximumPrefixLengthReached_Node0_action["Prefix extraction should stop as
maximum length has been reached"]:::main N_MaximumPrefixLengthReached_Node0 -- Yes --> N_MaximumPrefixLengthReached_Node0_action N_MaximumPrefixLengthReached_Node0_action --> E_MaximumPrefixLengthReached S_MaximumPrefixLengthReached --> N_MaximumPrefixLengthReached_Node0 N_MaximumPrefixLengthReached_Node0 -- No --> E_MaximumPrefixLengthReached
File: GCCCARFM.cbl
GIVEN:
Alphabetic characters being processed for prefix and length counter at 4
WHEN:
An additional alphabetic character is encountered after reaching 4 characters
THEN:
Prefix extraction should stop as maximum length has been reached
β Consolidated Acceptance Criteria
- The extraction process reaches position 21 or beyond in the input field → the carrier ID should be marked as invalid with error indicator and output should be filled with asterisks
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Checkifextractionexceededinputbounds(["Start Step"])
E_Checkifextractionexceededinputbounds(["End Step"])
N_Checkifextractionexceededinputbounds_Node0{"The extraction process reaches
position 21 or beyond in the input
field"}:::decision N_Checkifextractionexceededinputbounds_Node0_action["The carrier ID should be marked as
invalid with error indicator and
output should be filled with
asterisks"]:::main N_Checkifextractionexceededinputbounds_Node0 -- Yes --> N_Checkifextractionexceededinputbounds_Node0_action N_Checkifextractionexceededinputbounds_Node0_action --> E_Checkifextractionexceededinputbounds S_Checkifextractionexceededinputbounds --> N_Checkifextractionexceededinputbounds_Node0 N_Checkifextractionexceededinputbounds_Node0 -- No --> E_Checkifextractionexceededinputbounds
position 21 or beyond in the input
field"}:::decision N_Checkifextractionexceededinputbounds_Node0_action["The carrier ID should be marked as
invalid with error indicator and
output should be filled with
asterisks"]:::main N_Checkifextractionexceededinputbounds_Node0 -- Yes --> N_Checkifextractionexceededinputbounds_Node0_action N_Checkifextractionexceededinputbounds_Node0_action --> E_Checkifextractionexceededinputbounds S_Checkifextractionexceededinputbounds --> N_Checkifextractionexceededinputbounds_Node0 N_Checkifextractionexceededinputbounds_Node0 -- No --> E_Checkifextractionexceededinputbounds
File: GCCCARFM.cbl
GIVEN:
A carrier ID input is being processed for alphabetic prefix extraction
WHEN:
The extraction process reaches position 21 or beyond in the input field
THEN:
- The carrier id should be marked as invalid with error indicator
- Output should be filled with asterisks
β Consolidated Acceptance Criteria
- No alphabetic characters are found in the expected prefix position (WS-I2 equals 1) → the carrier ID should be marked as invalid with error indicator and output should be filled with asterisks
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Checkifnoalphabeticcharactersfound(["Start Step"])
E_Checkifnoalphabeticcharactersfound(["End Step"])
N_Checkifnoalphabeticcharactersfound_Node0{"No alphabetic characters are found
in the expected prefix position
WS-I2 equals 1"}:::decision N_Checkifnoalphabeticcharactersfound_Node0_action["The carrier ID should be marked as
invalid with error indicator and
output should be filled with
asterisks"]:::main N_Checkifnoalphabeticcharactersfound_Node0 -- Yes --> N_Checkifnoalphabeticcharactersfound_Node0_action N_Checkifnoalphabeticcharactersfound_Node0_action --> E_Checkifnoalphabeticcharactersfound S_Checkifnoalphabeticcharactersfound --> N_Checkifnoalphabeticcharactersfound_Node0 N_Checkifnoalphabeticcharactersfound_Node0 -- No --> E_Checkifnoalphabeticcharactersfound
in the expected prefix position
WS-I2 equals 1"}:::decision N_Checkifnoalphabeticcharactersfound_Node0_action["The carrier ID should be marked as
invalid with error indicator and
output should be filled with
asterisks"]:::main N_Checkifnoalphabeticcharactersfound_Node0 -- Yes --> N_Checkifnoalphabeticcharactersfound_Node0_action N_Checkifnoalphabeticcharactersfound_Node0_action --> E_Checkifnoalphabeticcharactersfound S_Checkifnoalphabeticcharactersfound --> N_Checkifnoalphabeticcharactersfound_Node0 N_Checkifnoalphabeticcharactersfound_Node0 -- No --> E_Checkifnoalphabeticcharactersfound
File: GCCCARFM.cbl
GIVEN:
A carrier ID input is being processed for alphabetic prefix extraction
WHEN:
No alphabetic characters are found in the expected prefix position (WS-I2 equals 1)
THEN:
- The carrier id should be marked as invalid with error indicator
- Output should be filled with asterisks
β Consolidated Acceptance Criteria
- The prefix contains more than 4 alphabetic characters (WS-I2 > 4) → the system should validate the character immediately following the 4th alphabetic character
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Checkifprefixexceeds4characters(["Start Step"])
E_Checkifprefixexceeds4characters(["End Step"])
N_Checkifprefixexceeds4characters_Node0{"The prefix contains more than 4
alphabetic characters WS-I2 4"}:::decision N_Checkifprefixexceeds4characters_Node0_action["The system should validate the
character immediately following the
4th alphabetic character"]:::main N_Checkifprefixexceeds4characters_Node0 -- Yes --> N_Checkifprefixexceeds4characters_Node0_action N_Checkifprefixexceeds4characters_Node0_action --> E_Checkifprefixexceeds4characters S_Checkifprefixexceeds4characters --> N_Checkifprefixexceeds4characters_Node0 N_Checkifprefixexceeds4characters_Node0 -- No --> E_Checkifprefixexceeds4characters
alphabetic characters WS-I2 4"}:::decision N_Checkifprefixexceeds4characters_Node0_action["The system should validate the
character immediately following the
4th alphabetic character"]:::main N_Checkifprefixexceeds4characters_Node0 -- Yes --> N_Checkifprefixexceeds4characters_Node0_action N_Checkifprefixexceeds4characters_Node0_action --> E_Checkifprefixexceeds4characters S_Checkifprefixexceeds4characters --> N_Checkifprefixexceeds4characters_Node0 N_Checkifprefixexceeds4characters_Node0 -- No --> E_Checkifprefixexceeds4characters
File: GCCCARFM.cbl
GIVEN:
A carrier ID input is being processed and alphabetic prefix extraction has found more than 4 characters
WHEN:
The prefix contains more than 4 alphabetic characters (WS-I2 > 4)
THEN:
The system should validate the character immediately following the 4th alphabetic character
β Consolidated Acceptance Criteria
- The validation of the character after the 4th alphabetic position is performed → the carrier ID should be marked as invalid with error indicator and output should be filled with asterisks
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Checkifcharacterafter4thpositionisvalid(["Start Step"])
E_Checkifcharacterafter4thpositionisvalid(["End Step"])
N_Checkifcharacterafter4thpositionisvalid_Node0{"The validation of the character
after the 4th alphabetic position is
performed"}:::decision N_Checkifcharacterafter4thpositionisvalid_Node0_action["The carrier ID should be marked as
invalid with error indicator and
output should be filled with
asterisks"]:::main N_Checkifcharacterafter4thpositionisvalid_Node0 -- Yes --> N_Checkifcharacterafter4thpositionisvalid_Node0_action N_Checkifcharacterafter4thpositionisvalid_Node0_action --> E_Checkifcharacterafter4thpositionisvalid S_Checkifcharacterafter4thpositionisvalid --> N_Checkifcharacterafter4thpositionisvalid_Node0 N_Checkifcharacterafter4thpositionisvalid_Node0 -- No --> E_Checkifcharacterafter4thpositionisvalid
after the 4th alphabetic position is
performed"}:::decision N_Checkifcharacterafter4thpositionisvalid_Node0_action["The carrier ID should be marked as
invalid with error indicator and
output should be filled with
asterisks"]:::main N_Checkifcharacterafter4thpositionisvalid_Node0 -- Yes --> N_Checkifcharacterafter4thpositionisvalid_Node0_action N_Checkifcharacterafter4thpositionisvalid_Node0_action --> E_Checkifcharacterafter4thpositionisvalid S_Checkifcharacterafter4thpositionisvalid --> N_Checkifcharacterafter4thpositionisvalid_Node0 N_Checkifcharacterafter4thpositionisvalid_Node0 -- No --> E_Checkifcharacterafter4thpositionisvalid
File: GCCCARFM.cbl
Exclusion / Alternative Path
GIVEN:
A carrier ID input has more than 4 alphabetic characters in the prefix AND the current position character is not numeric AND the current position character is not a space
WHEN:
The validation of the character after the 4th alphabetic position is performed
THEN:
- The carrier id should be marked as invalid with error indicator
- Output should be filled with asterisks
β Consolidated Acceptance Criteria
- The position counter exceeds 20 characters:
- the system encounters a non-alphabetic character
- encounters a space
- has already extracted 4 alphabetic characters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PositionCounterInputLengthLimit(["Start Step"])
E_PositionCounterInputLengthLimit(["End Step"])
N_PositionCounterInputLengthLimit_Node0{"The position counter exceeds 20
characters OR the system encounters
a non-alphabetic character OR
encounters a space OR has already
extracted 4 alphabetic characters"}:::decision N_PositionCounterInputLengthLimit_Node0_action["The alphabetic character extraction
process stops and the system
proceeds to validation of the
extracted initials"]:::main N_PositionCounterInputLengthLimit_Node0 -- Yes --> N_PositionCounterInputLengthLimit_Node0_action N_PositionCounterInputLengthLimit_Node0_action --> E_PositionCounterInputLengthLimit S_PositionCounterInputLengthLimit --> N_PositionCounterInputLengthLimit_Node0 N_PositionCounterInputLengthLimit_Node0 -- No --> E_PositionCounterInputLengthLimit
characters OR the system encounters
a non-alphabetic character OR
encounters a space OR has already
extracted 4 alphabetic characters"}:::decision N_PositionCounterInputLengthLimit_Node0_action["The alphabetic character extraction
process stops and the system
proceeds to validation of the
extracted initials"]:::main N_PositionCounterInputLengthLimit_Node0 -- Yes --> N_PositionCounterInputLengthLimit_Node0_action N_PositionCounterInputLengthLimit_Node0_action --> E_PositionCounterInputLengthLimit S_PositionCounterInputLengthLimit --> N_PositionCounterInputLengthLimit_Node0 N_PositionCounterInputLengthLimit_Node0 -- No --> E_PositionCounterInputLengthLimit
File: GCCCARFM.cbl
GIVEN:
The system is extracting alphabetic characters from carrier ID input and tracking the current position counter
WHEN:
The position counter exceeds 20 characters OR the system encounters a non-alphabetic character OR encounters a space OR has already extracted 4 alphabetic characters
THEN:
- The alphabetic character extraction process stops
- The system proceeds to validation of the extracted initials
β Consolidated Acceptance Criteria
- The system checks if more than 4 alphabetic characters have been processed for the prefix → the system identifies when the prefix length exceeds 4 characters to trigger additional validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrefixLength4Characters(["Start Step"])
E_PrefixLength4Characters(["End Step"])
N_PrefixLength4Characters_Node0{"The system checks if more than 4
alphabetic characters have been
processed for the prefix"}:::decision N_PrefixLength4Characters_Node0_action["The system identifies when the
prefix length exceeds 4 characters
to trigger additional validation"]:::main N_PrefixLength4Characters_Node0 -- Yes --> N_PrefixLength4Characters_Node0_action N_PrefixLength4Characters_Node0_action --> E_PrefixLength4Characters S_PrefixLength4Characters --> N_PrefixLength4Characters_Node0 N_PrefixLength4Characters_Node0 -- No --> E_PrefixLength4Characters
alphabetic characters have been
processed for the prefix"}:::decision N_PrefixLength4Characters_Node0_action["The system identifies when the
prefix length exceeds 4 characters
to trigger additional validation"]:::main N_PrefixLength4Characters_Node0 -- Yes --> N_PrefixLength4Characters_Node0_action N_PrefixLength4Characters_Node0_action --> E_PrefixLength4Characters S_PrefixLength4Characters --> N_PrefixLength4Characters_Node0 N_PrefixLength4Characters_Node0 -- No --> E_PrefixLength4Characters
File: GCCCARFM.cbl
GIVEN:
A carrier ID input is being processed and the alphabetic prefix has been extracted
WHEN:
The system checks if more than 4 alphabetic characters have been processed for the prefix
THEN:
The system identifies when the prefix length exceeds 4 characters to trigger additional validation
β Consolidated Acceptance Criteria
- The system examines the character immediately following the 4th alphabetic character → if the next character is numeric, the prefix is considered valid despite exceeding 4 characters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NextCharacterisNumeric(["Start Step"])
E_NextCharacterisNumeric(["End Step"])
N_NextCharacterisNumeric_Node0{"The system examines the character
immediately following the 4th
alphabetic character"}:::decision N_NextCharacterisNumeric_Node0_action["If the next character is numeric,
the prefix is considered valid
despite exceeding 4 characters"]:::main N_NextCharacterisNumeric_Node0 -- Yes --> N_NextCharacterisNumeric_Node0_action N_NextCharacterisNumeric_Node0_action --> E_NextCharacterisNumeric S_NextCharacterisNumeric --> N_NextCharacterisNumeric_Node0 N_NextCharacterisNumeric_Node0 -- No --> E_NextCharacterisNumeric
immediately following the 4th
alphabetic character"}:::decision N_NextCharacterisNumeric_Node0_action["If the next character is numeric,
the prefix is considered valid
despite exceeding 4 characters"]:::main N_NextCharacterisNumeric_Node0 -- Yes --> N_NextCharacterisNumeric_Node0_action N_NextCharacterisNumeric_Node0_action --> E_NextCharacterisNumeric S_NextCharacterisNumeric --> N_NextCharacterisNumeric_Node0 N_NextCharacterisNumeric_Node0 -- No --> E_NextCharacterisNumeric
File: GCCCARFM.cbl
GIVEN:
The alphabetic prefix has exceeded 4 characters in length
WHEN:
The system examines the character immediately following the 4th alphabetic character
THEN:
If the next character is numeric, the prefix is considered valid despite exceeding 4 characters
β Consolidated Acceptance Criteria
- The system examines if the next character is a space → if the next character is a space, the prefix is considered valid despite exceeding 4 characters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NextCharacterisSpace(["Start Step"])
E_NextCharacterisSpace(["End Step"])
N_NextCharacterisSpace_Node0{"The system examines if the next
character is a space"}:::decision N_NextCharacterisSpace_Node0_action["If the next character is a space,
the prefix is considered valid
despite exceeding 4 characters"]:::main N_NextCharacterisSpace_Node0 -- Yes --> N_NextCharacterisSpace_Node0_action N_NextCharacterisSpace_Node0_action --> E_NextCharacterisSpace S_NextCharacterisSpace --> N_NextCharacterisSpace_Node0 N_NextCharacterisSpace_Node0 -- No --> E_NextCharacterisSpace
character is a space"}:::decision N_NextCharacterisSpace_Node0_action["If the next character is a space,
the prefix is considered valid
despite exceeding 4 characters"]:::main N_NextCharacterisSpace_Node0 -- Yes --> N_NextCharacterisSpace_Node0_action N_NextCharacterisSpace_Node0_action --> E_NextCharacterisSpace S_NextCharacterisSpace --> N_NextCharacterisSpace_Node0 N_NextCharacterisSpace_Node0 -- No --> E_NextCharacterisSpace
File: GCCCARFM.cbl
Exclusion / Alternative Path
GIVEN:
The alphabetic prefix has exceeded 4 characters and the next character is not numeric
WHEN:
The system examines if the next character is a space
THEN:
If the next character is a space, the prefix is considered valid despite exceeding 4 characters
β Consolidated Acceptance Criteria
- The system determines the prefix format is invalid → the system sets an invalid prefix error, fills the output with asterisks, and terminates processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetInvalidPrefixError(["Start Step"])
E_SetInvalidPrefixError(["End Step"])
N_SetInvalidPrefixError_Node0{"The system determines the prefix
format is invalid"}:::decision N_SetInvalidPrefixError_Node0_action["The system sets an invalid prefix
error, fills the output with
asterisks, and terminates processing"]:::exclusion N_SetInvalidPrefixError_Node0 -- Yes -->|Alternative| N_SetInvalidPrefixError_Node0_action N_SetInvalidPrefixError_Node0_action --> E_SetInvalidPrefixError S_SetInvalidPrefixError --> N_SetInvalidPrefixError_Node0 N_SetInvalidPrefixError_Node0 -- No --> E_SetInvalidPrefixError
format is invalid"}:::decision N_SetInvalidPrefixError_Node0_action["The system sets an invalid prefix
error, fills the output with
asterisks, and terminates processing"]:::exclusion N_SetInvalidPrefixError_Node0 -- Yes -->|Alternative| N_SetInvalidPrefixError_Node0_action N_SetInvalidPrefixError_Node0_action --> E_SetInvalidPrefixError S_SetInvalidPrefixError --> N_SetInvalidPrefixError_Node0 N_SetInvalidPrefixError_Node0 -- No --> E_SetInvalidPrefixError
File: GCCCARFM.cbl
Exclusion / Alternative Path
GIVEN:
The alphabetic prefix exceeds 4 characters and the next character is neither numeric nor a space
WHEN:
The system determines the prefix format is invalid
THEN:
The system sets an invalid prefix error, fills the output with asterisks, and terminates processing
β Consolidated Acceptance Criteria
- The system encounters one or more space characters between the alphabetic prefix and numeric portion → the system advances the position counter past all consecutive spaces until it finds a non-space character or reaches the end of the input (position 20)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipSpacesAfterPrefixMovepastanyspacesbetweenalphabeticprefixandnumericportion(["Start Step"])
E_SkipSpacesAfterPrefixMovepastanyspacesbetweenalphabeticprefixandnumericportion(["End Step"])
N_SkipSpacesAfterPrefixMovepastanyspacesbetweenalphabeticprefixandnumericportion_Node0{"The system encounters one or more
space characters between the
alphabetic prefix and numeric
portion"}:::decision N_SkipSpacesAfterPrefixMovepastanyspacesbetweenalphabeticprefixandnumericportion_Node0_action["The system advances the position
counter past all consecutive spaces
until it finds a non-space character
or reaches the end of the input
position 20"]:::main N_SkipSpacesAfterPrefixMovepastanyspacesbetweenalphabeticprefixandnumericportion_Node0 -- Yes --> N_SkipSpacesAfterPrefixMovepastanyspacesbetweenalphabeticprefixandnumericportion_Node0_action N_SkipSpacesAfterPrefixMovepastanyspacesbetweenalphabeticprefixandnumericportion_Node0_action --> E_SkipSpacesAfterPrefixMovepastanyspacesbetweenalphabeticprefixandnumericportion S_SkipSpacesAfterPrefixMovepastanyspacesbetweenalphabeticprefixandnumericportion --> N_SkipSpacesAfterPrefixMovepastanyspacesbetweenalphabeticprefixandnumericportion_Node0 N_SkipSpacesAfterPrefixMovepastanyspacesbetweenalphabeticprefixandnumericportion_Node0 -- No --> E_SkipSpacesAfterPrefixMovepastanyspacesbetweenalphabeticprefixandnumericportion
space characters between the
alphabetic prefix and numeric
portion"}:::decision N_SkipSpacesAfterPrefixMovepastanyspacesbetweenalphabeticprefixandnumericportion_Node0_action["The system advances the position
counter past all consecutive spaces
until it finds a non-space character
or reaches the end of the input
position 20"]:::main N_SkipSpacesAfterPrefixMovepastanyspacesbetweenalphabeticprefixandnumericportion_Node0 -- Yes --> N_SkipSpacesAfterPrefixMovepastanyspacesbetweenalphabeticprefixandnumericportion_Node0_action N_SkipSpacesAfterPrefixMovepastanyspacesbetweenalphabeticprefixandnumericportion_Node0_action --> E_SkipSpacesAfterPrefixMovepastanyspacesbetweenalphabeticprefixandnumericportion S_SkipSpacesAfterPrefixMovepastanyspacesbetweenalphabeticprefixandnumericportion --> N_SkipSpacesAfterPrefixMovepastanyspacesbetweenalphabeticprefixandnumericportion_Node0 N_SkipSpacesAfterPrefixMovepastanyspacesbetweenalphabeticprefixandnumericportion_Node0 -- No --> E_SkipSpacesAfterPrefixMovepastanyspacesbetweenalphabeticprefixandnumericportion
File: GCCCARFM.cbl
GIVEN:
The system has processed the alphabetic prefix portion of the carrier ID input and the current position (WS-I2) points to the character immediately after the prefix
WHEN:
- The system encounters one or more space characters between the alphabetic prefix
- Numeric portion
THEN:
The system advances the position counter past all consecutive spaces until it finds a non-space character or reaches the end of the input (position 20)
β Consolidated Acceptance Criteria
- The position counter reaches beyond position 20 (end of input) while still encountering only spaces → the system sets an input length error condition and fills the output with asterisks to indicate invalid format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetErrorInputTooLong(["Start Step"])
E_SetErrorInputTooLong(["End Step"])
N_SetErrorInputTooLong_Node0{"The position counter reaches beyond
position 20 end of input while still
encountering only spaces"}:::decision N_SetErrorInputTooLong_Node0_action["The system sets an input length
error condition and fills the output
with asterisks to indicate invalid
format"]:::main N_SetErrorInputTooLong_Node0 -- Yes --> N_SetErrorInputTooLong_Node0_action N_SetErrorInputTooLong_Node0_action --> E_SetErrorInputTooLong S_SetErrorInputTooLong --> N_SetErrorInputTooLong_Node0 N_SetErrorInputTooLong_Node0 -- No --> E_SetErrorInputTooLong
position 20 end of input while still
encountering only spaces"}:::decision N_SetErrorInputTooLong_Node0_action["The system sets an input length
error condition and fills the output
with asterisks to indicate invalid
format"]:::main N_SetErrorInputTooLong_Node0 -- Yes --> N_SetErrorInputTooLong_Node0_action N_SetErrorInputTooLong_Node0_action --> E_SetErrorInputTooLong S_SetErrorInputTooLong --> N_SetErrorInputTooLong_Node0 N_SetErrorInputTooLong_Node0 -- No --> E_SetErrorInputTooLong
File: GCCCARFM.cbl
GIVEN:
The system is skipping spaces after the alphabetic prefix in the carrier ID input
WHEN:
The position counter reaches beyond position 20 (end of input) while still encountering only spaces
THEN:
- The system sets an input length error condition
- Fills the output with asterisks to indicate invalid format
β Consolidated Acceptance Criteria
- The digit counting process begins → the digit counter is set to zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeDigitCountertoZero(["Start Step"])
E_InitializeDigitCountertoZero(["End Step"])
N_InitializeDigitCountertoZero_Node0{"The digit counting process begins"}:::decision
N_InitializeDigitCountertoZero_Node0_action["The digit counter is set to zero"]:::main
N_InitializeDigitCountertoZero_Node0 -- Yes --> N_InitializeDigitCountertoZero_Node0_action
N_InitializeDigitCountertoZero_Node0_action --> E_InitializeDigitCountertoZero
S_InitializeDigitCountertoZero --> N_InitializeDigitCountertoZero_Node0
N_InitializeDigitCountertoZero_Node0 -- No --> E_InitializeDigitCountertoZero
File: GCCCARFM.cbl
GIVEN:
The system is ready to count digits in the numeric portion of the carrier ID
WHEN:
The digit counting process begins
THEN:
The digit counter is set to zero
β Consolidated Acceptance Criteria
- The system needs to locate the start of the numeric portion → the position is set to skip past all spaces that follow the alphabetic initials
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStartingPositionAfterPrefixandSpaces(["Start Step"])
E_SetStartingPositionAfterPrefixandSpaces(["End Step"])
N_SetStartingPositionAfterPrefixandSpaces_Node0{"The system needs to locate the
start of the numeric portion"}:::decision N_SetStartingPositionAfterPrefixandSpaces_Node0_action["The position is set to skip past
all spaces that follow the
alphabetic initials"]:::main N_SetStartingPositionAfterPrefixandSpaces_Node0 -- Yes --> N_SetStartingPositionAfterPrefixandSpaces_Node0_action N_SetStartingPositionAfterPrefixandSpaces_Node0_action --> E_SetStartingPositionAfterPrefixandSpaces S_SetStartingPositionAfterPrefixandSpaces --> N_SetStartingPositionAfterPrefixandSpaces_Node0 N_SetStartingPositionAfterPrefixandSpaces_Node0 -- No --> E_SetStartingPositionAfterPrefixandSpaces
start of the numeric portion"}:::decision N_SetStartingPositionAfterPrefixandSpaces_Node0_action["The position is set to skip past
all spaces that follow the
alphabetic initials"]:::main N_SetStartingPositionAfterPrefixandSpaces_Node0 -- Yes --> N_SetStartingPositionAfterPrefixandSpaces_Node0_action N_SetStartingPositionAfterPrefixandSpaces_Node0_action --> E_SetStartingPositionAfterPrefixandSpaces S_SetStartingPositionAfterPrefixandSpaces --> N_SetStartingPositionAfterPrefixandSpaces_Node0 N_SetStartingPositionAfterPrefixandSpaces_Node0 -- No --> E_SetStartingPositionAfterPrefixandSpaces
File: GCCCARFM.cbl
GIVEN:
The carrier ID contains alphabetic initials followed by optional spaces and numeric digits
WHEN:
The system needs to locate the start of the numeric portion
THEN:
The position is set to skip past all spaces that follow the alphabetic initials
β Consolidated Acceptance Criteria
- Each character is examined sequentially until a space is found or the input length limit (position 20) is reached → the digit counter is incremented for each valid position and the final count represents the total number of numeric digits
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckCurrentPosition(["Start Step"])
E_CheckCurrentPosition(["End Step"])
N_CheckCurrentPosition_Node0{"Each character is examined
sequentially until a space is found
or the input length limit position
20 is reached"}:::decision N_CheckCurrentPosition_Node0_action["The digit counter is incremented
for each valid position and the
final count represents the total
number of numeric digits"]:::main N_CheckCurrentPosition_Node0 -- Yes --> N_CheckCurrentPosition_Node0_action N_CheckCurrentPosition_Node0_action --> E_CheckCurrentPosition S_CheckCurrentPosition --> N_CheckCurrentPosition_Node0 N_CheckCurrentPosition_Node0 -- No --> E_CheckCurrentPosition
sequentially until a space is found
or the input length limit position
20 is reached"}:::decision N_CheckCurrentPosition_Node0_action["The digit counter is incremented
for each valid position and the
final count represents the total
number of numeric digits"]:::main N_CheckCurrentPosition_Node0 -- Yes --> N_CheckCurrentPosition_Node0_action N_CheckCurrentPosition_Node0_action --> E_CheckCurrentPosition S_CheckCurrentPosition --> N_CheckCurrentPosition_Node0 N_CheckCurrentPosition_Node0 -- No --> E_CheckCurrentPosition
File: GCCCARFM.cbl
GIVEN:
The system is positioned at the start of the numeric portion of the carrier ID
WHEN:
Each character is examined sequentially until a space is found or the input length limit (position 20) is reached
THEN:
- The digit counter is incremented for each valid position
- The final count represents the total number of numeric digits
β Consolidated Acceptance Criteria
- The size parameter equals 12 → the expected numeric length is set to 8 digits
- The size parameter equals 10 → the expected numeric length is set to 6 digits
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12(["Start Step"])
E_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12(["End Step"])
N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node0{"The size parameter equals 12"}:::decision
N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node0_action["The expected numeric length is set
to 8 digits"]:::main N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node0 -- Yes --> N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node0_action N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node0_action --> E_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12 S_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12 --> N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node0 N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node1{"The size parameter equals 10"}:::decision N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node1_action["The expected numeric length is set
to 6 digits"]:::main N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node1 -- Yes --> N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node1_action N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node1_action --> E_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12 N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node0 -- No --> N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node1 N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node1 -- No --> E_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12
to 8 digits"]:::main N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node0 -- Yes --> N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node0_action N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node0_action --> E_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12 S_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12 --> N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node0 N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node1{"The size parameter equals 10"}:::decision N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node1_action["The expected numeric length is set
to 6 digits"]:::main N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node1 -- Yes --> N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node1_action N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node1_action --> E_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12 N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node0 -- No --> N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node1 N_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12_Node1 -- No --> E_DetermineExpectedNumericLengthSetexpectednumericlengthbasedoncarIDsize6digitsforsize108digitsforsize12
File: GCCCARFM.cbl
GIVEN:
A carrier ID size parameter is provided
WHEN:
The size parameter equals 12
THEN:
The expected numeric length is set to 8 digits
File: GCCCARFM.cbl
GIVEN:
A carrier ID size parameter is provided
WHEN:
The size parameter equals 10
THEN:
The expected numeric length is set to 6 digits
β Consolidated Acceptance Criteria
- The size parameter is neither 12 nor 10 → the carrier ID is marked as invalid due to unsupported size and output is filled with error indicators
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InvalidSizeSetErrorCode(["Start Step"])
E_InvalidSizeSetErrorCode(["End Step"])
N_InvalidSizeSetErrorCode_Node0{"The size parameter is neither 12
nor 10"}:::decision N_InvalidSizeSetErrorCode_Node0_action["The carrier ID is marked as invalid
due to unsupported size and output
is filled with error indicators"]:::main N_InvalidSizeSetErrorCode_Node0 -- Yes --> N_InvalidSizeSetErrorCode_Node0_action N_InvalidSizeSetErrorCode_Node0_action --> E_InvalidSizeSetErrorCode S_InvalidSizeSetErrorCode --> N_InvalidSizeSetErrorCode_Node0 N_InvalidSizeSetErrorCode_Node0 -- No --> E_InvalidSizeSetErrorCode
nor 10"}:::decision N_InvalidSizeSetErrorCode_Node0_action["The carrier ID is marked as invalid
due to unsupported size and output
is filled with error indicators"]:::main N_InvalidSizeSetErrorCode_Node0 -- Yes --> N_InvalidSizeSetErrorCode_Node0_action N_InvalidSizeSetErrorCode_Node0_action --> E_InvalidSizeSetErrorCode S_InvalidSizeSetErrorCode --> N_InvalidSizeSetErrorCode_Node0 N_InvalidSizeSetErrorCode_Node0 -- No --> E_InvalidSizeSetErrorCode
File: GCCCARFM.cbl
GIVEN:
A carrier ID size parameter is provided
WHEN:
The size parameter is neither 12 nor 10
THEN:
- The carrier id is marked as invalid due to unsupported size
- Output is filled with error indicators
β Consolidated Acceptance Criteria
- The system compares the actual number of digits in the numeric portion against the expected maximum length (8 digits for size 12, 6 digits for size 10) → if the actual digit count exceeds the expected maximum length, the system marks the input as invalid with error indicators and stops further processing, otherwise it continues to the next validation step
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CompareActualDigitsCountvsExpectedLength(["Start Step"])
E_CompareActualDigitsCountvsExpectedLength(["End Step"])
N_CompareActualDigitsCountvsExpectedLength_Node0{"The system compares the actual
number of digits in the numeric
portion against the expected maximum
length 8 digits for size 12, 6
digits for size 10"}:::decision N_CompareActualDigitsCountvsExpectedLength_Node0_action["If the actual digit count exceeds
the expected maximum length, the
system marks the input as invalid
with error indicators and stops
further processing, otherwise it
continues to the next validation
step"]:::main N_CompareActualDigitsCountvsExpectedLength_Node0 -- Yes --> N_CompareActualDigitsCountvsExpectedLength_Node0_action N_CompareActualDigitsCountvsExpectedLength_Node0_action --> E_CompareActualDigitsCountvsExpectedLength S_CompareActualDigitsCountvsExpectedLength --> N_CompareActualDigitsCountvsExpectedLength_Node0 N_CompareActualDigitsCountvsExpectedLength_Node0 -- No --> E_CompareActualDigitsCountvsExpectedLength
number of digits in the numeric
portion against the expected maximum
length 8 digits for size 12, 6
digits for size 10"}:::decision N_CompareActualDigitsCountvsExpectedLength_Node0_action["If the actual digit count exceeds
the expected maximum length, the
system marks the input as invalid
with error indicators and stops
further processing, otherwise it
continues to the next validation
step"]:::main N_CompareActualDigitsCountvsExpectedLength_Node0 -- Yes --> N_CompareActualDigitsCountvsExpectedLength_Node0_action N_CompareActualDigitsCountvsExpectedLength_Node0_action --> E_CompareActualDigitsCountvsExpectedLength S_CompareActualDigitsCountvsExpectedLength --> N_CompareActualDigitsCountvsExpectedLength_Node0 N_CompareActualDigitsCountvsExpectedLength_Node0 -- No --> E_CompareActualDigitsCountvsExpectedLength
File: GCCCARFM.cbl
GIVEN:
A carrier ID input has been processed to extract the numeric portion and the digit count has been determined, and the size parameter is either 12 or 10
WHEN:
The system compares the actual number of digits in the numeric portion against the expected maximum length (8 digits for size 12, 6 digits for size 10)
THEN:
- If the actual digit count exceeds the expected maximum length, the system marks the input as invalid with error indicators
- Stops further processing, otherwise it continues to the next validation step
β Consolidated Acceptance Criteria
- The system checks for any characters remaining after the numeric portion within the input length boundaries → if any non-space characters are found after the numeric portion, the carrier ID is marked as invalid with format error, otherwise validation passes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateNoTrailingCharactersCheckthatnoinvalidcharactersexistafterthenumericportion(["Start Step"])
E_ValidateNoTrailingCharactersCheckthatnoinvalidcharactersexistafterthenumericportion(["End Step"])
N_ValidateNoTrailingCharactersCheckthatnoinvalidcharactersexistafterthenumericportion_Node0{"The system checks for any
characters remaining after the
numeric portion within the input
length boundaries"}:::decision N_ValidateNoTrailingCharactersCheckthatnoinvalidcharactersexistafterthenumericportion_Node0_action["If any non-space characters are
found after the numeric portion, the
carrier ID is marked as invalid with
format error, otherwise validation
passes"]:::main N_ValidateNoTrailingCharactersCheckthatnoinvalidcharactersexistafterthenumericportion_Node0 -- Yes --> N_ValidateNoTrailingCharactersCheckthatnoinvalidcharactersexistafterthenumericportion_Node0_action N_ValidateNoTrailingCharactersCheckthatnoinvalidcharactersexistafterthenumericportion_Node0_action --> E_ValidateNoTrailingCharactersCheckthatnoinvalidcharactersexistafterthenumericportion S_ValidateNoTrailingCharactersCheckthatnoinvalidcharactersexistafterthenumericportion --> N_ValidateNoTrailingCharactersCheckthatnoinvalidcharactersexistafterthenumericportion_Node0 N_ValidateNoTrailingCharactersCheckthatnoinvalidcharactersexistafterthenumericportion_Node0 -- No --> E_ValidateNoTrailingCharactersCheckthatnoinvalidcharactersexistafterthenumericportion
characters remaining after the
numeric portion within the input
length boundaries"}:::decision N_ValidateNoTrailingCharactersCheckthatnoinvalidcharactersexistafterthenumericportion_Node0_action["If any non-space characters are
found after the numeric portion, the
carrier ID is marked as invalid with
format error, otherwise validation
passes"]:::main N_ValidateNoTrailingCharactersCheckthatnoinvalidcharactersexistafterthenumericportion_Node0 -- Yes --> N_ValidateNoTrailingCharactersCheckthatnoinvalidcharactersexistafterthenumericportion_Node0_action N_ValidateNoTrailingCharactersCheckthatnoinvalidcharactersexistafterthenumericportion_Node0_action --> E_ValidateNoTrailingCharactersCheckthatnoinvalidcharactersexistafterthenumericportion S_ValidateNoTrailingCharactersCheckthatnoinvalidcharactersexistafterthenumericportion --> N_ValidateNoTrailingCharactersCheckthatnoinvalidcharactersexistafterthenumericportion_Node0 N_ValidateNoTrailingCharactersCheckthatnoinvalidcharactersexistafterthenumericportion_Node0 -- No --> E_ValidateNoTrailingCharactersCheckthatnoinvalidcharactersexistafterthenumericportion
File: GCCCARFM.cbl
GIVEN:
A carrier ID input has been processed and the numeric portion has been identified ending at a specific position
WHEN:
The system checks for any characters remaining after the numeric portion within the input length boundaries
THEN:
If any non-space characters are found after the numeric portion, the carrier ID is marked as invalid with format error, otherwise validation passes
β Consolidated Acceptance Criteria
- Space characters are encountered during the trailing character validation → the spaces are skipped and scanning continues to check for any non-space characters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipAnySpacesFound(["Start Step"])
E_SkipAnySpacesFound(["End Step"])
N_SkipAnySpacesFound_Node0{"Space characters are encountered
during the trailing character
validation"}:::decision N_SkipAnySpacesFound_Node0_action["The spaces are skipped and scanning
continues to check for any non-space
characters"]:::main N_SkipAnySpacesFound_Node0 -- Yes --> N_SkipAnySpacesFound_Node0_action N_SkipAnySpacesFound_Node0_action --> E_SkipAnySpacesFound S_SkipAnySpacesFound --> N_SkipAnySpacesFound_Node0 N_SkipAnySpacesFound_Node0 -- No --> E_SkipAnySpacesFound
during the trailing character
validation"}:::decision N_SkipAnySpacesFound_Node0_action["The spaces are skipped and scanning
continues to check for any non-space
characters"]:::main N_SkipAnySpacesFound_Node0 -- Yes --> N_SkipAnySpacesFound_Node0_action N_SkipAnySpacesFound_Node0_action --> E_SkipAnySpacesFound S_SkipAnySpacesFound --> N_SkipAnySpacesFound_Node0 N_SkipAnySpacesFound_Node0 -- No --> E_SkipAnySpacesFound
File: GCCCARFM.cbl
GIVEN:
The system is scanning characters after the numeric portion of the carrier ID
WHEN:
Space characters are encountered during the trailing character validation
THEN:
- The spaces are skipped
- Scanning continues to check for any non-space characters
β Consolidated Acceptance Criteria
- A non-space character is found in the remaining input after the numeric portion → the carrier ID format is considered invalid and appropriate error handling is triggered
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FoundNonSpaceCharacter(["Start Step"])
E_FoundNonSpaceCharacter(["End Step"])
N_FoundNonSpaceCharacter_Node0{"A non-space character is found in
the remaining input after the
numeric portion"}:::decision N_FoundNonSpaceCharacter_Node0_action["The carrier ID format is considered
invalid and appropriate error
handling is triggered"]:::main N_FoundNonSpaceCharacter_Node0 -- Yes --> N_FoundNonSpaceCharacter_Node0_action N_FoundNonSpaceCharacter_Node0_action --> E_FoundNonSpaceCharacter S_FoundNonSpaceCharacter --> N_FoundNonSpaceCharacter_Node0 N_FoundNonSpaceCharacter_Node0 -- No --> E_FoundNonSpaceCharacter
the remaining input after the
numeric portion"}:::decision N_FoundNonSpaceCharacter_Node0_action["The carrier ID format is considered
invalid and appropriate error
handling is triggered"]:::main N_FoundNonSpaceCharacter_Node0 -- Yes --> N_FoundNonSpaceCharacter_Node0_action N_FoundNonSpaceCharacter_Node0_action --> E_FoundNonSpaceCharacter S_FoundNonSpaceCharacter --> N_FoundNonSpaceCharacter_Node0 N_FoundNonSpaceCharacter_Node0 -- No --> E_FoundNonSpaceCharacter
File: GCCCARFM.cbl
GIVEN:
The system is validating the format of a carrier ID after processing the numeric portion
WHEN:
A non-space character is found in the remaining input after the numeric portion
THEN:
- The carrier id format is considered invalid
- Appropriate error handling is triggered
β Consolidated Acceptance Criteria
- The system scans forward from the end of the numeric portion through the remaining input characters → if any non-space characters are found before reaching the end of input, the carrier ID format is invalid and an error condition is set
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ScanForwardfromEndofNumericPortionSkipspacesandidentifynonspacecharacters(["Start Step"])
E_ScanForwardfromEndofNumericPortionSkipspacesandidentifynonspacecharacters(["End Step"])
N_ScanForwardfromEndofNumericPortionSkipspacesandidentifynonspacecharacters_Node0{"The system scans forward from the
end of the numeric portion through
the remaining input characters"}:::decision N_ScanForwardfromEndofNumericPortionSkipspacesandidentifynonspacecharacters_Node0_action["If any non-space characters are
found before reaching the end of
input, the carrier ID format is
invalid and an error condition is
set"]:::main N_ScanForwardfromEndofNumericPortionSkipspacesandidentifynonspacecharacters_Node0 -- Yes --> N_ScanForwardfromEndofNumericPortionSkipspacesandidentifynonspacecharacters_Node0_action N_ScanForwardfromEndofNumericPortionSkipspacesandidentifynonspacecharacters_Node0_action --> E_ScanForwardfromEndofNumericPortionSkipspacesandidentifynonspacecharacters S_ScanForwardfromEndofNumericPortionSkipspacesandidentifynonspacecharacters --> N_ScanForwardfromEndofNumericPortionSkipspacesandidentifynonspacecharacters_Node0 N_ScanForwardfromEndofNumericPortionSkipspacesandidentifynonspacecharacters_Node0 -- No --> E_ScanForwardfromEndofNumericPortionSkipspacesandidentifynonspacecharacters
end of the numeric portion through
the remaining input characters"}:::decision N_ScanForwardfromEndofNumericPortionSkipspacesandidentifynonspacecharacters_Node0_action["If any non-space characters are
found before reaching the end of
input, the carrier ID format is
invalid and an error condition is
set"]:::main N_ScanForwardfromEndofNumericPortionSkipspacesandidentifynonspacecharacters_Node0 -- Yes --> N_ScanForwardfromEndofNumericPortionSkipspacesandidentifynonspacecharacters_Node0_action N_ScanForwardfromEndofNumericPortionSkipspacesandidentifynonspacecharacters_Node0_action --> E_ScanForwardfromEndofNumericPortionSkipspacesandidentifynonspacecharacters S_ScanForwardfromEndofNumericPortionSkipspacesandidentifynonspacecharacters --> N_ScanForwardfromEndofNumericPortionSkipspacesandidentifynonspacecharacters_Node0 N_ScanForwardfromEndofNumericPortionSkipspacesandidentifynonspacecharacters_Node0 -- No --> E_ScanForwardfromEndofNumericPortionSkipspacesandidentifynonspacecharacters
File: GCCCARFM.cbl
GIVEN:
The numeric portion of the carrier ID has been processed and the current position is at the end of the numeric digits
WHEN:
The system scans forward from the end of the numeric portion through the remaining input characters
THEN:
- If any non-space characters are found before reaching the end of input, the carrier id format is invalid
- An error condition is set
β Consolidated Acceptance Criteria
- The system encounters space characters after the numeric portion while scanning to the end of input → the spaces are considered valid trailing characters and the scanning continues without error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinueScanningValidTrailingSpaces(["Start Step"])
E_ContinueScanningValidTrailingSpaces(["End Step"])
N_ContinueScanningValidTrailingSpaces_Node0{"The system encounters space
characters after the numeric portion
while scanning to the end of input"}:::decision N_ContinueScanningValidTrailingSpaces_Node0_action["The spaces are considered valid
trailing characters and the scanning
continues without error"]:::main N_ContinueScanningValidTrailingSpaces_Node0 -- Yes --> N_ContinueScanningValidTrailingSpaces_Node0_action N_ContinueScanningValidTrailingSpaces_Node0_action --> E_ContinueScanningValidTrailingSpaces S_ContinueScanningValidTrailingSpaces --> N_ContinueScanningValidTrailingSpaces_Node0 N_ContinueScanningValidTrailingSpaces_Node0 -- No --> E_ContinueScanningValidTrailingSpaces
characters after the numeric portion
while scanning to the end of input"}:::decision N_ContinueScanningValidTrailingSpaces_Node0_action["The spaces are considered valid
trailing characters and the scanning
continues without error"]:::main N_ContinueScanningValidTrailingSpaces_Node0 -- Yes --> N_ContinueScanningValidTrailingSpaces_Node0_action N_ContinueScanningValidTrailingSpaces_Node0_action --> E_ContinueScanningValidTrailingSpaces S_ContinueScanningValidTrailingSpaces --> N_ContinueScanningValidTrailingSpaces_Node0 N_ContinueScanningValidTrailingSpaces_Node0 -- No --> E_ContinueScanningValidTrailingSpaces
File: GCCCARFM.cbl
GIVEN:
The numeric portion of the carrier ID has been processed
WHEN:
The system encounters space characters after the numeric portion while scanning to the end of input
THEN:
- The spaces are considered valid trailing characters
- The scanning continues without error
β Consolidated Acceptance Criteria
- A non-space character is encountered after the numeric portion and before the end of input → the carrier ID is marked as having invalid format and the output is filled with error indicators
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InvalidTrailingCharacterFound(["Start Step"])
E_InvalidTrailingCharacterFound(["End Step"])
N_InvalidTrailingCharacterFound_Node0{"A non-space character is
encountered after the numeric
portion and before the end of input"}:::decision N_InvalidTrailingCharacterFound_Node0_action["The carrier ID is marked as having
invalid format and the output is
filled with error indicators"]:::main N_InvalidTrailingCharacterFound_Node0 -- Yes --> N_InvalidTrailingCharacterFound_Node0_action N_InvalidTrailingCharacterFound_Node0_action --> E_InvalidTrailingCharacterFound S_InvalidTrailingCharacterFound --> N_InvalidTrailingCharacterFound_Node0 N_InvalidTrailingCharacterFound_Node0 -- No --> E_InvalidTrailingCharacterFound
encountered after the numeric
portion and before the end of input"}:::decision N_InvalidTrailingCharacterFound_Node0_action["The carrier ID is marked as having
invalid format and the output is
filled with error indicators"]:::main N_InvalidTrailingCharacterFound_Node0 -- Yes --> N_InvalidTrailingCharacterFound_Node0_action N_InvalidTrailingCharacterFound_Node0_action --> E_InvalidTrailingCharacterFound S_InvalidTrailingCharacterFound --> N_InvalidTrailingCharacterFound_Node0 N_InvalidTrailingCharacterFound_Node0 -- No --> E_InvalidTrailingCharacterFound
File: GCCCARFM.cbl
GIVEN:
The numeric portion of the carrier ID has been processed and scanning continues through remaining input
WHEN:
- A non-space character is encountered after the numeric portion
- Before the end of input
THEN:
- The carrier id is marked as having invalid format
- The output is filled with error indicators
β Consolidated Acceptance Criteria
- The system determines the positioning for the numeric portion in the output format → the starting position is calculated as 13 minus the number of numeric bytes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculatePositionforSize12Position13NumberofBytes(["Start Step"])
E_CalculatePositionforSize12Position13NumberofBytes(["End Step"])
N_CalculatePositionforSize12Position13NumberofBytes_Node0{"The system determines the
positioning for the numeric portion
in the output format"}:::decision N_CalculatePositionforSize12Position13NumberofBytes_Node0_action["The starting position is calculated
as 13 minus the number of numeric
bytes"]:::main N_CalculatePositionforSize12Position13NumberofBytes_Node0 -- Yes --> N_CalculatePositionforSize12Position13NumberofBytes_Node0_action N_CalculatePositionforSize12Position13NumberofBytes_Node0_action --> E_CalculatePositionforSize12Position13NumberofBytes S_CalculatePositionforSize12Position13NumberofBytes --> N_CalculatePositionforSize12Position13NumberofBytes_Node0 N_CalculatePositionforSize12Position13NumberofBytes_Node0 -- No --> E_CalculatePositionforSize12Position13NumberofBytes
positioning for the numeric portion
in the output format"}:::decision N_CalculatePositionforSize12Position13NumberofBytes_Node0_action["The starting position is calculated
as 13 minus the number of numeric
bytes"]:::main N_CalculatePositionforSize12Position13NumberofBytes_Node0 -- Yes --> N_CalculatePositionforSize12Position13NumberofBytes_Node0_action N_CalculatePositionforSize12Position13NumberofBytes_Node0_action --> E_CalculatePositionforSize12Position13NumberofBytes S_CalculatePositionforSize12Position13NumberofBytes --> N_CalculatePositionforSize12Position13NumberofBytes_Node0 N_CalculatePositionforSize12Position13NumberofBytes_Node0 -- No --> E_CalculatePositionforSize12Position13NumberofBytes
File: GCCCARFM.cbl
GIVEN:
A carrier ID is being processed and the carrier ID size is 12 and the number of numeric bytes has been calculated
WHEN:
The system determines the positioning for the numeric portion in the output format
THEN:
The starting position is calculated as 13 minus the number of numeric bytes
β Consolidated Acceptance Criteria
- The system determines the positioning for the numeric portion in the output format → the starting position is calculated as 11 minus the number of numeric bytes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculatePositionforSize10Position11NumberofBytes(["Start Step"])
E_CalculatePositionforSize10Position11NumberofBytes(["End Step"])
N_CalculatePositionforSize10Position11NumberofBytes_Node0{"The system determines the
positioning for the numeric portion
in the output format"}:::decision N_CalculatePositionforSize10Position11NumberofBytes_Node0_action["The starting position is calculated
as 11 minus the number of numeric
bytes"]:::main N_CalculatePositionforSize10Position11NumberofBytes_Node0 -- Yes --> N_CalculatePositionforSize10Position11NumberofBytes_Node0_action N_CalculatePositionforSize10Position11NumberofBytes_Node0_action --> E_CalculatePositionforSize10Position11NumberofBytes S_CalculatePositionforSize10Position11NumberofBytes --> N_CalculatePositionforSize10Position11NumberofBytes_Node0 N_CalculatePositionforSize10Position11NumberofBytes_Node0 -- No --> E_CalculatePositionforSize10Position11NumberofBytes
positioning for the numeric portion
in the output format"}:::decision N_CalculatePositionforSize10Position11NumberofBytes_Node0_action["The starting position is calculated
as 11 minus the number of numeric
bytes"]:::main N_CalculatePositionforSize10Position11NumberofBytes_Node0 -- Yes --> N_CalculatePositionforSize10Position11NumberofBytes_Node0_action N_CalculatePositionforSize10Position11NumberofBytes_Node0_action --> E_CalculatePositionforSize10Position11NumberofBytes S_CalculatePositionforSize10Position11NumberofBytes --> N_CalculatePositionforSize10Position11NumberofBytes_Node0 N_CalculatePositionforSize10Position11NumberofBytes_Node0 -- No --> E_CalculatePositionforSize10Position11NumberofBytes
File: GCCCARFM.cbl
GIVEN:
A carrier ID is being processed and the carrier ID size is 10 and the number of numeric bytes has been calculated
WHEN:
The system determines the positioning for the numeric portion in the output format
THEN:
The starting position is calculated as 11 minus the number of numeric bytes
β Consolidated Acceptance Criteria
- The system needs to determine how many bytes the numeric portion occupies → the number of bytes is calculated as the difference between the end position and start position
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateNumberofNumericBytes(["Start Step"])
E_CalculateNumberofNumericBytes(["End Step"])
N_CalculateNumberofNumericBytes_Node0{"The system needs to determine how
many bytes the numeric portion
occupies"}:::decision N_CalculateNumberofNumericBytes_Node0_action["The number of bytes is calculated
as the difference between the end
position and start position"]:::main N_CalculateNumberofNumericBytes_Node0 -- Yes --> N_CalculateNumberofNumericBytes_Node0_action N_CalculateNumberofNumericBytes_Node0_action --> E_CalculateNumberofNumericBytes S_CalculateNumberofNumericBytes --> N_CalculateNumberofNumericBytes_Node0 N_CalculateNumberofNumericBytes_Node0 -- No --> E_CalculateNumberofNumericBytes
many bytes the numeric portion
occupies"}:::decision N_CalculateNumberofNumericBytes_Node0_action["The number of bytes is calculated
as the difference between the end
position and start position"]:::main N_CalculateNumberofNumericBytes_Node0 -- Yes --> N_CalculateNumberofNumericBytes_Node0_action N_CalculateNumberofNumericBytes_Node0_action --> E_CalculateNumberofNumericBytes S_CalculateNumberofNumericBytes --> N_CalculateNumberofNumericBytes_Node0 N_CalculateNumberofNumericBytes_Node0 -- No --> E_CalculateNumberofNumericBytes
File: GCCCARFM.cbl
GIVEN:
The start position of the numeric portion and the end position of the numeric portion have been identified
WHEN:
The system needs to determine how many bytes the numeric portion occupies
THEN:
- The number of bytes is calculated as the difference between the end position
- Start position
β Consolidated Acceptance Criteria
- The system formats the output carrier ID → the numeric portion is moved to the calculated position in the output field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PositionDeterminedforOutputFormatting(["Start Step"])
E_PositionDeterminedforOutputFormatting(["End Step"])
N_PositionDeterminedforOutputFormatting_Node0{"The system formats the output
carrier ID"}:::decision N_PositionDeterminedforOutputFormatting_Node0_action["The numeric portion is moved to the
calculated position in the output
field"]:::main N_PositionDeterminedforOutputFormatting_Node0 -- Yes --> N_PositionDeterminedforOutputFormatting_Node0_action N_PositionDeterminedforOutputFormatting_Node0_action --> E_PositionDeterminedforOutputFormatting S_PositionDeterminedforOutputFormatting --> N_PositionDeterminedforOutputFormatting_Node0 N_PositionDeterminedforOutputFormatting_Node0 -- No --> E_PositionDeterminedforOutputFormatting
carrier ID"}:::decision N_PositionDeterminedforOutputFormatting_Node0_action["The numeric portion is moved to the
calculated position in the output
field"]:::main N_PositionDeterminedforOutputFormatting_Node0 -- Yes --> N_PositionDeterminedforOutputFormatting_Node0_action N_PositionDeterminedforOutputFormatting_Node0_action --> E_PositionDeterminedforOutputFormatting S_PositionDeterminedforOutputFormatting --> N_PositionDeterminedforOutputFormatting_Node0 N_PositionDeterminedforOutputFormatting_Node0 -- No --> E_PositionDeterminedforOutputFormatting
File: GCCCARFM.cbl
GIVEN:
The starting position for the numeric portion has been calculated and the numeric bytes have been identified
WHEN:
The system formats the output carrier ID
THEN:
The numeric portion is moved to the calculated position in the output field
β Consolidated Acceptance Criteria
- The system needs to format the numeric portion in the output → calculate the number of bytes as the difference between ending and starting positions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateNumberofBytesinNumericPortion(["Start Step"])
E_CalculateNumberofBytesinNumericPortion(["End Step"])
N_CalculateNumberofBytesinNumericPortion_Node0{"The system needs to format the
numeric portion in the output"}:::decision N_CalculateNumberofBytesinNumericPortion_Node0_action["Calculate the number of bytes as
the difference between ending and
starting positions"]:::main N_CalculateNumberofBytesinNumericPortion_Node0 -- Yes --> N_CalculateNumberofBytesinNumericPortion_Node0_action N_CalculateNumberofBytesinNumericPortion_Node0_action --> E_CalculateNumberofBytesinNumericPortion S_CalculateNumberofBytesinNumericPortion --> N_CalculateNumberofBytesinNumericPortion_Node0 N_CalculateNumberofBytesinNumericPortion_Node0 -- No --> E_CalculateNumberofBytesinNumericPortion
numeric portion in the output"}:::decision N_CalculateNumberofBytesinNumericPortion_Node0_action["Calculate the number of bytes as
the difference between ending and
starting positions"]:::main N_CalculateNumberofBytesinNumericPortion_Node0 -- Yes --> N_CalculateNumberofBytesinNumericPortion_Node0_action N_CalculateNumberofBytesinNumericPortion_Node0_action --> E_CalculateNumberofBytesinNumericPortion S_CalculateNumberofBytesinNumericPortion --> N_CalculateNumberofBytesinNumericPortion_Node0 N_CalculateNumberofBytesinNumericPortion_Node0 -- No --> E_CalculateNumberofBytesinNumericPortion
File: GCCCARFM.cbl
GIVEN:
The starting position of numeric portion (WS-I2) and ending position (WS-I1) are known
WHEN:
The system needs to format the numeric portion in the output
THEN:
- Calculate the number of bytes as the difference between ending
- Starting positions
β Consolidated Acceptance Criteria
- The system formats the numeric portion for output → for size 12, calculate position as 13 minus number of bytes, and for size 10, calculate position as 11 minus number of bytes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckCarIDSize(["Start Step"])
E_CheckCarIDSize(["End Step"])
N_CheckCarIDSize_Node0{"The system formats the numeric
portion for output"}:::decision N_CheckCarIDSize_Node0_action["For size 12, calculate position as
13 minus number of bytes, and for
size 10, calculate position as 11
minus number of bytes"]:::main N_CheckCarIDSize_Node0 -- Yes --> N_CheckCarIDSize_Node0_action N_CheckCarIDSize_Node0_action --> E_CheckCarIDSize S_CheckCarIDSize --> N_CheckCarIDSize_Node0 N_CheckCarIDSize_Node0 -- No --> E_CheckCarIDSize
portion for output"}:::decision N_CheckCarIDSize_Node0_action["For size 12, calculate position as
13 minus number of bytes, and for
size 10, calculate position as 11
minus number of bytes"]:::main N_CheckCarIDSize_Node0 -- Yes --> N_CheckCarIDSize_Node0_action N_CheckCarIDSize_Node0_action --> E_CheckCarIDSize S_CheckCarIDSize --> N_CheckCarIDSize_Node0 N_CheckCarIDSize_Node0 -- No --> E_CheckCarIDSize
File: GCCCARFM.cbl
GIVEN:
A carrier ID size of either 12 or 10 and the number of bytes in the numeric portion
WHEN:
The system formats the numeric portion for output
THEN:
For size 12, calculate position as 13 minus number of bytes, and for size 10, calculate position as 11 minus number of bytes
β Consolidated Acceptance Criteria
- The system formats the carrier ID output → move the numeric portion from input to the calculated position in the output field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveNumericPortiontoCalculatedPositioninOutput(["Start Step"])
E_MoveNumericPortiontoCalculatedPositioninOutput(["End Step"])
N_MoveNumericPortiontoCalculatedPositioninOutput_Node0{"The system formats the carrier ID
output"}:::decision N_MoveNumericPortiontoCalculatedPositioninOutput_Node0_action["Move the numeric portion from input
to the calculated position in the
output field"]:::main N_MoveNumericPortiontoCalculatedPositioninOutput_Node0 -- Yes --> N_MoveNumericPortiontoCalculatedPositioninOutput_Node0_action N_MoveNumericPortiontoCalculatedPositioninOutput_Node0_action --> E_MoveNumericPortiontoCalculatedPositioninOutput S_MoveNumericPortiontoCalculatedPositioninOutput --> N_MoveNumericPortiontoCalculatedPositioninOutput_Node0 N_MoveNumericPortiontoCalculatedPositioninOutput_Node0 -- No --> E_MoveNumericPortiontoCalculatedPositioninOutput
output"}:::decision N_MoveNumericPortiontoCalculatedPositioninOutput_Node0_action["Move the numeric portion from input
to the calculated position in the
output field"]:::main N_MoveNumericPortiontoCalculatedPositioninOutput_Node0 -- Yes --> N_MoveNumericPortiontoCalculatedPositioninOutput_Node0_action N_MoveNumericPortiontoCalculatedPositioninOutput_Node0_action --> E_MoveNumericPortiontoCalculatedPositioninOutput S_MoveNumericPortiontoCalculatedPositioninOutput --> N_MoveNumericPortiontoCalculatedPositioninOutput_Node0 N_MoveNumericPortiontoCalculatedPositioninOutput_Node0 -- No --> E_MoveNumericPortiontoCalculatedPositioninOutput
File: GCCCARFM.cbl
GIVEN:
The numeric portion from input, calculated position (WS-I4), and number of bytes to move
WHEN:
The system formats the carrier ID output
THEN:
Move the numeric portion from input to the calculated position in the output field
β Consolidated Acceptance Criteria
- The system completes the carrier ID formatting → replace all leading spaces in the numeric portion with zeros to create a standardized format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReplaceLeadingSpaceswithZerosinNumericPortion(["Start Step"])
E_ReplaceLeadingSpaceswithZerosinNumericPortion(["End Step"])
N_ReplaceLeadingSpaceswithZerosinNumericPortion_Node0{"The system completes the carrier ID
formatting"}:::decision N_ReplaceLeadingSpaceswithZerosinNumericPortion_Node0_action["Replace all leading spaces in the
numeric portion with zeros to create
a standardized format"]:::main N_ReplaceLeadingSpaceswithZerosinNumericPortion_Node0 -- Yes --> N_ReplaceLeadingSpaceswithZerosinNumericPortion_Node0_action N_ReplaceLeadingSpaceswithZerosinNumericPortion_Node0_action --> E_ReplaceLeadingSpaceswithZerosinNumericPortion S_ReplaceLeadingSpaceswithZerosinNumericPortion --> N_ReplaceLeadingSpaceswithZerosinNumericPortion_Node0 N_ReplaceLeadingSpaceswithZerosinNumericPortion_Node0 -- No --> E_ReplaceLeadingSpaceswithZerosinNumericPortion
formatting"}:::decision N_ReplaceLeadingSpaceswithZerosinNumericPortion_Node0_action["Replace all leading spaces in the
numeric portion with zeros to create
a standardized format"]:::main N_ReplaceLeadingSpaceswithZerosinNumericPortion_Node0 -- Yes --> N_ReplaceLeadingSpaceswithZerosinNumericPortion_Node0_action N_ReplaceLeadingSpaceswithZerosinNumericPortion_Node0_action --> E_ReplaceLeadingSpaceswithZerosinNumericPortion S_ReplaceLeadingSpaceswithZerosinNumericPortion --> N_ReplaceLeadingSpaceswithZerosinNumericPortion_Node0 N_ReplaceLeadingSpaceswithZerosinNumericPortion_Node0 -- No --> E_ReplaceLeadingSpaceswithZerosinNumericPortion
File: GCCCARFM.cbl
GIVEN:
The numeric portion has been placed in the output field and may contain leading spaces
WHEN:
The system completes the carrier ID formatting
THEN:
Replace all leading spaces in the numeric portion with zeros to create a standardized format
β Consolidated Acceptance Criteria
- The input carrier ID field contains only spaces or is completely empty → the system should fill the output field with asterisks and set a blank input error indicator
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBlankInputErrorCodeGCCARFMRCINPUTBLANK(["Start Step"])
E_SetBlankInputErrorCodeGCCARFMRCINPUTBLANK(["End Step"])
N_SetBlankInputErrorCodeGCCARFMRCINPUTBLANK_Node0{"The input carrier ID field contains
only spaces or is completely empty"}:::decision N_SetBlankInputErrorCodeGCCARFMRCINPUTBLANK_Node0_action["The system should fill the output
field with asterisks and set a blank
input error indicator"]:::main N_SetBlankInputErrorCodeGCCARFMRCINPUTBLANK_Node0 -- Yes --> N_SetBlankInputErrorCodeGCCARFMRCINPUTBLANK_Node0_action N_SetBlankInputErrorCodeGCCARFMRCINPUTBLANK_Node0_action --> E_SetBlankInputErrorCodeGCCARFMRCINPUTBLANK S_SetBlankInputErrorCodeGCCARFMRCINPUTBLANK --> N_SetBlankInputErrorCodeGCCARFMRCINPUTBLANK_Node0 N_SetBlankInputErrorCodeGCCARFMRCINPUTBLANK_Node0 -- No --> E_SetBlankInputErrorCodeGCCARFMRCINPUTBLANK
only spaces or is completely empty"}:::decision N_SetBlankInputErrorCodeGCCARFMRCINPUTBLANK_Node0_action["The system should fill the output
field with asterisks and set a blank
input error indicator"]:::main N_SetBlankInputErrorCodeGCCARFMRCINPUTBLANK_Node0 -- Yes --> N_SetBlankInputErrorCodeGCCARFMRCINPUTBLANK_Node0_action N_SetBlankInputErrorCodeGCCARFMRCINPUTBLANK_Node0_action --> E_SetBlankInputErrorCodeGCCARFMRCINPUTBLANK S_SetBlankInputErrorCodeGCCARFMRCINPUTBLANK --> N_SetBlankInputErrorCodeGCCARFMRCINPUTBLANK_Node0 N_SetBlankInputErrorCodeGCCARFMRCINPUTBLANK_Node0 -- No --> E_SetBlankInputErrorCodeGCCARFMRCINPUTBLANK
File: GCCCARFM.cbl
GIVEN:
A carrier ID processing request is received
WHEN:
The input carrier ID field contains only spaces or is completely empty
THEN:
- The system should fill the output field with asterisks
- Set a blank input error indicator
β Consolidated Acceptance Criteria
- The input reaches the end of the field (position greater than 20):
- no alphabetic initials are found
- more than 4 alphabetic characters are found followed by a non-numeric and non-space character
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetInvalidPrefixErrorCodeGCCARFMRCINVALIDINIT(["Start Step"])
E_SetInvalidPrefixErrorCodeGCCARFMRCINVALIDINIT(["End Step"])
N_SetInvalidPrefixErrorCodeGCCARFMRCINVALIDINIT_Node0{"The input reaches the end of the
field position greater than 20 OR no
alphabetic initials are found OR
more than 4 alphabetic characters
are found followed by a non-numeric
and non-space character"}:::decision N_SetInvalidPrefixErrorCodeGCCARFMRCINVALIDINIT_Node0_action["The system should fill the output
field with asterisks and set an
invalid prefix error indicator"]:::main N_SetInvalidPrefixErrorCodeGCCARFMRCINVALIDINIT_Node0 -- Yes --> N_SetInvalidPrefixErrorCodeGCCARFMRCINVALIDINIT_Node0_action N_SetInvalidPrefixErrorCodeGCCARFMRCINVALIDINIT_Node0_action --> E_SetInvalidPrefixErrorCodeGCCARFMRCINVALIDINIT S_SetInvalidPrefixErrorCodeGCCARFMRCINVALIDINIT --> N_SetInvalidPrefixErrorCodeGCCARFMRCINVALIDINIT_Node0 N_SetInvalidPrefixErrorCodeGCCARFMRCINVALIDINIT_Node0 -- No --> E_SetInvalidPrefixErrorCodeGCCARFMRCINVALIDINIT
field position greater than 20 OR no
alphabetic initials are found OR
more than 4 alphabetic characters
are found followed by a non-numeric
and non-space character"}:::decision N_SetInvalidPrefixErrorCodeGCCARFMRCINVALIDINIT_Node0_action["The system should fill the output
field with asterisks and set an
invalid prefix error indicator"]:::main N_SetInvalidPrefixErrorCodeGCCARFMRCINVALIDINIT_Node0 -- Yes --> N_SetInvalidPrefixErrorCodeGCCARFMRCINVALIDINIT_Node0_action N_SetInvalidPrefixErrorCodeGCCARFMRCINVALIDINIT_Node0_action --> E_SetInvalidPrefixErrorCodeGCCARFMRCINVALIDINIT S_SetInvalidPrefixErrorCodeGCCARFMRCINVALIDINIT --> N_SetInvalidPrefixErrorCodeGCCARFMRCINVALIDINIT_Node0 N_SetInvalidPrefixErrorCodeGCCARFMRCINVALIDINIT_Node0 -- No --> E_SetInvalidPrefixErrorCodeGCCARFMRCINVALIDINIT
File: GCCCARFM.cbl
GIVEN:
A carrier ID processing request is received with non-blank input
WHEN:
- The input reaches the end of the field (position greater than 20) or no alphabetic initials are found or more than 4 alphabetic characters are found followed by a non-numeric
- Non-space character
THEN:
- The system should fill the output field with asterisks
- Set an invalid prefix error indicator
β Consolidated Acceptance Criteria
- After skipping spaces following the alphabetic prefix, the position exceeds 20 characters → the system should fill the output field with asterisks and set an input length error indicator
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetInputLengthErrorCodeGCCARFMRCINPUTLENGTH(["Start Step"])
E_SetInputLengthErrorCodeGCCARFMRCINPUTLENGTH(["End Step"])
N_SetInputLengthErrorCodeGCCARFMRCINPUTLENGTH_Node0{"After skipping spaces following the
alphabetic prefix, the position
exceeds 20 characters"}:::decision N_SetInputLengthErrorCodeGCCARFMRCINPUTLENGTH_Node0_action["The system should fill the output
field with asterisks and set an
input length error indicator"]:::main N_SetInputLengthErrorCodeGCCARFMRCINPUTLENGTH_Node0 -- Yes --> N_SetInputLengthErrorCodeGCCARFMRCINPUTLENGTH_Node0_action N_SetInputLengthErrorCodeGCCARFMRCINPUTLENGTH_Node0_action --> E_SetInputLengthErrorCodeGCCARFMRCINPUTLENGTH S_SetInputLengthErrorCodeGCCARFMRCINPUTLENGTH --> N_SetInputLengthErrorCodeGCCARFMRCINPUTLENGTH_Node0 N_SetInputLengthErrorCodeGCCARFMRCINPUTLENGTH_Node0 -- No --> E_SetInputLengthErrorCodeGCCARFMRCINPUTLENGTH
alphabetic prefix, the position
exceeds 20 characters"}:::decision N_SetInputLengthErrorCodeGCCARFMRCINPUTLENGTH_Node0_action["The system should fill the output
field with asterisks and set an
input length error indicator"]:::main N_SetInputLengthErrorCodeGCCARFMRCINPUTLENGTH_Node0 -- Yes --> N_SetInputLengthErrorCodeGCCARFMRCINPUTLENGTH_Node0_action N_SetInputLengthErrorCodeGCCARFMRCINPUTLENGTH_Node0_action --> E_SetInputLengthErrorCodeGCCARFMRCINPUTLENGTH S_SetInputLengthErrorCodeGCCARFMRCINPUTLENGTH --> N_SetInputLengthErrorCodeGCCARFMRCINPUTLENGTH_Node0 N_SetInputLengthErrorCodeGCCARFMRCINPUTLENGTH_Node0 -- No --> E_SetInputLengthErrorCodeGCCARFMRCINPUTLENGTH
File: GCCCARFM.cbl
GIVEN:
A carrier ID processing request is received with valid alphabetic prefix
WHEN:
After skipping spaces following the alphabetic prefix, the position exceeds 20 characters
THEN:
- The system should fill the output field with asterisks
- Set an input length error indicator
β Consolidated Acceptance Criteria
- The carrier ID size parameter is neither 12 nor 10 → the system should fill the output field with asterisks and set an invalid size error indicator
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetInvalidSizeErrorCodeGCCARFMRCINVALIDSIZE(["Start Step"])
E_SetInvalidSizeErrorCodeGCCARFMRCINVALIDSIZE(["End Step"])
N_SetInvalidSizeErrorCodeGCCARFMRCINVALIDSIZE_Node0{"The carrier ID size parameter is
neither 12 nor 10"}:::decision N_SetInvalidSizeErrorCodeGCCARFMRCINVALIDSIZE_Node0_action["The system should fill the output
field with asterisks and set an
invalid size error indicator"]:::main N_SetInvalidSizeErrorCodeGCCARFMRCINVALIDSIZE_Node0 -- Yes --> N_SetInvalidSizeErrorCodeGCCARFMRCINVALIDSIZE_Node0_action N_SetInvalidSizeErrorCodeGCCARFMRCINVALIDSIZE_Node0_action --> E_SetInvalidSizeErrorCodeGCCARFMRCINVALIDSIZE S_SetInvalidSizeErrorCodeGCCARFMRCINVALIDSIZE --> N_SetInvalidSizeErrorCodeGCCARFMRCINVALIDSIZE_Node0 N_SetInvalidSizeErrorCodeGCCARFMRCINVALIDSIZE_Node0 -- No --> E_SetInvalidSizeErrorCodeGCCARFMRCINVALIDSIZE
neither 12 nor 10"}:::decision N_SetInvalidSizeErrorCodeGCCARFMRCINVALIDSIZE_Node0_action["The system should fill the output
field with asterisks and set an
invalid size error indicator"]:::main N_SetInvalidSizeErrorCodeGCCARFMRCINVALIDSIZE_Node0 -- Yes --> N_SetInvalidSizeErrorCodeGCCARFMRCINVALIDSIZE_Node0_action N_SetInvalidSizeErrorCodeGCCARFMRCINVALIDSIZE_Node0_action --> E_SetInvalidSizeErrorCodeGCCARFMRCINVALIDSIZE S_SetInvalidSizeErrorCodeGCCARFMRCINVALIDSIZE --> N_SetInvalidSizeErrorCodeGCCARFMRCINVALIDSIZE_Node0 N_SetInvalidSizeErrorCodeGCCARFMRCINVALIDSIZE_Node0 -- No --> E_SetInvalidSizeErrorCodeGCCARFMRCINVALIDSIZE
File: GCCCARFM.cbl
GIVEN:
A carrier ID processing request is received with valid input format
WHEN:
The carrier ID size parameter is neither 12 nor 10
THEN:
- The system should fill the output field with asterisks
- Set an invalid size error indicator
β Consolidated Acceptance Criteria
- The count of numeric digits in the input exceeds the maximum allowed for the specified size → the system should fill the output field with asterisks and set an invalid numbers error indicator
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetInvalidNumbersErrorCodeGCCARFMRCINVALIDNUM(["Start Step"])
E_SetInvalidNumbersErrorCodeGCCARFMRCINVALIDNUM(["End Step"])
N_SetInvalidNumbersErrorCodeGCCARFMRCINVALIDNUM_Node0{"The count of numeric digits in the
input exceeds the maximum allowed
for the specified size"}:::decision N_SetInvalidNumbersErrorCodeGCCARFMRCINVALIDNUM_Node0_action["The system should fill the output
field with asterisks and set an
invalid numbers error indicator"]:::main N_SetInvalidNumbersErrorCodeGCCARFMRCINVALIDNUM_Node0 -- Yes --> N_SetInvalidNumbersErrorCodeGCCARFMRCINVALIDNUM_Node0_action N_SetInvalidNumbersErrorCodeGCCARFMRCINVALIDNUM_Node0_action --> E_SetInvalidNumbersErrorCodeGCCARFMRCINVALIDNUM S_SetInvalidNumbersErrorCodeGCCARFMRCINVALIDNUM --> N_SetInvalidNumbersErrorCodeGCCARFMRCINVALIDNUM_Node0 N_SetInvalidNumbersErrorCodeGCCARFMRCINVALIDNUM_Node0 -- No --> E_SetInvalidNumbersErrorCodeGCCARFMRCINVALIDNUM
input exceeds the maximum allowed
for the specified size"}:::decision N_SetInvalidNumbersErrorCodeGCCARFMRCINVALIDNUM_Node0_action["The system should fill the output
field with asterisks and set an
invalid numbers error indicator"]:::main N_SetInvalidNumbersErrorCodeGCCARFMRCINVALIDNUM_Node0 -- Yes --> N_SetInvalidNumbersErrorCodeGCCARFMRCINVALIDNUM_Node0_action N_SetInvalidNumbersErrorCodeGCCARFMRCINVALIDNUM_Node0_action --> E_SetInvalidNumbersErrorCodeGCCARFMRCINVALIDNUM S_SetInvalidNumbersErrorCodeGCCARFMRCINVALIDNUM --> N_SetInvalidNumbersErrorCodeGCCARFMRCINVALIDNUM_Node0 N_SetInvalidNumbersErrorCodeGCCARFMRCINVALIDNUM_Node0 -- No --> E_SetInvalidNumbersErrorCodeGCCARFMRCINVALIDNUM
File: GCCCARFM.cbl
GIVEN:
A carrier ID processing request is received with valid size configuration (12 allows 8 digits, 10 allows 6 digits)
WHEN:
The count of numeric digits in the input exceeds the maximum allowed for the specified size
THEN:
- The system should fill the output field with asterisks
- Set an invalid numbers error indicator
β Consolidated Acceptance Criteria
- Non-space characters are found after the numeric portion of the carrier ID → the system should fill the output field with asterisks and set a format error indicator
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFormatErrorCodeGCCARFMRCINPUTFORMAT(["Start Step"])
E_SetFormatErrorCodeGCCARFMRCINPUTFORMAT(["End Step"])
N_SetFormatErrorCodeGCCARFMRCINPUTFORMAT_Node0{"Non-space characters are found
after the numeric portion of the
carrier ID"}:::decision N_SetFormatErrorCodeGCCARFMRCINPUTFORMAT_Node0_action["The system should fill the output
field with asterisks and set a
format error indicator"]:::main N_SetFormatErrorCodeGCCARFMRCINPUTFORMAT_Node0 -- Yes --> N_SetFormatErrorCodeGCCARFMRCINPUTFORMAT_Node0_action N_SetFormatErrorCodeGCCARFMRCINPUTFORMAT_Node0_action --> E_SetFormatErrorCodeGCCARFMRCINPUTFORMAT S_SetFormatErrorCodeGCCARFMRCINPUTFORMAT --> N_SetFormatErrorCodeGCCARFMRCINPUTFORMAT_Node0 N_SetFormatErrorCodeGCCARFMRCINPUTFORMAT_Node0 -- No --> E_SetFormatErrorCodeGCCARFMRCINPUTFORMAT
after the numeric portion of the
carrier ID"}:::decision N_SetFormatErrorCodeGCCARFMRCINPUTFORMAT_Node0_action["The system should fill the output
field with asterisks and set a
format error indicator"]:::main N_SetFormatErrorCodeGCCARFMRCINPUTFORMAT_Node0 -- Yes --> N_SetFormatErrorCodeGCCARFMRCINPUTFORMAT_Node0_action N_SetFormatErrorCodeGCCARFMRCINPUTFORMAT_Node0_action --> E_SetFormatErrorCodeGCCARFMRCINPUTFORMAT S_SetFormatErrorCodeGCCARFMRCINPUTFORMAT --> N_SetFormatErrorCodeGCCARFMRCINPUTFORMAT_Node0 N_SetFormatErrorCodeGCCARFMRCINPUTFORMAT_Node0 -- No --> E_SetFormatErrorCodeGCCARFMRCINPUTFORMAT
File: GCCCARFM.cbl
GIVEN:
A carrier ID processing request is received with valid alphabetic prefix and numeric digits
WHEN:
Non-space characters are found after the numeric portion of the carrier ID
THEN:
- The system should fill the output field with asterisks
- Set a format error indicator
GCCDBL Sequence (US Train)
Objective: Orchestrates key processes including Initialize Program Parameters, Validate Waybill Input, Initialize Platform Tracking Flags, Read Equipment Records, Identify Top, and other related sub-functions.
πΊοΈ High-Level Visual Map
flowchart TD
A[Program Start]:::start
B[1:Initialize Program Parameters]:::process
C[2:Validate Waybill Input]:::process
D{Waybill Found?}:::decision
E[3:Initialize Platform Tracking Flags]:::process
F[4:Read Equipment Records]:::process
G[5:Identify Top-Loaded Platforms]:::process
H[6:Save Equipment Key for Loaded Containers]:::process
I[7:Count Double-Stacked Platforms]:::process
J{Double-Stacked Wells Exist?}:::decision
K[8:Determine Traffic Type for Double-Stacked Wells]:::process
L[9:Read Shipment Root Record]:::process
M{Shipment Found?}:::decision
N[10:Read Container Manifest]:::process
O{Container Manifest Found?}:::decision
P[11:Check Haulage Classification]:::process
Q{Is Haulage Traffic?}:::decision
R[12:Analyze Routing Information]:::process
S{Routing Found?}:::decision
T[13:Evaluate Route Segments]:::process
U[14:Classify South-bound Traffic]:::process
V[15:Handle North-bound Traffic]:::process
W[16:Return Results]:::process
X[End Program]:::final
Y[Reset Count to Zero]:::process
%% Datasources
DS1[(FWSWRWR)]:::datasource
DS2[(FWSWREQ)]:::datasource
DS3[(SHIPROOT)]:::datasource
DS4[(GCSUSRT)]:::datasource
DS5[(GCSUSS13)]:::datasource
%% Main Flow
A --> B
B --> C
C --> D
D -->|No| Y
D -->|Yes| E
E --> F
F --> G
G --> H
H --> I
I --> J
J -->|No| W
J -->|Yes| K
K --> L
L --> M
M -->|No| Y
M -->|Yes| N
N --> O
O -->|No| Y
O -->|Yes| P
P --> Q
Q -->|Yes| W
Q -->|No| R
R --> S
S -->|No| Y
S -->|Yes| T
T --> U
T --> V
U --> W
V --> Y
Y --> W
W --> X
%% Datasource Interactions
DS1 -.->|Read Waybill| C
DS2 -.->|Read Equipment Records| F
DS3 -.->|Read Shipment Details| L
DS4 -.->|Read Container Manifest| N
DS5 -.->|Read Routing Segments| R
%% Class Definitions
classDef start fill:#67A353
classDef process fill:#08AAD2
classDef decision fill:#FFE347
classDef datasource fill:#2EA597
classDef final fill:#D13313
π Step-by-Step Logic Trace
β Consolidated Acceptance Criteria
- The system initializes program parameters → the double stack counter is set to zero AND the traffic type is set to CPRS
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_1InitializeProgramParameters(["Start Step"])
E_1InitializeProgramParameters(["End Step"])
N_1InitializeProgramParameters_Node0{"The system initializes program
parameters"}:::decision N_1InitializeProgramParameters_Node0_action["The double stack counter is set to
zero AND the traffic type is set to
CPRS"]:::main N_1InitializeProgramParameters_Node0 -- Yes --> N_1InitializeProgramParameters_Node0_action N_1InitializeProgramParameters_Node0_action --> E_1InitializeProgramParameters S_1InitializeProgramParameters --> N_1InitializeProgramParameters_Node0 N_1InitializeProgramParameters_Node0 -- No --> E_1InitializeProgramParameters
parameters"}:::decision N_1InitializeProgramParameters_Node0_action["The double stack counter is set to
zero AND the traffic type is set to
CPRS"]:::main N_1InitializeProgramParameters_Node0 -- Yes --> N_1InitializeProgramParameters_Node0_action N_1InitializeProgramParameters_Node0_action --> E_1InitializeProgramParameters S_1InitializeProgramParameters --> N_1InitializeProgramParameters_Node0 N_1InitializeProgramParameters_Node0 -- No --> E_1InitializeProgramParameters
File: GCCDBL.cbl
GIVEN:
The double stack analysis process is starting
WHEN:
The system initializes program parameters
THEN:
- The double stack counter is set to zero
- The traffic type is set to cprs
β Consolidated Acceptance Criteria
- The system attempts to retrieve the waybill record → the system determines if the waybill exists or not
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_2ValidateWaybillInput(["Start Step"])
E_2ValidateWaybillInput(["End Step"])
N_2ValidateWaybillInput_Node0{"The system attempts to retrieve the
waybill record"}:::decision N_2ValidateWaybillInput_Node0_action["The system determines if the
waybill exists or not"]:::main N_2ValidateWaybillInput_Node0 -- Yes --> N_2ValidateWaybillInput_Node0_action N_2ValidateWaybillInput_Node0_action --> E_2ValidateWaybillInput S_2ValidateWaybillInput --> N_2ValidateWaybillInput_Node0 N_2ValidateWaybillInput_Node0 -- No --> E_2ValidateWaybillInput
waybill record"}:::decision N_2ValidateWaybillInput_Node0_action["The system determines if the
waybill exists or not"]:::main N_2ValidateWaybillInput_Node0 -- Yes --> N_2ValidateWaybillInput_Node0_action N_2ValidateWaybillInput_Node0_action --> E_2ValidateWaybillInput S_2ValidateWaybillInput --> N_2ValidateWaybillInput_Node0 N_2ValidateWaybillInput_Node0 -- No --> E_2ValidateWaybillInput
File: GCCDBL.cbl
GIVEN:
A waybill number is provided for double stack analysis
WHEN:
The system attempts to retrieve the waybill record
THEN:
The system determines if the waybill exists or not
β Consolidated Acceptance Criteria
- The system prepares to analyze platform double stack capabilities → platform A, B, C, D, and E double stack flags are all set to not found AND equipment key storage is cleared
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_3InitializePlatformTrackingFlags(["Start Step"])
E_3InitializePlatformTrackingFlags(["End Step"])
N_3InitializePlatformTrackingFlags_Node0{"The system prepares to analyze
platform double stack capabilities"}:::decision N_3InitializePlatformTrackingFlags_Node0_action["Platform A, B, C, D, and E double
stack flags are all set to not found
AND equipment key storage is cleared"]:::main N_3InitializePlatformTrackingFlags_Node0 -- Yes --> N_3InitializePlatformTrackingFlags_Node0_action N_3InitializePlatformTrackingFlags_Node0_action --> E_3InitializePlatformTrackingFlags S_3InitializePlatformTrackingFlags --> N_3InitializePlatformTrackingFlags_Node0 N_3InitializePlatformTrackingFlags_Node0 -- No --> E_3InitializePlatformTrackingFlags
platform double stack capabilities"}:::decision N_3InitializePlatformTrackingFlags_Node0_action["Platform A, B, C, D, and E double
stack flags are all set to not found
AND equipment key storage is cleared"]:::main N_3InitializePlatformTrackingFlags_Node0 -- Yes --> N_3InitializePlatformTrackingFlags_Node0_action N_3InitializePlatformTrackingFlags_Node0_action --> E_3InitializePlatformTrackingFlags S_3InitializePlatformTrackingFlags --> N_3InitializePlatformTrackingFlags_Node0 N_3InitializePlatformTrackingFlags_Node0 -- No --> E_3InitializePlatformTrackingFlags
File: GCCDBL.cbl
GIVEN:
A valid waybill has been found
WHEN:
The system prepares to analyze platform double stack capabilities
THEN:
- Platform a, b, c, d, and e double stack flags are all set to not found
- Equipment key storage is cleared
β Consolidated Acceptance Criteria
- An equipment record has slot type 'T' (top slot) → the corresponding platform (A, B, C, D, or E) is marked as having double stack capability
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_5IdentifyTopLoadedPlatforms(["Start Step"])
E_5IdentifyTopLoadedPlatforms(["End Step"])
N_5IdentifyTopLoadedPlatforms_Node0{"An equipment record has slot type T
top slot"}:::decision N_5IdentifyTopLoadedPlatforms_Node0_action["The corresponding platform A, B, C,
D, or E is marked as having double
stack capability"]:::main N_5IdentifyTopLoadedPlatforms_Node0 -- Yes --> N_5IdentifyTopLoadedPlatforms_Node0_action N_5IdentifyTopLoadedPlatforms_Node0_action --> E_5IdentifyTopLoadedPlatforms S_5IdentifyTopLoadedPlatforms --> N_5IdentifyTopLoadedPlatforms_Node0 N_5IdentifyTopLoadedPlatforms_Node0 -- No --> E_5IdentifyTopLoadedPlatforms
top slot"}:::decision N_5IdentifyTopLoadedPlatforms_Node0_action["The corresponding platform A, B, C,
D, or E is marked as having double
stack capability"]:::main N_5IdentifyTopLoadedPlatforms_Node0 -- Yes --> N_5IdentifyTopLoadedPlatforms_Node0_action N_5IdentifyTopLoadedPlatforms_Node0_action --> E_5IdentifyTopLoadedPlatforms S_5IdentifyTopLoadedPlatforms --> N_5IdentifyTopLoadedPlatforms_Node0 N_5IdentifyTopLoadedPlatforms_Node0 -- No --> E_5IdentifyTopLoadedPlatforms
File: GCCDBL.cbl
GIVEN:
Equipment records are being processed for a waybill
WHEN:
An equipment record has slot type 'T' (top slot)
THEN:
The corresponding platform (A, B, C, D, or E) is marked as having double stack capability
β Consolidated Acceptance Criteria
- An equipment record has terminal code 'L' (loaded) → the equipment key is saved for traffic type determination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_6SaveEquipmentKeyforLoadedContainers(["Start Step"])
E_6SaveEquipmentKeyforLoadedContainers(["End Step"])
N_6SaveEquipmentKeyforLoadedContainers_Node0{"An equipment record has terminal
code L loaded"}:::decision N_6SaveEquipmentKeyforLoadedContainers_Node0_action["The equipment key is saved for
traffic type determination"]:::main N_6SaveEquipmentKeyforLoadedContainers_Node0 -- Yes --> N_6SaveEquipmentKeyforLoadedContainers_Node0_action N_6SaveEquipmentKeyforLoadedContainers_Node0_action --> E_6SaveEquipmentKeyforLoadedContainers S_6SaveEquipmentKeyforLoadedContainers --> N_6SaveEquipmentKeyforLoadedContainers_Node0 N_6SaveEquipmentKeyforLoadedContainers_Node0 -- No --> E_6SaveEquipmentKeyforLoadedContainers
code L loaded"}:::decision N_6SaveEquipmentKeyforLoadedContainers_Node0_action["The equipment key is saved for
traffic type determination"]:::main N_6SaveEquipmentKeyforLoadedContainers_Node0 -- Yes --> N_6SaveEquipmentKeyforLoadedContainers_Node0_action N_6SaveEquipmentKeyforLoadedContainers_Node0_action --> E_6SaveEquipmentKeyforLoadedContainers S_6SaveEquipmentKeyforLoadedContainers --> N_6SaveEquipmentKeyforLoadedContainers_Node0 N_6SaveEquipmentKeyforLoadedContainers_Node0 -- No --> E_6SaveEquipmentKeyforLoadedContainers
File: GCCDBL.cbl
GIVEN:
Equipment records are being processed AND no equipment key has been saved yet
WHEN:
An equipment record has terminal code 'L' (loaded)
THEN:
The equipment key is saved for traffic type determination
β Consolidated Acceptance Criteria
- The system tallies platforms with double stack capability → each platform (A, B, C, D, E) that has double stack capability adds 1 to the total count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_7CountDoubleStackedPlatforms(["Start Step"])
E_7CountDoubleStackedPlatforms(["End Step"])
N_7CountDoubleStackedPlatforms_Node0{"The system tallies platforms with
double stack capability"}:::decision N_7CountDoubleStackedPlatforms_Node0_action["Each platform A, B, C, D, E that
has double stack capability adds 1
to the total count"]:::main N_7CountDoubleStackedPlatforms_Node0 -- Yes --> N_7CountDoubleStackedPlatforms_Node0_action N_7CountDoubleStackedPlatforms_Node0_action --> E_7CountDoubleStackedPlatforms S_7CountDoubleStackedPlatforms --> N_7CountDoubleStackedPlatforms_Node0 N_7CountDoubleStackedPlatforms_Node0 -- No --> E_7CountDoubleStackedPlatforms
double stack capability"}:::decision N_7CountDoubleStackedPlatforms_Node0_action["Each platform A, B, C, D, E that
has double stack capability adds 1
to the total count"]:::main N_7CountDoubleStackedPlatforms_Node0 -- Yes --> N_7CountDoubleStackedPlatforms_Node0_action N_7CountDoubleStackedPlatforms_Node0_action --> E_7CountDoubleStackedPlatforms S_7CountDoubleStackedPlatforms --> N_7CountDoubleStackedPlatforms_Node0 N_7CountDoubleStackedPlatforms_Node0 -- No --> E_7CountDoubleStackedPlatforms
File: GCCDBL.cbl
GIVEN:
All equipment records have been processed for platform identification
WHEN:
The system tallies platforms with double stack capability
THEN:
Each platform (A, B, C, D, E) that has double stack capability adds 1 to the total count
β Consolidated Acceptance Criteria
- No equipment key was saved during equipment processing → the traffic type analysis is skipped
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_8DetermineTrafficTypeforDoubleStackedWells(["Start Step"])
E_8DetermineTrafficTypeforDoubleStackedWells(["End Step"])
N_8DetermineTrafficTypeforDoubleStackedWells_Node0{"No equipment key was saved during
equipment processing"}:::decision N_8DetermineTrafficTypeforDoubleStackedWells_Node0_action["The traffic type analysis is
skipped"]:::main N_8DetermineTrafficTypeforDoubleStackedWells_Node0 -- Yes --> N_8DetermineTrafficTypeforDoubleStackedWells_Node0_action N_8DetermineTrafficTypeforDoubleStackedWells_Node0_action --> E_8DetermineTrafficTypeforDoubleStackedWells S_8DetermineTrafficTypeforDoubleStackedWells --> N_8DetermineTrafficTypeforDoubleStackedWells_Node0 N_8DetermineTrafficTypeforDoubleStackedWells_Node0 -- No --> E_8DetermineTrafficTypeforDoubleStackedWells
equipment processing"}:::decision N_8DetermineTrafficTypeforDoubleStackedWells_Node0_action["The traffic type analysis is
skipped"]:::main N_8DetermineTrafficTypeforDoubleStackedWells_Node0 -- Yes --> N_8DetermineTrafficTypeforDoubleStackedWells_Node0_action N_8DetermineTrafficTypeforDoubleStackedWells_Node0_action --> E_8DetermineTrafficTypeforDoubleStackedWells S_8DetermineTrafficTypeforDoubleStackedWells --> N_8DetermineTrafficTypeforDoubleStackedWells_Node0 N_8DetermineTrafficTypeforDoubleStackedWells_Node0 -- No --> E_8DetermineTrafficTypeforDoubleStackedWells
File: GCCDBL.cbl
GIVEN:
Double stack platforms exist AND traffic type analysis is required
WHEN:
No equipment key was saved during equipment processing
THEN:
The traffic type analysis is skipped
β Consolidated Acceptance Criteria
- Current segment or next segment is empty or contains low values → the segment pair is skipped and processing continues with the next pair
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_13EvaluateRouteSegments(["Start Step"])
E_13EvaluateRouteSegments(["End Step"])
N_13EvaluateRouteSegments_Node0{"Current segment or next segment is
empty or contains low values"}:::decision N_13EvaluateRouteSegments_Node0_action["The segment pair is skipped and
processing continues with the next
pair"]:::main N_13EvaluateRouteSegments_Node0 -- Yes --> N_13EvaluateRouteSegments_Node0_action N_13EvaluateRouteSegments_Node0_action --> E_13EvaluateRouteSegments S_13EvaluateRouteSegments --> N_13EvaluateRouteSegments_Node0 N_13EvaluateRouteSegments_Node0 -- No --> E_13EvaluateRouteSegments
empty or contains low values"}:::decision N_13EvaluateRouteSegments_Node0_action["The segment pair is skipped and
processing continues with the next
pair"]:::main N_13EvaluateRouteSegments_Node0 -- Yes --> N_13EvaluateRouteSegments_Node0_action N_13EvaluateRouteSegments_Node0_action --> E_13EvaluateRouteSegments S_13EvaluateRouteSegments --> N_13EvaluateRouteSegments_Node0 N_13EvaluateRouteSegments_Node0 -- No --> E_13EvaluateRouteSegments
File: GCCDBL.cbl
GIVEN:
Routing segments are being processed in pairs
WHEN:
Current segment or next segment is empty or contains low values
THEN:
- The segment pair is skipped
- Processing continues with the next pair
β Consolidated Acceptance Criteria
- First carrier is CPRS AND second carrier is CSXT AND route includes DET → the traffic type is set to CSXT
- First carrier is CPRS AND second carrier is NS AND route includes DET → the traffic type is set to NS
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_14ClassifySouthboundTraffic(["Start Step"])
E_14ClassifySouthboundTraffic(["End Step"])
N_14ClassifySouthboundTraffic_Node0{"First carrier is CPRS AND second
carrier is CSXT AND route includes
DET"}:::decision N_14ClassifySouthboundTraffic_Node0_action["The traffic type is set to CSXT"]:::main N_14ClassifySouthboundTraffic_Node0 -- Yes --> N_14ClassifySouthboundTraffic_Node0_action N_14ClassifySouthboundTraffic_Node0_action --> E_14ClassifySouthboundTraffic S_14ClassifySouthboundTraffic --> N_14ClassifySouthboundTraffic_Node0 N_14ClassifySouthboundTraffic_Node1{"First carrier is CPRS AND second
carrier is NS AND route includes DET"}:::decision N_14ClassifySouthboundTraffic_Node1_action["The traffic type is set to NS"]:::main N_14ClassifySouthboundTraffic_Node1 -- Yes --> N_14ClassifySouthboundTraffic_Node1_action N_14ClassifySouthboundTraffic_Node1_action --> E_14ClassifySouthboundTraffic N_14ClassifySouthboundTraffic_Node0 -- No --> N_14ClassifySouthboundTraffic_Node1 N_14ClassifySouthboundTraffic_Node1 -- No --> E_14ClassifySouthboundTraffic
carrier is CSXT AND route includes
DET"}:::decision N_14ClassifySouthboundTraffic_Node0_action["The traffic type is set to CSXT"]:::main N_14ClassifySouthboundTraffic_Node0 -- Yes --> N_14ClassifySouthboundTraffic_Node0_action N_14ClassifySouthboundTraffic_Node0_action --> E_14ClassifySouthboundTraffic S_14ClassifySouthboundTraffic --> N_14ClassifySouthboundTraffic_Node0 N_14ClassifySouthboundTraffic_Node1{"First carrier is CPRS AND second
carrier is NS AND route includes DET"}:::decision N_14ClassifySouthboundTraffic_Node1_action["The traffic type is set to NS"]:::main N_14ClassifySouthboundTraffic_Node1 -- Yes --> N_14ClassifySouthboundTraffic_Node1_action N_14ClassifySouthboundTraffic_Node1_action --> E_14ClassifySouthboundTraffic N_14ClassifySouthboundTraffic_Node0 -- No --> N_14ClassifySouthboundTraffic_Node1 N_14ClassifySouthboundTraffic_Node1 -- No --> E_14ClassifySouthboundTraffic
File: GCCDBL.cbl
GIVEN:
Routing segments are being analyzed
WHEN:
- First carrier is cprs
- Second carrier is csxt
- Route includes det
THEN:
The traffic type is set to CSXT
File: GCCDBL.cbl
Exclusion / Alternative Path
GIVEN:
Routing segments are being analyzed AND CSXT classification was not matched
WHEN:
- First carrier is cprs
- Second carrier is ns
- Route includes det
THEN:
The traffic type is set to NS
β Consolidated Acceptance Criteria
- First carrier is CSXT or NS AND second carrier is CPRS AND route includes DET → the double stack count is reset to zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_15HandleNorthboundTraffic(["Start Step"])
E_15HandleNorthboundTraffic(["End Step"])
N_15HandleNorthboundTraffic_Node0{"First carrier is CSXT or NS AND
second carrier is CPRS AND route
includes DET"}:::decision N_15HandleNorthboundTraffic_Node0_action["The double stack count is reset to
zero"]:::main N_15HandleNorthboundTraffic_Node0 -- Yes --> N_15HandleNorthboundTraffic_Node0_action N_15HandleNorthboundTraffic_Node0_action --> E_15HandleNorthboundTraffic S_15HandleNorthboundTraffic --> N_15HandleNorthboundTraffic_Node0 N_15HandleNorthboundTraffic_Node0 -- No --> E_15HandleNorthboundTraffic
second carrier is CPRS AND route
includes DET"}:::decision N_15HandleNorthboundTraffic_Node0_action["The double stack count is reset to
zero"]:::main N_15HandleNorthboundTraffic_Node0 -- Yes --> N_15HandleNorthboundTraffic_Node0_action N_15HandleNorthboundTraffic_Node0_action --> E_15HandleNorthboundTraffic S_15HandleNorthboundTraffic --> N_15HandleNorthboundTraffic_Node0 N_15HandleNorthboundTraffic_Node0 -- No --> E_15HandleNorthboundTraffic
File: GCCDBL.cbl
Exclusion / Alternative Path
GIVEN:
Routing segments are being analyzed AND southbound classification was not matched
WHEN:
- First carrier is csxt or ns
- Second carrier is cprs
- Route includes det
THEN:
The double stack count is reset to zero
β Consolidated Acceptance Criteria
- The waybill record is not found in the system → the process exits without performing any double stack counting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WaybillFound(["Start Step"])
E_WaybillFound(["End Step"])
N_WaybillFound_Node0{"The waybill record is not found in
the system"}:::decision N_WaybillFound_Node0_action["The process exits without
performing any double stack counting"]:::main N_WaybillFound_Node0 -- Yes --> N_WaybillFound_Node0_action N_WaybillFound_Node0_action --> E_WaybillFound S_WaybillFound --> N_WaybillFound_Node0 N_WaybillFound_Node0 -- No --> E_WaybillFound
the system"}:::decision N_WaybillFound_Node0_action["The process exits without
performing any double stack counting"]:::main N_WaybillFound_Node0 -- Yes --> N_WaybillFound_Node0_action N_WaybillFound_Node0_action --> E_WaybillFound S_WaybillFound --> N_WaybillFound_Node0 N_WaybillFound_Node0 -- No --> E_WaybillFound
File: GCCDBL.cbl
Exclusion / Alternative Path
GIVEN:
A waybill number has been provided for analysis
WHEN:
The waybill record is not found in the system
THEN:
The process exits without performing any double stack counting
β Consolidated Acceptance Criteria
- The double stack count is greater than zero → the system proceeds to determine traffic type
- The double stack count is zero → the system skips traffic type determination and returns results
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DoubleStackedWellsExist(["Start Step"])
E_DoubleStackedWellsExist(["End Step"])
N_DoubleStackedWellsExist_Node0{"The double stack count is greater
than zero"}:::decision N_DoubleStackedWellsExist_Node0_action["The system proceeds to determine
traffic type"]:::main N_DoubleStackedWellsExist_Node0 -- Yes --> N_DoubleStackedWellsExist_Node0_action N_DoubleStackedWellsExist_Node0_action --> E_DoubleStackedWellsExist S_DoubleStackedWellsExist --> N_DoubleStackedWellsExist_Node0 N_DoubleStackedWellsExist_Node1{"The double stack count is zero"}:::decision N_DoubleStackedWellsExist_Node1_action["The system skips traffic type
determination and returns results"]:::main N_DoubleStackedWellsExist_Node1 -- Yes --> N_DoubleStackedWellsExist_Node1_action N_DoubleStackedWellsExist_Node1_action --> E_DoubleStackedWellsExist N_DoubleStackedWellsExist_Node0 -- No --> N_DoubleStackedWellsExist_Node1 N_DoubleStackedWellsExist_Node1 -- No --> E_DoubleStackedWellsExist
than zero"}:::decision N_DoubleStackedWellsExist_Node0_action["The system proceeds to determine
traffic type"]:::main N_DoubleStackedWellsExist_Node0 -- Yes --> N_DoubleStackedWellsExist_Node0_action N_DoubleStackedWellsExist_Node0_action --> E_DoubleStackedWellsExist S_DoubleStackedWellsExist --> N_DoubleStackedWellsExist_Node0 N_DoubleStackedWellsExist_Node1{"The double stack count is zero"}:::decision N_DoubleStackedWellsExist_Node1_action["The system skips traffic type
determination and returns results"]:::main N_DoubleStackedWellsExist_Node1 -- Yes --> N_DoubleStackedWellsExist_Node1_action N_DoubleStackedWellsExist_Node1_action --> E_DoubleStackedWellsExist N_DoubleStackedWellsExist_Node0 -- No --> N_DoubleStackedWellsExist_Node1 N_DoubleStackedWellsExist_Node1 -- No --> E_DoubleStackedWellsExist
File: GCCDBL.cbl
GIVEN:
Double stack platform counting has been completed
WHEN:
The double stack count is greater than zero
THEN:
The system proceeds to determine traffic type
File: GCCDBL.cbl
GIVEN:
Double stack platform counting has been completed
WHEN:
The double stack count is zero
THEN:
- The system skips traffic type determination
- Returns results
β Consolidated Acceptance Criteria
- The shipment root record is not found → the double stack count is reset to zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShipmentFound(["Start Step"])
E_ShipmentFound(["End Step"])
N_ShipmentFound_Node0{"The shipment root record is not
found"}:::decision N_ShipmentFound_Node0_action["The double stack count is reset to
zero"]:::main N_ShipmentFound_Node0 -- Yes --> N_ShipmentFound_Node0_action N_ShipmentFound_Node0_action --> E_ShipmentFound S_ShipmentFound --> N_ShipmentFound_Node0 N_ShipmentFound_Node0 -- No --> E_ShipmentFound
found"}:::decision N_ShipmentFound_Node0_action["The double stack count is reset to
zero"]:::main N_ShipmentFound_Node0 -- Yes --> N_ShipmentFound_Node0_action N_ShipmentFound_Node0_action --> E_ShipmentFound S_ShipmentFound --> N_ShipmentFound_Node0 N_ShipmentFound_Node0 -- No --> E_ShipmentFound
File: GCCDBL.cbl
Exclusion / Alternative Path
GIVEN:
An equipment key exists for traffic type analysis
WHEN:
The shipment root record is not found
THEN:
The double stack count is reset to zero
β Consolidated Acceptance Criteria
- The container manifest record is not found → the double stack count is reset to zero
- The system checks if the container manifest was found → if container manifest is not found, reset double-stack count to zero and terminate traffic type determination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContainerManifestFound(["Start Step"])
E_ContainerManifestFound(["End Step"])
N_ContainerManifestFound_Node0{"The container manifest record is
not found"}:::decision N_ContainerManifestFound_Node0_action["The double stack count is reset to
zero"]:::main N_ContainerManifestFound_Node0 -- Yes --> N_ContainerManifestFound_Node0_action N_ContainerManifestFound_Node0_action --> E_ContainerManifestFound S_ContainerManifestFound --> N_ContainerManifestFound_Node0 N_ContainerManifestFound_Node1{"The system checks if the container
manifest was found"}:::decision N_ContainerManifestFound_Node1_action["If container manifest is not found,
reset double-stack count to zero and
terminate traffic type determination"]:::exclusion N_ContainerManifestFound_Node1 -- Yes -->|Alternative| N_ContainerManifestFound_Node1_action N_ContainerManifestFound_Node1_action --> E_ContainerManifestFound N_ContainerManifestFound_Node0 -- No --> N_ContainerManifestFound_Node1 N_ContainerManifestFound_Node1 -- No --> E_ContainerManifestFound
not found"}:::decision N_ContainerManifestFound_Node0_action["The double stack count is reset to
zero"]:::main N_ContainerManifestFound_Node0 -- Yes --> N_ContainerManifestFound_Node0_action N_ContainerManifestFound_Node0_action --> E_ContainerManifestFound S_ContainerManifestFound --> N_ContainerManifestFound_Node0 N_ContainerManifestFound_Node1{"The system checks if the container
manifest was found"}:::decision N_ContainerManifestFound_Node1_action["If container manifest is not found,
reset double-stack count to zero and
terminate traffic type determination"]:::exclusion N_ContainerManifestFound_Node1 -- Yes -->|Alternative| N_ContainerManifestFound_Node1_action N_ContainerManifestFound_Node1_action --> E_ContainerManifestFound N_ContainerManifestFound_Node0 -- No --> N_ContainerManifestFound_Node1 N_ContainerManifestFound_Node1 -- No --> E_ContainerManifestFound
File: GCCDBL.cbl
Exclusion / Alternative Path
GIVEN:
A shipment root record exists
WHEN:
The container manifest record is not found
THEN:
The double stack count is reset to zero
File: GCCDBL.cbl
GIVEN:
A container manifest record retrieval has been attempted
WHEN:
The system checks if the container manifest was found
THEN:
- If container manifest is not found, reset double-stack count to zero
- Terminate traffic type determination
β Consolidated Acceptance Criteria
- The manifest indicates haulage traffic classification → the traffic type is set to HAUL
- The haulage indicator shows this is haulage traffic → set traffic type to HAULAGE and complete traffic type determination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsHaulageTraffic(["Start Step"])
E_IsHaulageTraffic(["End Step"])
N_IsHaulageTraffic_Node0{"The manifest indicates haulage
traffic classification"}:::decision N_IsHaulageTraffic_Node0_action["The traffic type is set to HAUL"]:::main N_IsHaulageTraffic_Node0 -- Yes --> N_IsHaulageTraffic_Node0_action N_IsHaulageTraffic_Node0_action --> E_IsHaulageTraffic S_IsHaulageTraffic --> N_IsHaulageTraffic_Node0 N_IsHaulageTraffic_Node1{"The haulage indicator shows this is
haulage traffic"}:::decision N_IsHaulageTraffic_Node1_action["Set traffic type to HAULAGE and
complete traffic type determination"]:::main N_IsHaulageTraffic_Node1 -- Yes --> N_IsHaulageTraffic_Node1_action N_IsHaulageTraffic_Node1_action --> E_IsHaulageTraffic N_IsHaulageTraffic_Node0 -- No --> N_IsHaulageTraffic_Node1 N_IsHaulageTraffic_Node1 -- No --> E_IsHaulageTraffic
traffic classification"}:::decision N_IsHaulageTraffic_Node0_action["The traffic type is set to HAUL"]:::main N_IsHaulageTraffic_Node0 -- Yes --> N_IsHaulageTraffic_Node0_action N_IsHaulageTraffic_Node0_action --> E_IsHaulageTraffic S_IsHaulageTraffic --> N_IsHaulageTraffic_Node0 N_IsHaulageTraffic_Node1{"The haulage indicator shows this is
haulage traffic"}:::decision N_IsHaulageTraffic_Node1_action["Set traffic type to HAULAGE and
complete traffic type determination"]:::main N_IsHaulageTraffic_Node1 -- Yes --> N_IsHaulageTraffic_Node1_action N_IsHaulageTraffic_Node1_action --> E_IsHaulageTraffic N_IsHaulageTraffic_Node0 -- No --> N_IsHaulageTraffic_Node1 N_IsHaulageTraffic_Node1 -- No --> E_IsHaulageTraffic
File: GCCDBL.cbl
GIVEN:
A container manifest record exists
WHEN:
The manifest indicates haulage traffic classification
THEN:
The traffic type is set to HAUL
File: GCCDBL.cbl
GIVEN:
Container manifest has been checked for haulage classification
WHEN:
The haulage indicator shows this is haulage traffic
THEN:
- Set traffic type to haulage
- Complete traffic type determination
β Consolidated Acceptance Criteria
- Routing segment 13 information is not found → the double stack count is reset to zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutingFound(["Start Step"])
E_RoutingFound(["End Step"])
N_RoutingFound_Node0{"Routing segment 13 information is
not found"}:::decision N_RoutingFound_Node0_action["The double stack count is reset to
zero"]:::main N_RoutingFound_Node0 -- Yes --> N_RoutingFound_Node0_action N_RoutingFound_Node0_action --> E_RoutingFound S_RoutingFound --> N_RoutingFound_Node0 N_RoutingFound_Node0 -- No --> E_RoutingFound
not found"}:::decision N_RoutingFound_Node0_action["The double stack count is reset to
zero"]:::main N_RoutingFound_Node0 -- Yes --> N_RoutingFound_Node0_action N_RoutingFound_Node0_action --> E_RoutingFound S_RoutingFound --> N_RoutingFound_Node0 N_RoutingFound_Node0 -- No --> E_RoutingFound
File: GCCDBL.cbl
Exclusion / Alternative Path
GIVEN:
Traffic is not classified as haulage
WHEN:
Routing segment 13 information is not found
THEN:
The double stack count is reset to zero
β Consolidated Acceptance Criteria
- The initialization process begins → the double-stack count is set to zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDoubleStackCounttoZero(["Start Step"])
E_SetDoubleStackCounttoZero(["End Step"])
N_SetDoubleStackCounttoZero_Node0{"The initialization process begins"}:::decision
N_SetDoubleStackCounttoZero_Node0_action["The double-stack count is set to
zero"]:::main N_SetDoubleStackCounttoZero_Node0 -- Yes --> N_SetDoubleStackCounttoZero_Node0_action N_SetDoubleStackCounttoZero_Node0_action --> E_SetDoubleStackCounttoZero S_SetDoubleStackCounttoZero --> N_SetDoubleStackCounttoZero_Node0 N_SetDoubleStackCounttoZero_Node0 -- No --> E_SetDoubleStackCounttoZero
zero"]:::main N_SetDoubleStackCounttoZero_Node0 -- Yes --> N_SetDoubleStackCounttoZero_Node0_action N_SetDoubleStackCounttoZero_Node0_action --> E_SetDoubleStackCounttoZero S_SetDoubleStackCounttoZero --> N_SetDoubleStackCounttoZero_Node0 N_SetDoubleStackCounttoZero_Node0 -- No --> E_SetDoubleStackCounttoZero
File: GCCDBL.cbl
GIVEN:
The program is starting initialization
WHEN:
The initialization process begins
THEN:
The double-stack count is set to zero
β Consolidated Acceptance Criteria
- The traffic type needs to be set to default value → the traffic type is set to CPRS
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultTrafficTypetoCPRS(["Start Step"])
E_SetDefaultTrafficTypetoCPRS(["End Step"])
N_SetDefaultTrafficTypetoCPRS_Node0{"The traffic type needs to be set to
default value"}:::decision N_SetDefaultTrafficTypetoCPRS_Node0_action["The traffic type is set to CPRS"]:::main N_SetDefaultTrafficTypetoCPRS_Node0 -- Yes --> N_SetDefaultTrafficTypetoCPRS_Node0_action N_SetDefaultTrafficTypetoCPRS_Node0_action --> E_SetDefaultTrafficTypetoCPRS S_SetDefaultTrafficTypetoCPRS --> N_SetDefaultTrafficTypetoCPRS_Node0 N_SetDefaultTrafficTypetoCPRS_Node0 -- No --> E_SetDefaultTrafficTypetoCPRS
default value"}:::decision N_SetDefaultTrafficTypetoCPRS_Node0_action["The traffic type is set to CPRS"]:::main N_SetDefaultTrafficTypetoCPRS_Node0 -- Yes --> N_SetDefaultTrafficTypetoCPRS_Node0_action N_SetDefaultTrafficTypetoCPRS_Node0_action --> E_SetDefaultTrafficTypetoCPRS S_SetDefaultTrafficTypetoCPRS --> N_SetDefaultTrafficTypetoCPRS_Node0 N_SetDefaultTrafficTypetoCPRS_Node0 -- No --> E_SetDefaultTrafficTypetoCPRS
File: GCCDBL.cbl
GIVEN:
The program is performing initialization
WHEN:
The traffic type needs to be set to default value
THEN:
The traffic type is set to CPRS
β Consolidated Acceptance Criteria
- The system begins processing the waybill validation request → the waybill number is accepted and prepared for database lookup
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReceiveWaybillNumber(["Start Step"])
E_ReceiveWaybillNumber(["End Step"])
N_ReceiveWaybillNumber_Node0{"The system begins processing the
waybill validation request"}:::decision N_ReceiveWaybillNumber_Node0_action["The waybill number is accepted and
prepared for database lookup"]:::main N_ReceiveWaybillNumber_Node0 -- Yes --> N_ReceiveWaybillNumber_Node0_action N_ReceiveWaybillNumber_Node0_action --> E_ReceiveWaybillNumber S_ReceiveWaybillNumber --> N_ReceiveWaybillNumber_Node0 N_ReceiveWaybillNumber_Node0 -- No --> E_ReceiveWaybillNumber
waybill validation request"}:::decision N_ReceiveWaybillNumber_Node0_action["The waybill number is accepted and
prepared for database lookup"]:::main N_ReceiveWaybillNumber_Node0 -- Yes --> N_ReceiveWaybillNumber_Node0_action N_ReceiveWaybillNumber_Node0_action --> E_ReceiveWaybillNumber S_ReceiveWaybillNumber --> N_ReceiveWaybillNumber_Node0 N_ReceiveWaybillNumber_Node0 -- No --> E_ReceiveWaybillNumber
File: GCCDBL.cbl
GIVEN:
A waybill number is provided as input to the system
WHEN:
The system begins processing the waybill validation request
THEN:
- The waybill number is accepted
- Prepared for database lookup
β Consolidated Acceptance Criteria
- The system prepares to search for waybill records in the database → the waybill number is set as the root key for the FWSWRWR segment search
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetWaybillNumberasSearchKey(["Start Step"])
E_SetWaybillNumberasSearchKey(["End Step"])
N_SetWaybillNumberasSearchKey_Node0{"The system prepares to search for
waybill records in the database"}:::decision N_SetWaybillNumberasSearchKey_Node0_action["The waybill number is set as the
root key for the FWSWRWR segment
search"]:::main N_SetWaybillNumberasSearchKey_Node0 -- Yes --> N_SetWaybillNumberasSearchKey_Node0_action N_SetWaybillNumberasSearchKey_Node0_action --> E_SetWaybillNumberasSearchKey S_SetWaybillNumberasSearchKey --> N_SetWaybillNumberasSearchKey_Node0 N_SetWaybillNumberasSearchKey_Node0 -- No --> E_SetWaybillNumberasSearchKey
waybill records in the database"}:::decision N_SetWaybillNumberasSearchKey_Node0_action["The waybill number is set as the
root key for the FWSWRWR segment
search"]:::main N_SetWaybillNumberasSearchKey_Node0 -- Yes --> N_SetWaybillNumberasSearchKey_Node0_action N_SetWaybillNumberasSearchKey_Node0_action --> E_SetWaybillNumberasSearchKey S_SetWaybillNumberasSearchKey --> N_SetWaybillNumberasSearchKey_Node0 N_SetWaybillNumberasSearchKey_Node0 -- No --> E_SetWaybillNumberasSearchKey
File: GCCDBL.cbl
GIVEN:
A waybill number has been received by the system
WHEN:
The system prepares to search for waybill records in the database
THEN:
The waybill number is set as the root key for the FWSWRWR segment search
β Consolidated Acceptance Criteria
- The system executes a database read operation on the FWSWRWR segment → the system attempts to locate and retrieve the corresponding waybill record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReadFWSWRWRSegment(["Start Step"])
E_ReadFWSWRWRSegment(["End Step"])
N_ReadFWSWRWRSegment_Node0{"The system executes a database read
operation on the FWSWRWR segment"}:::decision N_ReadFWSWRWRSegment_Node0_action["The system attempts to locate and
retrieve the corresponding waybill
record"]:::main N_ReadFWSWRWRSegment_Node0 -- Yes --> N_ReadFWSWRWRSegment_Node0_action N_ReadFWSWRWRSegment_Node0_action --> E_ReadFWSWRWRSegment S_ReadFWSWRWRSegment --> N_ReadFWSWRWRSegment_Node0 N_ReadFWSWRWRSegment_Node0 -- No --> E_ReadFWSWRWRSegment
operation on the FWSWRWR segment"}:::decision N_ReadFWSWRWRSegment_Node0_action["The system attempts to locate and
retrieve the corresponding waybill
record"]:::main N_ReadFWSWRWRSegment_Node0 -- Yes --> N_ReadFWSWRWRSegment_Node0_action N_ReadFWSWRWRSegment_Node0_action --> E_ReadFWSWRWRSegment S_ReadFWSWRWRSegment --> N_ReadFWSWRWRSegment_Node0 N_ReadFWSWRWRSegment_Node0 -- No --> E_ReadFWSWRWRSegment
File: GCCDBL.cbl
GIVEN:
The waybill number has been set as the search key
WHEN:
The system executes a database read operation on the FWSWRWR segment
THEN:
- The system attempts to locate
- Retrieve the corresponding waybill record
β Consolidated Acceptance Criteria
- If the result of the database operation → the system determines if the waybill record exists based on whether the database operation returned a valid record or not
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WaybillRecordFound(["Start Step"])
E_WaybillRecordFound(["End Step"])
N_WaybillRecordFound_Node0{"The system evaluates the result of
the database operation"}:::decision N_WaybillRecordFound_Node0_action["The system determines if the
waybill record exists based on
whether the database operation
returned a valid record or not"]:::main N_WaybillRecordFound_Node0 -- Yes --> N_WaybillRecordFound_Node0_action N_WaybillRecordFound_Node0_action --> E_WaybillRecordFound S_WaybillRecordFound --> N_WaybillRecordFound_Node0 N_WaybillRecordFound_Node0 -- No --> E_WaybillRecordFound
the database operation"}:::decision N_WaybillRecordFound_Node0_action["The system determines if the
waybill record exists based on
whether the database operation
returned a valid record or not"]:::main N_WaybillRecordFound_Node0 -- Yes --> N_WaybillRecordFound_Node0_action N_WaybillRecordFound_Node0_action --> E_WaybillRecordFound S_WaybillRecordFound --> N_WaybillRecordFound_Node0 N_WaybillRecordFound_Node0 -- No --> E_WaybillRecordFound
File: GCCDBL.cbl
GIVEN:
A database read operation has been performed on the FWSWRWR segment
WHEN:
The system evaluates the result of the database operation
THEN:
The system determines if the waybill record exists based on whether the database operation returned a valid record or not
β Consolidated Acceptance Criteria
- The database operation returns a valid waybill record → the system sets the internal status flag to indicate the waybill was found and is valid for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatusWaybillFound(["Start Step"])
E_SetStatusWaybillFound(["End Step"])
N_SetStatusWaybillFound_Node0{"The database operation returns a
valid waybill record"}:::decision N_SetStatusWaybillFound_Node0_action["The system sets the internal status
flag to indicate the waybill was
found and is valid for further
processing"]:::main N_SetStatusWaybillFound_Node0 -- Yes --> N_SetStatusWaybillFound_Node0_action N_SetStatusWaybillFound_Node0_action --> E_SetStatusWaybillFound S_SetStatusWaybillFound --> N_SetStatusWaybillFound_Node0 N_SetStatusWaybillFound_Node0 -- No --> E_SetStatusWaybillFound
valid waybill record"}:::decision N_SetStatusWaybillFound_Node0_action["The system sets the internal status
flag to indicate the waybill was
found and is valid for further
processing"]:::main N_SetStatusWaybillFound_Node0 -- Yes --> N_SetStatusWaybillFound_Node0_action N_SetStatusWaybillFound_Node0_action --> E_SetStatusWaybillFound S_SetStatusWaybillFound --> N_SetStatusWaybillFound_Node0 N_SetStatusWaybillFound_Node0 -- No --> E_SetStatusWaybillFound
File: GCCDBL.cbl
GIVEN:
A waybill record has been successfully retrieved from the FWSWRWR segment
WHEN:
The database operation returns a valid waybill record
THEN:
- The system sets the internal status flag to indicate the waybill was found
- Is valid for further processing
β Consolidated Acceptance Criteria
- The database operation does not return a valid waybill record → the system sets the internal status flag to indicate the waybill was not found in the database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatusWaybillNotFound(["Start Step"])
E_SetStatusWaybillNotFound(["End Step"])
N_SetStatusWaybillNotFound_Node0{"The database operation does not
return a valid waybill record"}:::decision N_SetStatusWaybillNotFound_Node0_action["The system sets the internal status
flag to indicate the waybill was not
found in the database"]:::main N_SetStatusWaybillNotFound_Node0 -- Yes --> N_SetStatusWaybillNotFound_Node0_action N_SetStatusWaybillNotFound_Node0_action --> E_SetStatusWaybillNotFound S_SetStatusWaybillNotFound --> N_SetStatusWaybillNotFound_Node0 N_SetStatusWaybillNotFound_Node0 -- No --> E_SetStatusWaybillNotFound
return a valid waybill record"}:::decision N_SetStatusWaybillNotFound_Node0_action["The system sets the internal status
flag to indicate the waybill was not
found in the database"]:::main N_SetStatusWaybillNotFound_Node0 -- Yes --> N_SetStatusWaybillNotFound_Node0_action N_SetStatusWaybillNotFound_Node0_action --> E_SetStatusWaybillNotFound S_SetStatusWaybillNotFound --> N_SetStatusWaybillNotFound_Node0 N_SetStatusWaybillNotFound_Node0 -- No --> E_SetStatusWaybillNotFound
File: GCCDBL.cbl
Exclusion / Alternative Path
GIVEN:
A database read operation has been performed on the FWSWRWR segment
WHEN:
The database operation does not return a valid waybill record
THEN:
The system sets the internal status flag to indicate the waybill was not found in the database
β Consolidated Acceptance Criteria
- The system has confirmed the waybill exists → the system continues to the next phase of processing to count double-stack platforms and equipment records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinueProcessing(["Start Step"])
E_ContinueProcessing(["End Step"])
N_ContinueProcessing_Node0{"The system has confirmed the
waybill exists"}:::decision N_ContinueProcessing_Node0_action["The system continues to the next
phase of processing to count
double-stack platforms and equipment
records"]:::main N_ContinueProcessing_Node0 -- Yes --> N_ContinueProcessing_Node0_action N_ContinueProcessing_Node0_action --> E_ContinueProcessing S_ContinueProcessing --> N_ContinueProcessing_Node0 N_ContinueProcessing_Node0 -- No --> E_ContinueProcessing
waybill exists"}:::decision N_ContinueProcessing_Node0_action["The system continues to the next
phase of processing to count
double-stack platforms and equipment
records"]:::main N_ContinueProcessing_Node0 -- Yes --> N_ContinueProcessing_Node0_action N_ContinueProcessing_Node0_action --> E_ContinueProcessing S_ContinueProcessing --> N_ContinueProcessing_Node0 N_ContinueProcessing_Node0 -- No --> E_ContinueProcessing
File: GCCDBL.cbl
GIVEN:
The waybill record has been found and validated in the database
WHEN:
The system has confirmed the waybill exists
THEN:
- The system continues to the next phase of processing to count double-stack platforms
- Equipment records
β Consolidated Acceptance Criteria
- The system has determined the waybill does not exist → the system exits the double-stack counting process and returns control without performing any further waybill-related operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExitInvalidWaybill(["Start Step"])
E_ExitInvalidWaybill(["End Step"])
N_ExitInvalidWaybill_Node0{"The system has determined the
waybill does not exist"}:::decision N_ExitInvalidWaybill_Node0_action["The system exits the double-stack
counting process and returns control
without performing any further
waybill-related operations"]:::main N_ExitInvalidWaybill_Node0 -- Yes --> N_ExitInvalidWaybill_Node0_action N_ExitInvalidWaybill_Node0_action --> E_ExitInvalidWaybill S_ExitInvalidWaybill --> N_ExitInvalidWaybill_Node0 N_ExitInvalidWaybill_Node0 -- No --> E_ExitInvalidWaybill
waybill does not exist"}:::decision N_ExitInvalidWaybill_Node0_action["The system exits the double-stack
counting process and returns control
without performing any further
waybill-related operations"]:::main N_ExitInvalidWaybill_Node0 -- Yes --> N_ExitInvalidWaybill_Node0_action N_ExitInvalidWaybill_Node0_action --> E_ExitInvalidWaybill S_ExitInvalidWaybill --> N_ExitInvalidWaybill_Node0 N_ExitInvalidWaybill_Node0 -- No --> E_ExitInvalidWaybill
File: GCCDBL.cbl
Exclusion / Alternative Path
GIVEN:
The waybill record was not found in the FWSWRWR database segment
WHEN:
The system has determined the waybill does not exist
THEN:
- The system exits the double-stack counting process
- Returns control without performing any further waybill-related operations
β Consolidated Acceptance Criteria
- Platform tracking initialization is performed → platform A double-stack flag is set to not found status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPlatformADoubleStackFlagtoNotFound(["Start Step"])
E_SetPlatformADoubleStackFlagtoNotFound(["End Step"])
N_SetPlatformADoubleStackFlagtoNotFound_Node0{"Platform tracking initialization is
performed"}:::decision N_SetPlatformADoubleStackFlagtoNotFound_Node0_action["Platform A double-stack flag is set
to not found status"]:::main N_SetPlatformADoubleStackFlagtoNotFound_Node0 -- Yes --> N_SetPlatformADoubleStackFlagtoNotFound_Node0_action N_SetPlatformADoubleStackFlagtoNotFound_Node0_action --> E_SetPlatformADoubleStackFlagtoNotFound S_SetPlatformADoubleStackFlagtoNotFound --> N_SetPlatformADoubleStackFlagtoNotFound_Node0 N_SetPlatformADoubleStackFlagtoNotFound_Node0 -- No --> E_SetPlatformADoubleStackFlagtoNotFound
performed"}:::decision N_SetPlatformADoubleStackFlagtoNotFound_Node0_action["Platform A double-stack flag is set
to not found status"]:::main N_SetPlatformADoubleStackFlagtoNotFound_Node0 -- Yes --> N_SetPlatformADoubleStackFlagtoNotFound_Node0_action N_SetPlatformADoubleStackFlagtoNotFound_Node0_action --> E_SetPlatformADoubleStackFlagtoNotFound S_SetPlatformADoubleStackFlagtoNotFound --> N_SetPlatformADoubleStackFlagtoNotFound_Node0 N_SetPlatformADoubleStackFlagtoNotFound_Node0 -- No --> E_SetPlatformADoubleStackFlagtoNotFound
File: GCCDBL.cbl
GIVEN:
The system is beginning to process a waybill for double-stack platform identification
WHEN:
Platform tracking initialization is performed
THEN:
Platform A double-stack flag is set to not found status
β Consolidated Acceptance Criteria
- Platform tracking initialization is performed → platform B double-stack flag is set to not found status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPlatformBDoubleStackFlagtoNotFound(["Start Step"])
E_SetPlatformBDoubleStackFlagtoNotFound(["End Step"])
N_SetPlatformBDoubleStackFlagtoNotFound_Node0{"Platform tracking initialization is
performed"}:::decision N_SetPlatformBDoubleStackFlagtoNotFound_Node0_action["Platform B double-stack flag is set
to not found status"]:::main N_SetPlatformBDoubleStackFlagtoNotFound_Node0 -- Yes --> N_SetPlatformBDoubleStackFlagtoNotFound_Node0_action N_SetPlatformBDoubleStackFlagtoNotFound_Node0_action --> E_SetPlatformBDoubleStackFlagtoNotFound S_SetPlatformBDoubleStackFlagtoNotFound --> N_SetPlatformBDoubleStackFlagtoNotFound_Node0 N_SetPlatformBDoubleStackFlagtoNotFound_Node0 -- No --> E_SetPlatformBDoubleStackFlagtoNotFound
performed"}:::decision N_SetPlatformBDoubleStackFlagtoNotFound_Node0_action["Platform B double-stack flag is set
to not found status"]:::main N_SetPlatformBDoubleStackFlagtoNotFound_Node0 -- Yes --> N_SetPlatformBDoubleStackFlagtoNotFound_Node0_action N_SetPlatformBDoubleStackFlagtoNotFound_Node0_action --> E_SetPlatformBDoubleStackFlagtoNotFound S_SetPlatformBDoubleStackFlagtoNotFound --> N_SetPlatformBDoubleStackFlagtoNotFound_Node0 N_SetPlatformBDoubleStackFlagtoNotFound_Node0 -- No --> E_SetPlatformBDoubleStackFlagtoNotFound
File: GCCDBL.cbl
GIVEN:
The system is beginning to process a waybill for double-stack platform identification
WHEN:
Platform tracking initialization is performed
THEN:
Platform B double-stack flag is set to not found status
β Consolidated Acceptance Criteria
- Platform tracking initialization is performed → platform C double-stack flag is set to not found status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPlatformCDoubleStackFlagtoNotFound(["Start Step"])
E_SetPlatformCDoubleStackFlagtoNotFound(["End Step"])
N_SetPlatformCDoubleStackFlagtoNotFound_Node0{"Platform tracking initialization is
performed"}:::decision N_SetPlatformCDoubleStackFlagtoNotFound_Node0_action["Platform C double-stack flag is set
to not found status"]:::main N_SetPlatformCDoubleStackFlagtoNotFound_Node0 -- Yes --> N_SetPlatformCDoubleStackFlagtoNotFound_Node0_action N_SetPlatformCDoubleStackFlagtoNotFound_Node0_action --> E_SetPlatformCDoubleStackFlagtoNotFound S_SetPlatformCDoubleStackFlagtoNotFound --> N_SetPlatformCDoubleStackFlagtoNotFound_Node0 N_SetPlatformCDoubleStackFlagtoNotFound_Node0 -- No --> E_SetPlatformCDoubleStackFlagtoNotFound
performed"}:::decision N_SetPlatformCDoubleStackFlagtoNotFound_Node0_action["Platform C double-stack flag is set
to not found status"]:::main N_SetPlatformCDoubleStackFlagtoNotFound_Node0 -- Yes --> N_SetPlatformCDoubleStackFlagtoNotFound_Node0_action N_SetPlatformCDoubleStackFlagtoNotFound_Node0_action --> E_SetPlatformCDoubleStackFlagtoNotFound S_SetPlatformCDoubleStackFlagtoNotFound --> N_SetPlatformCDoubleStackFlagtoNotFound_Node0 N_SetPlatformCDoubleStackFlagtoNotFound_Node0 -- No --> E_SetPlatformCDoubleStackFlagtoNotFound
File: GCCDBL.cbl
GIVEN:
The system is beginning to process a waybill for double-stack platform identification
WHEN:
Platform tracking initialization is performed
THEN:
Platform C double-stack flag is set to not found status
β Consolidated Acceptance Criteria
- Platform tracking initialization is performed → platform D double-stack flag is set to not found status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPlatformDDoubleStackFlagtoNotFound(["Start Step"])
E_SetPlatformDDoubleStackFlagtoNotFound(["End Step"])
N_SetPlatformDDoubleStackFlagtoNotFound_Node0{"Platform tracking initialization is
performed"}:::decision N_SetPlatformDDoubleStackFlagtoNotFound_Node0_action["Platform D double-stack flag is set
to not found status"]:::main N_SetPlatformDDoubleStackFlagtoNotFound_Node0 -- Yes --> N_SetPlatformDDoubleStackFlagtoNotFound_Node0_action N_SetPlatformDDoubleStackFlagtoNotFound_Node0_action --> E_SetPlatformDDoubleStackFlagtoNotFound S_SetPlatformDDoubleStackFlagtoNotFound --> N_SetPlatformDDoubleStackFlagtoNotFound_Node0 N_SetPlatformDDoubleStackFlagtoNotFound_Node0 -- No --> E_SetPlatformDDoubleStackFlagtoNotFound
performed"}:::decision N_SetPlatformDDoubleStackFlagtoNotFound_Node0_action["Platform D double-stack flag is set
to not found status"]:::main N_SetPlatformDDoubleStackFlagtoNotFound_Node0 -- Yes --> N_SetPlatformDDoubleStackFlagtoNotFound_Node0_action N_SetPlatformDDoubleStackFlagtoNotFound_Node0_action --> E_SetPlatformDDoubleStackFlagtoNotFound S_SetPlatformDDoubleStackFlagtoNotFound --> N_SetPlatformDDoubleStackFlagtoNotFound_Node0 N_SetPlatformDDoubleStackFlagtoNotFound_Node0 -- No --> E_SetPlatformDDoubleStackFlagtoNotFound
File: GCCDBL.cbl
GIVEN:
The system is beginning to process a waybill for double-stack platform identification
WHEN:
Platform tracking initialization is performed
THEN:
Platform D double-stack flag is set to not found status
β Consolidated Acceptance Criteria
- Platform tracking initialization is performed → platform E double-stack flag is set to not found status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPlatformEDoubleStackFlagtoNotFound(["Start Step"])
E_SetPlatformEDoubleStackFlagtoNotFound(["End Step"])
N_SetPlatformEDoubleStackFlagtoNotFound_Node0{"Platform tracking initialization is
performed"}:::decision N_SetPlatformEDoubleStackFlagtoNotFound_Node0_action["Platform E double-stack flag is set
to not found status"]:::main N_SetPlatformEDoubleStackFlagtoNotFound_Node0 -- Yes --> N_SetPlatformEDoubleStackFlagtoNotFound_Node0_action N_SetPlatformEDoubleStackFlagtoNotFound_Node0_action --> E_SetPlatformEDoubleStackFlagtoNotFound S_SetPlatformEDoubleStackFlagtoNotFound --> N_SetPlatformEDoubleStackFlagtoNotFound_Node0 N_SetPlatformEDoubleStackFlagtoNotFound_Node0 -- No --> E_SetPlatformEDoubleStackFlagtoNotFound
performed"}:::decision N_SetPlatformEDoubleStackFlagtoNotFound_Node0_action["Platform E double-stack flag is set
to not found status"]:::main N_SetPlatformEDoubleStackFlagtoNotFound_Node0 -- Yes --> N_SetPlatformEDoubleStackFlagtoNotFound_Node0_action N_SetPlatformEDoubleStackFlagtoNotFound_Node0_action --> E_SetPlatformEDoubleStackFlagtoNotFound S_SetPlatformEDoubleStackFlagtoNotFound --> N_SetPlatformEDoubleStackFlagtoNotFound_Node0 N_SetPlatformEDoubleStackFlagtoNotFound_Node0 -- No --> E_SetPlatformEDoubleStackFlagtoNotFound
File: GCCDBL.cbl
GIVEN:
The system is beginning to process a waybill for double-stack platform identification
WHEN:
Platform tracking initialization is performed
THEN:
Platform E double-stack flag is set to not found status
β Consolidated Acceptance Criteria
- Equipment key storage initialization is performed → equipment key storage is set to empty spaces
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeEquipmentKeyStorage(["Start Step"])
E_InitializeEquipmentKeyStorage(["End Step"])
N_InitializeEquipmentKeyStorage_Node0{"Equipment key storage
initialization is performed"}:::decision N_InitializeEquipmentKeyStorage_Node0_action["Equipment key storage is set to
empty spaces"]:::main N_InitializeEquipmentKeyStorage_Node0 -- Yes --> N_InitializeEquipmentKeyStorage_Node0_action N_InitializeEquipmentKeyStorage_Node0_action --> E_InitializeEquipmentKeyStorage S_InitializeEquipmentKeyStorage --> N_InitializeEquipmentKeyStorage_Node0 N_InitializeEquipmentKeyStorage_Node0 -- No --> E_InitializeEquipmentKeyStorage
initialization is performed"}:::decision N_InitializeEquipmentKeyStorage_Node0_action["Equipment key storage is set to
empty spaces"]:::main N_InitializeEquipmentKeyStorage_Node0 -- Yes --> N_InitializeEquipmentKeyStorage_Node0_action N_InitializeEquipmentKeyStorage_Node0_action --> E_InitializeEquipmentKeyStorage S_InitializeEquipmentKeyStorage --> N_InitializeEquipmentKeyStorage_Node0 N_InitializeEquipmentKeyStorage_Node0 -- No --> E_InitializeEquipmentKeyStorage
File: GCCDBL.cbl
GIVEN:
The system is beginning to process equipment records for a waybill
WHEN:
Equipment key storage initialization is performed
THEN:
Equipment key storage is set to empty spaces
β Consolidated Acceptance Criteria
- Equipment record processing is initiated → the equipment record status flag is set to 'Found' to enable the processing loop
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentRecordStatustoFound(["Start Step"])
E_SetEquipmentRecordStatustoFound(["End Step"])
N_SetEquipmentRecordStatustoFound_Node0{"Equipment record processing is
initiated"}:::decision N_SetEquipmentRecordStatustoFound_Node0_action["The equipment record status flag is
set to Found to enable the
processing loop"]:::main N_SetEquipmentRecordStatustoFound_Node0 -- Yes --> N_SetEquipmentRecordStatustoFound_Node0_action N_SetEquipmentRecordStatustoFound_Node0_action --> E_SetEquipmentRecordStatustoFound S_SetEquipmentRecordStatustoFound --> N_SetEquipmentRecordStatustoFound_Node0 N_SetEquipmentRecordStatustoFound_Node0 -- No --> E_SetEquipmentRecordStatustoFound
initiated"}:::decision N_SetEquipmentRecordStatustoFound_Node0_action["The equipment record status flag is
set to Found to enable the
processing loop"]:::main N_SetEquipmentRecordStatustoFound_Node0 -- Yes --> N_SetEquipmentRecordStatustoFound_Node0_action N_SetEquipmentRecordStatustoFound_Node0_action --> E_SetEquipmentRecordStatustoFound S_SetEquipmentRecordStatustoFound --> N_SetEquipmentRecordStatustoFound_Node0 N_SetEquipmentRecordStatustoFound_Node0 -- No --> E_SetEquipmentRecordStatustoFound
File: GCCDBL.cbl
GIVEN:
The system is ready to process equipment records for a waybill
WHEN:
Equipment record processing is initiated
THEN:
The equipment record status flag is set to 'Found' to enable the processing loop
β Consolidated Acceptance Criteria
- The system requests the next equipment record → the external system retrieves and returns the next available equipment record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReadNextEquipmentRecordfromFWSWREQ(["Start Step"])
E_ReadNextEquipmentRecordfromFWSWREQ(["End Step"])
N_ReadNextEquipmentRecordfromFWSWREQ_Node0{"The system requests the next
equipment record"}:::decision N_ReadNextEquipmentRecordfromFWSWREQ_Node0_action["The external system retrieves and
returns the next available equipment
record"]:::main N_ReadNextEquipmentRecordfromFWSWREQ_Node0 -- Yes --> N_ReadNextEquipmentRecordfromFWSWREQ_Node0_action N_ReadNextEquipmentRecordfromFWSWREQ_Node0_action --> E_ReadNextEquipmentRecordfromFWSWREQ S_ReadNextEquipmentRecordfromFWSWREQ --> N_ReadNextEquipmentRecordfromFWSWREQ_Node0 N_ReadNextEquipmentRecordfromFWSWREQ_Node0 -- No --> E_ReadNextEquipmentRecordfromFWSWREQ
equipment record"}:::decision N_ReadNextEquipmentRecordfromFWSWREQ_Node0_action["The external system retrieves and
returns the next available equipment
record"]:::main N_ReadNextEquipmentRecordfromFWSWREQ_Node0 -- Yes --> N_ReadNextEquipmentRecordfromFWSWREQ_Node0_action N_ReadNextEquipmentRecordfromFWSWREQ_Node0_action --> E_ReadNextEquipmentRecordfromFWSWREQ S_ReadNextEquipmentRecordfromFWSWREQ --> N_ReadNextEquipmentRecordfromFWSWREQ_Node0 N_ReadNextEquipmentRecordfromFWSWREQ_Node0 -- No --> E_ReadNextEquipmentRecordfromFWSWREQ
File: GCCDBL.cbl
GIVEN:
A waybill has associated equipment records in FWSWREQ
WHEN:
The system requests the next equipment record
THEN:
- The external system retrieves
- Returns the next available equipment record
β Consolidated Acceptance Criteria
- The system checks the retrieval status → if the status code is blank, the record is considered found; otherwise, the record is not found and the status flag is set to 'Not Found'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentRecordFound(["Start Step"])
E_EquipmentRecordFound(["End Step"])
N_EquipmentRecordFound_Node0{"The system checks the retrieval
status"}:::decision N_EquipmentRecordFound_Node0_action["If the status code is blank, the
record is considered found
otherwise, the record is not found
and the status flag is set to Not
Found"]:::main N_EquipmentRecordFound_Node0 -- Yes --> N_EquipmentRecordFound_Node0_action N_EquipmentRecordFound_Node0_action --> E_EquipmentRecordFound S_EquipmentRecordFound --> N_EquipmentRecordFound_Node0 N_EquipmentRecordFound_Node0 -- No --> E_EquipmentRecordFound
status"}:::decision N_EquipmentRecordFound_Node0_action["If the status code is blank, the
record is considered found
otherwise, the record is not found
and the status flag is set to Not
Found"]:::main N_EquipmentRecordFound_Node0 -- Yes --> N_EquipmentRecordFound_Node0_action N_EquipmentRecordFound_Node0_action --> E_EquipmentRecordFound S_EquipmentRecordFound --> N_EquipmentRecordFound_Node0 N_EquipmentRecordFound_Node0 -- No --> E_EquipmentRecordFound
File: GCCDBL.cbl
GIVEN:
An attempt has been made to retrieve an equipment record
WHEN:
The system checks the retrieval status
THEN:
- If the status code is blank, the record is considered found; otherwise, the record is not found
- The status flag is set to 'not found'
β Consolidated Acceptance Criteria
- The equipment record is processed → the system identifies double-stack platforms and saves equipment key information for traffic type determination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessEquipmentRecord(["Start Step"])
E_ProcessEquipmentRecord(["End Step"])
N_ProcessEquipmentRecord_Node0{"The equipment record is processed"}:::decision
N_ProcessEquipmentRecord_Node0_action["The system identifies double-stack
platforms and saves equipment key
information for traffic type
determination"]:::main N_ProcessEquipmentRecord_Node0 -- Yes --> N_ProcessEquipmentRecord_Node0_action N_ProcessEquipmentRecord_Node0_action --> E_ProcessEquipmentRecord S_ProcessEquipmentRecord --> N_ProcessEquipmentRecord_Node0 N_ProcessEquipmentRecord_Node0 -- No --> E_ProcessEquipmentRecord
platforms and saves equipment key
information for traffic type
determination"]:::main N_ProcessEquipmentRecord_Node0 -- Yes --> N_ProcessEquipmentRecord_Node0_action N_ProcessEquipmentRecord_Node0_action --> E_ProcessEquipmentRecord S_ProcessEquipmentRecord --> N_ProcessEquipmentRecord_Node0 N_ProcessEquipmentRecord_Node0 -- No --> E_ProcessEquipmentRecord
File: GCCDBL.cbl
GIVEN:
A valid equipment record has been retrieved
WHEN:
The equipment record is processed
THEN:
- The system identifies double-stack platforms
- Saves equipment key information for traffic type determination
β Consolidated Acceptance Criteria
- The system checks if more records should be processed → if the equipment record status is 'Found', continue the loop; otherwise, exit the processing loop
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreEquipmentRecords(["Start Step"])
E_MoreEquipmentRecords(["End Step"])
N_MoreEquipmentRecords_Node0{"The system checks if more records
should be processed"}:::decision N_MoreEquipmentRecords_Node0_action["If the equipment record status is
Found , continue the loop otherwise,
exit the processing loop"]:::main N_MoreEquipmentRecords_Node0 -- Yes --> N_MoreEquipmentRecords_Node0_action N_MoreEquipmentRecords_Node0_action --> E_MoreEquipmentRecords S_MoreEquipmentRecords --> N_MoreEquipmentRecords_Node0 N_MoreEquipmentRecords_Node0 -- No --> E_MoreEquipmentRecords
should be processed"}:::decision N_MoreEquipmentRecords_Node0_action["If the equipment record status is
Found , continue the loop otherwise,
exit the processing loop"]:::main N_MoreEquipmentRecords_Node0 -- Yes --> N_MoreEquipmentRecords_Node0_action N_MoreEquipmentRecords_Node0_action --> E_MoreEquipmentRecords S_MoreEquipmentRecords --> N_MoreEquipmentRecords_Node0 N_MoreEquipmentRecords_Node0 -- No --> E_MoreEquipmentRecords
File: GCCDBL.cbl
GIVEN:
An equipment record has been processed
WHEN:
The system checks if more records should be processed
THEN:
If the equipment record status is 'Found', continue the loop; otherwise, exit the processing loop
β Consolidated Acceptance Criteria
- The equipment record processing loop ends → the system completes the equipment record reading phase and proceeds to the next processing step
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CompleteEquipmentRecordsReading(["Start Step"])
E_CompleteEquipmentRecordsReading(["End Step"])
N_CompleteEquipmentRecordsReading_Node0{"The equipment record processing
loop ends"}:::decision N_CompleteEquipmentRecordsReading_Node0_action["The system completes the equipment
record reading phase and proceeds to
the next processing step"]:::main N_CompleteEquipmentRecordsReading_Node0 -- Yes --> N_CompleteEquipmentRecordsReading_Node0_action N_CompleteEquipmentRecordsReading_Node0_action --> E_CompleteEquipmentRecordsReading S_CompleteEquipmentRecordsReading --> N_CompleteEquipmentRecordsReading_Node0 N_CompleteEquipmentRecordsReading_Node0 -- No --> E_CompleteEquipmentRecordsReading
loop ends"}:::decision N_CompleteEquipmentRecordsReading_Node0_action["The system completes the equipment
record reading phase and proceeds to
the next processing step"]:::main N_CompleteEquipmentRecordsReading_Node0 -- Yes --> N_CompleteEquipmentRecordsReading_Node0_action N_CompleteEquipmentRecordsReading_Node0_action --> E_CompleteEquipmentRecordsReading S_CompleteEquipmentRecordsReading --> N_CompleteEquipmentRecordsReading_Node0 N_CompleteEquipmentRecordsReading_Node0 -- No --> E_CompleteEquipmentRecordsReading
File: GCCDBL.cbl
GIVEN:
All available equipment records have been processed or no records were found
WHEN:
The equipment record processing loop ends
THEN:
- The system completes the equipment record reading phase
- Proceeds to the next processing step
β Consolidated Acceptance Criteria
- The equipment slot type is 'T' (top-loaded) → the system should proceed to identify which specific platform (A, B, C, D, or E) should be marked as double-stacked
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsSlotTypeTTopLoaded(["Start Step"])
E_IsSlotTypeTTopLoaded(["End Step"])
N_IsSlotTypeTTopLoaded_Node0{"The equipment slot type is T
top-loaded"}:::decision N_IsSlotTypeTTopLoaded_Node0_action["The system should proceed to
identify which specific platform A,
B, C, D, or E should be marked as
double-stacked"]:::main N_IsSlotTypeTTopLoaded_Node0 -- Yes --> N_IsSlotTypeTTopLoaded_Node0_action N_IsSlotTypeTTopLoaded_Node0_action --> E_IsSlotTypeTTopLoaded S_IsSlotTypeTTopLoaded --> N_IsSlotTypeTTopLoaded_Node0 N_IsSlotTypeTTopLoaded_Node0 -- No --> E_IsSlotTypeTTopLoaded
top-loaded"}:::decision N_IsSlotTypeTTopLoaded_Node0_action["The system should proceed to
identify which specific platform A,
B, C, D, or E should be marked as
double-stacked"]:::main N_IsSlotTypeTTopLoaded_Node0 -- Yes --> N_IsSlotTypeTTopLoaded_Node0_action N_IsSlotTypeTTopLoaded_Node0_action --> E_IsSlotTypeTTopLoaded S_IsSlotTypeTTopLoaded --> N_IsSlotTypeTTopLoaded_Node0 N_IsSlotTypeTTopLoaded_Node0 -- No --> E_IsSlotTypeTTopLoaded
File: GCCDBL.cbl
GIVEN:
An equipment record is being processed for double-stack platform identification
WHEN:
The equipment slot type is 'T' (top-loaded)
THEN:
The system should proceed to identify which specific platform (A, B, C, D, or E) should be marked as double-stacked
β Consolidated Acceptance Criteria
- The equipment platform is 'A' → platform A should be marked as double-stacked
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkPlatformAasDoubleStacked(["Start Step"])
E_MarkPlatformAasDoubleStacked(["End Step"])
N_MarkPlatformAasDoubleStacked_Node0{"The equipment platform is A"}:::decision
N_MarkPlatformAasDoubleStacked_Node0_action["Platform A should be marked as
double-stacked"]:::main N_MarkPlatformAasDoubleStacked_Node0 -- Yes --> N_MarkPlatformAasDoubleStacked_Node0_action N_MarkPlatformAasDoubleStacked_Node0_action --> E_MarkPlatformAasDoubleStacked S_MarkPlatformAasDoubleStacked --> N_MarkPlatformAasDoubleStacked_Node0 N_MarkPlatformAasDoubleStacked_Node0 -- No --> E_MarkPlatformAasDoubleStacked
double-stacked"]:::main N_MarkPlatformAasDoubleStacked_Node0 -- Yes --> N_MarkPlatformAasDoubleStacked_Node0_action N_MarkPlatformAasDoubleStacked_Node0_action --> E_MarkPlatformAasDoubleStacked S_MarkPlatformAasDoubleStacked --> N_MarkPlatformAasDoubleStacked_Node0 N_MarkPlatformAasDoubleStacked_Node0 -- No --> E_MarkPlatformAasDoubleStacked
File: GCCDBL.cbl
GIVEN:
An equipment record has slot type 'T' (top-loaded)
WHEN:
The equipment platform is 'A'
THEN:
Platform A should be marked as double-stacked
β Consolidated Acceptance Criteria
- The equipment platform is 'B' → platform B should be marked as double-stacked
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkPlatformBasDoubleStacked(["Start Step"])
E_MarkPlatformBasDoubleStacked(["End Step"])
N_MarkPlatformBasDoubleStacked_Node0{"The equipment platform is B"}:::decision
N_MarkPlatformBasDoubleStacked_Node0_action["Platform B should be marked as
double-stacked"]:::main N_MarkPlatformBasDoubleStacked_Node0 -- Yes --> N_MarkPlatformBasDoubleStacked_Node0_action N_MarkPlatformBasDoubleStacked_Node0_action --> E_MarkPlatformBasDoubleStacked S_MarkPlatformBasDoubleStacked --> N_MarkPlatformBasDoubleStacked_Node0 N_MarkPlatformBasDoubleStacked_Node0 -- No --> E_MarkPlatformBasDoubleStacked
double-stacked"]:::main N_MarkPlatformBasDoubleStacked_Node0 -- Yes --> N_MarkPlatformBasDoubleStacked_Node0_action N_MarkPlatformBasDoubleStacked_Node0_action --> E_MarkPlatformBasDoubleStacked S_MarkPlatformBasDoubleStacked --> N_MarkPlatformBasDoubleStacked_Node0 N_MarkPlatformBasDoubleStacked_Node0 -- No --> E_MarkPlatformBasDoubleStacked
File: GCCDBL.cbl
GIVEN:
An equipment record has slot type 'T' (top-loaded)
WHEN:
The equipment platform is 'B'
THEN:
Platform B should be marked as double-stacked
β Consolidated Acceptance Criteria
- The equipment platform is 'C' → platform C should be marked as double-stacked
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkPlatformCasDoubleStacked(["Start Step"])
E_MarkPlatformCasDoubleStacked(["End Step"])
N_MarkPlatformCasDoubleStacked_Node0{"The equipment platform is C"}:::decision
N_MarkPlatformCasDoubleStacked_Node0_action["Platform C should be marked as
double-stacked"]:::main N_MarkPlatformCasDoubleStacked_Node0 -- Yes --> N_MarkPlatformCasDoubleStacked_Node0_action N_MarkPlatformCasDoubleStacked_Node0_action --> E_MarkPlatformCasDoubleStacked S_MarkPlatformCasDoubleStacked --> N_MarkPlatformCasDoubleStacked_Node0 N_MarkPlatformCasDoubleStacked_Node0 -- No --> E_MarkPlatformCasDoubleStacked
double-stacked"]:::main N_MarkPlatformCasDoubleStacked_Node0 -- Yes --> N_MarkPlatformCasDoubleStacked_Node0_action N_MarkPlatformCasDoubleStacked_Node0_action --> E_MarkPlatformCasDoubleStacked S_MarkPlatformCasDoubleStacked --> N_MarkPlatformCasDoubleStacked_Node0 N_MarkPlatformCasDoubleStacked_Node0 -- No --> E_MarkPlatformCasDoubleStacked
File: GCCDBL.cbl
GIVEN:
An equipment record has slot type 'T' (top-loaded)
WHEN:
The equipment platform is 'C'
THEN:
Platform C should be marked as double-stacked
β Consolidated Acceptance Criteria
- The equipment platform is 'D' → platform D should be marked as double-stacked
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkPlatformDasDoubleStacked(["Start Step"])
E_MarkPlatformDasDoubleStacked(["End Step"])
N_MarkPlatformDasDoubleStacked_Node0{"The equipment platform is D"}:::decision
N_MarkPlatformDasDoubleStacked_Node0_action["Platform D should be marked as
double-stacked"]:::main N_MarkPlatformDasDoubleStacked_Node0 -- Yes --> N_MarkPlatformDasDoubleStacked_Node0_action N_MarkPlatformDasDoubleStacked_Node0_action --> E_MarkPlatformDasDoubleStacked S_MarkPlatformDasDoubleStacked --> N_MarkPlatformDasDoubleStacked_Node0 N_MarkPlatformDasDoubleStacked_Node0 -- No --> E_MarkPlatformDasDoubleStacked
double-stacked"]:::main N_MarkPlatformDasDoubleStacked_Node0 -- Yes --> N_MarkPlatformDasDoubleStacked_Node0_action N_MarkPlatformDasDoubleStacked_Node0_action --> E_MarkPlatformDasDoubleStacked S_MarkPlatformDasDoubleStacked --> N_MarkPlatformDasDoubleStacked_Node0 N_MarkPlatformDasDoubleStacked_Node0 -- No --> E_MarkPlatformDasDoubleStacked
File: GCCDBL.cbl
GIVEN:
An equipment record has slot type 'T' (top-loaded)
WHEN:
The equipment platform is 'D'
THEN:
Platform D should be marked as double-stacked
β Consolidated Acceptance Criteria
- The equipment platform is 'E' → platform E should be marked as double-stacked
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkPlatformEasDoubleStacked(["Start Step"])
E_MarkPlatformEasDoubleStacked(["End Step"])
N_MarkPlatformEasDoubleStacked_Node0{"The equipment platform is E"}:::decision
N_MarkPlatformEasDoubleStacked_Node0_action["Platform E should be marked as
double-stacked"]:::main N_MarkPlatformEasDoubleStacked_Node0 -- Yes --> N_MarkPlatformEasDoubleStacked_Node0_action N_MarkPlatformEasDoubleStacked_Node0_action --> E_MarkPlatformEasDoubleStacked S_MarkPlatformEasDoubleStacked --> N_MarkPlatformEasDoubleStacked_Node0 N_MarkPlatformEasDoubleStacked_Node0 -- No --> E_MarkPlatformEasDoubleStacked
double-stacked"]:::main N_MarkPlatformEasDoubleStacked_Node0 -- Yes --> N_MarkPlatformEasDoubleStacked_Node0_action N_MarkPlatformEasDoubleStacked_Node0_action --> E_MarkPlatformEasDoubleStacked S_MarkPlatformEasDoubleStacked --> N_MarkPlatformEasDoubleStacked_Node0 N_MarkPlatformEasDoubleStacked_Node0 -- No --> E_MarkPlatformEasDoubleStacked
File: GCCDBL.cbl
GIVEN:
An equipment record has slot type 'T' (top-loaded)
WHEN:
The equipment platform is 'E'
THEN:
Platform E should be marked as double-stacked
β Consolidated Acceptance Criteria
- The equipment has traffic control element 'L' (loaded) and the saved equipment key is empty → the equipment key should be saved for later traffic type analysis
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinuetoNextEquipmentRecord(["Start Step"])
E_ContinuetoNextEquipmentRecord(["End Step"])
N_ContinuetoNextEquipmentRecord_Node0{"The equipment has traffic control
element L loaded and the saved
equipment key is empty"}:::decision N_ContinuetoNextEquipmentRecord_Node0_action["The equipment key should be saved
for later traffic type analysis"]:::main N_ContinuetoNextEquipmentRecord_Node0 -- Yes --> N_ContinuetoNextEquipmentRecord_Node0_action N_ContinuetoNextEquipmentRecord_Node0_action --> E_ContinuetoNextEquipmentRecord S_ContinuetoNextEquipmentRecord --> N_ContinuetoNextEquipmentRecord_Node0 N_ContinuetoNextEquipmentRecord_Node0 -- No --> E_ContinuetoNextEquipmentRecord
element L loaded and the saved
equipment key is empty"}:::decision N_ContinuetoNextEquipmentRecord_Node0_action["The equipment key should be saved
for later traffic type analysis"]:::main N_ContinuetoNextEquipmentRecord_Node0 -- Yes --> N_ContinuetoNextEquipmentRecord_Node0_action N_ContinuetoNextEquipmentRecord_Node0_action --> E_ContinuetoNextEquipmentRecord S_ContinuetoNextEquipmentRecord --> N_ContinuetoNextEquipmentRecord_Node0 N_ContinuetoNextEquipmentRecord_Node0 -- No --> E_ContinuetoNextEquipmentRecord
File: GCCDBL.cbl
GIVEN:
An equipment record is being processed and no equipment key has been saved yet
WHEN:
The equipment has traffic control element 'L' (loaded) and the saved equipment key is empty
THEN:
The equipment key should be saved for later traffic type analysis
β Consolidated Acceptance Criteria
- No equipment key has been previously saved (equipment key storage is empty) → store the current equipment key for later use in traffic type determination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreEquipmentKeyforLaterProcessing(["Start Step"])
E_StoreEquipmentKeyforLaterProcessing(["End Step"])
N_StoreEquipmentKeyforLaterProcessing_Node0{"No equipment key has been
previously saved equipment key
storage is empty"}:::decision N_StoreEquipmentKeyforLaterProcessing_Node0_action["Store the current equipment key for
later use in traffic type
determination"]:::main N_StoreEquipmentKeyforLaterProcessing_Node0 -- Yes --> N_StoreEquipmentKeyforLaterProcessing_Node0_action N_StoreEquipmentKeyforLaterProcessing_Node0_action --> E_StoreEquipmentKeyforLaterProcessing S_StoreEquipmentKeyforLaterProcessing --> N_StoreEquipmentKeyforLaterProcessing_Node0 N_StoreEquipmentKeyforLaterProcessing_Node0 -- No --> E_StoreEquipmentKeyforLaterProcessing
previously saved equipment key
storage is empty"}:::decision N_StoreEquipmentKeyforLaterProcessing_Node0_action["Store the current equipment key for
later use in traffic type
determination"]:::main N_StoreEquipmentKeyforLaterProcessing_Node0 -- Yes --> N_StoreEquipmentKeyforLaterProcessing_Node0_action N_StoreEquipmentKeyforLaterProcessing_Node0_action --> E_StoreEquipmentKeyforLaterProcessing S_StoreEquipmentKeyforLaterProcessing --> N_StoreEquipmentKeyforLaterProcessing_Node0 N_StoreEquipmentKeyforLaterProcessing_Node0 -- No --> E_StoreEquipmentKeyforLaterProcessing
File: GCCDBL.cbl
GIVEN:
An equipment record is being processed and the container status is loaded (TC-EL = 'L')
WHEN:
No equipment key has been previously saved (equipment key storage is empty)
THEN:
Store the current equipment key for later use in traffic type determination
β Consolidated Acceptance Criteria
- An equipment key has already been saved from a previous loaded container → continue processing without storing the current equipment key
- The container status is not loaded (TC-EL is not equal to 'L') → continue to the next equipment record without storing any equipment key
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinuetoNextRecord(["Start Step"])
E_ContinuetoNextRecord(["End Step"])
N_ContinuetoNextRecord_Node0{"An equipment key has already been
saved from a previous loaded
container"}:::decision N_ContinuetoNextRecord_Node0_action["Continue processing without storing
the current equipment key"]:::main N_ContinuetoNextRecord_Node0 -- Yes --> N_ContinuetoNextRecord_Node0_action N_ContinuetoNextRecord_Node0_action --> E_ContinuetoNextRecord S_ContinuetoNextRecord --> N_ContinuetoNextRecord_Node0 N_ContinuetoNextRecord_Node1{"The container status is not loaded
TC-EL is not equal to L"}:::decision N_ContinuetoNextRecord_Node1_action["Continue to the next equipment
record without storing any equipment
key"]:::main N_ContinuetoNextRecord_Node1 -- Yes --> N_ContinuetoNextRecord_Node1_action N_ContinuetoNextRecord_Node1_action --> E_ContinuetoNextRecord N_ContinuetoNextRecord_Node0 -- No --> N_ContinuetoNextRecord_Node1 N_ContinuetoNextRecord_Node1 -- No --> E_ContinuetoNextRecord
saved from a previous loaded
container"}:::decision N_ContinuetoNextRecord_Node0_action["Continue processing without storing
the current equipment key"]:::main N_ContinuetoNextRecord_Node0 -- Yes --> N_ContinuetoNextRecord_Node0_action N_ContinuetoNextRecord_Node0_action --> E_ContinuetoNextRecord S_ContinuetoNextRecord --> N_ContinuetoNextRecord_Node0 N_ContinuetoNextRecord_Node1{"The container status is not loaded
TC-EL is not equal to L"}:::decision N_ContinuetoNextRecord_Node1_action["Continue to the next equipment
record without storing any equipment
key"]:::main N_ContinuetoNextRecord_Node1 -- Yes --> N_ContinuetoNextRecord_Node1_action N_ContinuetoNextRecord_Node1_action --> E_ContinuetoNextRecord N_ContinuetoNextRecord_Node0 -- No --> N_ContinuetoNextRecord_Node1 N_ContinuetoNextRecord_Node1 -- No --> E_ContinuetoNextRecord
File: GCCDBL.cbl
GIVEN:
An equipment record is being processed and the container status is loaded (TC-EL = 'L')
WHEN:
An equipment key has already been saved from a previous loaded container
THEN:
Continue processing without storing the current equipment key
File: GCCDBL.cbl
Exclusion / Alternative Path
GIVEN:
An equipment record is being processed
WHEN:
The container status is not loaded (TC-EL is not equal to 'L')
THEN:
Continue to the next equipment record without storing any equipment key
β Consolidated Acceptance Criteria
- Platform A is found to have double-stack capability → add 1 to the total double-stack count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PlatformADoubleStacked(["Start Step"])
E_PlatformADoubleStacked(["End Step"])
N_PlatformADoubleStacked_Node0{"Platform A is found to have
double-stack capability"}:::decision N_PlatformADoubleStacked_Node0_action["Add 1 to the total double-stack
count"]:::main N_PlatformADoubleStacked_Node0 -- Yes --> N_PlatformADoubleStacked_Node0_action N_PlatformADoubleStacked_Node0_action --> E_PlatformADoubleStacked S_PlatformADoubleStacked --> N_PlatformADoubleStacked_Node0 N_PlatformADoubleStacked_Node0 -- No --> E_PlatformADoubleStacked
double-stack capability"}:::decision N_PlatformADoubleStacked_Node0_action["Add 1 to the total double-stack
count"]:::main N_PlatformADoubleStacked_Node0 -- Yes --> N_PlatformADoubleStacked_Node0_action N_PlatformADoubleStacked_Node0_action --> E_PlatformADoubleStacked S_PlatformADoubleStacked --> N_PlatformADoubleStacked_Node0 N_PlatformADoubleStacked_Node0 -- No --> E_PlatformADoubleStacked
File: GCCDBL.cbl
GIVEN:
Platform A double-stack status has been determined during waybill processing
WHEN:
Platform A is found to have double-stack capability
THEN:
Add 1 to the total double-stack count
β Consolidated Acceptance Criteria
- Platform B is found to have double-stack capability → add 1 to the total double-stack count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PlatformBDoubleStacked(["Start Step"])
E_PlatformBDoubleStacked(["End Step"])
N_PlatformBDoubleStacked_Node0{"Platform B is found to have
double-stack capability"}:::decision N_PlatformBDoubleStacked_Node0_action["Add 1 to the total double-stack
count"]:::main N_PlatformBDoubleStacked_Node0 -- Yes --> N_PlatformBDoubleStacked_Node0_action N_PlatformBDoubleStacked_Node0_action --> E_PlatformBDoubleStacked S_PlatformBDoubleStacked --> N_PlatformBDoubleStacked_Node0 N_PlatformBDoubleStacked_Node0 -- No --> E_PlatformBDoubleStacked
double-stack capability"}:::decision N_PlatformBDoubleStacked_Node0_action["Add 1 to the total double-stack
count"]:::main N_PlatformBDoubleStacked_Node0 -- Yes --> N_PlatformBDoubleStacked_Node0_action N_PlatformBDoubleStacked_Node0_action --> E_PlatformBDoubleStacked S_PlatformBDoubleStacked --> N_PlatformBDoubleStacked_Node0 N_PlatformBDoubleStacked_Node0 -- No --> E_PlatformBDoubleStacked
File: GCCDBL.cbl
GIVEN:
Platform B double-stack status has been determined during waybill processing
WHEN:
Platform B is found to have double-stack capability
THEN:
Add 1 to the total double-stack count
β Consolidated Acceptance Criteria
- Platform C is found to have double-stack capability → add 1 to the total double-stack count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PlatformCDoubleStacked(["Start Step"])
E_PlatformCDoubleStacked(["End Step"])
N_PlatformCDoubleStacked_Node0{"Platform C is found to have
double-stack capability"}:::decision N_PlatformCDoubleStacked_Node0_action["Add 1 to the total double-stack
count"]:::main N_PlatformCDoubleStacked_Node0 -- Yes --> N_PlatformCDoubleStacked_Node0_action N_PlatformCDoubleStacked_Node0_action --> E_PlatformCDoubleStacked S_PlatformCDoubleStacked --> N_PlatformCDoubleStacked_Node0 N_PlatformCDoubleStacked_Node0 -- No --> E_PlatformCDoubleStacked
double-stack capability"}:::decision N_PlatformCDoubleStacked_Node0_action["Add 1 to the total double-stack
count"]:::main N_PlatformCDoubleStacked_Node0 -- Yes --> N_PlatformCDoubleStacked_Node0_action N_PlatformCDoubleStacked_Node0_action --> E_PlatformCDoubleStacked S_PlatformCDoubleStacked --> N_PlatformCDoubleStacked_Node0 N_PlatformCDoubleStacked_Node0 -- No --> E_PlatformCDoubleStacked
File: GCCDBL.cbl
GIVEN:
Platform C double-stack status has been determined during waybill processing
WHEN:
Platform C is found to have double-stack capability
THEN:
Add 1 to the total double-stack count
β Consolidated Acceptance Criteria
- Platform D is found to have double-stack capability → add 1 to the total double-stack count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PlatformDDoubleStacked(["Start Step"])
E_PlatformDDoubleStacked(["End Step"])
N_PlatformDDoubleStacked_Node0{"Platform D is found to have
double-stack capability"}:::decision N_PlatformDDoubleStacked_Node0_action["Add 1 to the total double-stack
count"]:::main N_PlatformDDoubleStacked_Node0 -- Yes --> N_PlatformDDoubleStacked_Node0_action N_PlatformDDoubleStacked_Node0_action --> E_PlatformDDoubleStacked S_PlatformDDoubleStacked --> N_PlatformDDoubleStacked_Node0 N_PlatformDDoubleStacked_Node0 -- No --> E_PlatformDDoubleStacked
double-stack capability"}:::decision N_PlatformDDoubleStacked_Node0_action["Add 1 to the total double-stack
count"]:::main N_PlatformDDoubleStacked_Node0 -- Yes --> N_PlatformDDoubleStacked_Node0_action N_PlatformDDoubleStacked_Node0_action --> E_PlatformDDoubleStacked S_PlatformDDoubleStacked --> N_PlatformDDoubleStacked_Node0 N_PlatformDDoubleStacked_Node0 -- No --> E_PlatformDDoubleStacked
File: GCCDBL.cbl
GIVEN:
Platform D double-stack status has been determined during waybill processing
WHEN:
Platform D is found to have double-stack capability
THEN:
Add 1 to the total double-stack count
β Consolidated Acceptance Criteria
- Platform E is found to have double-stack capability → add 1 to the total double-stack count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PlatformEDoubleStacked(["Start Step"])
E_PlatformEDoubleStacked(["End Step"])
N_PlatformEDoubleStacked_Node0{"Platform E is found to have
double-stack capability"}:::decision N_PlatformEDoubleStacked_Node0_action["Add 1 to the total double-stack
count"]:::main N_PlatformEDoubleStacked_Node0 -- Yes --> N_PlatformEDoubleStacked_Node0_action N_PlatformEDoubleStacked_Node0_action --> E_PlatformEDoubleStacked S_PlatformEDoubleStacked --> N_PlatformEDoubleStacked_Node0 N_PlatformEDoubleStacked_Node0 -- No --> E_PlatformEDoubleStacked
double-stack capability"}:::decision N_PlatformEDoubleStacked_Node0_action["Add 1 to the total double-stack
count"]:::main N_PlatformEDoubleStacked_Node0 -- Yes --> N_PlatformEDoubleStacked_Node0_action N_PlatformEDoubleStacked_Node0_action --> E_PlatformEDoubleStacked S_PlatformEDoubleStacked --> N_PlatformEDoubleStacked_Node0 N_PlatformEDoubleStacked_Node0 -- No --> E_PlatformEDoubleStacked
File: GCCDBL.cbl
GIVEN:
Platform E double-stack status has been determined during waybill processing
WHEN:
Platform E is found to have double-stack capability
THEN:
Add 1 to the total double-stack count
β Consolidated Acceptance Criteria
- The system checks for equipment key availability → if no equipment key is available (spaces), the traffic type determination process is terminated
- The system checks for availability of saved equipment key → if no equipment key is available (spaces), the process should terminate without attempting database access
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentKeyAvailable(["Start Step"])
E_EquipmentKeyAvailable(["End Step"])
N_EquipmentKeyAvailable_Node0{"The system checks for equipment key
availability"}:::decision N_EquipmentKeyAvailable_Node0_action["If no equipment key is available
spaces, the traffic type
determination process is terminated"]:::main N_EquipmentKeyAvailable_Node0 -- Yes --> N_EquipmentKeyAvailable_Node0_action N_EquipmentKeyAvailable_Node0_action --> E_EquipmentKeyAvailable S_EquipmentKeyAvailable --> N_EquipmentKeyAvailable_Node0 N_EquipmentKeyAvailable_Node1{"The system checks for availability
of saved equipment key"}:::decision N_EquipmentKeyAvailable_Node1_action["If no equipment key is available
spaces, the process should terminate
without attempting database access"]:::exclusion N_EquipmentKeyAvailable_Node1 -- Yes -->|Alternative| N_EquipmentKeyAvailable_Node1_action N_EquipmentKeyAvailable_Node1_action --> E_EquipmentKeyAvailable N_EquipmentKeyAvailable_Node0 -- No --> N_EquipmentKeyAvailable_Node1 N_EquipmentKeyAvailable_Node1 -- No --> E_EquipmentKeyAvailable
availability"}:::decision N_EquipmentKeyAvailable_Node0_action["If no equipment key is available
spaces, the traffic type
determination process is terminated"]:::main N_EquipmentKeyAvailable_Node0 -- Yes --> N_EquipmentKeyAvailable_Node0_action N_EquipmentKeyAvailable_Node0_action --> E_EquipmentKeyAvailable S_EquipmentKeyAvailable --> N_EquipmentKeyAvailable_Node0 N_EquipmentKeyAvailable_Node1{"The system checks for availability
of saved equipment key"}:::decision N_EquipmentKeyAvailable_Node1_action["If no equipment key is available
spaces, the process should terminate
without attempting database access"]:::exclusion N_EquipmentKeyAvailable_Node1 -- Yes -->|Alternative| N_EquipmentKeyAvailable_Node1_action N_EquipmentKeyAvailable_Node1_action --> E_EquipmentKeyAvailable N_EquipmentKeyAvailable_Node0 -- No --> N_EquipmentKeyAvailable_Node1 N_EquipmentKeyAvailable_Node1 -- No --> E_EquipmentKeyAvailable
File: GCCDBL.cbl
Exclusion / Alternative Path
GIVEN:
A double-stack count process has been completed and equipment key may or may not be saved
WHEN:
The system checks for equipment key availability
THEN:
If no equipment key is available (spaces), the traffic type determination process is terminated
File: GCCDBL.cbl
GIVEN:
A shipment root record retrieval process is initiated
WHEN:
The system checks for availability of saved equipment key
THEN:
If no equipment key is available (spaces), the process should terminate without attempting database access
β Consolidated Acceptance Criteria
- The system attempts to retrieve the shipment root record using the equipment key → the shipment root record is accessed for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReadShipmentRootRecord(["Start Step"])
E_ReadShipmentRootRecord(["End Step"])
N_ReadShipmentRootRecord_Node0{"The system attempts to retrieve the
shipment root record using the
equipment key"}:::decision N_ReadShipmentRootRecord_Node0_action["The shipment root record is
accessed for further processing"]:::main N_ReadShipmentRootRecord_Node0 -- Yes --> N_ReadShipmentRootRecord_Node0_action N_ReadShipmentRootRecord_Node0_action --> E_ReadShipmentRootRecord S_ReadShipmentRootRecord --> N_ReadShipmentRootRecord_Node0 N_ReadShipmentRootRecord_Node0 -- No --> E_ReadShipmentRootRecord
shipment root record using the
equipment key"}:::decision N_ReadShipmentRootRecord_Node0_action["The shipment root record is
accessed for further processing"]:::main N_ReadShipmentRootRecord_Node0 -- Yes --> N_ReadShipmentRootRecord_Node0_action N_ReadShipmentRootRecord_Node0_action --> E_ReadShipmentRootRecord S_ReadShipmentRootRecord --> N_ReadShipmentRootRecord_Node0 N_ReadShipmentRootRecord_Node0 -- No --> E_ReadShipmentRootRecord
File: GCCDBL.cbl
GIVEN:
An equipment key is available from the double-stack counting process
WHEN:
The system attempts to retrieve the shipment root record using the equipment key
THEN:
The shipment root record is accessed for further processing
β Consolidated Acceptance Criteria
- The system checks if the shipment record was found → if shipment record is not found, reset double-stack count to zero and terminate traffic type determination
- If the database call result → if the status code is spaces (successful), the shipment record is considered found, otherwise it is not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ShipmentRecordFound(["Start Step"])
E_ShipmentRecordFound(["End Step"])
N_ShipmentRecordFound_Node0{"The system checks if the shipment
record was found"}:::decision N_ShipmentRecordFound_Node0_action["If shipment record is not found,
reset double-stack count to zero and
terminate traffic type determination"]:::exclusion N_ShipmentRecordFound_Node0 -- Yes -->|Alternative| N_ShipmentRecordFound_Node0_action N_ShipmentRecordFound_Node0_action --> E_ShipmentRecordFound S_ShipmentRecordFound --> N_ShipmentRecordFound_Node0 N_ShipmentRecordFound_Node1{"The system evaluates the database
call result"}:::decision N_ShipmentRecordFound_Node1_action["If the status code is spaces
successful, the shipment record is
considered found, otherwise it is
not found"]:::main N_ShipmentRecordFound_Node1 -- Yes --> N_ShipmentRecordFound_Node1_action N_ShipmentRecordFound_Node1_action --> E_ShipmentRecordFound N_ShipmentRecordFound_Node0 -- No --> N_ShipmentRecordFound_Node1 N_ShipmentRecordFound_Node1 -- No --> E_ShipmentRecordFound
record was found"}:::decision N_ShipmentRecordFound_Node0_action["If shipment record is not found,
reset double-stack count to zero and
terminate traffic type determination"]:::exclusion N_ShipmentRecordFound_Node0 -- Yes -->|Alternative| N_ShipmentRecordFound_Node0_action N_ShipmentRecordFound_Node0_action --> E_ShipmentRecordFound S_ShipmentRecordFound --> N_ShipmentRecordFound_Node0 N_ShipmentRecordFound_Node1{"The system evaluates the database
call result"}:::decision N_ShipmentRecordFound_Node1_action["If the status code is spaces
successful, the shipment record is
considered found, otherwise it is
not found"]:::main N_ShipmentRecordFound_Node1 -- Yes --> N_ShipmentRecordFound_Node1_action N_ShipmentRecordFound_Node1_action --> E_ShipmentRecordFound N_ShipmentRecordFound_Node0 -- No --> N_ShipmentRecordFound_Node1 N_ShipmentRecordFound_Node1 -- No --> E_ShipmentRecordFound
File: GCCDBL.cbl
GIVEN:
A shipment root record retrieval has been attempted
WHEN:
The system checks if the shipment record was found
THEN:
- If shipment record is not found, reset double-stack count to zero
- Terminate traffic type determination
File: GCCDBL.cbl
GIVEN:
A database call has been made to retrieve shipment root information
WHEN:
The system evaluates the database call result
THEN:
If the status code is spaces (successful), the shipment record is considered found, otherwise it is not found
β Consolidated Acceptance Criteria
- The system attempts to retrieve the container manifest record → the container manifest record is accessed for traffic type analysis
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReadContainerManifest(["Start Step"])
E_ReadContainerManifest(["End Step"])
N_ReadContainerManifest_Node0{"The system attempts to retrieve the
container manifest record"}:::decision N_ReadContainerManifest_Node0_action["The container manifest record is
accessed for traffic type analysis"]:::main N_ReadContainerManifest_Node0 -- Yes --> N_ReadContainerManifest_Node0_action N_ReadContainerManifest_Node0_action --> E_ReadContainerManifest S_ReadContainerManifest --> N_ReadContainerManifest_Node0 N_ReadContainerManifest_Node0 -- No --> E_ReadContainerManifest
container manifest record"}:::decision N_ReadContainerManifest_Node0_action["The container manifest record is
accessed for traffic type analysis"]:::main N_ReadContainerManifest_Node0 -- Yes --> N_ReadContainerManifest_Node0_action N_ReadContainerManifest_Node0_action --> E_ReadContainerManifest S_ReadContainerManifest --> N_ReadContainerManifest_Node0 N_ReadContainerManifest_Node0 -- No --> E_ReadContainerManifest
File: GCCDBL.cbl
GIVEN:
A valid shipment root record exists
WHEN:
The system attempts to retrieve the container manifest record
THEN:
The container manifest record is accessed for traffic type analysis
β Consolidated Acceptance Criteria
- The system checks the haulage indicator in the container manifest → the haulage status is determined for traffic type classification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckHaulageClassification(["Start Step"])
E_CheckHaulageClassification(["End Step"])
N_CheckHaulageClassification_Node0{"The system checks the haulage
indicator in the container manifest"}:::decision N_CheckHaulageClassification_Node0_action["The haulage status is determined
for traffic type classification"]:::main N_CheckHaulageClassification_Node0 -- Yes --> N_CheckHaulageClassification_Node0_action N_CheckHaulageClassification_Node0_action --> E_CheckHaulageClassification S_CheckHaulageClassification --> N_CheckHaulageClassification_Node0 N_CheckHaulageClassification_Node0 -- No --> E_CheckHaulageClassification
indicator in the container manifest"}:::decision N_CheckHaulageClassification_Node0_action["The haulage status is determined
for traffic type classification"]:::main N_CheckHaulageClassification_Node0 -- Yes --> N_CheckHaulageClassification_Node0_action N_CheckHaulageClassification_Node0_action --> E_CheckHaulageClassification S_CheckHaulageClassification --> N_CheckHaulageClassification_Node0 N_CheckHaulageClassification_Node0 -- No --> E_CheckHaulageClassification
File: GCCDBL.cbl
GIVEN:
A valid container manifest record exists
WHEN:
The system checks the haulage indicator in the container manifest
THEN:
The haulage status is determined for traffic type classification
β Consolidated Acceptance Criteria
- The system attempts to retrieve route segment 13 information → route segment data is accessed for detailed routing analysis
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReadRouteSegments(["Start Step"])
E_ReadRouteSegments(["End Step"])
N_ReadRouteSegments_Node0{"The system attempts to retrieve
route segment 13 information"}:::decision N_ReadRouteSegments_Node0_action["Route segment data is accessed for
detailed routing analysis"]:::main N_ReadRouteSegments_Node0 -- Yes --> N_ReadRouteSegments_Node0_action N_ReadRouteSegments_Node0_action --> E_ReadRouteSegments S_ReadRouteSegments --> N_ReadRouteSegments_Node0 N_ReadRouteSegments_Node0 -- No --> E_ReadRouteSegments
route segment 13 information"}:::decision N_ReadRouteSegments_Node0_action["Route segment data is accessed for
detailed routing analysis"]:::main N_ReadRouteSegments_Node0 -- Yes --> N_ReadRouteSegments_Node0_action N_ReadRouteSegments_Node0_action --> E_ReadRouteSegments S_ReadRouteSegments --> N_ReadRouteSegments_Node0 N_ReadRouteSegments_Node0 -- No --> E_ReadRouteSegments
File: GCCDBL.cbl
Exclusion / Alternative Path
GIVEN:
Traffic is not classified as haulage and container manifest exists
WHEN:
The system attempts to retrieve route segment 13 information
THEN:
Route segment data is accessed for detailed routing analysis
β Consolidated Acceptance Criteria
- The system checks if route segment 13 was found → if route segments are not found, reset double-stack count to zero and terminate traffic type determination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RouteSegmentsFound(["Start Step"])
E_RouteSegmentsFound(["End Step"])
N_RouteSegmentsFound_Node0{"The system checks if route segment
13 was found"}:::decision N_RouteSegmentsFound_Node0_action["If route segments are not found,
reset double-stack count to zero and
terminate traffic type determination"]:::exclusion N_RouteSegmentsFound_Node0 -- Yes -->|Alternative| N_RouteSegmentsFound_Node0_action N_RouteSegmentsFound_Node0_action --> E_RouteSegmentsFound S_RouteSegmentsFound --> N_RouteSegmentsFound_Node0 N_RouteSegmentsFound_Node0 -- No --> E_RouteSegmentsFound
13 was found"}:::decision N_RouteSegmentsFound_Node0_action["If route segments are not found,
reset double-stack count to zero and
terminate traffic type determination"]:::exclusion N_RouteSegmentsFound_Node0 -- Yes -->|Alternative| N_RouteSegmentsFound_Node0_action N_RouteSegmentsFound_Node0_action --> E_RouteSegmentsFound S_RouteSegmentsFound --> N_RouteSegmentsFound_Node0 N_RouteSegmentsFound_Node0 -- No --> E_RouteSegmentsFound
File: GCCDBL.cbl
GIVEN:
Route segment retrieval has been attempted for non-haulage traffic
WHEN:
The system checks if route segment 13 was found
THEN:
- If route segments are not found, reset double-stack count to zero
- Terminate traffic type determination
β Consolidated Acceptance Criteria
- The system examines route information in sequential pairs up to 9 segments → route pairs are analyzed for carrier sequence and destination patterns
- Either current route segment or next route segment is empty or contains low-values → skip to next iteration and stop processing remaining segments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExamineRoutePairs(["Start Step"])
E_ExamineRoutePairs(["End Step"])
N_ExamineRoutePairs_Node0{"The system examines route
information in sequential pairs up
to 9 segments"}:::decision N_ExamineRoutePairs_Node0_action["Route pairs are analyzed for
carrier sequence and destination
patterns"]:::main N_ExamineRoutePairs_Node0 -- Yes --> N_ExamineRoutePairs_Node0_action N_ExamineRoutePairs_Node0_action --> E_ExamineRoutePairs S_ExamineRoutePairs --> N_ExamineRoutePairs_Node0 N_ExamineRoutePairs_Node1{"Either current route segment or
next route segment is empty or
contains low-values"}:::decision N_ExamineRoutePairs_Node1_action["Skip to next iteration and stop
processing remaining segments"]:::main N_ExamineRoutePairs_Node1 -- Yes --> N_ExamineRoutePairs_Node1_action N_ExamineRoutePairs_Node1_action --> E_ExamineRoutePairs N_ExamineRoutePairs_Node0 -- No --> N_ExamineRoutePairs_Node1 N_ExamineRoutePairs_Node1 -- No --> E_ExamineRoutePairs
information in sequential pairs up
to 9 segments"}:::decision N_ExamineRoutePairs_Node0_action["Route pairs are analyzed for
carrier sequence and destination
patterns"]:::main N_ExamineRoutePairs_Node0 -- Yes --> N_ExamineRoutePairs_Node0_action N_ExamineRoutePairs_Node0_action --> E_ExamineRoutePairs S_ExamineRoutePairs --> N_ExamineRoutePairs_Node0 N_ExamineRoutePairs_Node1{"Either current route segment or
next route segment is empty or
contains low-values"}:::decision N_ExamineRoutePairs_Node1_action["Skip to next iteration and stop
processing remaining segments"]:::main N_ExamineRoutePairs_Node1 -- Yes --> N_ExamineRoutePairs_Node1_action N_ExamineRoutePairs_Node1_action --> E_ExamineRoutePairs N_ExamineRoutePairs_Node0 -- No --> N_ExamineRoutePairs_Node1 N_ExamineRoutePairs_Node1 -- No --> E_ExamineRoutePairs
File: GCCDBL.cbl
GIVEN:
Valid route segment information exists
WHEN:
The system examines route information in sequential pairs up to 9 segments
THEN:
- Route pairs are analyzed for carrier sequence
- Destination patterns
File: GCCDBL.cbl
GIVEN:
Route segments are being processed in pairs
WHEN:
Either current route segment or next route segment is empty or contains low-values
THEN:
- Skip to next iteration
- Stop processing remaining segments
β Consolidated Acceptance Criteria
- First carrier is CPRS and second carrier is CSXT and route includes DET → set traffic type to CSXT and complete traffic type determination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CPRStoCSXTRouteFound(["Start Step"])
E_CPRStoCSXTRouteFound(["End Step"])
N_CPRStoCSXTRouteFound_Node0{"First carrier is CPRS and second
carrier is CSXT and route includes
DET"}:::decision N_CPRStoCSXTRouteFound_Node0_action["Set traffic type to CSXT and
complete traffic type determination"]:::main N_CPRStoCSXTRouteFound_Node0 -- Yes --> N_CPRStoCSXTRouteFound_Node0_action N_CPRStoCSXTRouteFound_Node0_action --> E_CPRStoCSXTRouteFound S_CPRStoCSXTRouteFound --> N_CPRStoCSXTRouteFound_Node0 N_CPRStoCSXTRouteFound_Node0 -- No --> E_CPRStoCSXTRouteFound
carrier is CSXT and route includes
DET"}:::decision N_CPRStoCSXTRouteFound_Node0_action["Set traffic type to CSXT and
complete traffic type determination"]:::main N_CPRStoCSXTRouteFound_Node0 -- Yes --> N_CPRStoCSXTRouteFound_Node0_action N_CPRStoCSXTRouteFound_Node0_action --> E_CPRStoCSXTRouteFound S_CPRStoCSXTRouteFound --> N_CPRStoCSXTRouteFound_Node0 N_CPRStoCSXTRouteFound_Node0 -- No --> E_CPRStoCSXTRouteFound
File: GCCDBL.cbl
GIVEN:
Route pairs are being analyzed for traffic classification
WHEN:
- First carrier is cprs
- Second carrier is csxt
- Route includes det
THEN:
- Set traffic type to csxt
- Complete traffic type determination
β Consolidated Acceptance Criteria
- First carrier is CPRS and second carrier is NS and route includes DET → set traffic type to NS and complete traffic type determination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CPRStoNSRouteFound(["Start Step"])
E_CPRStoNSRouteFound(["End Step"])
N_CPRStoNSRouteFound_Node0{"First carrier is CPRS and second
carrier is NS and route includes DET"}:::decision N_CPRStoNSRouteFound_Node0_action["Set traffic type to NS and complete
traffic type determination"]:::main N_CPRStoNSRouteFound_Node0 -- Yes --> N_CPRStoNSRouteFound_Node0_action N_CPRStoNSRouteFound_Node0_action --> E_CPRStoNSRouteFound S_CPRStoNSRouteFound --> N_CPRStoNSRouteFound_Node0 N_CPRStoNSRouteFound_Node0 -- No --> E_CPRStoNSRouteFound
carrier is NS and route includes DET"}:::decision N_CPRStoNSRouteFound_Node0_action["Set traffic type to NS and complete
traffic type determination"]:::main N_CPRStoNSRouteFound_Node0 -- Yes --> N_CPRStoNSRouteFound_Node0_action N_CPRStoNSRouteFound_Node0_action --> E_CPRStoNSRouteFound S_CPRStoNSRouteFound --> N_CPRStoNSRouteFound_Node0 N_CPRStoNSRouteFound_Node0 -- No --> E_CPRStoNSRouteFound
File: GCCDBL.cbl
Exclusion / Alternative Path
GIVEN:
Route pairs are being analyzed and CPRS to CSXT route was not found
WHEN:
- First carrier is cprs
- Second carrier is ns
- Route includes det
THEN:
- Set traffic type to ns
- Complete traffic type determination
β Consolidated Acceptance Criteria
- First carrier is CSXT or NS and second carrier is CPRS and route includes DET → reset double-stack count to zero as this represents invalid double-stack traffic direction
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NorthboundRouteFound(["Start Step"])
E_NorthboundRouteFound(["End Step"])
N_NorthboundRouteFound_Node0{"First carrier is CSXT or NS and
second carrier is CPRS and route
includes DET"}:::decision N_NorthboundRouteFound_Node0_action["Reset double-stack count to zero as
this represents invalid double-stack
traffic direction"]:::main N_NorthboundRouteFound_Node0 -- Yes --> N_NorthboundRouteFound_Node0_action N_NorthboundRouteFound_Node0_action --> E_NorthboundRouteFound S_NorthboundRouteFound --> N_NorthboundRouteFound_Node0 N_NorthboundRouteFound_Node0 -- No --> E_NorthboundRouteFound
second carrier is CPRS and route
includes DET"}:::decision N_NorthboundRouteFound_Node0_action["Reset double-stack count to zero as
this represents invalid double-stack
traffic direction"]:::main N_NorthboundRouteFound_Node0 -- Yes --> N_NorthboundRouteFound_Node0_action N_NorthboundRouteFound_Node0_action --> E_NorthboundRouteFound S_NorthboundRouteFound --> N_NorthboundRouteFound_Node0 N_NorthboundRouteFound_Node0 -- No --> E_NorthboundRouteFound
File: GCCDBL.cbl
GIVEN:
Route pairs are being analyzed and neither CPRS to CSXT nor CPRS to NS routes were found
WHEN:
- First carrier is csxt or ns
- Second carrier is cprs
- Route includes det
THEN:
Reset double-stack count to zero as this represents invalid double-stack traffic direction
β Consolidated Acceptance Criteria
- The system prepares to query the shipment database → the segment type should be set to 'SHIPROOT' and the saved equipment key should be used as the root key for the query
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSegmentTypetoSHIPROOT(["Start Step"])
E_SetSegmentTypetoSHIPROOT(["End Step"])
N_SetSegmentTypetoSHIPROOT_Node0{"The system prepares to query the
shipment database"}:::decision N_SetSegmentTypetoSHIPROOT_Node0_action["The segment type should be set to
SHIPROOT and the saved equipment key
should be used as the root key for
the query"]:::main N_SetSegmentTypetoSHIPROOT_Node0 -- Yes --> N_SetSegmentTypetoSHIPROOT_Node0_action N_SetSegmentTypetoSHIPROOT_Node0_action --> E_SetSegmentTypetoSHIPROOT S_SetSegmentTypetoSHIPROOT --> N_SetSegmentTypetoSHIPROOT_Node0 N_SetSegmentTypetoSHIPROOT_Node0 -- No --> E_SetSegmentTypetoSHIPROOT
shipment database"}:::decision N_SetSegmentTypetoSHIPROOT_Node0_action["The segment type should be set to
SHIPROOT and the saved equipment key
should be used as the root key for
the query"]:::main N_SetSegmentTypetoSHIPROOT_Node0 -- Yes --> N_SetSegmentTypetoSHIPROOT_Node0_action N_SetSegmentTypetoSHIPROOT_Node0_action --> E_SetSegmentTypetoSHIPROOT S_SetSegmentTypetoSHIPROOT --> N_SetSegmentTypetoSHIPROOT_Node0 N_SetSegmentTypetoSHIPROOT_Node0 -- No --> E_SetSegmentTypetoSHIPROOT
File: GCCDBL.cbl
GIVEN:
An equipment key is available for shipment lookup
WHEN:
The system prepares to query the shipment database
THEN:
The segment type should be set to 'SHIPROOT' and the saved equipment key should be used as the root key for the query
β Consolidated Acceptance Criteria
- The system executes the database call to retrieve shipment information → the FWCWBIO program should be called with the configured parameters to access the SHIPROOT database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallSHIPROOTDatabase(["Start Step"])
E_CallSHIPROOTDatabase(["End Step"])
N_CallSHIPROOTDatabase_Node0{"The system executes the database
call to retrieve shipment
information"}:::decision N_CallSHIPROOTDatabase_Node0_action["The FWCWBIO program should be
called with the configured
parameters to access the SHIPROOT
database"]:::main N_CallSHIPROOTDatabase_Node0 -- Yes --> N_CallSHIPROOTDatabase_Node0_action N_CallSHIPROOTDatabase_Node0_action --> E_CallSHIPROOTDatabase S_CallSHIPROOTDatabase --> N_CallSHIPROOTDatabase_Node0 N_CallSHIPROOTDatabase_Node0 -- No --> E_CallSHIPROOTDatabase
call to retrieve shipment
information"}:::decision N_CallSHIPROOTDatabase_Node0_action["The FWCWBIO program should be
called with the configured
parameters to access the SHIPROOT
database"]:::main N_CallSHIPROOTDatabase_Node0 -- Yes --> N_CallSHIPROOTDatabase_Node0_action N_CallSHIPROOTDatabase_Node0_action --> E_CallSHIPROOTDatabase S_CallSHIPROOTDatabase --> N_CallSHIPROOTDatabase_Node0 N_CallSHIPROOTDatabase_Node0 -- No --> E_CallSHIPROOTDatabase
File: GCCDBL.cbl
GIVEN:
Database query parameters are properly configured with SHIPROOT segment type and equipment key
WHEN:
The system executes the database call to retrieve shipment information
THEN:
The FWCWBIO program should be called with the configured parameters to access the SHIPROOT database
β Consolidated Acceptance Criteria
- The system cannot retrieve valid shipment information → the double stack count should be reset to zero to invalidate any previously counted platforms
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NoShipmentFoundResetDoubleStackCount(["Start Step"])
E_NoShipmentFoundResetDoubleStackCount(["End Step"])
N_NoShipmentFoundResetDoubleStackCount_Node0{"The system cannot retrieve valid
shipment information"}:::decision N_NoShipmentFoundResetDoubleStackCount_Node0_action["The double stack count should be
reset to zero to invalidate any
previously counted platforms"]:::main N_NoShipmentFoundResetDoubleStackCount_Node0 -- Yes --> N_NoShipmentFoundResetDoubleStackCount_Node0_action N_NoShipmentFoundResetDoubleStackCount_Node0_action --> E_NoShipmentFoundResetDoubleStackCount S_NoShipmentFoundResetDoubleStackCount --> N_NoShipmentFoundResetDoubleStackCount_Node0 N_NoShipmentFoundResetDoubleStackCount_Node0 -- No --> E_NoShipmentFoundResetDoubleStackCount
shipment information"}:::decision N_NoShipmentFoundResetDoubleStackCount_Node0_action["The double stack count should be
reset to zero to invalidate any
previously counted platforms"]:::main N_NoShipmentFoundResetDoubleStackCount_Node0 -- Yes --> N_NoShipmentFoundResetDoubleStackCount_Node0_action N_NoShipmentFoundResetDoubleStackCount_Node0_action --> E_NoShipmentFoundResetDoubleStackCount S_NoShipmentFoundResetDoubleStackCount --> N_NoShipmentFoundResetDoubleStackCount_Node0 N_NoShipmentFoundResetDoubleStackCount_Node0 -- No --> E_NoShipmentFoundResetDoubleStackCount
File: GCCDBL.cbl
GIVEN:
A shipment root record lookup has failed or no equipment key was available
WHEN:
The system cannot retrieve valid shipment information
THEN:
The double stack count should be reset to zero to invalidate any previously counted platforms
β Consolidated Acceptance Criteria
- The system begins container manifest access process → the container manifest record is initialized to empty values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeContainerManifestRecord(["Start Step"])
E_InitializeContainerManifestRecord(["End Step"])
N_InitializeContainerManifestRecord_Node0{"The system begins container
manifest access process"}:::decision N_InitializeContainerManifestRecord_Node0_action["The container manifest record is
initialized to empty values"]:::main N_InitializeContainerManifestRecord_Node0 -- Yes --> N_InitializeContainerManifestRecord_Node0_action N_InitializeContainerManifestRecord_Node0_action --> E_InitializeContainerManifestRecord S_InitializeContainerManifestRecord --> N_InitializeContainerManifestRecord_Node0 N_InitializeContainerManifestRecord_Node0 -- No --> E_InitializeContainerManifestRecord
manifest access process"}:::decision N_InitializeContainerManifestRecord_Node0_action["The container manifest record is
initialized to empty values"]:::main N_InitializeContainerManifestRecord_Node0 -- Yes --> N_InitializeContainerManifestRecord_Node0_action N_InitializeContainerManifestRecord_Node0_action --> E_InitializeContainerManifestRecord S_InitializeContainerManifestRecord --> N_InitializeContainerManifestRecord_Node0 N_InitializeContainerManifestRecord_Node0 -- No --> E_InitializeContainerManifestRecord
File: GCCDBL.cbl
GIVEN:
A container manifest record structure exists
WHEN:
The system begins container manifest access process
THEN:
The container manifest record is initialized to empty values
β Consolidated Acceptance Criteria
- The system extracts waybill information for container manifest access → the waybill root key and waybill date are extracted and formatted for search criteria
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractWaybillInformationfromShipmentRoot(["Start Step"])
E_ExtractWaybillInformationfromShipmentRoot(["End Step"])
N_ExtractWaybillInformationfromShipmentRoot_Node0{"The system extracts waybill
information for container manifest
access"}:::decision N_ExtractWaybillInformationfromShipmentRoot_Node0_action["The waybill root key and waybill
date are extracted and formatted for
search criteria"]:::main N_ExtractWaybillInformationfromShipmentRoot_Node0 -- Yes --> N_ExtractWaybillInformationfromShipmentRoot_Node0_action N_ExtractWaybillInformationfromShipmentRoot_Node0_action --> E_ExtractWaybillInformationfromShipmentRoot S_ExtractWaybillInformationfromShipmentRoot --> N_ExtractWaybillInformationfromShipmentRoot_Node0 N_ExtractWaybillInformationfromShipmentRoot_Node0 -- No --> E_ExtractWaybillInformationfromShipmentRoot
information for container manifest
access"}:::decision N_ExtractWaybillInformationfromShipmentRoot_Node0_action["The waybill root key and waybill
date are extracted and formatted for
search criteria"]:::main N_ExtractWaybillInformationfromShipmentRoot_Node0 -- Yes --> N_ExtractWaybillInformationfromShipmentRoot_Node0_action N_ExtractWaybillInformationfromShipmentRoot_Node0_action --> E_ExtractWaybillInformationfromShipmentRoot S_ExtractWaybillInformationfromShipmentRoot --> N_ExtractWaybillInformationfromShipmentRoot_Node0 N_ExtractWaybillInformationfromShipmentRoot_Node0 -- No --> E_ExtractWaybillInformationfromShipmentRoot
File: GCCDBL.cbl
GIVEN:
Shipment root data contains waybill information
WHEN:
The system extracts waybill information for container manifest access
THEN:
- The waybill root key
- Waybill date are extracted
- Formatted for search criteria
β Consolidated Acceptance Criteria
- The system extracts car ID for container manifest access → the car identification number is extracted for search criteria
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractCarIDfromShipmentRoot(["Start Step"])
E_ExtractCarIDfromShipmentRoot(["End Step"])
N_ExtractCarIDfromShipmentRoot_Node0{"The system extracts car ID for
container manifest access"}:::decision N_ExtractCarIDfromShipmentRoot_Node0_action["The car identification number is
extracted for search criteria"]:::main N_ExtractCarIDfromShipmentRoot_Node0 -- Yes --> N_ExtractCarIDfromShipmentRoot_Node0_action N_ExtractCarIDfromShipmentRoot_Node0_action --> E_ExtractCarIDfromShipmentRoot S_ExtractCarIDfromShipmentRoot --> N_ExtractCarIDfromShipmentRoot_Node0 N_ExtractCarIDfromShipmentRoot_Node0 -- No --> E_ExtractCarIDfromShipmentRoot
container manifest access"}:::decision N_ExtractCarIDfromShipmentRoot_Node0_action["The car identification number is
extracted for search criteria"]:::main N_ExtractCarIDfromShipmentRoot_Node0 -- Yes --> N_ExtractCarIDfromShipmentRoot_Node0_action N_ExtractCarIDfromShipmentRoot_Node0_action --> E_ExtractCarIDfromShipmentRoot S_ExtractCarIDfromShipmentRoot --> N_ExtractCarIDfromShipmentRoot_Node0 N_ExtractCarIDfromShipmentRoot_Node0 -- No --> E_ExtractCarIDfromShipmentRoot
File: GCCDBL.cbl
GIVEN:
Shipment root data contains car identification information
WHEN:
The system extracts car ID for container manifest access
THEN:
The car identification number is extracted for search criteria
β Consolidated Acceptance Criteria
- The system prepares to search for container manifest record → the search criteria is set with waybill number index and car ID index for GCSUSRT record access
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSearchCriteriawithWaybillNumberandCarID(["Start Step"])
E_SetSearchCriteriawithWaybillNumberandCarID(["End Step"])
N_SetSearchCriteriawithWaybillNumberandCarID_Node0{"The system prepares to search for
container manifest record"}:::decision N_SetSearchCriteriawithWaybillNumberandCarID_Node0_action["The search criteria is set with
waybill number index and car ID
index for GCSUSRT record access"]:::main N_SetSearchCriteriawithWaybillNumberandCarID_Node0 -- Yes --> N_SetSearchCriteriawithWaybillNumberandCarID_Node0_action N_SetSearchCriteriawithWaybillNumberandCarID_Node0_action --> E_SetSearchCriteriawithWaybillNumberandCarID S_SetSearchCriteriawithWaybillNumberandCarID --> N_SetSearchCriteriawithWaybillNumberandCarID_Node0 N_SetSearchCriteriawithWaybillNumberandCarID_Node0 -- No --> E_SetSearchCriteriawithWaybillNumberandCarID
container manifest record"}:::decision N_SetSearchCriteriawithWaybillNumberandCarID_Node0_action["The search criteria is set with
waybill number index and car ID
index for GCSUSRT record access"]:::main N_SetSearchCriteriawithWaybillNumberandCarID_Node0 -- Yes --> N_SetSearchCriteriawithWaybillNumberandCarID_Node0_action N_SetSearchCriteriawithWaybillNumberandCarID_Node0_action --> E_SetSearchCriteriawithWaybillNumberandCarID S_SetSearchCriteriawithWaybillNumberandCarID --> N_SetSearchCriteriawithWaybillNumberandCarID_Node0 N_SetSearchCriteriawithWaybillNumberandCarID_Node0 -- No --> E_SetSearchCriteriawithWaybillNumberandCarID
File: GCCDBL.cbl
GIVEN:
Waybill root key, waybill date, and car ID are available
WHEN:
The system prepares to search for container manifest record
THEN:
- The search criteria is set with waybill number index
- Car id index for gcsusrt record access
β Consolidated Acceptance Criteria
- The system accesses the GCSUSRT container manifest database → the system attempts to retrieve the container manifest record using car-waybill index
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessGCSUSRTContainerManifestRecord(["Start Step"])
E_AccessGCSUSRTContainerManifestRecord(["End Step"])
N_AccessGCSUSRTContainerManifestRecord_Node0{"The system accesses the GCSUSRT
container manifest database"}:::decision N_AccessGCSUSRTContainerManifestRecord_Node0_action["The system attempts to retrieve the
container manifest record using
car-waybill index"]:::main N_AccessGCSUSRTContainerManifestRecord_Node0 -- Yes --> N_AccessGCSUSRTContainerManifestRecord_Node0_action N_AccessGCSUSRTContainerManifestRecord_Node0_action --> E_AccessGCSUSRTContainerManifestRecord S_AccessGCSUSRTContainerManifestRecord --> N_AccessGCSUSRTContainerManifestRecord_Node0 N_AccessGCSUSRTContainerManifestRecord_Node0 -- No --> E_AccessGCSUSRTContainerManifestRecord
container manifest database"}:::decision N_AccessGCSUSRTContainerManifestRecord_Node0_action["The system attempts to retrieve the
container manifest record using
car-waybill index"]:::main N_AccessGCSUSRTContainerManifestRecord_Node0 -- Yes --> N_AccessGCSUSRTContainerManifestRecord_Node0_action N_AccessGCSUSRTContainerManifestRecord_Node0_action --> E_AccessGCSUSRTContainerManifestRecord S_AccessGCSUSRTContainerManifestRecord --> N_AccessGCSUSRTContainerManifestRecord_Node0 N_AccessGCSUSRTContainerManifestRecord_Node0 -- No --> E_AccessGCSUSRTContainerManifestRecord
File: GCCDBL.cbl
GIVEN:
Search criteria is configured with waybill number and car ID
WHEN:
The system accesses the GCSUSRT container manifest database
THEN:
The system attempts to retrieve the container manifest record using car-waybill index
β Consolidated Acceptance Criteria
- The system checks the database access result → if the record retrieval was successful, proceed to record validation; otherwise, set container manifest not found status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RecordRetrievedSuccessfully(["Start Step"])
E_RecordRetrievedSuccessfully(["End Step"])
N_RecordRetrievedSuccessfully_Node0{"The system checks the database
access result"}:::decision N_RecordRetrievedSuccessfully_Node0_action["If the record retrieval was
successful, proceed to record
validation otherwise, set container
manifest not found status"]:::main N_RecordRetrievedSuccessfully_Node0 -- Yes --> N_RecordRetrievedSuccessfully_Node0_action N_RecordRetrievedSuccessfully_Node0_action --> E_RecordRetrievedSuccessfully S_RecordRetrievedSuccessfully --> N_RecordRetrievedSuccessfully_Node0 N_RecordRetrievedSuccessfully_Node0 -- No --> E_RecordRetrievedSuccessfully
access result"}:::decision N_RecordRetrievedSuccessfully_Node0_action["If the record retrieval was
successful, proceed to record
validation otherwise, set container
manifest not found status"]:::main N_RecordRetrievedSuccessfully_Node0 -- Yes --> N_RecordRetrievedSuccessfully_Node0_action N_RecordRetrievedSuccessfully_Node0_action --> E_RecordRetrievedSuccessfully S_RecordRetrievedSuccessfully --> N_RecordRetrievedSuccessfully_Node0 N_RecordRetrievedSuccessfully_Node0 -- No --> E_RecordRetrievedSuccessfully
File: GCCDBL.cbl
GIVEN:
Container manifest record access has been attempted
WHEN:
The system checks the database access result
THEN:
If the record retrieval was successful, proceed to record validation; otherwise, set container manifest not found status
β Consolidated Acceptance Criteria
- The system validates the retrieved record content → the system checks if the record's car ID and waybill number match the search criteria
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateRetrievedRecordMatchesSearchCriteria(["Start Step"])
E_ValidateRetrievedRecordMatchesSearchCriteria(["End Step"])
N_ValidateRetrievedRecordMatchesSearchCriteria_Node0{"The system validates the retrieved
record content"}:::decision N_ValidateRetrievedRecordMatchesSearchCriteria_Node0_action["The system checks if the record s
car ID and waybill number match the
search criteria"]:::main N_ValidateRetrievedRecordMatchesSearchCriteria_Node0 -- Yes --> N_ValidateRetrievedRecordMatchesSearchCriteria_Node0_action N_ValidateRetrievedRecordMatchesSearchCriteria_Node0_action --> E_ValidateRetrievedRecordMatchesSearchCriteria S_ValidateRetrievedRecordMatchesSearchCriteria --> N_ValidateRetrievedRecordMatchesSearchCriteria_Node0 N_ValidateRetrievedRecordMatchesSearchCriteria_Node0 -- No --> E_ValidateRetrievedRecordMatchesSearchCriteria
record content"}:::decision N_ValidateRetrievedRecordMatchesSearchCriteria_Node0_action["The system checks if the record s
car ID and waybill number match the
search criteria"]:::main N_ValidateRetrievedRecordMatchesSearchCriteria_Node0 -- Yes --> N_ValidateRetrievedRecordMatchesSearchCriteria_Node0_action N_ValidateRetrievedRecordMatchesSearchCriteria_Node0_action --> E_ValidateRetrievedRecordMatchesSearchCriteria S_ValidateRetrievedRecordMatchesSearchCriteria --> N_ValidateRetrievedRecordMatchesSearchCriteria_Node0 N_ValidateRetrievedRecordMatchesSearchCriteria_Node0 -- No --> E_ValidateRetrievedRecordMatchesSearchCriteria
File: GCCDBL.cbl
GIVEN:
A container manifest record has been successfully retrieved
WHEN:
The system validates the retrieved record content
THEN:
- The system checks if the record's car id
- Waybill number match the search criteria
β Consolidated Acceptance Criteria
- The system compares record values with search criteria → if both car ID and waybill number match exactly, set container manifest found status; otherwise, set container manifest not found status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WaybillandCarIDMatch(["Start Step"])
E_WaybillandCarIDMatch(["End Step"])
N_WaybillandCarIDMatch_Node0{"The system compares record values
with search criteria"}:::decision N_WaybillandCarIDMatch_Node0_action["If both car ID and waybill number
match exactly, set container
manifest found status otherwise, set
container manifest not found status"]:::main N_WaybillandCarIDMatch_Node0 -- Yes --> N_WaybillandCarIDMatch_Node0_action N_WaybillandCarIDMatch_Node0_action --> E_WaybillandCarIDMatch S_WaybillandCarIDMatch --> N_WaybillandCarIDMatch_Node0 N_WaybillandCarIDMatch_Node0 -- No --> E_WaybillandCarIDMatch
with search criteria"}:::decision N_WaybillandCarIDMatch_Node0_action["If both car ID and waybill number
match exactly, set container
manifest found status otherwise, set
container manifest not found status"]:::main N_WaybillandCarIDMatch_Node0 -- Yes --> N_WaybillandCarIDMatch_Node0_action N_WaybillandCarIDMatch_Node0_action --> E_WaybillandCarIDMatch S_WaybillandCarIDMatch --> N_WaybillandCarIDMatch_Node0 N_WaybillandCarIDMatch_Node0 -- No --> E_WaybillandCarIDMatch
File: GCCDBL.cbl
GIVEN:
Retrieved container manifest record has been validated
WHEN:
The system compares record values with search criteria
THEN:
- If both car id
- Waybill number match exactly, set container manifest found status; otherwise, set container manifest not found status
β Consolidated Acceptance Criteria
- The system confirms successful record retrieval and validation → the container manifest found status is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetContainerManifestFoundStatus(["Start Step"])
E_SetContainerManifestFoundStatus(["End Step"])
N_SetContainerManifestFoundStatus_Node0{"The system confirms successful
record retrieval and validation"}:::decision N_SetContainerManifestFoundStatus_Node0_action["The container manifest found status
is set to true"]:::main N_SetContainerManifestFoundStatus_Node0 -- Yes --> N_SetContainerManifestFoundStatus_Node0_action N_SetContainerManifestFoundStatus_Node0_action --> E_SetContainerManifestFoundStatus S_SetContainerManifestFoundStatus --> N_SetContainerManifestFoundStatus_Node0 N_SetContainerManifestFoundStatus_Node0 -- No --> E_SetContainerManifestFoundStatus
record retrieval and validation"}:::decision N_SetContainerManifestFoundStatus_Node0_action["The container manifest found status
is set to true"]:::main N_SetContainerManifestFoundStatus_Node0 -- Yes --> N_SetContainerManifestFoundStatus_Node0_action N_SetContainerManifestFoundStatus_Node0_action --> E_SetContainerManifestFoundStatus S_SetContainerManifestFoundStatus --> N_SetContainerManifestFoundStatus_Node0 N_SetContainerManifestFoundStatus_Node0 -- No --> E_SetContainerManifestFoundStatus
File: GCCDBL.cbl
GIVEN:
Retrieved container manifest record matches the search criteria exactly
WHEN:
- The system confirms successful record retrieval
- Validation
THEN:
The container manifest found status is set to true
β Consolidated Acceptance Criteria
- The system determines container manifest cannot be located → the container manifest not found status is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetContainerManifestNotFoundStatus(["Start Step"])
E_SetContainerManifestNotFoundStatus(["End Step"])
N_SetContainerManifestNotFoundStatus_Node0{"The system determines container
manifest cannot be located"}:::decision N_SetContainerManifestNotFoundStatus_Node0_action["The container manifest not found
status is set to true"]:::main N_SetContainerManifestNotFoundStatus_Node0 -- Yes --> N_SetContainerManifestNotFoundStatus_Node0_action N_SetContainerManifestNotFoundStatus_Node0_action --> E_SetContainerManifestNotFoundStatus S_SetContainerManifestNotFoundStatus --> N_SetContainerManifestNotFoundStatus_Node0 N_SetContainerManifestNotFoundStatus_Node0 -- No --> E_SetContainerManifestNotFoundStatus
manifest cannot be located"}:::decision N_SetContainerManifestNotFoundStatus_Node0_action["The container manifest not found
status is set to true"]:::main N_SetContainerManifestNotFoundStatus_Node0 -- Yes --> N_SetContainerManifestNotFoundStatus_Node0_action N_SetContainerManifestNotFoundStatus_Node0_action --> E_SetContainerManifestNotFoundStatus S_SetContainerManifestNotFoundStatus --> N_SetContainerManifestNotFoundStatus_Node0 N_SetContainerManifestNotFoundStatus_Node0 -- No --> E_SetContainerManifestNotFoundStatus
File: GCCDBL.cbl
GIVEN:
Container manifest record retrieval failed or retrieved record doesn't match search criteria
WHEN:
The system determines container manifest cannot be located
THEN:
The container manifest not found status is set to true
β Consolidated Acceptance Criteria
- The system checks the haulage indicator in the routing record → if the routing record indicates haulage traffic, set the traffic type to HAULAGE, otherwise proceed to detailed route analysis
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsContainerClassifiedasHaulage(["Start Step"])
E_IsContainerClassifiedasHaulage(["End Step"])
N_IsContainerClassifiedasHaulage_Node0{"The system checks the haulage
indicator in the routing record"}:::decision N_IsContainerClassifiedasHaulage_Node0_action["If the routing record indicates
haulage traffic, set the traffic
type to HAULAGE, otherwise proceed
to detailed route analysis"]:::main N_IsContainerClassifiedasHaulage_Node0 -- Yes --> N_IsContainerClassifiedasHaulage_Node0_action N_IsContainerClassifiedasHaulage_Node0_action --> E_IsContainerClassifiedasHaulage S_IsContainerClassifiedasHaulage --> N_IsContainerClassifiedasHaulage_Node0 N_IsContainerClassifiedasHaulage_Node0 -- No --> E_IsContainerClassifiedasHaulage
indicator in the routing record"}:::decision N_IsContainerClassifiedasHaulage_Node0_action["If the routing record indicates
haulage traffic, set the traffic
type to HAULAGE, otherwise proceed
to detailed route analysis"]:::main N_IsContainerClassifiedasHaulage_Node0 -- Yes --> N_IsContainerClassifiedasHaulage_Node0_action N_IsContainerClassifiedasHaulage_Node0_action --> E_IsContainerClassifiedasHaulage S_IsContainerClassifiedasHaulage --> N_IsContainerClassifiedasHaulage_Node0 N_IsContainerClassifiedasHaulage_Node0 -- No --> E_IsContainerClassifiedasHaulage
File: GCCDBL.cbl
GIVEN:
A container manifest has been successfully retrieved for the equipment key
WHEN:
The system checks the haulage indicator in the routing record
THEN:
If the routing record indicates haulage traffic, set the traffic type to HAULAGE, otherwise proceed to detailed route analysis
β Consolidated Acceptance Criteria
- The system processes the traffic type classification → set the double-stack traffic type indicator to HAULAGE
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrafficTypetoHAULAGE(["Start Step"])
E_SetTrafficTypetoHAULAGE(["End Step"])
N_SetTrafficTypetoHAULAGE_Node0{"The system processes the traffic
type classification"}:::decision N_SetTrafficTypetoHAULAGE_Node0_action["Set the double-stack traffic type
indicator to HAULAGE"]:::main N_SetTrafficTypetoHAULAGE_Node0 -- Yes --> N_SetTrafficTypetoHAULAGE_Node0_action N_SetTrafficTypetoHAULAGE_Node0_action --> E_SetTrafficTypetoHAULAGE S_SetTrafficTypetoHAULAGE --> N_SetTrafficTypetoHAULAGE_Node0 N_SetTrafficTypetoHAULAGE_Node0 -- No --> E_SetTrafficTypetoHAULAGE
type classification"}:::decision N_SetTrafficTypetoHAULAGE_Node0_action["Set the double-stack traffic type
indicator to HAULAGE"]:::main N_SetTrafficTypetoHAULAGE_Node0 -- Yes --> N_SetTrafficTypetoHAULAGE_Node0_action N_SetTrafficTypetoHAULAGE_Node0_action --> E_SetTrafficTypetoHAULAGE S_SetTrafficTypetoHAULAGE --> N_SetTrafficTypetoHAULAGE_Node0 N_SetTrafficTypetoHAULAGE_Node0 -- No --> E_SetTrafficTypetoHAULAGE
File: GCCDBL.cbl
GIVEN:
The container routing record indicates haulage traffic (GCUSRT-HAULAGE is true)
WHEN:
The system processes the traffic type classification
THEN:
Set the double-stack traffic type indicator to HAULAGE
β Consolidated Acceptance Criteria
- The system processes the traffic type classification → proceed to perform detailed routing segment analysis to determine the specific traffic type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProceedtoRouteAnalysis(["Start Step"])
E_ProceedtoRouteAnalysis(["End Step"])
N_ProceedtoRouteAnalysis_Node0{"The system processes the traffic
type classification"}:::decision N_ProceedtoRouteAnalysis_Node0_action["Proceed to perform detailed routing
segment analysis to determine the
specific traffic type"]:::main N_ProceedtoRouteAnalysis_Node0 -- Yes --> N_ProceedtoRouteAnalysis_Node0_action N_ProceedtoRouteAnalysis_Node0_action --> E_ProceedtoRouteAnalysis S_ProceedtoRouteAnalysis --> N_ProceedtoRouteAnalysis_Node0 N_ProceedtoRouteAnalysis_Node0 -- No --> E_ProceedtoRouteAnalysis
type classification"}:::decision N_ProceedtoRouteAnalysis_Node0_action["Proceed to perform detailed routing
segment analysis to determine the
specific traffic type"]:::main N_ProceedtoRouteAnalysis_Node0 -- Yes --> N_ProceedtoRouteAnalysis_Node0_action N_ProceedtoRouteAnalysis_Node0_action --> E_ProceedtoRouteAnalysis S_ProceedtoRouteAnalysis --> N_ProceedtoRouteAnalysis_Node0 N_ProceedtoRouteAnalysis_Node0 -- No --> E_ProceedtoRouteAnalysis
File: GCCDBL.cbl
Exclusion / Alternative Path
GIVEN:
The container routing record does not indicate haulage traffic (GCUSRT-HAULAGE is false)
WHEN:
The system processes the traffic type classification
THEN:
Proceed to perform detailed routing segment analysis to determine the specific traffic type
β Consolidated Acceptance Criteria
- The system needs to analyze routing segment information → the routing segment key is built using the US CCN key from the shipment routing record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildRoutingSegmentKey(["Start Step"])
E_BuildRoutingSegmentKey(["End Step"])
N_BuildRoutingSegmentKey_Node0{"The system needs to analyze routing
segment information"}:::decision N_BuildRoutingSegmentKey_Node0_action["The routing segment key is built
using the US CCN key from the
shipment routing record"]:::main N_BuildRoutingSegmentKey_Node0 -- Yes --> N_BuildRoutingSegmentKey_Node0_action N_BuildRoutingSegmentKey_Node0_action --> E_BuildRoutingSegmentKey S_BuildRoutingSegmentKey --> N_BuildRoutingSegmentKey_Node0 N_BuildRoutingSegmentKey_Node0 -- No --> E_BuildRoutingSegmentKey
segment information"}:::decision N_BuildRoutingSegmentKey_Node0_action["The routing segment key is built
using the US CCN key from the
shipment routing record"]:::main N_BuildRoutingSegmentKey_Node0 -- Yes --> N_BuildRoutingSegmentKey_Node0_action N_BuildRoutingSegmentKey_Node0_action --> E_BuildRoutingSegmentKey S_BuildRoutingSegmentKey --> N_BuildRoutingSegmentKey_Node0 N_BuildRoutingSegmentKey_Node0 -- No --> E_BuildRoutingSegmentKey
File: GCCDBL.cbl
GIVEN:
A shipment routing record exists with a US CCN key
WHEN:
The system needs to analyze routing segment information
THEN:
The routing segment key is built using the US CCN key from the shipment routing record
β Consolidated Acceptance Criteria
- Building the routing segment key → the record type is set to '13' to identify routing segment records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRecordTypeto13(["Start Step"])
E_SetRecordTypeto13(["End Step"])
N_SetRecordTypeto13_Node0{"Building the routing segment key"}:::decision
N_SetRecordTypeto13_Node0_action["The record type is set to 13 to
identify routing segment records"]:::main N_SetRecordTypeto13_Node0 -- Yes --> N_SetRecordTypeto13_Node0_action N_SetRecordTypeto13_Node0_action --> E_SetRecordTypeto13 S_SetRecordTypeto13 --> N_SetRecordTypeto13_Node0 N_SetRecordTypeto13_Node0 -- No --> E_SetRecordTypeto13
identify routing segment records"]:::main N_SetRecordTypeto13_Node0 -- Yes --> N_SetRecordTypeto13_Node0_action N_SetRecordTypeto13_Node0_action --> E_SetRecordTypeto13 S_SetRecordTypeto13 --> N_SetRecordTypeto13_Node0 N_SetRecordTypeto13_Node0 -- No --> E_SetRecordTypeto13
File: GCCDBL.cbl
GIVEN:
The system is preparing to read routing segment information
WHEN:
Building the routing segment key
THEN:
The record type is set to '13' to identify routing segment records
β Consolidated Acceptance Criteria
- Setting up the complete key structure → the sequence number is set to '0001' to identify the first routing segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSequenceto0001(["Start Step"])
E_SetSequenceto0001(["End Step"])
N_SetSequenceto0001_Node0{"Setting up the complete key
structure"}:::decision N_SetSequenceto0001_Node0_action["The sequence number is set to 0001
to identify the first routing
segment"]:::main N_SetSequenceto0001_Node0 -- Yes --> N_SetSequenceto0001_Node0_action N_SetSequenceto0001_Node0_action --> E_SetSequenceto0001 S_SetSequenceto0001 --> N_SetSequenceto0001_Node0 N_SetSequenceto0001_Node0 -- No --> E_SetSequenceto0001
structure"}:::decision N_SetSequenceto0001_Node0_action["The sequence number is set to 0001
to identify the first routing
segment"]:::main N_SetSequenceto0001_Node0 -- Yes --> N_SetSequenceto0001_Node0_action N_SetSequenceto0001_Node0_action --> E_SetSequenceto0001 S_SetSequenceto0001 --> N_SetSequenceto0001_Node0 N_SetSequenceto0001_Node0 -- No --> E_SetSequenceto0001
File: GCCDBL.cbl
GIVEN:
The system is building a routing segment key
WHEN:
Setting up the complete key structure
THEN:
The sequence number is set to '0001' to identify the first routing segment
β Consolidated Acceptance Criteria
- The system attempts to read routing segment SEG13 data → the routing segment record is retrieved from the database using the constructed key
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReadRoutingSegmentSEG13(["Start Step"])
E_ReadRoutingSegmentSEG13(["End Step"])
N_ReadRoutingSegmentSEG13_Node0{"The system attempts to read routing
segment SEG13 data"}:::decision N_ReadRoutingSegmentSEG13_Node0_action["The routing segment record is
retrieved from the database using
the constructed key"]:::main N_ReadRoutingSegmentSEG13_Node0 -- Yes --> N_ReadRoutingSegmentSEG13_Node0_action N_ReadRoutingSegmentSEG13_Node0_action --> E_ReadRoutingSegmentSEG13 S_ReadRoutingSegmentSEG13 --> N_ReadRoutingSegmentSEG13_Node0 N_ReadRoutingSegmentSEG13_Node0 -- No --> E_ReadRoutingSegmentSEG13
segment SEG13 data"}:::decision N_ReadRoutingSegmentSEG13_Node0_action["The routing segment record is
retrieved from the database using
the constructed key"]:::main N_ReadRoutingSegmentSEG13_Node0 -- Yes --> N_ReadRoutingSegmentSEG13_Node0_action N_ReadRoutingSegmentSEG13_Node0_action --> E_ReadRoutingSegmentSEG13 S_ReadRoutingSegmentSEG13 --> N_ReadRoutingSegmentSEG13_Node0 N_ReadRoutingSegmentSEG13_Node0 -- No --> E_ReadRoutingSegmentSEG13
File: GCCDBL.cbl
GIVEN:
A complete routing segment key has been constructed
WHEN:
The system attempts to read routing segment SEG13 data
THEN:
The routing segment record is retrieved from the database using the constructed key
β Consolidated Acceptance Criteria
- The database read operation completes → the system determines whether the routing segment record was successfully found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutingSegmentFound(["Start Step"])
E_RoutingSegmentFound(["End Step"])
N_RoutingSegmentFound_Node0{"The database read operation
completes"}:::decision N_RoutingSegmentFound_Node0_action["The system determines whether the
routing segment record was
successfully found"]:::main N_RoutingSegmentFound_Node0 -- Yes --> N_RoutingSegmentFound_Node0_action N_RoutingSegmentFound_Node0_action --> E_RoutingSegmentFound S_RoutingSegmentFound --> N_RoutingSegmentFound_Node0 N_RoutingSegmentFound_Node0 -- No --> E_RoutingSegmentFound
completes"}:::decision N_RoutingSegmentFound_Node0_action["The system determines whether the
routing segment record was
successfully found"]:::main N_RoutingSegmentFound_Node0 -- Yes --> N_RoutingSegmentFound_Node0_action N_RoutingSegmentFound_Node0_action --> E_RoutingSegmentFound S_RoutingSegmentFound --> N_RoutingSegmentFound_Node0 N_RoutingSegmentFound_Node0 -- No --> E_RoutingSegmentFound
File: GCCDBL.cbl
GIVEN:
An attempt has been made to read routing segment SEG13 data
WHEN:
The database read operation completes
THEN:
The system determines whether the routing segment record was successfully found
β Consolidated Acceptance Criteria
- The system confirms routing segment availability → the system prepares to analyze individual route segments within the routing data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareforRouteSegmentAnalysis(["Start Step"])
E_PrepareforRouteSegmentAnalysis(["End Step"])
N_PrepareforRouteSegmentAnalysis_Node0{"The system confirms routing segment
availability"}:::decision N_PrepareforRouteSegmentAnalysis_Node0_action["The system prepares to analyze
individual route segments within the
routing data"]:::main N_PrepareforRouteSegmentAnalysis_Node0 -- Yes --> N_PrepareforRouteSegmentAnalysis_Node0_action N_PrepareforRouteSegmentAnalysis_Node0_action --> E_PrepareforRouteSegmentAnalysis S_PrepareforRouteSegmentAnalysis --> N_PrepareforRouteSegmentAnalysis_Node0 N_PrepareforRouteSegmentAnalysis_Node0 -- No --> E_PrepareforRouteSegmentAnalysis
availability"}:::decision N_PrepareforRouteSegmentAnalysis_Node0_action["The system prepares to analyze
individual route segments within the
routing data"]:::main N_PrepareforRouteSegmentAnalysis_Node0 -- Yes --> N_PrepareforRouteSegmentAnalysis_Node0_action N_PrepareforRouteSegmentAnalysis_Node0_action --> E_PrepareforRouteSegmentAnalysis S_PrepareforRouteSegmentAnalysis --> N_PrepareforRouteSegmentAnalysis_Node0 N_PrepareforRouteSegmentAnalysis_Node0 -- No --> E_PrepareforRouteSegmentAnalysis
File: GCCDBL.cbl
GIVEN:
Routing segment SEG13 data has been successfully retrieved
WHEN:
The system confirms routing segment availability
THEN:
The system prepares to analyze individual route segments within the routing data
β Consolidated Acceptance Criteria
- The routing segment record is not found → the double-stack platform count is reset to zero
- The route found flag is set → reset the double-stack count to zero as north-bound traffic does not qualify for double-stack counting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ResetDoubleStackCounttoZero(["Start Step"])
E_ResetDoubleStackCounttoZero(["End Step"])
N_ResetDoubleStackCounttoZero_Node0{"The routing segment record is not
found"}:::decision N_ResetDoubleStackCounttoZero_Node0_action["The double-stack platform count is
reset to zero"]:::main N_ResetDoubleStackCounttoZero_Node0 -- Yes --> N_ResetDoubleStackCounttoZero_Node0_action N_ResetDoubleStackCounttoZero_Node0_action --> E_ResetDoubleStackCounttoZero S_ResetDoubleStackCounttoZero --> N_ResetDoubleStackCounttoZero_Node0 N_ResetDoubleStackCounttoZero_Node1{"The route found flag is set"}:::decision N_ResetDoubleStackCounttoZero_Node1_action["Reset the double-stack count to
zero as north-bound traffic does not
qualify for double-stack counting"]:::main N_ResetDoubleStackCounttoZero_Node1 -- Yes --> N_ResetDoubleStackCounttoZero_Node1_action N_ResetDoubleStackCounttoZero_Node1_action --> E_ResetDoubleStackCounttoZero N_ResetDoubleStackCounttoZero_Node0 -- No --> N_ResetDoubleStackCounttoZero_Node1 N_ResetDoubleStackCounttoZero_Node1 -- No --> E_ResetDoubleStackCounttoZero
found"}:::decision N_ResetDoubleStackCounttoZero_Node0_action["The double-stack platform count is
reset to zero"]:::main N_ResetDoubleStackCounttoZero_Node0 -- Yes --> N_ResetDoubleStackCounttoZero_Node0_action N_ResetDoubleStackCounttoZero_Node0_action --> E_ResetDoubleStackCounttoZero S_ResetDoubleStackCounttoZero --> N_ResetDoubleStackCounttoZero_Node0 N_ResetDoubleStackCounttoZero_Node1{"The route found flag is set"}:::decision N_ResetDoubleStackCounttoZero_Node1_action["Reset the double-stack count to
zero as north-bound traffic does not
qualify for double-stack counting"]:::main N_ResetDoubleStackCounttoZero_Node1 -- Yes --> N_ResetDoubleStackCounttoZero_Node1_action N_ResetDoubleStackCounttoZero_Node1_action --> E_ResetDoubleStackCounttoZero N_ResetDoubleStackCounttoZero_Node0 -- No --> N_ResetDoubleStackCounttoZero_Node1 N_ResetDoubleStackCounttoZero_Node1 -- No --> E_ResetDoubleStackCounttoZero
File: GCCDBL.cbl
Exclusion / Alternative Path
GIVEN:
The system attempted to read routing segment SEG13 data
WHEN:
The routing segment record is not found
THEN:
The double-stack platform count is reset to zero
File: GCCDBL.cbl
GIVEN:
North-bound traffic pattern is confirmed (CSXT or NS to CPRS via Detroit)
WHEN:
The route found flag is set
THEN:
Reset the double-stack count to zero as north-bound traffic does not qualify for double-stack counting
β Consolidated Acceptance Criteria
- The system begins checking route segments → loop counter is set to 1 and route found status is set to false
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeLoopCounterto1(["Start Step"])
E_InitializeLoopCounterto1(["End Step"])
N_InitializeLoopCounterto1_Node0{"The system begins checking route
segments"}:::decision N_InitializeLoopCounterto1_Node0_action["Loop counter is set to 1 and route
found status is set to false"]:::main N_InitializeLoopCounterto1_Node0 -- Yes --> N_InitializeLoopCounterto1_Node0_action N_InitializeLoopCounterto1_Node0_action --> E_InitializeLoopCounterto1 S_InitializeLoopCounterto1 --> N_InitializeLoopCounterto1_Node0 N_InitializeLoopCounterto1_Node0 -- No --> E_InitializeLoopCounterto1
segments"}:::decision N_InitializeLoopCounterto1_Node0_action["Loop counter is set to 1 and route
found status is set to false"]:::main N_InitializeLoopCounterto1_Node0 -- Yes --> N_InitializeLoopCounterto1_Node0_action N_InitializeLoopCounterto1_Node0_action --> E_InitializeLoopCounterto1 S_InitializeLoopCounterto1 --> N_InitializeLoopCounterto1_Node0 N_InitializeLoopCounterto1_Node0 -- No --> E_InitializeLoopCounterto1
File: GCCDBL.cbl
GIVEN:
Route segment evaluation is starting
WHEN:
The system begins checking route segments
THEN:
- Loop counter is set to 1
- Route found status is set to false
β Consolidated Acceptance Criteria
- The system needs to evaluate route segments → current route segment and next route segment (counter + 1) are retrieved from routing information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetCurrentandNextRouteSegment(["Start Step"])
E_GetCurrentandNextRouteSegment(["End Step"])
N_GetCurrentandNextRouteSegment_Node0{"The system needs to evaluate route
segments"}:::decision N_GetCurrentandNextRouteSegment_Node0_action["Current route segment and next
route segment counter 1 are
retrieved from routing information"]:::main N_GetCurrentandNextRouteSegment_Node0 -- Yes --> N_GetCurrentandNextRouteSegment_Node0_action N_GetCurrentandNextRouteSegment_Node0_action --> E_GetCurrentandNextRouteSegment S_GetCurrentandNextRouteSegment --> N_GetCurrentandNextRouteSegment_Node0 N_GetCurrentandNextRouteSegment_Node0 -- No --> E_GetCurrentandNextRouteSegment
segments"}:::decision N_GetCurrentandNextRouteSegment_Node0_action["Current route segment and next
route segment counter 1 are
retrieved from routing information"]:::main N_GetCurrentandNextRouteSegment_Node0 -- Yes --> N_GetCurrentandNextRouteSegment_Node0_action N_GetCurrentandNextRouteSegment_Node0_action --> E_GetCurrentandNextRouteSegment S_GetCurrentandNextRouteSegment --> N_GetCurrentandNextRouteSegment_Node0 N_GetCurrentandNextRouteSegment_Node0 -- No --> E_GetCurrentandNextRouteSegment
File: GCCDBL.cbl
GIVEN:
Loop counter is at a specific position
WHEN:
The system needs to evaluate route segments
THEN:
- Current route segment
- Next route segment (counter + 1) are retrieved from routing information
β Consolidated Acceptance Criteria
- Either current segment or next segment is empty or contains low-values → set loop counter to 10 to exit the loop and stop processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BothSegmentsValid(["Start Step"])
E_BothSegmentsValid(["End Step"])
N_BothSegmentsValid_Node0{"Either current segment or next
segment is empty or contains
low-values"}:::decision N_BothSegmentsValid_Node0_action["Set loop counter to 10 to exit the
loop and stop processing"]:::main N_BothSegmentsValid_Node0 -- Yes --> N_BothSegmentsValid_Node0_action N_BothSegmentsValid_Node0_action --> E_BothSegmentsValid S_BothSegmentsValid --> N_BothSegmentsValid_Node0 N_BothSegmentsValid_Node0 -- No --> E_BothSegmentsValid
segment is empty or contains
low-values"}:::decision N_BothSegmentsValid_Node0_action["Set loop counter to 10 to exit the
loop and stop processing"]:::main N_BothSegmentsValid_Node0 -- Yes --> N_BothSegmentsValid_Node0_action N_BothSegmentsValid_Node0_action --> E_BothSegmentsValid S_BothSegmentsValid --> N_BothSegmentsValid_Node0 N_BothSegmentsValid_Node0 -- No --> E_BothSegmentsValid
File: GCCDBL.cbl
GIVEN:
Current and next route segments have been retrieved
WHEN:
Either current segment or next segment is empty or contains low-values
THEN:
- Set loop counter to 10 to exit the loop
- Stop processing
β Consolidated Acceptance Criteria
- The system needs to analyze carrier routing → move current segment to route-info-one and next segment to route-info-two for carrier code analysis
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractCarrierCodesfromBothSegments(["Start Step"])
E_ExtractCarrierCodesfromBothSegments(["End Step"])
N_ExtractCarrierCodesfromBothSegments_Node0{"The system needs to analyze carrier
routing"}:::decision N_ExtractCarrierCodesfromBothSegments_Node0_action["Move current segment to
route-info-one and next segment to
route-info-two for carrier code
analysis"]:::main N_ExtractCarrierCodesfromBothSegments_Node0 -- Yes --> N_ExtractCarrierCodesfromBothSegments_Node0_action N_ExtractCarrierCodesfromBothSegments_Node0_action --> E_ExtractCarrierCodesfromBothSegments S_ExtractCarrierCodesfromBothSegments --> N_ExtractCarrierCodesfromBothSegments_Node0 N_ExtractCarrierCodesfromBothSegments_Node0 -- No --> E_ExtractCarrierCodesfromBothSegments
routing"}:::decision N_ExtractCarrierCodesfromBothSegments_Node0_action["Move current segment to
route-info-one and next segment to
route-info-two for carrier code
analysis"]:::main N_ExtractCarrierCodesfromBothSegments_Node0 -- Yes --> N_ExtractCarrierCodesfromBothSegments_Node0_action N_ExtractCarrierCodesfromBothSegments_Node0_action --> E_ExtractCarrierCodesfromBothSegments S_ExtractCarrierCodesfromBothSegments --> N_ExtractCarrierCodesfromBothSegments_Node0 N_ExtractCarrierCodesfromBothSegments_Node0 -- No --> E_ExtractCarrierCodesfromBothSegments
File: GCCDBL.cbl
GIVEN:
Both route segments are valid
WHEN:
The system needs to analyze carrier routing
THEN:
- Move current segment to route-info-one
- Next segment to route-info-two for carrier code analysis
β Consolidated Acceptance Criteria
- First carrier is CPRS and second carrier is CSXT and route includes DET → set traffic type to CSXT and mark route as found
- The first carrier is CPRS and the second carrier is CSXT and the route includes DET → set the traffic type to CSXT and mark the route as found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CPRStoCSXTwithDETRoute(["Start Step"])
E_CPRStoCSXTwithDETRoute(["End Step"])
N_CPRStoCSXTwithDETRoute_Node0{"First carrier is CPRS and second
carrier is CSXT and route includes
DET"}:::decision N_CPRStoCSXTwithDETRoute_Node0_action["Set traffic type to CSXT and mark
route as found"]:::main N_CPRStoCSXTwithDETRoute_Node0 -- Yes --> N_CPRStoCSXTwithDETRoute_Node0_action N_CPRStoCSXTwithDETRoute_Node0_action --> E_CPRStoCSXTwithDETRoute S_CPRStoCSXTwithDETRoute --> N_CPRStoCSXTwithDETRoute_Node0 N_CPRStoCSXTwithDETRoute_Node1{"The first carrier is CPRS and the
second carrier is CSXT and the route
includes DET"}:::decision N_CPRStoCSXTwithDETRoute_Node1_action["Set the traffic type to CSXT and
mark the route as found"]:::main N_CPRStoCSXTwithDETRoute_Node1 -- Yes --> N_CPRStoCSXTwithDETRoute_Node1_action N_CPRStoCSXTwithDETRoute_Node1_action --> E_CPRStoCSXTwithDETRoute N_CPRStoCSXTwithDETRoute_Node0 -- No --> N_CPRStoCSXTwithDETRoute_Node1 N_CPRStoCSXTwithDETRoute_Node1 -- No --> E_CPRStoCSXTwithDETRoute
carrier is CSXT and route includes
DET"}:::decision N_CPRStoCSXTwithDETRoute_Node0_action["Set traffic type to CSXT and mark
route as found"]:::main N_CPRStoCSXTwithDETRoute_Node0 -- Yes --> N_CPRStoCSXTwithDETRoute_Node0_action N_CPRStoCSXTwithDETRoute_Node0_action --> E_CPRStoCSXTwithDETRoute S_CPRStoCSXTwithDETRoute --> N_CPRStoCSXTwithDETRoute_Node0 N_CPRStoCSXTwithDETRoute_Node1{"The first carrier is CPRS and the
second carrier is CSXT and the route
includes DET"}:::decision N_CPRStoCSXTwithDETRoute_Node1_action["Set the traffic type to CSXT and
mark the route as found"]:::main N_CPRStoCSXTwithDETRoute_Node1 -- Yes --> N_CPRStoCSXTwithDETRoute_Node1_action N_CPRStoCSXTwithDETRoute_Node1_action --> E_CPRStoCSXTwithDETRoute N_CPRStoCSXTwithDETRoute_Node0 -- No --> N_CPRStoCSXTwithDETRoute_Node1 N_CPRStoCSXTwithDETRoute_Node1 -- No --> E_CPRStoCSXTwithDETRoute
File: GCCDBL.cbl
GIVEN:
Route segments contain carrier information
WHEN:
- First carrier is cprs
- Second carrier is csxt
- Route includes det
THEN:
- Set traffic type to csxt
- Mark route as found
File: GCCDBL.cbl
GIVEN:
Valid route segment pairs are being analyzed for traffic classification
WHEN:
- The first carrier is cprs
- The second carrier is csxt
- The route includes det
THEN:
- Set the traffic type to csxt
- Mark the route as found
β Consolidated Acceptance Criteria
- First carrier is CPRS and second carrier is NS and route includes DET → set traffic type to NS and mark route as found
- The first carrier is CPRS and the second carrier is NS and the route includes DET → set the traffic type to NS and mark the route as found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CPRStoNSwithDETRoute(["Start Step"])
E_CPRStoNSwithDETRoute(["End Step"])
N_CPRStoNSwithDETRoute_Node0{"First carrier is CPRS and second
carrier is NS and route includes DET"}:::decision N_CPRStoNSwithDETRoute_Node0_action["Set traffic type to NS and mark
route as found"]:::main N_CPRStoNSwithDETRoute_Node0 -- Yes --> N_CPRStoNSwithDETRoute_Node0_action N_CPRStoNSwithDETRoute_Node0_action --> E_CPRStoNSwithDETRoute S_CPRStoNSwithDETRoute --> N_CPRStoNSwithDETRoute_Node0 N_CPRStoNSwithDETRoute_Node1{"The first carrier is CPRS and the
second carrier is NS and the route
includes DET"}:::decision N_CPRStoNSwithDETRoute_Node1_action["Set the traffic type to NS and mark
the route as found"]:::main N_CPRStoNSwithDETRoute_Node1 -- Yes --> N_CPRStoNSwithDETRoute_Node1_action N_CPRStoNSwithDETRoute_Node1_action --> E_CPRStoNSwithDETRoute N_CPRStoNSwithDETRoute_Node0 -- No --> N_CPRStoNSwithDETRoute_Node1 N_CPRStoNSwithDETRoute_Node1 -- No --> E_CPRStoNSwithDETRoute
carrier is NS and route includes DET"}:::decision N_CPRStoNSwithDETRoute_Node0_action["Set traffic type to NS and mark
route as found"]:::main N_CPRStoNSwithDETRoute_Node0 -- Yes --> N_CPRStoNSwithDETRoute_Node0_action N_CPRStoNSwithDETRoute_Node0_action --> E_CPRStoNSwithDETRoute S_CPRStoNSwithDETRoute --> N_CPRStoNSwithDETRoute_Node0 N_CPRStoNSwithDETRoute_Node1{"The first carrier is CPRS and the
second carrier is NS and the route
includes DET"}:::decision N_CPRStoNSwithDETRoute_Node1_action["Set the traffic type to NS and mark
the route as found"]:::main N_CPRStoNSwithDETRoute_Node1 -- Yes --> N_CPRStoNSwithDETRoute_Node1_action N_CPRStoNSwithDETRoute_Node1_action --> E_CPRStoNSwithDETRoute N_CPRStoNSwithDETRoute_Node0 -- No --> N_CPRStoNSwithDETRoute_Node1 N_CPRStoNSwithDETRoute_Node1 -- No --> E_CPRStoNSwithDETRoute
File: GCCDBL.cbl
Exclusion / Alternative Path
GIVEN:
Route segments contain carrier information and CPRS to CSXT condition was not met
WHEN:
- First carrier is cprs
- Second carrier is ns
- Route includes det
THEN:
- Set traffic type to ns
- Mark route as found
File: GCCDBL.cbl
Exclusion / Alternative Path
GIVEN:
Valid route segment pairs are being analyzed and CPRS to CSXT pattern was not found
WHEN:
- The first carrier is cprs
- The second carrier is ns
- The route includes det
THEN:
- Set the traffic type to ns
- Mark the route as found
β Consolidated Acceptance Criteria
- First carrier is either CSXT or NS and second carrier is CPRS and route includes DET → reset double-stack count to zero and mark route as found
- The first carrier is either CSXT or NS and the second carrier is CPRS and the route includes DET → reset the double-stack count to zero and mark the route as found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CSXTNStoCPRSwithDETRoute(["Start Step"])
E_CSXTNStoCPRSwithDETRoute(["End Step"])
N_CSXTNStoCPRSwithDETRoute_Node0{"First carrier is either CSXT or NS
and second carrier is CPRS and route
includes DET"}:::decision N_CSXTNStoCPRSwithDETRoute_Node0_action["Reset double-stack count to zero
and mark route as found"]:::main N_CSXTNStoCPRSwithDETRoute_Node0 -- Yes --> N_CSXTNStoCPRSwithDETRoute_Node0_action N_CSXTNStoCPRSwithDETRoute_Node0_action --> E_CSXTNStoCPRSwithDETRoute S_CSXTNStoCPRSwithDETRoute --> N_CSXTNStoCPRSwithDETRoute_Node0 N_CSXTNStoCPRSwithDETRoute_Node1{"The first carrier is either CSXT or
NS and the second carrier is CPRS
and the route includes DET"}:::decision N_CSXTNStoCPRSwithDETRoute_Node1_action["Reset the double-stack count to
zero and mark the route as found"]:::main N_CSXTNStoCPRSwithDETRoute_Node1 -- Yes --> N_CSXTNStoCPRSwithDETRoute_Node1_action N_CSXTNStoCPRSwithDETRoute_Node1_action --> E_CSXTNStoCPRSwithDETRoute N_CSXTNStoCPRSwithDETRoute_Node0 -- No --> N_CSXTNStoCPRSwithDETRoute_Node1 N_CSXTNStoCPRSwithDETRoute_Node1 -- No --> E_CSXTNStoCPRSwithDETRoute
and second carrier is CPRS and route
includes DET"}:::decision N_CSXTNStoCPRSwithDETRoute_Node0_action["Reset double-stack count to zero
and mark route as found"]:::main N_CSXTNStoCPRSwithDETRoute_Node0 -- Yes --> N_CSXTNStoCPRSwithDETRoute_Node0_action N_CSXTNStoCPRSwithDETRoute_Node0_action --> E_CSXTNStoCPRSwithDETRoute S_CSXTNStoCPRSwithDETRoute --> N_CSXTNStoCPRSwithDETRoute_Node0 N_CSXTNStoCPRSwithDETRoute_Node1{"The first carrier is either CSXT or
NS and the second carrier is CPRS
and the route includes DET"}:::decision N_CSXTNStoCPRSwithDETRoute_Node1_action["Reset the double-stack count to
zero and mark the route as found"]:::main N_CSXTNStoCPRSwithDETRoute_Node1 -- Yes --> N_CSXTNStoCPRSwithDETRoute_Node1_action N_CSXTNStoCPRSwithDETRoute_Node1_action --> E_CSXTNStoCPRSwithDETRoute N_CSXTNStoCPRSwithDETRoute_Node0 -- No --> N_CSXTNStoCPRSwithDETRoute_Node1 N_CSXTNStoCPRSwithDETRoute_Node1 -- No --> E_CSXTNStoCPRSwithDETRoute
File: GCCDBL.cbl
GIVEN:
Route segments contain carrier information and neither CPRS to CSXT nor CPRS to NS conditions were met
WHEN:
- First carrier is either csxt or ns
- Second carrier is cprs
- Route includes det
THEN:
- Reset double-stack count to zero
- Mark route as found
File: GCCDBL.cbl
GIVEN:
Valid route segment pairs are being analyzed and no CPRS outbound pattern was found
WHEN:
- The first carrier is either csxt or ns
- The second carrier is cprs
- The route includes det
THEN:
- Reset the double-stack count to zero
- Mark the route as found
β Consolidated Acceptance Criteria
- Any of the carrier routing conditions are met → set route found status to true to stop further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkRouteFound(["Start Step"])
E_MarkRouteFound(["End Step"])
N_MarkRouteFound_Node0{"Any of the carrier routing
conditions are met"}:::decision N_MarkRouteFound_Node0_action["Set route found status to true to
stop further processing"]:::main N_MarkRouteFound_Node0 -- Yes --> N_MarkRouteFound_Node0_action N_MarkRouteFound_Node0_action --> E_MarkRouteFound S_MarkRouteFound --> N_MarkRouteFound_Node0 N_MarkRouteFound_Node0 -- No --> E_MarkRouteFound
conditions are met"}:::decision N_MarkRouteFound_Node0_action["Set route found status to true to
stop further processing"]:::main N_MarkRouteFound_Node0 -- Yes --> N_MarkRouteFound_Node0_action N_MarkRouteFound_Node0_action --> E_MarkRouteFound S_MarkRouteFound --> N_MarkRouteFound_Node0 N_MarkRouteFound_Node0 -- No --> E_MarkRouteFound
File: GCCDBL.cbl
GIVEN:
A valid route pattern has been identified
WHEN:
Any of the carrier routing conditions are met
THEN:
Set route found status to true to stop further processing
β Consolidated Acceptance Criteria
- No carrier routing conditions are met → increment loop counter by 1 to check the next segment pair
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementLoopCounter(["Start Step"])
E_IncrementLoopCounter(["End Step"])
N_IncrementLoopCounter_Node0{"No carrier routing conditions are
met"}:::decision N_IncrementLoopCounter_Node0_action["Increment loop counter by 1 to
check the next segment pair"]:::main N_IncrementLoopCounter_Node0 -- Yes --> N_IncrementLoopCounter_Node0_action N_IncrementLoopCounter_Node0_action --> E_IncrementLoopCounter S_IncrementLoopCounter --> N_IncrementLoopCounter_Node0 N_IncrementLoopCounter_Node0 -- No --> E_IncrementLoopCounter
met"}:::decision N_IncrementLoopCounter_Node0_action["Increment loop counter by 1 to
check the next segment pair"]:::main N_IncrementLoopCounter_Node0 -- Yes --> N_IncrementLoopCounter_Node0_action N_IncrementLoopCounter_Node0_action --> E_IncrementLoopCounter S_IncrementLoopCounter --> N_IncrementLoopCounter_Node0 N_IncrementLoopCounter_Node0 -- No --> E_IncrementLoopCounter
File: GCCDBL.cbl
Exclusion / Alternative Path
GIVEN:
Current route segment pair does not match any routing patterns
WHEN:
No carrier routing conditions are met
THEN:
Increment loop counter by 1 to check the next segment pair
β Consolidated Acceptance Criteria
- Loop counter exceeds 9 or route found status is true → exit the loop and end route evaluation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Counter9orRouteFound(["Start Step"])
E_Counter9orRouteFound(["End Step"])
N_Counter9orRouteFound_Node0{"Loop counter exceeds 9 or route
found status is true"}:::decision N_Counter9orRouteFound_Node0_action["Exit the loop and end route
evaluation"]:::main N_Counter9orRouteFound_Node0 -- Yes --> N_Counter9orRouteFound_Node0_action N_Counter9orRouteFound_Node0_action --> E_Counter9orRouteFound S_Counter9orRouteFound --> N_Counter9orRouteFound_Node0 N_Counter9orRouteFound_Node0 -- No --> E_Counter9orRouteFound
found status is true"}:::decision N_Counter9orRouteFound_Node0_action["Exit the loop and end route
evaluation"]:::main N_Counter9orRouteFound_Node0 -- Yes --> N_Counter9orRouteFound_Node0_action N_Counter9orRouteFound_Node0_action --> E_Counter9orRouteFound S_Counter9orRouteFound --> N_Counter9orRouteFound_Node0 N_Counter9orRouteFound_Node0 -- No --> E_Counter9orRouteFound
File: GCCDBL.cbl
GIVEN:
Loop counter has been updated or route found status has been set
WHEN:
Loop counter exceeds 9 or route found status is true
THEN:
- Exit the loop
- End route evaluation
β Consolidated Acceptance Criteria
- The system needs to identify the next segment for paired analysis → the system increments the current position by 1 to get the next segment position
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateNextSegmentPosition(["Start Step"])
E_CalculateNextSegmentPosition(["End Step"])
N_CalculateNextSegmentPosition_Node0{"The system needs to identify the
next segment for paired analysis"}:::decision N_CalculateNextSegmentPosition_Node0_action["The system increments the current
position by 1 to get the next
segment position"]:::main N_CalculateNextSegmentPosition_Node0 -- Yes --> N_CalculateNextSegmentPosition_Node0_action N_CalculateNextSegmentPosition_Node0_action --> E_CalculateNextSegmentPosition S_CalculateNextSegmentPosition --> N_CalculateNextSegmentPosition_Node0 N_CalculateNextSegmentPosition_Node0 -- No --> E_CalculateNextSegmentPosition
next segment for paired analysis"}:::decision N_CalculateNextSegmentPosition_Node0_action["The system increments the current
position by 1 to get the next
segment position"]:::main N_CalculateNextSegmentPosition_Node0 -- Yes --> N_CalculateNextSegmentPosition_Node0_action N_CalculateNextSegmentPosition_Node0_action --> E_CalculateNextSegmentPosition S_CalculateNextSegmentPosition --> N_CalculateNextSegmentPosition_Node0 N_CalculateNextSegmentPosition_Node0 -- No --> E_CalculateNextSegmentPosition
File: GCCDBL.cbl
GIVEN:
A current route segment position counter exists
WHEN:
The system needs to identify the next segment for paired analysis
THEN:
The system increments the current position by 1 to get the next segment position
β Consolidated Acceptance Criteria
- Either the current segment or the next segment contains spaces or low-values → the system terminates the route analysis and exits the segment checking process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BothSegmentsHaveValidData(["Start Step"])
E_BothSegmentsHaveValidData(["End Step"])
N_BothSegmentsHaveValidData_Node0{"Either the current segment or the
next segment contains spaces or
low-values"}:::decision N_BothSegmentsHaveValidData_Node0_action["The system terminates the route
analysis and exits the segment
checking process"]:::main N_BothSegmentsHaveValidData_Node0 -- Yes --> N_BothSegmentsHaveValidData_Node0_action N_BothSegmentsHaveValidData_Node0_action --> E_BothSegmentsHaveValidData S_BothSegmentsHaveValidData --> N_BothSegmentsHaveValidData_Node0 N_BothSegmentsHaveValidData_Node0 -- No --> E_BothSegmentsHaveValidData
next segment contains spaces or
low-values"}:::decision N_BothSegmentsHaveValidData_Node0_action["The system terminates the route
analysis and exits the segment
checking process"]:::main N_BothSegmentsHaveValidData_Node0 -- Yes --> N_BothSegmentsHaveValidData_Node0_action N_BothSegmentsHaveValidData_Node0_action --> E_BothSegmentsHaveValidData S_BothSegmentsHaveValidData --> N_BothSegmentsHaveValidData_Node0 N_BothSegmentsHaveValidData_Node0 -- No --> E_BothSegmentsHaveValidData
File: GCCDBL.cbl
GIVEN:
Two consecutive route segments need to be analyzed
WHEN:
Either the current segment or the next segment contains spaces or low-values
THEN:
- The system terminates the route analysis
- Exits the segment checking process
β Consolidated Acceptance Criteria
- The system processes the segment for carrier analysis → the system extracts the complete routing information from the first segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractCarrierCodefromFirstSegment(["Start Step"])
E_ExtractCarrierCodefromFirstSegment(["End Step"])
N_ExtractCarrierCodefromFirstSegment_Node0{"The system processes the segment
for carrier analysis"}:::decision N_ExtractCarrierCodefromFirstSegment_Node0_action["The system extracts the complete
routing information from the first
segment"]:::main N_ExtractCarrierCodefromFirstSegment_Node0 -- Yes --> N_ExtractCarrierCodefromFirstSegment_Node0_action N_ExtractCarrierCodefromFirstSegment_Node0_action --> E_ExtractCarrierCodefromFirstSegment S_ExtractCarrierCodefromFirstSegment --> N_ExtractCarrierCodefromFirstSegment_Node0 N_ExtractCarrierCodefromFirstSegment_Node0 -- No --> E_ExtractCarrierCodefromFirstSegment
for carrier analysis"}:::decision N_ExtractCarrierCodefromFirstSegment_Node0_action["The system extracts the complete
routing information from the first
segment"]:::main N_ExtractCarrierCodefromFirstSegment_Node0 -- Yes --> N_ExtractCarrierCodefromFirstSegment_Node0_action N_ExtractCarrierCodefromFirstSegment_Node0_action --> E_ExtractCarrierCodefromFirstSegment S_ExtractCarrierCodefromFirstSegment --> N_ExtractCarrierCodefromFirstSegment_Node0 N_ExtractCarrierCodefromFirstSegment_Node0 -- No --> E_ExtractCarrierCodefromFirstSegment
File: GCCDBL.cbl
GIVEN:
A valid first route segment exists with routing information
WHEN:
The system processes the segment for carrier analysis
THEN:
The system extracts the complete routing information from the first segment
β Consolidated Acceptance Criteria
- The system processes the segment for carrier analysis → the system extracts the complete routing information from the second segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractCarrierCodefromSecondSegment(["Start Step"])
E_ExtractCarrierCodefromSecondSegment(["End Step"])
N_ExtractCarrierCodefromSecondSegment_Node0{"The system processes the segment
for carrier analysis"}:::decision N_ExtractCarrierCodefromSecondSegment_Node0_action["The system extracts the complete
routing information from the second
segment"]:::main N_ExtractCarrierCodefromSecondSegment_Node0 -- Yes --> N_ExtractCarrierCodefromSecondSegment_Node0_action N_ExtractCarrierCodefromSecondSegment_Node0_action --> E_ExtractCarrierCodefromSecondSegment S_ExtractCarrierCodefromSecondSegment --> N_ExtractCarrierCodefromSecondSegment_Node0 N_ExtractCarrierCodefromSecondSegment_Node0 -- No --> E_ExtractCarrierCodefromSecondSegment
for carrier analysis"}:::decision N_ExtractCarrierCodefromSecondSegment_Node0_action["The system extracts the complete
routing information from the second
segment"]:::main N_ExtractCarrierCodefromSecondSegment_Node0 -- Yes --> N_ExtractCarrierCodefromSecondSegment_Node0_action N_ExtractCarrierCodefromSecondSegment_Node0_action --> E_ExtractCarrierCodefromSecondSegment S_ExtractCarrierCodefromSecondSegment --> N_ExtractCarrierCodefromSecondSegment_Node0 N_ExtractCarrierCodefromSecondSegment_Node0 -- No --> E_ExtractCarrierCodefromSecondSegment
File: GCCDBL.cbl
GIVEN:
A valid second route segment exists with routing information
WHEN:
The system processes the segment for carrier analysis
THEN:
The system extracts the complete routing information from the second segment
β Consolidated Acceptance Criteria
- The system needs to preserve the first carrier code for comparison → the system stores the first segment routing information in the first route info variable
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreFirstCarrierCode(["Start Step"])
E_StoreFirstCarrierCode(["End Step"])
N_StoreFirstCarrierCode_Node0{"The system needs to preserve the
first carrier code for comparison"}:::decision N_StoreFirstCarrierCode_Node0_action["The system stores the first segment
routing information in the first
route info variable"]:::main N_StoreFirstCarrierCode_Node0 -- Yes --> N_StoreFirstCarrierCode_Node0_action N_StoreFirstCarrierCode_Node0_action --> E_StoreFirstCarrierCode S_StoreFirstCarrierCode --> N_StoreFirstCarrierCode_Node0 N_StoreFirstCarrierCode_Node0 -- No --> E_StoreFirstCarrierCode
first carrier code for comparison"}:::decision N_StoreFirstCarrierCode_Node0_action["The system stores the first segment
routing information in the first
route info variable"]:::main N_StoreFirstCarrierCode_Node0 -- Yes --> N_StoreFirstCarrierCode_Node0_action N_StoreFirstCarrierCode_Node0_action --> E_StoreFirstCarrierCode S_StoreFirstCarrierCode --> N_StoreFirstCarrierCode_Node0 N_StoreFirstCarrierCode_Node0 -- No --> E_StoreFirstCarrierCode
File: GCCDBL.cbl
GIVEN:
Routing information has been extracted from the first segment
WHEN:
The system needs to preserve the first carrier code for comparison
THEN:
The system stores the first segment routing information in the first route info variable
β Consolidated Acceptance Criteria
- The system needs to preserve the second carrier code for comparison → the system stores the second segment routing information in the second route info variable
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreSecondCarrierCode(["Start Step"])
E_StoreSecondCarrierCode(["End Step"])
N_StoreSecondCarrierCode_Node0{"The system needs to preserve the
second carrier code for comparison"}:::decision N_StoreSecondCarrierCode_Node0_action["The system stores the second
segment routing information in the
second route info variable"]:::main N_StoreSecondCarrierCode_Node0 -- Yes --> N_StoreSecondCarrierCode_Node0_action N_StoreSecondCarrierCode_Node0_action --> E_StoreSecondCarrierCode S_StoreSecondCarrierCode --> N_StoreSecondCarrierCode_Node0 N_StoreSecondCarrierCode_Node0 -- No --> E_StoreSecondCarrierCode
second carrier code for comparison"}:::decision N_StoreSecondCarrierCode_Node0_action["The system stores the second
segment routing information in the
second route info variable"]:::main N_StoreSecondCarrierCode_Node0 -- Yes --> N_StoreSecondCarrierCode_Node0_action N_StoreSecondCarrierCode_Node0_action --> E_StoreSecondCarrierCode S_StoreSecondCarrierCode --> N_StoreSecondCarrierCode_Node0 N_StoreSecondCarrierCode_Node0 -- No --> E_StoreSecondCarrierCode
File: GCCDBL.cbl
GIVEN:
Routing information has been extracted from the second segment
WHEN:
The system needs to preserve the second carrier code for comparison
THEN:
The system stores the second segment routing information in the second route info variable
β Consolidated Acceptance Criteria
- Either the current route segment or the next route segment contains spaces or low-values → skip processing this segment pair and terminate the route checking loop
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AreBothSegmentsValid(["Start Step"])
E_AreBothSegmentsValid(["End Step"])
N_AreBothSegmentsValid_Node0{"Either the current route segment or
the next route segment contains
spaces or low-values"}:::decision N_AreBothSegmentsValid_Node0_action["Skip processing this segment pair
and terminate the route checking
loop"]:::exclusion N_AreBothSegmentsValid_Node0 -- Yes -->|Alternative| N_AreBothSegmentsValid_Node0_action N_AreBothSegmentsValid_Node0_action --> E_AreBothSegmentsValid S_AreBothSegmentsValid --> N_AreBothSegmentsValid_Node0 N_AreBothSegmentsValid_Node0 -- No --> E_AreBothSegmentsValid
the next route segment contains
spaces or low-values"}:::decision N_AreBothSegmentsValid_Node0_action["Skip processing this segment pair
and terminate the route checking
loop"]:::exclusion N_AreBothSegmentsValid_Node0 -- Yes -->|Alternative| N_AreBothSegmentsValid_Node0_action N_AreBothSegmentsValid_Node0_action --> E_AreBothSegmentsValid S_AreBothSegmentsValid --> N_AreBothSegmentsValid_Node0 N_AreBothSegmentsValid_Node0 -- No --> E_AreBothSegmentsValid
File: GCCDBL.cbl
GIVEN:
A route segment pair is being evaluated for carrier routing analysis
WHEN:
Either the current route segment or the next route segment contains spaces or low-values
THEN:
- Skip processing this segment pair
- Terminate the route checking loop
β Consolidated Acceptance Criteria
- The current segment pair has been processed and no route pattern has been found and there are more segments to evaluate → continue to the next route segment pair for analysis
- The current segment counter is less than or equal to 9 and no route has been found yet → continue processing the next route segment pair
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreSegmentstoCheck(["Start Step"])
E_MoreSegmentstoCheck(["End Step"])
N_MoreSegmentstoCheck_Node0{"The current segment pair has been
processed and no route pattern has
been found and there are more
segments to evaluate"}:::decision N_MoreSegmentstoCheck_Node0_action["Continue to the next route segment
pair for analysis"]:::main N_MoreSegmentstoCheck_Node0 -- Yes --> N_MoreSegmentstoCheck_Node0_action N_MoreSegmentstoCheck_Node0_action --> E_MoreSegmentstoCheck S_MoreSegmentstoCheck --> N_MoreSegmentstoCheck_Node0 N_MoreSegmentstoCheck_Node1{"The current segment counter is less
than or equal to 9 and no route has
been found yet"}:::decision N_MoreSegmentstoCheck_Node1_action["Continue processing the next route
segment pair"]:::main N_MoreSegmentstoCheck_Node1 -- Yes --> N_MoreSegmentstoCheck_Node1_action N_MoreSegmentstoCheck_Node1_action --> E_MoreSegmentstoCheck N_MoreSegmentstoCheck_Node0 -- No --> N_MoreSegmentstoCheck_Node1 N_MoreSegmentstoCheck_Node1 -- No --> E_MoreSegmentstoCheck
processed and no route pattern has
been found and there are more
segments to evaluate"}:::decision N_MoreSegmentstoCheck_Node0_action["Continue to the next route segment
pair for analysis"]:::main N_MoreSegmentstoCheck_Node0 -- Yes --> N_MoreSegmentstoCheck_Node0_action N_MoreSegmentstoCheck_Node0_action --> E_MoreSegmentstoCheck S_MoreSegmentstoCheck --> N_MoreSegmentstoCheck_Node0 N_MoreSegmentstoCheck_Node1{"The current segment counter is less
than or equal to 9 and no route has
been found yet"}:::decision N_MoreSegmentstoCheck_Node1_action["Continue processing the next route
segment pair"]:::main N_MoreSegmentstoCheck_Node1 -- Yes --> N_MoreSegmentstoCheck_Node1_action N_MoreSegmentstoCheck_Node1_action --> E_MoreSegmentstoCheck N_MoreSegmentstoCheck_Node0 -- No --> N_MoreSegmentstoCheck_Node1 N_MoreSegmentstoCheck_Node1 -- No --> E_MoreSegmentstoCheck
File: GCCDBL.cbl
GIVEN:
Route segment analysis is in progress
WHEN:
- The current segment pair has been processed
- No route pattern has been found
- There are more segments to evaluate
THEN:
Continue to the next route segment pair for analysis
File: GCCDBL.cbl
GIVEN:
Route segments are being processed for traffic classification
WHEN:
- The current segment counter is less than or equal to 9
- No route has been found yet
THEN:
Continue processing the next route segment pair
β Consolidated Acceptance Criteria
- Either the current route segment or the next route segment contains spaces or low-values → skip processing and move to end of route classification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidRouteSegments(["Start Step"])
E_ValidRouteSegments(["End Step"])
N_ValidRouteSegments_Node0{"Either the current route segment or
the next route segment contains
spaces or low-values"}:::decision N_ValidRouteSegments_Node0_action["Skip processing and move to end of
route classification"]:::main N_ValidRouteSegments_Node0 -- Yes --> N_ValidRouteSegments_Node0_action N_ValidRouteSegments_Node0_action --> E_ValidRouteSegments S_ValidRouteSegments --> N_ValidRouteSegments_Node0 N_ValidRouteSegments_Node0 -- No --> E_ValidRouteSegments
the next route segment contains
spaces or low-values"}:::decision N_ValidRouteSegments_Node0_action["Skip processing and move to end of
route classification"]:::main N_ValidRouteSegments_Node0 -- Yes --> N_ValidRouteSegments_Node0_action N_ValidRouteSegments_Node0_action --> E_ValidRouteSegments S_ValidRouteSegments --> N_ValidRouteSegments_Node0 N_ValidRouteSegments_Node0 -- No --> E_ValidRouteSegments
File: GCCDBL.cbl
GIVEN:
A route segment pair is being evaluated for traffic classification
WHEN:
Either the current route segment or the next route segment contains spaces or low-values
THEN:
- Skip processing
- Move to end of route classification
β Consolidated Acceptance Criteria
- The first carrier is CPRS and the second carrier is CSXT and the route includes DET → set the traffic type to CSXT and mark route as found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CPRStoCSXTRoutewithDET(["Start Step"])
E_CPRStoCSXTRoutewithDET(["End Step"])
N_CPRStoCSXTRoutewithDET_Node0{"The first carrier is CPRS and the
second carrier is CSXT and the route
includes DET"}:::decision N_CPRStoCSXTRoutewithDET_Node0_action["Set the traffic type to CSXT and
mark route as found"]:::main N_CPRStoCSXTRoutewithDET_Node0 -- Yes --> N_CPRStoCSXTRoutewithDET_Node0_action N_CPRStoCSXTRoutewithDET_Node0_action --> E_CPRStoCSXTRoutewithDET S_CPRStoCSXTRoutewithDET --> N_CPRStoCSXTRoutewithDET_Node0 N_CPRStoCSXTRoutewithDET_Node0 -- No --> E_CPRStoCSXTRoutewithDET
second carrier is CSXT and the route
includes DET"}:::decision N_CPRStoCSXTRoutewithDET_Node0_action["Set the traffic type to CSXT and
mark route as found"]:::main N_CPRStoCSXTRoutewithDET_Node0 -- Yes --> N_CPRStoCSXTRoutewithDET_Node0_action N_CPRStoCSXTRoutewithDET_Node0_action --> E_CPRStoCSXTRoutewithDET S_CPRStoCSXTRoutewithDET --> N_CPRStoCSXTRoutewithDET_Node0 N_CPRStoCSXTRoutewithDET_Node0 -- No --> E_CPRStoCSXTRoutewithDET
File: GCCDBL.cbl
GIVEN:
Valid route segment information is available
WHEN:
- The first carrier is cprs
- The second carrier is csxt
- The route includes det
THEN:
- Set the traffic type to csxt
- Mark route as found
β Consolidated Acceptance Criteria
- The first carrier is CPRS and the second carrier is NS and the route includes DET → set the traffic type to NS and mark route as found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CPRStoNSRoutewithDET(["Start Step"])
E_CPRStoNSRoutewithDET(["End Step"])
N_CPRStoNSRoutewithDET_Node0{"The first carrier is CPRS and the
second carrier is NS and the route
includes DET"}:::decision N_CPRStoNSRoutewithDET_Node0_action["Set the traffic type to NS and mark
route as found"]:::main N_CPRStoNSRoutewithDET_Node0 -- Yes --> N_CPRStoNSRoutewithDET_Node0_action N_CPRStoNSRoutewithDET_Node0_action --> E_CPRStoNSRoutewithDET S_CPRStoNSRoutewithDET --> N_CPRStoNSRoutewithDET_Node0 N_CPRStoNSRoutewithDET_Node0 -- No --> E_CPRStoNSRoutewithDET
second carrier is NS and the route
includes DET"}:::decision N_CPRStoNSRoutewithDET_Node0_action["Set the traffic type to NS and mark
route as found"]:::main N_CPRStoNSRoutewithDET_Node0 -- Yes --> N_CPRStoNSRoutewithDET_Node0_action N_CPRStoNSRoutewithDET_Node0_action --> E_CPRStoNSRoutewithDET S_CPRStoNSRoutewithDET --> N_CPRStoNSRoutewithDET_Node0 N_CPRStoNSRoutewithDET_Node0 -- No --> E_CPRStoNSRoutewithDET
File: GCCDBL.cbl
Exclusion / Alternative Path
GIVEN:
Valid route segment information is available and CPRS to CSXT route was not found
WHEN:
- The first carrier is cprs
- The second carrier is ns
- The route includes det
THEN:
- Set the traffic type to ns
- Mark route as found
β Consolidated Acceptance Criteria
- The first carrier is CSXT or NS and the second carrier is CPRS and the route includes DET → reset the double-stack count to zero and mark route as found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CSXTNStoCPRSRoutewithDET(["Start Step"])
E_CSXTNStoCPRSRoutewithDET(["End Step"])
N_CSXTNStoCPRSRoutewithDET_Node0{"The first carrier is CSXT or NS and
the second carrier is CPRS and the
route includes DET"}:::decision N_CSXTNStoCPRSRoutewithDET_Node0_action["Reset the double-stack count to
zero and mark route as found"]:::main N_CSXTNStoCPRSRoutewithDET_Node0 -- Yes --> N_CSXTNStoCPRSRoutewithDET_Node0_action N_CSXTNStoCPRSRoutewithDET_Node0_action --> E_CSXTNStoCPRSRoutewithDET S_CSXTNStoCPRSRoutewithDET --> N_CSXTNStoCPRSRoutewithDET_Node0 N_CSXTNStoCPRSRoutewithDET_Node0 -- No --> E_CSXTNStoCPRSRoutewithDET
the second carrier is CPRS and the
route includes DET"}:::decision N_CSXTNStoCPRSRoutewithDET_Node0_action["Reset the double-stack count to
zero and mark route as found"]:::main N_CSXTNStoCPRSRoutewithDET_Node0 -- Yes --> N_CSXTNStoCPRSRoutewithDET_Node0_action N_CSXTNStoCPRSRoutewithDET_Node0_action --> E_CSXTNStoCPRSRoutewithDET S_CSXTNStoCPRSRoutewithDET --> N_CSXTNStoCPRSRoutewithDET_Node0 N_CSXTNStoCPRSRoutewithDET_Node0 -- No --> E_CSXTNStoCPRSRoutewithDET
File: GCCDBL.cbl
GIVEN:
Valid route segment information is available and no southbound routes were found
WHEN:
- The first carrier is csxt or ns
- The second carrier is cprs
- The route includes det
THEN:
- Reset the double-stack count to zero
- Mark route as found
β Consolidated Acceptance Criteria
- Either the current route segment or the next route segment contains spaces or low-values → skip this segment pair and exit the route checking process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsRouteInfoValid(["Start Step"])
E_IsRouteInfoValid(["End Step"])
N_IsRouteInfoValid_Node0{"Either the current route segment or
the next route segment contains
spaces or low-values"}:::decision N_IsRouteInfoValid_Node0_action["Skip this segment pair and exit the
route checking process"]:::main N_IsRouteInfoValid_Node0 -- Yes --> N_IsRouteInfoValid_Node0_action N_IsRouteInfoValid_Node0_action --> E_IsRouteInfoValid S_IsRouteInfoValid --> N_IsRouteInfoValid_Node0 N_IsRouteInfoValid_Node0 -- No --> E_IsRouteInfoValid
the next route segment contains
spaces or low-values"}:::decision N_IsRouteInfoValid_Node0_action["Skip this segment pair and exit the
route checking process"]:::main N_IsRouteInfoValid_Node0 -- Yes --> N_IsRouteInfoValid_Node0_action N_IsRouteInfoValid_Node0_action --> E_IsRouteInfoValid S_IsRouteInfoValid --> N_IsRouteInfoValid_Node0 N_IsRouteInfoValid_Node0 -- No --> E_IsRouteInfoValid
File: GCCDBL.cbl
GIVEN:
A route segment pair is being evaluated for traffic type determination
WHEN:
Either the current route segment or the next route segment contains spaces or low-values
THEN:
- Skip this segment pair
- Exit the route checking process
β Consolidated Acceptance Criteria
- Processing route segment pairs for traffic classification → extract the SCAC from the first route segment into route info one
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractFirstRouteSCAC(["Start Step"])
E_ExtractFirstRouteSCAC(["End Step"])
N_ExtractFirstRouteSCAC_Node0{"Processing route segment pairs for
traffic classification"}:::decision N_ExtractFirstRouteSCAC_Node0_action["Extract the SCAC from the first
route segment into route info one"]:::main N_ExtractFirstRouteSCAC_Node0 -- Yes --> N_ExtractFirstRouteSCAC_Node0_action N_ExtractFirstRouteSCAC_Node0_action --> E_ExtractFirstRouteSCAC S_ExtractFirstRouteSCAC --> N_ExtractFirstRouteSCAC_Node0 N_ExtractFirstRouteSCAC_Node0 -- No --> E_ExtractFirstRouteSCAC
traffic classification"}:::decision N_ExtractFirstRouteSCAC_Node0_action["Extract the SCAC from the first
route segment into route info one"]:::main N_ExtractFirstRouteSCAC_Node0 -- Yes --> N_ExtractFirstRouteSCAC_Node0_action N_ExtractFirstRouteSCAC_Node0_action --> E_ExtractFirstRouteSCAC S_ExtractFirstRouteSCAC --> N_ExtractFirstRouteSCAC_Node0 N_ExtractFirstRouteSCAC_Node0 -- No --> E_ExtractFirstRouteSCAC
File: GCCDBL.cbl
GIVEN:
Valid route segment information is available
WHEN:
Processing route segment pairs for traffic classification
THEN:
Extract the SCAC from the first route segment into route info one
β Consolidated Acceptance Criteria
- Processing route segment pairs for traffic classification → extract the SCAC from the second route segment into route info two
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractSecondRouteSCAC(["Start Step"])
E_ExtractSecondRouteSCAC(["End Step"])
N_ExtractSecondRouteSCAC_Node0{"Processing route segment pairs for
traffic classification"}:::decision N_ExtractSecondRouteSCAC_Node0_action["Extract the SCAC from the second
route segment into route info two"]:::main N_ExtractSecondRouteSCAC_Node0 -- Yes --> N_ExtractSecondRouteSCAC_Node0_action N_ExtractSecondRouteSCAC_Node0_action --> E_ExtractSecondRouteSCAC S_ExtractSecondRouteSCAC --> N_ExtractSecondRouteSCAC_Node0 N_ExtractSecondRouteSCAC_Node0 -- No --> E_ExtractSecondRouteSCAC
traffic classification"}:::decision N_ExtractSecondRouteSCAC_Node0_action["Extract the SCAC from the second
route segment into route info two"]:::main N_ExtractSecondRouteSCAC_Node0 -- Yes --> N_ExtractSecondRouteSCAC_Node0_action N_ExtractSecondRouteSCAC_Node0_action --> E_ExtractSecondRouteSCAC S_ExtractSecondRouteSCAC --> N_ExtractSecondRouteSCAC_Node0 N_ExtractSecondRouteSCAC_Node0 -- No --> E_ExtractSecondRouteSCAC
File: GCCDBL.cbl
GIVEN:
Valid route segment information is available
WHEN:
Processing route segment pairs for traffic classification
THEN:
Extract the SCAC from the second route segment into route info two
β Consolidated Acceptance Criteria
- The first route SCAC is either CSXT or NS → continue evaluating for potential north-bound traffic pattern
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsFirstSCACCSXTorNS(["Start Step"])
E_IsFirstSCACCSXTorNS(["End Step"])
N_IsFirstSCACCSXTorNS_Node0{"The first route SCAC is either CSXT
or NS"}:::decision N_IsFirstSCACCSXTorNS_Node0_action["Continue evaluating for potential
north-bound traffic pattern"]:::main N_IsFirstSCACCSXTorNS_Node0 -- Yes --> N_IsFirstSCACCSXTorNS_Node0_action N_IsFirstSCACCSXTorNS_Node0_action --> E_IsFirstSCACCSXTorNS S_IsFirstSCACCSXTorNS --> N_IsFirstSCACCSXTorNS_Node0 N_IsFirstSCACCSXTorNS_Node0 -- No --> E_IsFirstSCACCSXTorNS
or NS"}:::decision N_IsFirstSCACCSXTorNS_Node0_action["Continue evaluating for potential
north-bound traffic pattern"]:::main N_IsFirstSCACCSXTorNS_Node0 -- Yes --> N_IsFirstSCACCSXTorNS_Node0_action N_IsFirstSCACCSXTorNS_Node0_action --> E_IsFirstSCACCSXTorNS S_IsFirstSCACCSXTorNS --> N_IsFirstSCACCSXTorNS_Node0 N_IsFirstSCACCSXTorNS_Node0 -- No --> E_IsFirstSCACCSXTorNS
File: GCCDBL.cbl
GIVEN:
Route segment carrier information has been extracted
WHEN:
The first route SCAC is either CSXT or NS
THEN:
Continue evaluating for potential north-bound traffic pattern
β Consolidated Acceptance Criteria
- The second route SCAC is CPRS → continue evaluating for Detroit interchange requirement
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsSecondSCACCPRS(["Start Step"])
E_IsSecondSCACCPRS(["End Step"])
N_IsSecondSCACCPRS_Node0{"The second route SCAC is CPRS"}:::decision
N_IsSecondSCACCPRS_Node0_action["Continue evaluating for Detroit
interchange requirement"]:::main N_IsSecondSCACCPRS_Node0 -- Yes --> N_IsSecondSCACCPRS_Node0_action N_IsSecondSCACCPRS_Node0_action --> E_IsSecondSCACCPRS S_IsSecondSCACCPRS --> N_IsSecondSCACCPRS_Node0 N_IsSecondSCACCPRS_Node0 -- No --> E_IsSecondSCACCPRS
interchange requirement"]:::main N_IsSecondSCACCPRS_Node0 -- Yes --> N_IsSecondSCACCPRS_Node0_action N_IsSecondSCACCPRS_Node0_action --> E_IsSecondSCACCPRS S_IsSecondSCACCPRS --> N_IsSecondSCACCPRS_Node0 N_IsSecondSCACCPRS_Node0 -- No --> E_IsSecondSCACCPRS
File: GCCDBL.cbl
GIVEN:
The first route SCAC is either CSXT or NS
WHEN:
The second route SCAC is CPRS
THEN:
Continue evaluating for Detroit interchange requirement
β Consolidated Acceptance Criteria
- The route R260 field equals DET → confirm this is valid north-bound traffic requiring double-stack count reset
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsRouteR260DET(["Start Step"])
E_IsRouteR260DET(["End Step"])
N_IsRouteR260DET_Node0{"The route R260 field equals DET"}:::decision
N_IsRouteR260DET_Node0_action["Confirm this is valid north-bound
traffic requiring double-stack count
reset"]:::main N_IsRouteR260DET_Node0 -- Yes --> N_IsRouteR260DET_Node0_action N_IsRouteR260DET_Node0_action --> E_IsRouteR260DET S_IsRouteR260DET --> N_IsRouteR260DET_Node0 N_IsRouteR260DET_Node0 -- No --> E_IsRouteR260DET
traffic requiring double-stack count
reset"]:::main N_IsRouteR260DET_Node0 -- Yes --> N_IsRouteR260DET_Node0_action N_IsRouteR260DET_Node0_action --> E_IsRouteR260DET S_IsRouteR260DET --> N_IsRouteR260DET_Node0 N_IsRouteR260DET_Node0 -- No --> E_IsRouteR260DET
File: GCCDBL.cbl
GIVEN:
Traffic pattern shows CSXT or NS to CPRS routing
WHEN:
The route R260 field equals DET
THEN:
Confirm this is valid north-bound traffic requiring double-stack count reset
β Consolidated Acceptance Criteria
- All routing criteria are met for CSXT/NS to CPRS via Detroit → set the route found flag to true to indicate processing completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRouteFoundFlag(["Start Step"])
E_SetRouteFoundFlag(["End Step"])
N_SetRouteFoundFlag_Node0{"All routing criteria are met for
CSXTNS to CPRS via Detroit"}:::decision N_SetRouteFoundFlag_Node0_action["Set the route found flag to true to
indicate processing completion"]:::main N_SetRouteFoundFlag_Node0 -- Yes --> N_SetRouteFoundFlag_Node0_action N_SetRouteFoundFlag_Node0_action --> E_SetRouteFoundFlag S_SetRouteFoundFlag --> N_SetRouteFoundFlag_Node0 N_SetRouteFoundFlag_Node0 -- No --> E_SetRouteFoundFlag
CSXTNS to CPRS via Detroit"}:::decision N_SetRouteFoundFlag_Node0_action["Set the route found flag to true to
indicate processing completion"]:::main N_SetRouteFoundFlag_Node0 -- Yes --> N_SetRouteFoundFlag_Node0_action N_SetRouteFoundFlag_Node0_action --> E_SetRouteFoundFlag S_SetRouteFoundFlag --> N_SetRouteFoundFlag_Node0 N_SetRouteFoundFlag_Node0 -- No --> E_SetRouteFoundFlag
File: GCCDBL.cbl
GIVEN:
A valid north-bound traffic pattern has been identified
WHEN:
All routing criteria are met for CSXT/NS to CPRS via Detroit
THEN:
Set the route found flag to true to indicate processing completion
β Consolidated Acceptance Criteria
- The system prepares to return control to the calling program → the original program name is restored from the saved value to maintain proper program context
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RestoreOriginalProgramName(["Start Step"])
E_RestoreOriginalProgramName(["End Step"])
N_RestoreOriginalProgramName_Node0{"The system prepares to return
control to the calling program"}:::decision N_RestoreOriginalProgramName_Node0_action["The original program name is
restored from the saved value to
maintain proper program context"]:::main N_RestoreOriginalProgramName_Node0 -- Yes --> N_RestoreOriginalProgramName_Node0_action N_RestoreOriginalProgramName_Node0_action --> E_RestoreOriginalProgramName S_RestoreOriginalProgramName --> N_RestoreOriginalProgramName_Node0 N_RestoreOriginalProgramName_Node0 -- No --> E_RestoreOriginalProgramName
control to the calling program"}:::decision N_RestoreOriginalProgramName_Node0_action["The original program name is
restored from the saved value to
maintain proper program context"]:::main N_RestoreOriginalProgramName_Node0 -- Yes --> N_RestoreOriginalProgramName_Node0_action N_RestoreOriginalProgramName_Node0_action --> E_RestoreOriginalProgramName S_RestoreOriginalProgramName --> N_RestoreOriginalProgramName_Node0 N_RestoreOriginalProgramName_Node0 -- No --> E_RestoreOriginalProgramName
File: GCCDBL.cbl
GIVEN:
The program has completed its double-stack analysis processing
WHEN:
The system prepares to return control to the calling program
THEN:
The original program name is restored from the saved value to maintain proper program context
β Consolidated Acceptance Criteria
- The system prepares to return results to the calling program → the final double-stack count value is made available in the output parameter GCWDBLIF-DBLSTCK-CNT
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFinalDoubleStackCountinOutputParameter(["Start Step"])
E_SetFinalDoubleStackCountinOutputParameter(["End Step"])
N_SetFinalDoubleStackCountinOutputParameter_Node0{"The system prepares to return
results to the calling program"}:::decision N_SetFinalDoubleStackCountinOutputParameter_Node0_action["The final double-stack count value
is made available in the output
parameter GCWDBLIF-DBLSTCK-CNT"]:::main N_SetFinalDoubleStackCountinOutputParameter_Node0 -- Yes --> N_SetFinalDoubleStackCountinOutputParameter_Node0_action N_SetFinalDoubleStackCountinOutputParameter_Node0_action --> E_SetFinalDoubleStackCountinOutputParameter S_SetFinalDoubleStackCountinOutputParameter --> N_SetFinalDoubleStackCountinOutputParameter_Node0 N_SetFinalDoubleStackCountinOutputParameter_Node0 -- No --> E_SetFinalDoubleStackCountinOutputParameter
results to the calling program"}:::decision N_SetFinalDoubleStackCountinOutputParameter_Node0_action["The final double-stack count value
is made available in the output
parameter GCWDBLIF-DBLSTCK-CNT"]:::main N_SetFinalDoubleStackCountinOutputParameter_Node0 -- Yes --> N_SetFinalDoubleStackCountinOutputParameter_Node0_action N_SetFinalDoubleStackCountinOutputParameter_Node0_action --> E_SetFinalDoubleStackCountinOutputParameter S_SetFinalDoubleStackCountinOutputParameter --> N_SetFinalDoubleStackCountinOutputParameter_Node0 N_SetFinalDoubleStackCountinOutputParameter_Node0 -- No --> E_SetFinalDoubleStackCountinOutputParameter
File: GCCDBL.cbl
GIVEN:
The double-stack platform counting process has been completed
WHEN:
The system prepares to return results to the calling program
THEN:
The final double-stack count value is made available in the output parameter GCWDBLIF-DBLSTCK-CNT
β Consolidated Acceptance Criteria
- The system prepares to return results to the calling program → the final traffic type classification is made available in the output parameter with values such as CPRS, HAUL, CSXT, or NS
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFinalTrafficTypeClassificationinOutputParameter(["Start Step"])
E_SetFinalTrafficTypeClassificationinOutputParameter(["End Step"])
N_SetFinalTrafficTypeClassificationinOutputParameter_Node0{"The system prepares to return
results to the calling program"}:::decision N_SetFinalTrafficTypeClassificationinOutputParameter_Node0_action["The final traffic type
classification is made available in
the output parameter with values
such as CPRS, HAUL, CSXT, or NS"]:::main N_SetFinalTrafficTypeClassificationinOutputParameter_Node0 -- Yes --> N_SetFinalTrafficTypeClassificationinOutputParameter_Node0_action N_SetFinalTrafficTypeClassificationinOutputParameter_Node0_action --> E_SetFinalTrafficTypeClassificationinOutputParameter S_SetFinalTrafficTypeClassificationinOutputParameter --> N_SetFinalTrafficTypeClassificationinOutputParameter_Node0 N_SetFinalTrafficTypeClassificationinOutputParameter_Node0 -- No --> E_SetFinalTrafficTypeClassificationinOutputParameter
results to the calling program"}:::decision N_SetFinalTrafficTypeClassificationinOutputParameter_Node0_action["The final traffic type
classification is made available in
the output parameter with values
such as CPRS, HAUL, CSXT, or NS"]:::main N_SetFinalTrafficTypeClassificationinOutputParameter_Node0 -- Yes --> N_SetFinalTrafficTypeClassificationinOutputParameter_Node0_action N_SetFinalTrafficTypeClassificationinOutputParameter_Node0_action --> E_SetFinalTrafficTypeClassificationinOutputParameter S_SetFinalTrafficTypeClassificationinOutputParameter --> N_SetFinalTrafficTypeClassificationinOutputParameter_Node0 N_SetFinalTrafficTypeClassificationinOutputParameter_Node0 -- No --> E_SetFinalTrafficTypeClassificationinOutputParameter
File: GCCDBL.cbl
GIVEN:
The traffic type determination process has been completed
WHEN:
The system prepares to return results to the calling program
THEN:
The final traffic type classification is made available in the output parameter with values such as CPRS, HAUL, CSXT, or NS
β Consolidated Acceptance Criteria
- The system is ready to terminate the current program execution → control is returned to the calling program using GOBACK statement
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnControltoCallingProgram(["Start Step"])
E_ReturnControltoCallingProgram(["End Step"])
N_ReturnControltoCallingProgram_Node0{"The system is ready to terminate
the current program execution"}:::decision N_ReturnControltoCallingProgram_Node0_action["Control is returned to the calling
program using GOBACK statement"]:::main N_ReturnControltoCallingProgram_Node0 -- Yes --> N_ReturnControltoCallingProgram_Node0_action N_ReturnControltoCallingProgram_Node0_action --> E_ReturnControltoCallingProgram S_ReturnControltoCallingProgram --> N_ReturnControltoCallingProgram_Node0 N_ReturnControltoCallingProgram_Node0 -- No --> E_ReturnControltoCallingProgram
the current program execution"}:::decision N_ReturnControltoCallingProgram_Node0_action["Control is returned to the calling
program using GOBACK statement"]:::main N_ReturnControltoCallingProgram_Node0 -- Yes --> N_ReturnControltoCallingProgram_Node0_action N_ReturnControltoCallingProgram_Node0_action --> E_ReturnControltoCallingProgram S_ReturnControltoCallingProgram --> N_ReturnControltoCallingProgram_Node0 N_ReturnControltoCallingProgram_Node0 -- No --> E_ReturnControltoCallingProgram
File: GCCDBL.cbl
GIVEN:
All processing has been completed and results have been set in output parameters
WHEN:
The system is ready to terminate the current program execution
THEN:
Control is returned to the calling program using GOBACK statement
GCSTONLY Sequence (US Train)
Objective: Orchestrates key processes including Environment Detection, Function Code Processing, First Record Processing, Terminal Information Setup, Transaction Code Validation, and other related sub-functions.
πΊοΈ High-Level Visual Map
flowchart TD
A[Program Start]:::start
B[1:Environment Detection]:::process
C{2:Function Code Processing - Is CC-USER-FUNC-CODE = 'WRAP'?}:::decision
D[17:Final Segment Processing]:::process
E[18:Dynamic Segment Length Calculation]:::process
F{Is First Record?}:::decision
G[3:First Record Processing]:::process
H[12:Subsequent Record Processing]:::process
I[4:Terminal Information Setup]:::process
J{5:Transaction Code Validation - Is CC-TRANS-CODE = 'GCT026'?}:::decision
K[Set Terminal Values for GCT026]:::process
L[Set Standard Terminal Values]:::process
M[6:Message Header Preparation]:::process
N[7:Call Letters Processing]:::process
O[8:Call Letters Duplication]:::process
P[9:Output Record Initialization]:::process
Q[10:Special Character Replacement]:::process
R[11:Input Record Storage]:::process
S[13:Record Counter Management]:::process
T{14:Batch Size Check - Is I = 22?}:::decision
U[15:Data Segment Transmission]:::process
V[16:Record Reset]:::process
W{Are there remaining records?}:::decision
X[Success End]:::success
Y[Error End]:::error
Z[20:Error Handling]:::process
PCB1[(IO-PCB)]:::datasource
PCB2[(MST-PCB)]:::datasource
QUEUE1[(Message Queue via CIMS)]:::datasource
QUEUE2[(Message Queue via KX2BMP)]:::datasource
A --> B
B --> C
C -->|Yes| D
C -->|No| F
D --> E
E --> W
F -->|Yes| G
F -->|No| H
G --> I
PCB1 -.->|Read Terminal Info| I
I --> J
J -->|Yes| K
J -->|No| L
K --> M
L --> M
M --> N
N --> O
O --> P
P --> Q
Q --> R
R --> X
H --> S
S --> T
T -->|Yes| U
T -->|No| X
U --> V
V --> X
W -->|Yes| U
W -->|No| X
PCB2 -.->|Message Control| M
QUEUE1 -.->|Send Message -TPE-| U
QUEUE2 -.->|Send Message -BPE-| U
U --> Z
Z -->|Success| X
Z -->|Error| Y
classDef start fill:#67A353
classDef process fill:#08AAD2
classDef decision fill:#FFE347
classDef datasource fill:#2EA597
classDef final fill:#D13313
classDef success fill:#2BB534
classDef error fill:#D13313
π Step-by-Step Logic Trace
β Consolidated Acceptance Criteria
- The environment parameter is checked and found to be either empty, spaces, or low-value → the system sets itself to run in TPE mode, otherwise it sets itself to run in BPE mode
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_1EnvironmentDetection(["Start Step"])
E_1EnvironmentDetection(["End Step"])
N_1EnvironmentDetection_Node0{"The environment parameter is
checked and found to be either
empty, spaces, or low-value"}:::decision N_1EnvironmentDetection_Node0_action["The system sets itself to run in
TPE mode, otherwise it sets itself
to run in BPE mode"]:::main N_1EnvironmentDetection_Node0 -- Yes --> N_1EnvironmentDetection_Node0_action N_1EnvironmentDetection_Node0_action --> E_1EnvironmentDetection S_1EnvironmentDetection --> N_1EnvironmentDetection_Node0 N_1EnvironmentDetection_Node0 -- No --> E_1EnvironmentDetection
checked and found to be either
empty, spaces, or low-value"}:::decision N_1EnvironmentDetection_Node0_action["The system sets itself to run in
TPE mode, otherwise it sets itself
to run in BPE mode"]:::main N_1EnvironmentDetection_Node0 -- Yes --> N_1EnvironmentDetection_Node0_action N_1EnvironmentDetection_Node0_action --> E_1EnvironmentDetection S_1EnvironmentDetection --> N_1EnvironmentDetection_Node0 N_1EnvironmentDetection_Node0 -- No --> E_1EnvironmentDetection
File: GCSTONLY.cbl
GIVEN:
The system is starting up and needs to determine its runtime environment
WHEN:
- The environment parameter is checked
- Found to be either empty, spaces, or low-value
THEN:
The system sets itself to run in TPE mode, otherwise it sets itself to run in BPE mode
β Consolidated Acceptance Criteria
- The user function code equals 'WRAP' → the system performs final segment processing, sets first record flag to 'Y', and terminates processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_2FunctionCodeProcessingIsCCUSERFUNCCODEWRAP(["Start Step"])
E_2FunctionCodeProcessingIsCCUSERFUNCCODEWRAP(["End Step"])
N_2FunctionCodeProcessingIsCCUSERFUNCCODEWRAP_Node0{"The user function code equals WRAP"}:::decision
N_2FunctionCodeProcessingIsCCUSERFUNCCODEWRAP_Node0_action["The system performs final segment
processing, sets first record flag
to Y , and terminates processing"]:::main N_2FunctionCodeProcessingIsCCUSERFUNCCODEWRAP_Node0 -- Yes --> N_2FunctionCodeProcessingIsCCUSERFUNCCODEWRAP_Node0_action N_2FunctionCodeProcessingIsCCUSERFUNCCODEWRAP_Node0_action --> E_2FunctionCodeProcessingIsCCUSERFUNCCODEWRAP S_2FunctionCodeProcessingIsCCUSERFUNCCODEWRAP --> N_2FunctionCodeProcessingIsCCUSERFUNCCODEWRAP_Node0 N_2FunctionCodeProcessingIsCCUSERFUNCCODEWRAP_Node0 -- No --> E_2FunctionCodeProcessingIsCCUSERFUNCCODEWRAP
processing, sets first record flag
to Y , and terminates processing"]:::main N_2FunctionCodeProcessingIsCCUSERFUNCCODEWRAP_Node0 -- Yes --> N_2FunctionCodeProcessingIsCCUSERFUNCCODEWRAP_Node0_action N_2FunctionCodeProcessingIsCCUSERFUNCCODEWRAP_Node0_action --> E_2FunctionCodeProcessingIsCCUSERFUNCCODEWRAP S_2FunctionCodeProcessingIsCCUSERFUNCCODEWRAP --> N_2FunctionCodeProcessingIsCCUSERFUNCCODEWRAP_Node0 N_2FunctionCodeProcessingIsCCUSERFUNCCODEWRAP_Node0 -- No --> E_2FunctionCodeProcessingIsCCUSERFUNCCODEWRAP
File: GCSTONLY.cbl
GIVEN:
A user function code is received for processing
WHEN:
The user function code equals 'WRAP'
THEN:
The system performs final segment processing, sets first record flag to 'Y', and terminates processing
β Consolidated Acceptance Criteria
- Terminal information is needed for message routing → the system calls FROMBASE to retrieve terminal information using IO-PCB with parameter value 8
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_4TerminalInformationSetup(["Start Step"])
E_4TerminalInformationSetup(["End Step"])
N_4TerminalInformationSetup_Node0{"Terminal information is needed for
message routing"}:::decision N_4TerminalInformationSetup_Node0_action["The system calls FROMBASE to
retrieve terminal information using
IO-PCB with parameter value 8"]:::main N_4TerminalInformationSetup_Node0 -- Yes --> N_4TerminalInformationSetup_Node0_action N_4TerminalInformationSetup_Node0_action --> E_4TerminalInformationSetup S_4TerminalInformationSetup --> N_4TerminalInformationSetup_Node0 N_4TerminalInformationSetup_Node0 -- No --> E_4TerminalInformationSetup
message routing"}:::decision N_4TerminalInformationSetup_Node0_action["The system calls FROMBASE to
retrieve terminal information using
IO-PCB with parameter value 8"]:::main N_4TerminalInformationSetup_Node0 -- Yes --> N_4TerminalInformationSetup_Node0_action N_4TerminalInformationSetup_Node0_action --> E_4TerminalInformationSetup S_4TerminalInformationSetup --> N_4TerminalInformationSetup_Node0 N_4TerminalInformationSetup_Node0 -- No --> E_4TerminalInformationSetup
File: GCSTONLY.cbl
GIVEN:
First record processing is initiated
WHEN:
Terminal information is needed for message routing
THEN:
The system calls FROMBASE to retrieve terminal information using IO-PCB with parameter value 8
β Consolidated Acceptance Criteria
- The transaction code equals 'GCT026' → the system sets origin terminal to 'ISTSS1', error terminal to 'QCSPS1', and assigns destination terminal to call letters position 1, otherwise it assigns destination terminal to both origin and error terminals
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_5TransactionCodeValidationIsCCTRANSCODEGCT026(["Start Step"])
E_5TransactionCodeValidationIsCCTRANSCODEGCT026(["End Step"])
N_5TransactionCodeValidationIsCCTRANSCODEGCT026_Node0{"The transaction code equals GCT026"}:::decision
N_5TransactionCodeValidationIsCCTRANSCODEGCT026_Node0_action["The system sets origin terminal to
ISTSS1 , error terminal to QCSPS1 ,
and assigns destination terminal to
call letters position 1, otherwise
it assigns destination terminal to
both origin and error terminals"]:::main N_5TransactionCodeValidationIsCCTRANSCODEGCT026_Node0 -- Yes --> N_5TransactionCodeValidationIsCCTRANSCODEGCT026_Node0_action N_5TransactionCodeValidationIsCCTRANSCODEGCT026_Node0_action --> E_5TransactionCodeValidationIsCCTRANSCODEGCT026 S_5TransactionCodeValidationIsCCTRANSCODEGCT026 --> N_5TransactionCodeValidationIsCCTRANSCODEGCT026_Node0 N_5TransactionCodeValidationIsCCTRANSCODEGCT026_Node0 -- No --> E_5TransactionCodeValidationIsCCTRANSCODEGCT026
ISTSS1 , error terminal to QCSPS1 ,
and assigns destination terminal to
call letters position 1, otherwise
it assigns destination terminal to
both origin and error terminals"]:::main N_5TransactionCodeValidationIsCCTRANSCODEGCT026_Node0 -- Yes --> N_5TransactionCodeValidationIsCCTRANSCODEGCT026_Node0_action N_5TransactionCodeValidationIsCCTRANSCODEGCT026_Node0_action --> E_5TransactionCodeValidationIsCCTRANSCODEGCT026 S_5TransactionCodeValidationIsCCTRANSCODEGCT026 --> N_5TransactionCodeValidationIsCCTRANSCODEGCT026_Node0 N_5TransactionCodeValidationIsCCTRANSCODEGCT026_Node0 -- No --> E_5TransactionCodeValidationIsCCTRANSCODEGCT026
File: GCSTONLY.cbl
GIVEN:
A transaction code is being processed for terminal setup
WHEN:
The transaction code equals 'GCT026'
THEN:
- The system sets origin terminal to 'istss1', error terminal to 'qcsps1', and assigns destination terminal to call letters position 1, otherwise it assigns destination terminal to both origin
- Error terminals
β Consolidated Acceptance Criteria
- Transaction code and input record are available → the system moves transaction code to control segment origin transaction field, moves input record to control segment menu header, and sets flag byte to low-values for GCT026 transactions or OLV indicator for other transactions
- The system is running in TPE environment → the system calls CIMS with CHNG operation for setup and PURG operation for control segment processing, otherwise it uses KX2BMP method with appropriate parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_6MessageHeaderPreparation(["Start Step"])
E_6MessageHeaderPreparation(["End Step"])
N_6MessageHeaderPreparation_Node0{"Transaction code and input record
are available"}:::decision N_6MessageHeaderPreparation_Node0_action["The system moves transaction code
to control segment origin
transaction field, moves input
record to control segment menu
header, and sets flag byte to
low-values for GCT026 transactions
or OLV indicator for other
transactions"]:::main N_6MessageHeaderPreparation_Node0 -- Yes --> N_6MessageHeaderPreparation_Node0_action N_6MessageHeaderPreparation_Node0_action --> E_6MessageHeaderPreparation S_6MessageHeaderPreparation --> N_6MessageHeaderPreparation_Node0 N_6MessageHeaderPreparation_Node1{"The system is running in TPE
environment"}:::decision N_6MessageHeaderPreparation_Node1_action["The system calls CIMS with CHNG
operation for setup and PURG
operation for control segment
processing, otherwise it uses KX2BMP
method with appropriate parameters"]:::main N_6MessageHeaderPreparation_Node1 -- Yes --> N_6MessageHeaderPreparation_Node1_action N_6MessageHeaderPreparation_Node1_action --> E_6MessageHeaderPreparation N_6MessageHeaderPreparation_Node0 -- No --> N_6MessageHeaderPreparation_Node1 N_6MessageHeaderPreparation_Node1 -- No --> E_6MessageHeaderPreparation
are available"}:::decision N_6MessageHeaderPreparation_Node0_action["The system moves transaction code
to control segment origin
transaction field, moves input
record to control segment menu
header, and sets flag byte to
low-values for GCT026 transactions
or OLV indicator for other
transactions"]:::main N_6MessageHeaderPreparation_Node0 -- Yes --> N_6MessageHeaderPreparation_Node0_action N_6MessageHeaderPreparation_Node0_action --> E_6MessageHeaderPreparation S_6MessageHeaderPreparation --> N_6MessageHeaderPreparation_Node0 N_6MessageHeaderPreparation_Node1{"The system is running in TPE
environment"}:::decision N_6MessageHeaderPreparation_Node1_action["The system calls CIMS with CHNG
operation for setup and PURG
operation for control segment
processing, otherwise it uses KX2BMP
method with appropriate parameters"]:::main N_6MessageHeaderPreparation_Node1 -- Yes --> N_6MessageHeaderPreparation_Node1_action N_6MessageHeaderPreparation_Node1_action --> E_6MessageHeaderPreparation N_6MessageHeaderPreparation_Node0 -- No --> N_6MessageHeaderPreparation_Node1 N_6MessageHeaderPreparation_Node1 -- No --> E_6MessageHeaderPreparation
File: GCSTONLY.cbl
GIVEN:
Terminal setup is complete and control segment needs to be prepared
WHEN:
- Transaction code
- Input record are available
THEN:
The system moves transaction code to control segment origin transaction field, moves input record to control segment menu header, and sets flag byte to low-values for GCT026 transactions or OLV indicator for other transactions
File: GCSTONLY.cbl
GIVEN:
Control segment needs to be processed for message control
WHEN:
The system is running in TPE environment
THEN:
- The system calls cims with chng operation for setup
- Purg operation for control segment processing, otherwise it uses kx2bmp method with appropriate parameters
β Consolidated Acceptance Criteria
- Processing call letters starting from position 1 → the system copies each call letter to multiple target locations, increments position counter, and continues until position reaches 13 or encounters a space character
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_7CallLettersProcessing(["Start Step"])
E_7CallLettersProcessing(["End Step"])
N_7CallLettersProcessing_Node0{"Processing call letters starting
from position 1"}:::decision N_7CallLettersProcessing_Node0_action["The system copies each call letter
to multiple target locations,
increments position counter, and
continues until position reaches 13
or encounters a space character"]:::main N_7CallLettersProcessing_Node0 -- Yes --> N_7CallLettersProcessing_Node0_action N_7CallLettersProcessing_Node0_action --> E_7CallLettersProcessing S_7CallLettersProcessing --> N_7CallLettersProcessing_Node0 N_7CallLettersProcessing_Node0 -- No --> E_7CallLettersProcessing
from position 1"}:::decision N_7CallLettersProcessing_Node0_action["The system copies each call letter
to multiple target locations,
increments position counter, and
continues until position reaches 13
or encounters a space character"]:::main N_7CallLettersProcessing_Node0 -- Yes --> N_7CallLettersProcessing_Node0_action N_7CallLettersProcessing_Node0_action --> E_7CallLettersProcessing S_7CallLettersProcessing --> N_7CallLettersProcessing_Node0 N_7CallLettersProcessing_Node0 -- No --> E_7CallLettersProcessing
File: GCSTONLY.cbl
GIVEN:
Call letters need to be processed and duplicated
WHEN:
Processing call letters starting from position 1
THEN:
The system copies each call letter to multiple target locations, increments position counter, and continues until position reaches 13 or encounters a space character
β Consolidated Acceptance Criteria
- The call letters contain space characters → the system replaces the first space character with '#' symbol in the data segment record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_10SpecialCharacterReplacement(["Start Step"])
E_10SpecialCharacterReplacement(["End Step"])
N_10SpecialCharacterReplacement_Node0{"The call letters contain space
characters"}:::decision N_10SpecialCharacterReplacement_Node0_action["The system replaces the first space
character with symbol in the data
segment record"]:::main N_10SpecialCharacterReplacement_Node0 -- Yes --> N_10SpecialCharacterReplacement_Node0_action N_10SpecialCharacterReplacement_Node0_action --> E_10SpecialCharacterReplacement S_10SpecialCharacterReplacement --> N_10SpecialCharacterReplacement_Node0 N_10SpecialCharacterReplacement_Node0 -- No --> E_10SpecialCharacterReplacement
characters"}:::decision N_10SpecialCharacterReplacement_Node0_action["The system replaces the first space
character with symbol in the data
segment record"]:::main N_10SpecialCharacterReplacement_Node0 -- Yes --> N_10SpecialCharacterReplacement_Node0_action N_10SpecialCharacterReplacement_Node0_action --> E_10SpecialCharacterReplacement S_10SpecialCharacterReplacement --> N_10SpecialCharacterReplacement_Node0 N_10SpecialCharacterReplacement_Node0 -- No --> E_10SpecialCharacterReplacement
File: GCSTONLY.cbl
GIVEN:
Call letters have been moved to the first data segment record
WHEN:
The call letters contain space characters
THEN:
The system replaces the first space character with '#' symbol in the data segment record
β Consolidated Acceptance Criteria
- Input record needs to be stored in data segment → the system sets record counter to 2 and moves input record to data segment position 2
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_11InputRecordStorage(["Start Step"])
E_11InputRecordStorage(["End Step"])
N_11InputRecordStorage_Node0{"Input record needs to be stored in
data segment"}:::decision N_11InputRecordStorage_Node0_action["The system sets record counter to 2
and moves input record to data
segment position 2"]:::main N_11InputRecordStorage_Node0 -- Yes --> N_11InputRecordStorage_Node0_action N_11InputRecordStorage_Node0_action --> E_11InputRecordStorage S_11InputRecordStorage --> N_11InputRecordStorage_Node0 N_11InputRecordStorage_Node0 -- No --> E_11InputRecordStorage
data segment"}:::decision N_11InputRecordStorage_Node0_action["The system sets record counter to 2
and moves input record to data
segment position 2"]:::main N_11InputRecordStorage_Node0 -- Yes --> N_11InputRecordStorage_Node0_action N_11InputRecordStorage_Node0_action --> E_11InputRecordStorage S_11InputRecordStorage --> N_11InputRecordStorage_Node0 N_11InputRecordStorage_Node0 -- No --> E_11InputRecordStorage
File: GCSTONLY.cbl
GIVEN:
First record processing is being completed
WHEN:
Input record needs to be stored in data segment
THEN:
- The system sets record counter to 2
- Moves input record to data segment position 2
β Consolidated Acceptance Criteria
- The record counter needs to be updated → the system increments the record counter by 1 and moves the input record to the corresponding data segment position
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_13RecordCounterManagement(["Start Step"])
E_13RecordCounterManagement(["End Step"])
N_13RecordCounterManagement_Node0{"The record counter needs to be
updated"}:::decision N_13RecordCounterManagement_Node0_action["The system increments the record
counter by 1 and moves the input
record to the corresponding data
segment position"]:::main N_13RecordCounterManagement_Node0 -- Yes --> N_13RecordCounterManagement_Node0_action N_13RecordCounterManagement_Node0_action --> E_13RecordCounterManagement S_13RecordCounterManagement --> N_13RecordCounterManagement_Node0 N_13RecordCounterManagement_Node0 -- No --> E_13RecordCounterManagement
updated"}:::decision N_13RecordCounterManagement_Node0_action["The system increments the record
counter by 1 and moves the input
record to the corresponding data
segment position"]:::main N_13RecordCounterManagement_Node0 -- Yes --> N_13RecordCounterManagement_Node0_action N_13RecordCounterManagement_Node0_action --> E_13RecordCounterManagement S_13RecordCounterManagement --> N_13RecordCounterManagement_Node0 N_13RecordCounterManagement_Node0 -- No --> E_13RecordCounterManagement
File: GCSTONLY.cbl
GIVEN:
A subsequent record is being processed
WHEN:
The record counter needs to be updated
THEN:
- The system increments the record counter by 1
- Moves the input record to the corresponding data segment position
β Consolidated Acceptance Criteria
- The record counter equals 22 → the system sets segment length to 1786 and initiates data segment transmission, otherwise it continues accepting more records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_14BatchSizeCheckIsI22(["Start Step"])
E_14BatchSizeCheckIsI22(["End Step"])
N_14BatchSizeCheckIsI22_Node0{"The record counter equals 22"}:::decision
N_14BatchSizeCheckIsI22_Node0_action["The system sets segment length to
1786 and initiates data segment
transmission, otherwise it continues
accepting more records"]:::main N_14BatchSizeCheckIsI22_Node0 -- Yes --> N_14BatchSizeCheckIsI22_Node0_action N_14BatchSizeCheckIsI22_Node0_action --> E_14BatchSizeCheckIsI22 S_14BatchSizeCheckIsI22 --> N_14BatchSizeCheckIsI22_Node0 N_14BatchSizeCheckIsI22_Node0 -- No --> E_14BatchSizeCheckIsI22
1786 and initiates data segment
transmission, otherwise it continues
accepting more records"]:::main N_14BatchSizeCheckIsI22_Node0 -- Yes --> N_14BatchSizeCheckIsI22_Node0_action N_14BatchSizeCheckIsI22_Node0_action --> E_14BatchSizeCheckIsI22 S_14BatchSizeCheckIsI22 --> N_14BatchSizeCheckIsI22_Node0 N_14BatchSizeCheckIsI22_Node0 -- No --> E_14BatchSizeCheckIsI22
File: GCSTONLY.cbl
GIVEN:
A record has been added to the current data segment
WHEN:
The record counter equals 22
THEN:
- The system sets segment length to 1786
- Initiates data segment transmission, otherwise it continues accepting more records
β Consolidated Acceptance Criteria
- The system is running in TPE environment → the system calls CIMS with ISRT operation using MST-PCB and data segment, otherwise it uses KX2BMP method for transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_15DataSegmentTransmission(["Start Step"])
E_15DataSegmentTransmission(["End Step"])
N_15DataSegmentTransmission_Node0{"The system is running in TPE
environment"}:::decision N_15DataSegmentTransmission_Node0_action["The system calls CIMS with ISRT
operation using MST-PCB and data
segment, otherwise it uses KX2BMP
method for transmission"]:::main N_15DataSegmentTransmission_Node0 -- Yes --> N_15DataSegmentTransmission_Node0_action N_15DataSegmentTransmission_Node0_action --> E_15DataSegmentTransmission S_15DataSegmentTransmission --> N_15DataSegmentTransmission_Node0 N_15DataSegmentTransmission_Node0 -- No --> E_15DataSegmentTransmission
environment"}:::decision N_15DataSegmentTransmission_Node0_action["The system calls CIMS with ISRT
operation using MST-PCB and data
segment, otherwise it uses KX2BMP
method for transmission"]:::main N_15DataSegmentTransmission_Node0 -- Yes --> N_15DataSegmentTransmission_Node0_action N_15DataSegmentTransmission_Node0_action --> E_15DataSegmentTransmission S_15DataSegmentTransmission --> N_15DataSegmentTransmission_Node0 N_15DataSegmentTransmission_Node0 -- No --> E_15DataSegmentTransmission
File: GCSTONLY.cbl
GIVEN:
A data segment is ready for transmission with proper length set
WHEN:
The system is running in TPE environment
THEN:
- The system calls cims with isrt operation using mst-pcb
- Data segment, otherwise it uses kx2bmp method for transmission
β Consolidated Acceptance Criteria
- The batch of 22 records has been processed → the system resets the record counter to 0 to start a new batch
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_16RecordReset(["Start Step"])
E_16RecordReset(["End Step"])
N_16RecordReset_Node0{"The batch of 22 records has been
processed"}:::decision N_16RecordReset_Node0_action["The system resets the record
counter to 0 to start a new batch"]:::main N_16RecordReset_Node0 -- Yes --> N_16RecordReset_Node0_action N_16RecordReset_Node0_action --> E_16RecordReset S_16RecordReset --> N_16RecordReset_Node0 N_16RecordReset_Node0 -- No --> E_16RecordReset
processed"}:::decision N_16RecordReset_Node0_action["The system resets the record
counter to 0 to start a new batch"]:::main N_16RecordReset_Node0 -- Yes --> N_16RecordReset_Node0_action N_16RecordReset_Node0_action --> E_16RecordReset S_16RecordReset --> N_16RecordReset_Node0 N_16RecordReset_Node0 -- No --> E_16RecordReset
File: GCSTONLY.cbl
GIVEN:
Data segment transmission has been completed
WHEN:
The batch of 22 records has been processed
THEN:
The system resets the record counter to 0 to start a new batch
β Consolidated Acceptance Criteria
- The record counter is not equal to 0 → the system calculates segment length as record counter multiplied by 81 plus 4 bytes overhead
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_18DynamicSegmentLengthCalculation(["Start Step"])
E_18DynamicSegmentLengthCalculation(["End Step"])
N_18DynamicSegmentLengthCalculation_Node0{"The record counter is not equal to
0"}:::decision N_18DynamicSegmentLengthCalculation_Node0_action["The system calculates segment
length as record counter multiplied
by 81 plus 4 bytes overhead"]:::main N_18DynamicSegmentLengthCalculation_Node0 -- Yes --> N_18DynamicSegmentLengthCalculation_Node0_action N_18DynamicSegmentLengthCalculation_Node0_action --> E_18DynamicSegmentLengthCalculation S_18DynamicSegmentLengthCalculation --> N_18DynamicSegmentLengthCalculation_Node0 N_18DynamicSegmentLengthCalculation_Node0 -- No --> E_18DynamicSegmentLengthCalculation
0"}:::decision N_18DynamicSegmentLengthCalculation_Node0_action["The system calculates segment
length as record counter multiplied
by 81 plus 4 bytes overhead"]:::main N_18DynamicSegmentLengthCalculation_Node0 -- Yes --> N_18DynamicSegmentLengthCalculation_Node0_action N_18DynamicSegmentLengthCalculation_Node0_action --> E_18DynamicSegmentLengthCalculation S_18DynamicSegmentLengthCalculation --> N_18DynamicSegmentLengthCalculation_Node0 N_18DynamicSegmentLengthCalculation_Node0 -- No --> E_18DynamicSegmentLengthCalculation
File: GCSTONLY.cbl
Exclusion / Alternative Path
GIVEN:
Wrap processing is initiated and there are remaining records in the data segment
WHEN:
The record counter is not equal to 0
THEN:
The system calculates segment length as record counter multiplied by 81 plus 4 bytes overhead
β Consolidated Acceptance Criteria
- The first record flag equals 'Y' → the system sets first record flag to 'N' and performs first record processing, otherwise it performs subsequent record processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsFirstRecord(["Start Step"])
E_IsFirstRecord(["End Step"])
N_IsFirstRecord_Node0{"The first record flag equals Y"}:::decision
N_IsFirstRecord_Node0_action["The system sets first record flag
to N and performs first record
processing, otherwise it performs
subsequent record processing"]:::main N_IsFirstRecord_Node0 -- Yes --> N_IsFirstRecord_Node0_action N_IsFirstRecord_Node0_action --> E_IsFirstRecord S_IsFirstRecord --> N_IsFirstRecord_Node0 N_IsFirstRecord_Node0 -- No --> E_IsFirstRecord
to N and performs first record
processing, otherwise it performs
subsequent record processing"]:::main N_IsFirstRecord_Node0 -- Yes --> N_IsFirstRecord_Node0_action N_IsFirstRecord_Node0_action --> E_IsFirstRecord S_IsFirstRecord --> N_IsFirstRecord_Node0 N_IsFirstRecord_Node0 -- No --> E_IsFirstRecord
File: GCSTONLY.cbl
GIVEN:
A record is received for processing
WHEN:
The first record flag equals 'Y'
THEN:
The system sets first record flag to 'N' and performs first record processing, otherwise it performs subsequent record processing
β Consolidated Acceptance Criteria
- The environment parameter is retrieved and evaluated → the system sets the environment flag to TPE if the parameter is empty or low-value, otherwise sets it to BPE
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EnvironmentDetectionDetermineifprogramisrunninginTPEorBPEenvironmentbasedonenvironmentvariable(["Start Step"])
E_EnvironmentDetectionDetermineifprogramisrunninginTPEorBPEenvironmentbasedonenvironmentvariable(["End Step"])
N_EnvironmentDetectionDetermineifprogramisrunninginTPEorBPEenvironmentbasedonenvironmentvariable_Node0{"The environment parameter is
retrieved and evaluated"}:::decision N_EnvironmentDetectionDetermineifprogramisrunninginTPEorBPEenvironmentbasedonenvironmentvariable_Node0_action["The system sets the environment
flag to TPE if the parameter is
empty or low-value, otherwise sets
it to BPE"]:::main N_EnvironmentDetectionDetermineifprogramisrunninginTPEorBPEenvironmentbasedonenvironmentvariable_Node0 -- Yes --> N_EnvironmentDetectionDetermineifprogramisrunninginTPEorBPEenvironmentbasedonenvironmentvariable_Node0_action N_EnvironmentDetectionDetermineifprogramisrunninginTPEorBPEenvironmentbasedonenvironmentvariable_Node0_action --> E_EnvironmentDetectionDetermineifprogramisrunninginTPEorBPEenvironmentbasedonenvironmentvariable S_EnvironmentDetectionDetermineifprogramisrunninginTPEorBPEenvironmentbasedonenvironmentvariable --> N_EnvironmentDetectionDetermineifprogramisrunninginTPEorBPEenvironmentbasedonenvironmentvariable_Node0 N_EnvironmentDetectionDetermineifprogramisrunninginTPEorBPEenvironmentbasedonenvironmentvariable_Node0 -- No --> E_EnvironmentDetectionDetermineifprogramisrunninginTPEorBPEenvironmentbasedonenvironmentvariable
retrieved and evaluated"}:::decision N_EnvironmentDetectionDetermineifprogramisrunninginTPEorBPEenvironmentbasedonenvironmentvariable_Node0_action["The system sets the environment
flag to TPE if the parameter is
empty or low-value, otherwise sets
it to BPE"]:::main N_EnvironmentDetectionDetermineifprogramisrunninginTPEorBPEenvironmentbasedonenvironmentvariable_Node0 -- Yes --> N_EnvironmentDetectionDetermineifprogramisrunninginTPEorBPEenvironmentbasedonenvironmentvariable_Node0_action N_EnvironmentDetectionDetermineifprogramisrunninginTPEorBPEenvironmentbasedonenvironmentvariable_Node0_action --> E_EnvironmentDetectionDetermineifprogramisrunninginTPEorBPEenvironmentbasedonenvironmentvariable S_EnvironmentDetectionDetermineifprogramisrunninginTPEorBPEenvironmentbasedonenvironmentvariable --> N_EnvironmentDetectionDetermineifprogramisrunninginTPEorBPEenvironmentbasedonenvironmentvariable_Node0 N_EnvironmentDetectionDetermineifprogramisrunninginTPEorBPEenvironmentbasedonenvironmentvariable_Node0 -- No --> E_EnvironmentDetectionDetermineifprogramisrunninginTPEorBPEenvironmentbasedonenvironmentvariable
File: GCSTONLY.cbl
GIVEN:
The system is starting up and needs to determine its runtime environment
WHEN:
- The environment parameter is retrieved
- Evaluated
THEN:
The system sets the environment flag to TPE if the parameter is empty or low-value, otherwise sets it to BPE
β Consolidated Acceptance Criteria
- The environment detection process begins → the test parameter is set to low-value as the initial state
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeTestParameter(["Start Step"])
E_InitializeTestParameter(["End Step"])
N_InitializeTestParameter_Node0{"The environment detection process
begins"}:::decision N_InitializeTestParameter_Node0_action["The test parameter is set to
low-value as the initial state"]:::main N_InitializeTestParameter_Node0 -- Yes --> N_InitializeTestParameter_Node0_action N_InitializeTestParameter_Node0_action --> E_InitializeTestParameter S_InitializeTestParameter --> N_InitializeTestParameter_Node0 N_InitializeTestParameter_Node0 -- No --> E_InitializeTestParameter
begins"}:::decision N_InitializeTestParameter_Node0_action["The test parameter is set to
low-value as the initial state"]:::main N_InitializeTestParameter_Node0 -- Yes --> N_InitializeTestParameter_Node0_action N_InitializeTestParameter_Node0_action --> E_InitializeTestParameter S_InitializeTestParameter --> N_InitializeTestParameter_Node0 N_InitializeTestParameter_Node0 -- No --> E_InitializeTestParameter
File: GCSTONLY.cbl
GIVEN:
The system is preparing to check the environment configuration
WHEN:
The environment detection process begins
THEN:
The test parameter is set to low-value as the initial state
β Consolidated Acceptance Criteria
- The system needs to determine the runtime environment → the environment variable value is read and stored in the test parameter
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReadEnvironmentVariableValue(["Start Step"])
E_ReadEnvironmentVariableValue(["End Step"])
N_ReadEnvironmentVariableValue_Node0{"The system needs to determine the
runtime environment"}:::decision N_ReadEnvironmentVariableValue_Node0_action["The environment variable value is
read and stored in the test
parameter"]:::main N_ReadEnvironmentVariableValue_Node0 -- Yes --> N_ReadEnvironmentVariableValue_Node0_action N_ReadEnvironmentVariableValue_Node0_action --> E_ReadEnvironmentVariableValue S_ReadEnvironmentVariableValue --> N_ReadEnvironmentVariableValue_Node0 N_ReadEnvironmentVariableValue_Node0 -- No --> E_ReadEnvironmentVariableValue
runtime environment"}:::decision N_ReadEnvironmentVariableValue_Node0_action["The environment variable value is
read and stored in the test
parameter"]:::main N_ReadEnvironmentVariableValue_Node0 -- Yes --> N_ReadEnvironmentVariableValue_Node0_action N_ReadEnvironmentVariableValue_Node0_action --> E_ReadEnvironmentVariableValue S_ReadEnvironmentVariableValue --> N_ReadEnvironmentVariableValue_Node0 N_ReadEnvironmentVariableValue_Node0 -- No --> E_ReadEnvironmentVariableValue
File: GCSTONLY.cbl
GIVEN:
The test parameter has been initialized
WHEN:
The system needs to determine the runtime environment
THEN:
- The environment variable value is read
- Stored in the test parameter
β Consolidated Acceptance Criteria
- The environment variable is empty, spaces, or low-value → the system sets the runtime environment flag to TPE mode
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEnvironmentasTPE(["Start Step"])
E_SetEnvironmentasTPE(["End Step"])
N_SetEnvironmentasTPE_Node0{"The environment variable is empty,
spaces, or low-value"}:::decision N_SetEnvironmentasTPE_Node0_action["The system sets the runtime
environment flag to TPE mode"]:::main N_SetEnvironmentasTPE_Node0 -- Yes --> N_SetEnvironmentasTPE_Node0_action N_SetEnvironmentasTPE_Node0_action --> E_SetEnvironmentasTPE S_SetEnvironmentasTPE --> N_SetEnvironmentasTPE_Node0 N_SetEnvironmentasTPE_Node0 -- No --> E_SetEnvironmentasTPE
spaces, or low-value"}:::decision N_SetEnvironmentasTPE_Node0_action["The system sets the runtime
environment flag to TPE mode"]:::main N_SetEnvironmentasTPE_Node0 -- Yes --> N_SetEnvironmentasTPE_Node0_action N_SetEnvironmentasTPE_Node0_action --> E_SetEnvironmentasTPE S_SetEnvironmentasTPE --> N_SetEnvironmentasTPE_Node0 N_SetEnvironmentasTPE_Node0 -- No --> E_SetEnvironmentasTPE
File: GCSTONLY.cbl
GIVEN:
The environment variable has been read and evaluated
WHEN:
The environment variable is empty, spaces, or low-value
THEN:
The system sets the runtime environment flag to TPE mode
β Consolidated Acceptance Criteria
- The environment variable contains a value other than spaces or low-value → the system sets the runtime environment flag to BPE mode
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEnvironmentasBPE(["Start Step"])
E_SetEnvironmentasBPE(["End Step"])
N_SetEnvironmentasBPE_Node0{"The environment variable contains a
value other than spaces or low-value"}:::decision N_SetEnvironmentasBPE_Node0_action["The system sets the runtime
environment flag to BPE mode"]:::main N_SetEnvironmentasBPE_Node0 -- Yes --> N_SetEnvironmentasBPE_Node0_action N_SetEnvironmentasBPE_Node0_action --> E_SetEnvironmentasBPE S_SetEnvironmentasBPE --> N_SetEnvironmentasBPE_Node0 N_SetEnvironmentasBPE_Node0 -- No --> E_SetEnvironmentasBPE
value other than spaces or low-value"}:::decision N_SetEnvironmentasBPE_Node0_action["The system sets the runtime
environment flag to BPE mode"]:::main N_SetEnvironmentasBPE_Node0 -- Yes --> N_SetEnvironmentasBPE_Node0_action N_SetEnvironmentasBPE_Node0_action --> E_SetEnvironmentasBPE S_SetEnvironmentasBPE --> N_SetEnvironmentasBPE_Node0 N_SetEnvironmentasBPE_Node0 -- No --> E_SetEnvironmentasBPE
File: GCSTONLY.cbl
GIVEN:
The environment variable has been read and evaluated
WHEN:
The environment variable contains a value other than spaces or low-value
THEN:
The system sets the runtime environment flag to BPE mode
β Consolidated Acceptance Criteria
- The system checks if CC-USER-FUNC-CODE equals 'WRAP' → if the function code is 'WRAP', execute final segment processing and exit; otherwise continue to normal record processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifuserfunctioncodeisWRAPtodetermineprocessingpath(["Start Step"])
E_CheckifuserfunctioncodeisWRAPtodetermineprocessingpath(["End Step"])
N_CheckifuserfunctioncodeisWRAPtodetermineprocessingpath_Node0{"The system checks if
CC-USER-FUNC-CODE equals WRAP"}:::decision N_CheckifuserfunctioncodeisWRAPtodetermineprocessingpath_Node0_action["If the function code is WRAP ,
execute final segment processing and
exit otherwise continue to normal
record processing"]:::main N_CheckifuserfunctioncodeisWRAPtodetermineprocessingpath_Node0 -- Yes --> N_CheckifuserfunctioncodeisWRAPtodetermineprocessingpath_Node0_action N_CheckifuserfunctioncodeisWRAPtodetermineprocessingpath_Node0_action --> E_CheckifuserfunctioncodeisWRAPtodetermineprocessingpath S_CheckifuserfunctioncodeisWRAPtodetermineprocessingpath --> N_CheckifuserfunctioncodeisWRAPtodetermineprocessingpath_Node0 N_CheckifuserfunctioncodeisWRAPtodetermineprocessingpath_Node0 -- No --> E_CheckifuserfunctioncodeisWRAPtodetermineprocessingpath
CC-USER-FUNC-CODE equals WRAP"}:::decision N_CheckifuserfunctioncodeisWRAPtodetermineprocessingpath_Node0_action["If the function code is WRAP ,
execute final segment processing and
exit otherwise continue to normal
record processing"]:::main N_CheckifuserfunctioncodeisWRAPtodetermineprocessingpath_Node0 -- Yes --> N_CheckifuserfunctioncodeisWRAPtodetermineprocessingpath_Node0_action N_CheckifuserfunctioncodeisWRAPtodetermineprocessingpath_Node0_action --> E_CheckifuserfunctioncodeisWRAPtodetermineprocessingpath S_CheckifuserfunctioncodeisWRAPtodetermineprocessingpath --> N_CheckifuserfunctioncodeisWRAPtodetermineprocessingpath_Node0 N_CheckifuserfunctioncodeisWRAPtodetermineprocessingpath_Node0 -- No --> E_CheckifuserfunctioncodeisWRAPtodetermineprocessingpath
File: GCSTONLY.cbl
GIVEN:
A user function code is received in CC-USER-FUNC-CODE
WHEN:
The system checks if CC-USER-FUNC-CODE equals 'WRAP'
THEN:
- If the function code is 'wrap', execute final segment processing
- Exit; otherwise continue to normal record processing
β Consolidated Acceptance Criteria
- The system needs to finalize processing → execute the final segment processing routine (30-SEND-LAST-SEG)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExecuteFinalSegmentProcessing(["Start Step"])
E_ExecuteFinalSegmentProcessing(["End Step"])
N_ExecuteFinalSegmentProcessing_Node0{"The system needs to finalize
processing"}:::decision N_ExecuteFinalSegmentProcessing_Node0_action["Execute the final segment
processing routine 30-SEND-LAST-SEG"]:::main N_ExecuteFinalSegmentProcessing_Node0 -- Yes --> N_ExecuteFinalSegmentProcessing_Node0_action N_ExecuteFinalSegmentProcessing_Node0_action --> E_ExecuteFinalSegmentProcessing S_ExecuteFinalSegmentProcessing --> N_ExecuteFinalSegmentProcessing_Node0 N_ExecuteFinalSegmentProcessing_Node0 -- No --> E_ExecuteFinalSegmentProcessing
processing"}:::decision N_ExecuteFinalSegmentProcessing_Node0_action["Execute the final segment
processing routine 30-SEND-LAST-SEG"]:::main N_ExecuteFinalSegmentProcessing_Node0 -- Yes --> N_ExecuteFinalSegmentProcessing_Node0_action N_ExecuteFinalSegmentProcessing_Node0_action --> E_ExecuteFinalSegmentProcessing S_ExecuteFinalSegmentProcessing --> N_ExecuteFinalSegmentProcessing_Node0 N_ExecuteFinalSegmentProcessing_Node0 -- No --> E_ExecuteFinalSegmentProcessing
File: GCSTONLY.cbl
GIVEN:
The user function code is 'WRAP'
WHEN:
The system needs to finalize processing
THEN:
Execute the final segment processing routine (30-SEND-LAST-SEG)
β Consolidated Acceptance Criteria
- The system needs to prepare for the next processing session → set FIRST-REC flag to 'Y' to indicate the next record will be treated as the first record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ResetSessionFlagtoFirstRecord(["Start Step"])
E_ResetSessionFlagtoFirstRecord(["End Step"])
N_ResetSessionFlagtoFirstRecord_Node0{"The system needs to prepare for the
next processing session"}:::decision N_ResetSessionFlagtoFirstRecord_Node0_action["Set FIRST-REC flag to Y to indicate
the next record will be treated as
the first record"]:::main N_ResetSessionFlagtoFirstRecord_Node0 -- Yes --> N_ResetSessionFlagtoFirstRecord_Node0_action N_ResetSessionFlagtoFirstRecord_Node0_action --> E_ResetSessionFlagtoFirstRecord S_ResetSessionFlagtoFirstRecord --> N_ResetSessionFlagtoFirstRecord_Node0 N_ResetSessionFlagtoFirstRecord_Node0 -- No --> E_ResetSessionFlagtoFirstRecord
next processing session"}:::decision N_ResetSessionFlagtoFirstRecord_Node0_action["Set FIRST-REC flag to Y to indicate
the next record will be treated as
the first record"]:::main N_ResetSessionFlagtoFirstRecord_Node0 -- Yes --> N_ResetSessionFlagtoFirstRecord_Node0_action N_ResetSessionFlagtoFirstRecord_Node0_action --> E_ResetSessionFlagtoFirstRecord S_ResetSessionFlagtoFirstRecord --> N_ResetSessionFlagtoFirstRecord_Node0 N_ResetSessionFlagtoFirstRecord_Node0 -- No --> E_ResetSessionFlagtoFirstRecord
File: GCSTONLY.cbl
GIVEN:
WRAP function processing has been completed
WHEN:
The system needs to prepare for the next processing session
THEN:
Set FIRST-REC flag to 'Y' to indicate the next record will be treated as the first record
β Consolidated Acceptance Criteria
- All WRAP-related operations are finished → terminate the program execution using GOBACK
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExitProgramWRAPProcessingComplete(["Start Step"])
E_ExitProgramWRAPProcessingComplete(["End Step"])
N_ExitProgramWRAPProcessingComplete_Node0{"All WRAP-related operations are
finished"}:::decision N_ExitProgramWRAPProcessingComplete_Node0_action["Terminate the program execution
using GOBACK"]:::exclusion N_ExitProgramWRAPProcessingComplete_Node0 -- Yes -->|Alternative| N_ExitProgramWRAPProcessingComplete_Node0_action N_ExitProgramWRAPProcessingComplete_Node0_action --> E_ExitProgramWRAPProcessingComplete S_ExitProgramWRAPProcessingComplete --> N_ExitProgramWRAPProcessingComplete_Node0 N_ExitProgramWRAPProcessingComplete_Node0 -- No --> E_ExitProgramWRAPProcessingComplete
finished"}:::decision N_ExitProgramWRAPProcessingComplete_Node0_action["Terminate the program execution
using GOBACK"]:::exclusion N_ExitProgramWRAPProcessingComplete_Node0 -- Yes -->|Alternative| N_ExitProgramWRAPProcessingComplete_Node0_action N_ExitProgramWRAPProcessingComplete_Node0_action --> E_ExitProgramWRAPProcessingComplete S_ExitProgramWRAPProcessingComplete --> N_ExitProgramWRAPProcessingComplete_Node0 N_ExitProgramWRAPProcessingComplete_Node0 -- No --> E_ExitProgramWRAPProcessingComplete
File: GCSTONLY.cbl
GIVEN:
WRAP function processing and session flag reset have been completed
WHEN:
All WRAP-related operations are finished
THEN:
Terminate the program execution using GOBACK
β Consolidated Acceptance Criteria
- The first record processing begins → the first record flag is set to 'N' to indicate subsequent records should follow different processing logic
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFirstRecordFlagtoN(["Start Step"])
E_SetFirstRecordFlagtoN(["End Step"])
N_SetFirstRecordFlagtoN_Node0{"The first record processing begins"}:::decision
N_SetFirstRecordFlagtoN_Node0_action["The first record flag is set to N
to indicate subsequent records
should follow different processing
logic"]:::main N_SetFirstRecordFlagtoN_Node0 -- Yes --> N_SetFirstRecordFlagtoN_Node0_action N_SetFirstRecordFlagtoN_Node0_action --> E_SetFirstRecordFlagtoN S_SetFirstRecordFlagtoN --> N_SetFirstRecordFlagtoN_Node0 N_SetFirstRecordFlagtoN_Node0 -- No --> E_SetFirstRecordFlagtoN
to indicate subsequent records
should follow different processing
logic"]:::main N_SetFirstRecordFlagtoN_Node0 -- Yes --> N_SetFirstRecordFlagtoN_Node0_action N_SetFirstRecordFlagtoN_Node0_action --> E_SetFirstRecordFlagtoN S_SetFirstRecordFlagtoN --> N_SetFirstRecordFlagtoN_Node0 N_SetFirstRecordFlagtoN_Node0 -- No --> E_SetFirstRecordFlagtoN
File: GCSTONLY.cbl
GIVEN:
A record is identified as the first record in the processing session
WHEN:
The first record processing begins
THEN:
The first record flag is set to 'N' to indicate subsequent records should follow different processing logic
β Consolidated Acceptance Criteria
- The transaction code equals 'GCT026' → the origin terminal is set to 'ISTSS1', error terminal is set to 'QCSPS1', and destination terminal is stored in call letters position 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsTransactionCodeGCT026(["Start Step"])
E_IsTransactionCodeGCT026(["End Step"])
N_IsTransactionCodeGCT026_Node0{"The transaction code equals GCT026"}:::decision
N_IsTransactionCodeGCT026_Node0_action["The origin terminal is set to
ISTSS1 , error terminal is set to
QCSPS1 , and destination terminal is
stored in call letters position 1"]:::main N_IsTransactionCodeGCT026_Node0 -- Yes --> N_IsTransactionCodeGCT026_Node0_action N_IsTransactionCodeGCT026_Node0_action --> E_IsTransactionCodeGCT026 S_IsTransactionCodeGCT026 --> N_IsTransactionCodeGCT026_Node0 N_IsTransactionCodeGCT026_Node0 -- No --> E_IsTransactionCodeGCT026
ISTSS1 , error terminal is set to
QCSPS1 , and destination terminal is
stored in call letters position 1"]:::main N_IsTransactionCodeGCT026_Node0 -- Yes --> N_IsTransactionCodeGCT026_Node0_action N_IsTransactionCodeGCT026_Node0_action --> E_IsTransactionCodeGCT026 S_IsTransactionCodeGCT026 --> N_IsTransactionCodeGCT026_Node0 N_IsTransactionCodeGCT026_Node0 -- No --> E_IsTransactionCodeGCT026
File: GCSTONLY.cbl
GIVEN:
A transaction with transaction code is being processed
WHEN:
The transaction code equals 'GCT026'
THEN:
The origin terminal is set to 'ISTSS1', error terminal is set to 'QCSPS1', and destination terminal is stored in call letters position 1
β Consolidated Acceptance Criteria
- The transaction code is not equal to 'GCT026' → both origin terminal and error terminal are set to the same value as the destination terminal
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStandardTerminalValues(["Start Step"])
E_SetStandardTerminalValues(["End Step"])
N_SetStandardTerminalValues_Node0{"The transaction code is not equal
to GCT026"}:::decision N_SetStandardTerminalValues_Node0_action["Both origin terminal and error
terminal are set to the same value
as the destination terminal"]:::main N_SetStandardTerminalValues_Node0 -- Yes --> N_SetStandardTerminalValues_Node0_action N_SetStandardTerminalValues_Node0_action --> E_SetStandardTerminalValues S_SetStandardTerminalValues --> N_SetStandardTerminalValues_Node0 N_SetStandardTerminalValues_Node0 -- No --> E_SetStandardTerminalValues
to GCT026"}:::decision N_SetStandardTerminalValues_Node0_action["Both origin terminal and error
terminal are set to the same value
as the destination terminal"]:::main N_SetStandardTerminalValues_Node0 -- Yes --> N_SetStandardTerminalValues_Node0_action N_SetStandardTerminalValues_Node0_action --> E_SetStandardTerminalValues S_SetStandardTerminalValues --> N_SetStandardTerminalValues_Node0 N_SetStandardTerminalValues_Node0 -- No --> E_SetStandardTerminalValues
File: GCSTONLY.cbl
Exclusion / Alternative Path
GIVEN:
A transaction with transaction code is being processed
WHEN:
The transaction code is not equal to 'GCT026'
THEN:
- Both origin terminal
- Error terminal are set to the same value as the destination terminal
β Consolidated Acceptance Criteria
- Control processing initialization begins → flag bits are set to 64 and accept status is cleared to spaces
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeControlFlags(["Start Step"])
E_InitializeControlFlags(["End Step"])
N_InitializeControlFlags_Node0{"Control processing initialization
begins"}:::decision N_InitializeControlFlags_Node0_action["Flag bits are set to 64 and accept
status is cleared to spaces"]:::main N_InitializeControlFlags_Node0 -- Yes --> N_InitializeControlFlags_Node0_action N_InitializeControlFlags_Node0_action --> E_InitializeControlFlags S_InitializeControlFlags --> N_InitializeControlFlags_Node0 N_InitializeControlFlags_Node0 -- No --> E_InitializeControlFlags
begins"}:::decision N_InitializeControlFlags_Node0_action["Flag bits are set to 64 and accept
status is cleared to spaces"]:::main N_InitializeControlFlags_Node0 -- Yes --> N_InitializeControlFlags_Node0_action N_InitializeControlFlags_Node0_action --> E_InitializeControlFlags S_InitializeControlFlags --> N_InitializeControlFlags_Node0 N_InitializeControlFlags_Node0 -- No --> E_InitializeControlFlags
File: GCSTONLY.cbl
GIVEN:
Terminal assignments have been completed for the first record
WHEN:
Control processing initialization begins
THEN:
- Flag bits are set to 64
- Accept status is cleared to spaces
β Consolidated Acceptance Criteria
- Message header preparation begins → the transaction code is copied to the control segment origin transaction field and the input record is copied to the control segment menu header field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareMessageHeader(["Start Step"])
E_PrepareMessageHeader(["End Step"])
N_PrepareMessageHeader_Node0{"Message header preparation begins"}:::decision
N_PrepareMessageHeader_Node0_action["The transaction code is copied to
the control segment origin
transaction field and the input
record is copied to the control
segment menu header field"]:::main N_PrepareMessageHeader_Node0 -- Yes --> N_PrepareMessageHeader_Node0_action N_PrepareMessageHeader_Node0_action --> E_PrepareMessageHeader S_PrepareMessageHeader --> N_PrepareMessageHeader_Node0 N_PrepareMessageHeader_Node0 -- No --> E_PrepareMessageHeader
the control segment origin
transaction field and the input
record is copied to the control
segment menu header field"]:::main N_PrepareMessageHeader_Node0 -- Yes --> N_PrepareMessageHeader_Node0_action N_PrepareMessageHeader_Node0_action --> E_PrepareMessageHeader S_PrepareMessageHeader --> N_PrepareMessageHeader_Node0 N_PrepareMessageHeader_Node0 -- No --> E_PrepareMessageHeader
File: GCSTONLY.cbl
GIVEN:
Control flags have been initialized
WHEN:
Message header preparation begins
THEN:
- The transaction code is copied to the control segment origin transaction field
- The input record is copied to the control segment menu header field
β Consolidated Acceptance Criteria
- The transaction code equals 'GCT026' → the flag byte in the control segment is set to low values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetLowValuesinFlagByte(["Start Step"])
E_SetLowValuesinFlagByte(["End Step"])
N_SetLowValuesinFlagByte_Node0{"The transaction code equals GCT026"}:::decision
N_SetLowValuesinFlagByte_Node0_action["The flag byte in the control
segment is set to low values"]:::main N_SetLowValuesinFlagByte_Node0 -- Yes --> N_SetLowValuesinFlagByte_Node0_action N_SetLowValuesinFlagByte_Node0_action --> E_SetLowValuesinFlagByte S_SetLowValuesinFlagByte --> N_SetLowValuesinFlagByte_Node0 N_SetLowValuesinFlagByte_Node0 -- No --> E_SetLowValuesinFlagByte
segment is set to low values"]:::main N_SetLowValuesinFlagByte_Node0 -- Yes --> N_SetLowValuesinFlagByte_Node0_action N_SetLowValuesinFlagByte_Node0_action --> E_SetLowValuesinFlagByte S_SetLowValuesinFlagByte --> N_SetLowValuesinFlagByte_Node0 N_SetLowValuesinFlagByte_Node0 -- No --> E_SetLowValuesinFlagByte
File: GCSTONLY.cbl
GIVEN:
Message header has been prepared for a transaction
WHEN:
The transaction code equals 'GCT026'
THEN:
The flag byte in the control segment is set to low values
β Consolidated Acceptance Criteria
- The transaction code is not equal to 'GCT026' → the flag byte in the control segment is set to OLV indicator value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetOLVIndicatorinFlagByte(["Start Step"])
E_SetOLVIndicatorinFlagByte(["End Step"])
N_SetOLVIndicatorinFlagByte_Node0{"The transaction code is not equal
to GCT026"}:::decision N_SetOLVIndicatorinFlagByte_Node0_action["The flag byte in the control
segment is set to OLV indicator
value"]:::main N_SetOLVIndicatorinFlagByte_Node0 -- Yes --> N_SetOLVIndicatorinFlagByte_Node0_action N_SetOLVIndicatorinFlagByte_Node0_action --> E_SetOLVIndicatorinFlagByte S_SetOLVIndicatorinFlagByte --> N_SetOLVIndicatorinFlagByte_Node0 N_SetOLVIndicatorinFlagByte_Node0 -- No --> E_SetOLVIndicatorinFlagByte
to GCT026"}:::decision N_SetOLVIndicatorinFlagByte_Node0_action["The flag byte in the control
segment is set to OLV indicator
value"]:::main N_SetOLVIndicatorinFlagByte_Node0 -- Yes --> N_SetOLVIndicatorinFlagByte_Node0_action N_SetOLVIndicatorinFlagByte_Node0_action --> E_SetOLVIndicatorinFlagByte S_SetOLVIndicatorinFlagByte --> N_SetOLVIndicatorinFlagByte_Node0 N_SetOLVIndicatorinFlagByte_Node0 -- No --> E_SetOLVIndicatorinFlagByte
File: GCSTONLY.cbl
Exclusion / Alternative Path
GIVEN:
Message header has been prepared for a transaction
WHEN:
The transaction code is not equal to 'GCT026'
THEN:
The flag byte in the control segment is set to OLV indicator value
β Consolidated Acceptance Criteria
- Control segment transmission is initiated → the control segment is sent to the processing queue using the appropriate method for the current runtime environment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendControlSegmenttoQueue(["Start Step"])
E_SendControlSegmenttoQueue(["End Step"])
N_SendControlSegmenttoQueue_Node0{"Control segment transmission is
initiated"}:::decision N_SendControlSegmenttoQueue_Node0_action["The control segment is sent to the
processing queue using the
appropriate method for the current
runtime environment"]:::main N_SendControlSegmenttoQueue_Node0 -- Yes --> N_SendControlSegmenttoQueue_Node0_action N_SendControlSegmenttoQueue_Node0_action --> E_SendControlSegmenttoQueue S_SendControlSegmenttoQueue --> N_SendControlSegmenttoQueue_Node0 N_SendControlSegmenttoQueue_Node0 -- No --> E_SendControlSegmenttoQueue
initiated"}:::decision N_SendControlSegmenttoQueue_Node0_action["The control segment is sent to the
processing queue using the
appropriate method for the current
runtime environment"]:::main N_SendControlSegmenttoQueue_Node0 -- Yes --> N_SendControlSegmenttoQueue_Node0_action N_SendControlSegmenttoQueue_Node0_action --> E_SendControlSegmenttoQueue S_SendControlSegmenttoQueue --> N_SendControlSegmenttoQueue_Node0 N_SendControlSegmenttoQueue_Node0 -- No --> E_SendControlSegmenttoQueue
File: GCSTONLY.cbl
GIVEN:
Control segment has been fully prepared with transaction data and flags
WHEN:
Control segment transmission is initiated
THEN:
The control segment is sent to the processing queue using the appropriate method for the current runtime environment
β Consolidated Acceptance Criteria
- Call letters processing initialization begins → call letters buffer is cleared to spaces and processing counter J is set to 1
- Call letters processing begins → the call letters output area is cleared and position counter is set to 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeCallLettersProcessing(["Start Step"])
E_InitializeCallLettersProcessing(["End Step"])
N_InitializeCallLettersProcessing_Node0{"Call letters processing
initialization begins"}:::decision N_InitializeCallLettersProcessing_Node0_action["Call letters buffer is cleared to
spaces and processing counter J is
set to 1"]:::main N_InitializeCallLettersProcessing_Node0 -- Yes --> N_InitializeCallLettersProcessing_Node0_action N_InitializeCallLettersProcessing_Node0_action --> E_InitializeCallLettersProcessing S_InitializeCallLettersProcessing --> N_InitializeCallLettersProcessing_Node0 N_InitializeCallLettersProcessing_Node1{"Call letters processing begins"}:::decision N_InitializeCallLettersProcessing_Node1_action["The call letters output area is
cleared and position counter is set
to 1"]:::main N_InitializeCallLettersProcessing_Node1 -- Yes --> N_InitializeCallLettersProcessing_Node1_action N_InitializeCallLettersProcessing_Node1_action --> E_InitializeCallLettersProcessing N_InitializeCallLettersProcessing_Node0 -- No --> N_InitializeCallLettersProcessing_Node1 N_InitializeCallLettersProcessing_Node1 -- No --> E_InitializeCallLettersProcessing
initialization begins"}:::decision N_InitializeCallLettersProcessing_Node0_action["Call letters buffer is cleared to
spaces and processing counter J is
set to 1"]:::main N_InitializeCallLettersProcessing_Node0 -- Yes --> N_InitializeCallLettersProcessing_Node0_action N_InitializeCallLettersProcessing_Node0_action --> E_InitializeCallLettersProcessing S_InitializeCallLettersProcessing --> N_InitializeCallLettersProcessing_Node0 N_InitializeCallLettersProcessing_Node1{"Call letters processing begins"}:::decision N_InitializeCallLettersProcessing_Node1_action["The call letters output area is
cleared and position counter is set
to 1"]:::main N_InitializeCallLettersProcessing_Node1 -- Yes --> N_InitializeCallLettersProcessing_Node1_action N_InitializeCallLettersProcessing_Node1_action --> E_InitializeCallLettersProcessing N_InitializeCallLettersProcessing_Node0 -- No --> N_InitializeCallLettersProcessing_Node1 N_InitializeCallLettersProcessing_Node1 -- No --> E_InitializeCallLettersProcessing
File: GCSTONLY.cbl
GIVEN:
Control segment has been sent to the queue
WHEN:
Call letters processing initialization begins
THEN:
- Call letters buffer is cleared to spaces
- Processing counter j is set to 1
File: GCSTONLY.cbl
GIVEN:
The system needs to process call letters for duplication
WHEN:
Call letters processing begins
THEN:
- The call letters output area is cleared
- Position counter is set to 1
β Consolidated Acceptance Criteria
- Call letters copying is performed → the call letters at position J are copied to both call letters position 1-2 and call letters position 3-4 at the same index, and counter J is incremented by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyCallLettersData(["Start Step"])
E_CopyCallLettersData(["End Step"])
N_CopyCallLettersData_Node0{"Call letters copying is performed"}:::decision
N_CopyCallLettersData_Node0_action["The call letters at position J are
copied to both call letters position
1-2 and call letters position 3-4 at
the same index, and counter J is
incremented by 1"]:::main N_CopyCallLettersData_Node0 -- Yes --> N_CopyCallLettersData_Node0_action N_CopyCallLettersData_Node0_action --> E_CopyCallLettersData S_CopyCallLettersData --> N_CopyCallLettersData_Node0 N_CopyCallLettersData_Node0 -- No --> E_CopyCallLettersData
copied to both call letters position
1-2 and call letters position 3-4 at
the same index, and counter J is
incremented by 1"]:::main N_CopyCallLettersData_Node0 -- Yes --> N_CopyCallLettersData_Node0_action N_CopyCallLettersData_Node0_action --> E_CopyCallLettersData S_CopyCallLettersData --> N_CopyCallLettersData_Node0 N_CopyCallLettersData_Node0 -- No --> E_CopyCallLettersData
File: GCSTONLY.cbl
GIVEN:
Call letters processing has been initialized with counter J set to current position
WHEN:
Call letters copying is performed
THEN:
- The call letters at position j are copied to both call letters position 1-2
- Call letters position 3-4 at the same index, and counter j is incremented by 1
β Consolidated Acceptance Criteria
- Continuation check is performed → processing continues if counter J is less than 13 AND the call letters at position J is not equal to space, otherwise processing moves to the next step
- If continuation conditions → processing continues if position J is less than 13 AND the call letter at position J is not a space, otherwise processing stops
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreCallLetterstoProcess(["Start Step"])
E_MoreCallLetterstoProcess(["End Step"])
N_MoreCallLetterstoProcess_Node0{"Continuation check is performed"}:::decision
N_MoreCallLetterstoProcess_Node0_action["Processing continues if counter J
is less than 13 AND the call letters
at position J is not equal to space,
otherwise processing moves to the
next step"]:::main N_MoreCallLetterstoProcess_Node0 -- Yes --> N_MoreCallLetterstoProcess_Node0_action N_MoreCallLetterstoProcess_Node0_action --> E_MoreCallLetterstoProcess S_MoreCallLetterstoProcess --> N_MoreCallLetterstoProcess_Node0 N_MoreCallLetterstoProcess_Node1{"The system evaluates continuation
conditions"}:::decision N_MoreCallLetterstoProcess_Node1_action["Processing continues if position J
is less than 13 AND the call letter
at position J is not a space,
otherwise processing stops"]:::main N_MoreCallLetterstoProcess_Node1 -- Yes --> N_MoreCallLetterstoProcess_Node1_action N_MoreCallLetterstoProcess_Node1_action --> E_MoreCallLetterstoProcess N_MoreCallLetterstoProcess_Node0 -- No --> N_MoreCallLetterstoProcess_Node1 N_MoreCallLetterstoProcess_Node1 -- No --> E_MoreCallLetterstoProcess
is less than 13 AND the call letters
at position J is not equal to space,
otherwise processing moves to the
next step"]:::main N_MoreCallLetterstoProcess_Node0 -- Yes --> N_MoreCallLetterstoProcess_Node0_action N_MoreCallLetterstoProcess_Node0_action --> E_MoreCallLetterstoProcess S_MoreCallLetterstoProcess --> N_MoreCallLetterstoProcess_Node0 N_MoreCallLetterstoProcess_Node1{"The system evaluates continuation
conditions"}:::decision N_MoreCallLetterstoProcess_Node1_action["Processing continues if position J
is less than 13 AND the call letter
at position J is not a space,
otherwise processing stops"]:::main N_MoreCallLetterstoProcess_Node1 -- Yes --> N_MoreCallLetterstoProcess_Node1_action N_MoreCallLetterstoProcess_Node1_action --> E_MoreCallLetterstoProcess N_MoreCallLetterstoProcess_Node0 -- No --> N_MoreCallLetterstoProcess_Node1 N_MoreCallLetterstoProcess_Node1 -- No --> E_MoreCallLetterstoProcess
File: GCSTONLY.cbl
GIVEN:
Call letters data has been copied and counter J has been incremented
WHEN:
Continuation check is performed
THEN:
- Processing continues if counter j is less than 13
- The call letters at position j is not equal to space, otherwise processing moves to the next step
File: GCSTONLY.cbl
GIVEN:
The system is processing call letters with current position J
WHEN:
The system evaluates continuation conditions
THEN:
- Processing continues if position j is less than 13
- The call letter at position j is not a space, otherwise processing stops
β Consolidated Acceptance Criteria
- Output record initialization begins → output record is cleared to spaces and call letters buffer is moved to the first position of the data segment OLV record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeOutputRecordStructure(["Start Step"])
E_InitializeOutputRecordStructure(["End Step"])
N_InitializeOutputRecordStructure_Node0{"Output record initialization begins"}:::decision
N_InitializeOutputRecordStructure_Node0_action["Output record is cleared to spaces
and call letters buffer is moved to
the first position of the data
segment OLV record"]:::main N_InitializeOutputRecordStructure_Node0 -- Yes --> N_InitializeOutputRecordStructure_Node0_action N_InitializeOutputRecordStructure_Node0_action --> E_InitializeOutputRecordStructure S_InitializeOutputRecordStructure --> N_InitializeOutputRecordStructure_Node0 N_InitializeOutputRecordStructure_Node0 -- No --> E_InitializeOutputRecordStructure
and call letters buffer is moved to
the first position of the data
segment OLV record"]:::main N_InitializeOutputRecordStructure_Node0 -- Yes --> N_InitializeOutputRecordStructure_Node0_action N_InitializeOutputRecordStructure_Node0_action --> E_InitializeOutputRecordStructure S_InitializeOutputRecordStructure --> N_InitializeOutputRecordStructure_Node0 N_InitializeOutputRecordStructure_Node0 -- No --> E_InitializeOutputRecordStructure
File: GCSTONLY.cbl
GIVEN:
Call letters processing has been completed
WHEN:
Output record initialization begins
THEN:
- Output record is cleared to spaces
- Call letters buffer is moved to the first position of the data segment olv record
β Consolidated Acceptance Criteria
- Space replacement processing occurs → the first space character in the data segment OLV record at position 1 is replaced with '#'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReplaceFirstSpacewith(["Start Step"])
E_ReplaceFirstSpacewith(["End Step"])
N_ReplaceFirstSpacewith_Node0{"Space replacement processing occurs"}:::decision
N_ReplaceFirstSpacewith_Node0_action["The first space character in the
data segment OLV record at position
1 is replaced with"]:::main N_ReplaceFirstSpacewith_Node0 -- Yes --> N_ReplaceFirstSpacewith_Node0_action N_ReplaceFirstSpacewith_Node0_action --> E_ReplaceFirstSpacewith S_ReplaceFirstSpacewith --> N_ReplaceFirstSpacewith_Node0 N_ReplaceFirstSpacewith_Node0 -- No --> E_ReplaceFirstSpacewith
data segment OLV record at position
1 is replaced with"]:::main N_ReplaceFirstSpacewith_Node0 -- Yes --> N_ReplaceFirstSpacewith_Node0_action N_ReplaceFirstSpacewith_Node0_action --> E_ReplaceFirstSpacewith S_ReplaceFirstSpacewith --> N_ReplaceFirstSpacewith_Node0 N_ReplaceFirstSpacewith_Node0 -- No --> E_ReplaceFirstSpacewith
File: GCSTONLY.cbl
GIVEN:
Call letters have been moved to the first data segment position
WHEN:
Space replacement processing occurs
THEN:
The first space character in the data segment OLV record at position 1 is replaced with '#'
β Consolidated Acceptance Criteria
- Input record storage begins → the input record is moved to the second position of the data segment OLV record and counter I is set to 2
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreInputRecordinSecondPosition(["Start Step"])
E_StoreInputRecordinSecondPosition(["End Step"])
N_StoreInputRecordinSecondPosition_Node0{"Input record storage begins"}:::decision
N_StoreInputRecordinSecondPosition_Node0_action["The input record is moved to the
second position of the data segment
OLV record and counter I is set to 2"]:::main N_StoreInputRecordinSecondPosition_Node0 -- Yes --> N_StoreInputRecordinSecondPosition_Node0_action N_StoreInputRecordinSecondPosition_Node0_action --> E_StoreInputRecordinSecondPosition S_StoreInputRecordinSecondPosition --> N_StoreInputRecordinSecondPosition_Node0 N_StoreInputRecordinSecondPosition_Node0 -- No --> E_StoreInputRecordinSecondPosition
second position of the data segment
OLV record and counter I is set to 2"]:::main N_StoreInputRecordinSecondPosition_Node0 -- Yes --> N_StoreInputRecordinSecondPosition_Node0_action N_StoreInputRecordinSecondPosition_Node0_action --> E_StoreInputRecordinSecondPosition S_StoreInputRecordinSecondPosition --> N_StoreInputRecordinSecondPosition_Node0 N_StoreInputRecordinSecondPosition_Node0 -- No --> E_StoreInputRecordinSecondPosition
File: GCSTONLY.cbl
GIVEN:
Call letters formatting has been completed
WHEN:
Input record storage begins
THEN:
- The input record is moved to the second position of the data segment olv record
- Counter i is set to 2
β Consolidated Acceptance Criteria
- The FROMBASE service is called with IO-PCB database control block and EIGHT as parameter to retrieve ORIG-LTERM data → the originating terminal information is successfully retrieved and made available for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallFROMBASEwithIOPCB(["Start Step"])
E_CallFROMBASEwithIOPCB(["End Step"])
N_CallFROMBASEwithIOPCB_Node0{"The FROMBASE service is called with
IO-PCB database control block and
EIGHT as parameter to retrieve
ORIG-LTERM data"}:::decision N_CallFROMBASEwithIOPCB_Node0_action["The originating terminal
information is successfully
retrieved and made available for
further processing"]:::main N_CallFROMBASEwithIOPCB_Node0 -- Yes --> N_CallFROMBASEwithIOPCB_Node0_action N_CallFROMBASEwithIOPCB_Node0_action --> E_CallFROMBASEwithIOPCB S_CallFROMBASEwithIOPCB --> N_CallFROMBASEwithIOPCB_Node0 N_CallFROMBASEwithIOPCB_Node0 -- No --> E_CallFROMBASEwithIOPCB
IO-PCB database control block and
EIGHT as parameter to retrieve
ORIG-LTERM data"}:::decision N_CallFROMBASEwithIOPCB_Node0_action["The originating terminal
information is successfully
retrieved and made available for
further processing"]:::main N_CallFROMBASEwithIOPCB_Node0 -- Yes --> N_CallFROMBASEwithIOPCB_Node0_action N_CallFROMBASEwithIOPCB_Node0_action --> E_CallFROMBASEwithIOPCB S_CallFROMBASEwithIOPCB --> N_CallFROMBASEwithIOPCB_Node0 N_CallFROMBASEwithIOPCB_Node0 -- No --> E_CallFROMBASEwithIOPCB
File: GCSTONLY.cbl
GIVEN:
The system needs to obtain terminal information
WHEN:
- The frombase service is called with io-pcb database control block
- Eight as parameter to retrieve orig-lterm data
THEN:
- The originating terminal information is successfully retrieved
- Made available for further processing
β Consolidated Acceptance Criteria
- The system processes the transaction → the transaction code from the communication control block is moved to the original transaction field of the control segment
- Control segment is being prepared → transaction code is moved to original transaction field and input record is moved to menu header field of control segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveTransactionCodetoControlSegment(["Start Step"])
E_MoveTransactionCodetoControlSegment(["End Step"])
N_MoveTransactionCodetoControlSegment_Node0{"The system processes the
transaction"}:::decision N_MoveTransactionCodetoControlSegment_Node0_action["The transaction code from the
communication control block is moved
to the original transaction field of
the control segment"]:::main N_MoveTransactionCodetoControlSegment_Node0 -- Yes --> N_MoveTransactionCodetoControlSegment_Node0_action N_MoveTransactionCodetoControlSegment_Node0_action --> E_MoveTransactionCodetoControlSegment S_MoveTransactionCodetoControlSegment --> N_MoveTransactionCodetoControlSegment_Node0 N_MoveTransactionCodetoControlSegment_Node1{"Control segment is being prepared"}:::decision N_MoveTransactionCodetoControlSegment_Node1_action["Transaction code is moved to
original transaction field and input
record is moved to menu header field
of control segment"]:::main N_MoveTransactionCodetoControlSegment_Node1 -- Yes --> N_MoveTransactionCodetoControlSegment_Node1_action N_MoveTransactionCodetoControlSegment_Node1_action --> E_MoveTransactionCodetoControlSegment N_MoveTransactionCodetoControlSegment_Node0 -- No --> N_MoveTransactionCodetoControlSegment_Node1 N_MoveTransactionCodetoControlSegment_Node1 -- No --> E_MoveTransactionCodetoControlSegment
transaction"}:::decision N_MoveTransactionCodetoControlSegment_Node0_action["The transaction code from the
communication control block is moved
to the original transaction field of
the control segment"]:::main N_MoveTransactionCodetoControlSegment_Node0 -- Yes --> N_MoveTransactionCodetoControlSegment_Node0_action N_MoveTransactionCodetoControlSegment_Node0_action --> E_MoveTransactionCodetoControlSegment S_MoveTransactionCodetoControlSegment --> N_MoveTransactionCodetoControlSegment_Node0 N_MoveTransactionCodetoControlSegment_Node1{"Control segment is being prepared"}:::decision N_MoveTransactionCodetoControlSegment_Node1_action["Transaction code is moved to
original transaction field and input
record is moved to menu header field
of control segment"]:::main N_MoveTransactionCodetoControlSegment_Node1 -- Yes --> N_MoveTransactionCodetoControlSegment_Node1_action N_MoveTransactionCodetoControlSegment_Node1_action --> E_MoveTransactionCodetoControlSegment N_MoveTransactionCodetoControlSegment_Node0 -- No --> N_MoveTransactionCodetoControlSegment_Node1 N_MoveTransactionCodetoControlSegment_Node1 -- No --> E_MoveTransactionCodetoControlSegment
File: GCSTONLY.cbl
GIVEN:
A control segment needs to be prepared for processing
WHEN:
The system processes the transaction
THEN:
The transaction code from the communication control block is moved to the original transaction field of the control segment
File: GCSTONLY.cbl
GIVEN:
Transaction code and input record are available
WHEN:
Control segment is being prepared
THEN:
- Transaction code is moved to original transaction field
- Input record is moved to menu header field of control segment
β Consolidated Acceptance Criteria
- The control segment is being prepared → the input record is moved to the menu header field of the control segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveInputRecordtoMenuHeader(["Start Step"])
E_MoveInputRecordtoMenuHeader(["End Step"])
N_MoveInputRecordtoMenuHeader_Node0{"The control segment is being
prepared"}:::decision N_MoveInputRecordtoMenuHeader_Node0_action["The input record is moved to the
menu header field of the control
segment"]:::main N_MoveInputRecordtoMenuHeader_Node0 -- Yes --> N_MoveInputRecordtoMenuHeader_Node0_action N_MoveInputRecordtoMenuHeader_Node0_action --> E_MoveInputRecordtoMenuHeader S_MoveInputRecordtoMenuHeader --> N_MoveInputRecordtoMenuHeader_Node0 N_MoveInputRecordtoMenuHeader_Node0 -- No --> E_MoveInputRecordtoMenuHeader
prepared"}:::decision N_MoveInputRecordtoMenuHeader_Node0_action["The input record is moved to the
menu header field of the control
segment"]:::main N_MoveInputRecordtoMenuHeader_Node0 -- Yes --> N_MoveInputRecordtoMenuHeader_Node0_action N_MoveInputRecordtoMenuHeader_Node0_action --> E_MoveInputRecordtoMenuHeader S_MoveInputRecordtoMenuHeader --> N_MoveInputRecordtoMenuHeader_Node0 N_MoveInputRecordtoMenuHeader_Node0 -- No --> E_MoveInputRecordtoMenuHeader
File: GCSTONLY.cbl
GIVEN:
An input record is available for processing
WHEN:
The control segment is being prepared
THEN:
The input record is moved to the menu header field of the control segment
β Consolidated Acceptance Criteria
- The transaction code is 'GCT026' → the flag byte of the control segment is set to low values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFlagBytetoLOWVALUES(["Start Step"])
E_SetFlagBytetoLOWVALUES(["End Step"])
N_SetFlagBytetoLOWVALUES_Node0{"The transaction code is GCT026"}:::decision
N_SetFlagBytetoLOWVALUES_Node0_action["The flag byte of the control
segment is set to low values"]:::main N_SetFlagBytetoLOWVALUES_Node0 -- Yes --> N_SetFlagBytetoLOWVALUES_Node0_action N_SetFlagBytetoLOWVALUES_Node0_action --> E_SetFlagBytetoLOWVALUES S_SetFlagBytetoLOWVALUES --> N_SetFlagBytetoLOWVALUES_Node0 N_SetFlagBytetoLOWVALUES_Node0 -- No --> E_SetFlagBytetoLOWVALUES
segment is set to low values"]:::main N_SetFlagBytetoLOWVALUES_Node0 -- Yes --> N_SetFlagBytetoLOWVALUES_Node0_action N_SetFlagBytetoLOWVALUES_Node0_action --> E_SetFlagBytetoLOWVALUES S_SetFlagBytetoLOWVALUES --> N_SetFlagBytetoLOWVALUES_Node0 N_SetFlagBytetoLOWVALUES_Node0 -- No --> E_SetFlagBytetoLOWVALUES
File: GCSTONLY.cbl
GIVEN:
A control segment is being configured
WHEN:
The transaction code is 'GCT026'
THEN:
The flag byte of the control segment is set to low values
β Consolidated Acceptance Criteria
- The transaction code is not 'GCT026' → the flag byte of the control segment is set to OLV indicator
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFlagBytetoOLVIND(["Start Step"])
E_SetFlagBytetoOLVIND(["End Step"])
N_SetFlagBytetoOLVIND_Node0{"The transaction code is not GCT026"}:::decision
N_SetFlagBytetoOLVIND_Node0_action["The flag byte of the control
segment is set to OLV indicator"]:::main N_SetFlagBytetoOLVIND_Node0 -- Yes --> N_SetFlagBytetoOLVIND_Node0_action N_SetFlagBytetoOLVIND_Node0_action --> E_SetFlagBytetoOLVIND S_SetFlagBytetoOLVIND --> N_SetFlagBytetoOLVIND_Node0 N_SetFlagBytetoOLVIND_Node0 -- No --> E_SetFlagBytetoOLVIND
segment is set to OLV indicator"]:::main N_SetFlagBytetoOLVIND_Node0 -- Yes --> N_SetFlagBytetoOLVIND_Node0_action N_SetFlagBytetoOLVIND_Node0_action --> E_SetFlagBytetoOLVIND S_SetFlagBytetoOLVIND --> N_SetFlagBytetoOLVIND_Node0 N_SetFlagBytetoOLVIND_Node0 -- No --> E_SetFlagBytetoOLVIND
File: GCSTONLY.cbl
Exclusion / Alternative Path
GIVEN:
A control segment is being configured
WHEN:
The transaction code is not 'GCT026'
THEN:
The flag byte of the control segment is set to OLV indicator
β Consolidated Acceptance Criteria
- The control segment needs to be transmitted → the system calls CIMS with purge operation to send the control segment
- Control segment needs to be sent → cIMS program is called with PURG operation using CCCOM, MST-PCB, and CONTROL-SEG parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendControlSegmentviaCIMS(["Start Step"])
E_SendControlSegmentviaCIMS(["End Step"])
N_SendControlSegmentviaCIMS_Node0{"The control segment needs to be
transmitted"}:::decision N_SendControlSegmentviaCIMS_Node0_action["The system calls CIMS with purge
operation to send the control
segment"]:::main N_SendControlSegmentviaCIMS_Node0 -- Yes --> N_SendControlSegmentviaCIMS_Node0_action N_SendControlSegmentviaCIMS_Node0_action --> E_SendControlSegmentviaCIMS S_SendControlSegmentviaCIMS --> N_SendControlSegmentviaCIMS_Node0 N_SendControlSegmentviaCIMS_Node1{"Control segment needs to be sent"}:::decision N_SendControlSegmentviaCIMS_Node1_action["CIMS program is called with PURG
operation using CCCOM, MST-PCB, and
CONTROL-SEG parameters"]:::main N_SendControlSegmentviaCIMS_Node1 -- Yes --> N_SendControlSegmentviaCIMS_Node1_action N_SendControlSegmentviaCIMS_Node1_action --> E_SendControlSegmentviaCIMS N_SendControlSegmentviaCIMS_Node0 -- No --> N_SendControlSegmentviaCIMS_Node1 N_SendControlSegmentviaCIMS_Node1 -- No --> E_SendControlSegmentviaCIMS
transmitted"}:::decision N_SendControlSegmentviaCIMS_Node0_action["The system calls CIMS with purge
operation to send the control
segment"]:::main N_SendControlSegmentviaCIMS_Node0 -- Yes --> N_SendControlSegmentviaCIMS_Node0_action N_SendControlSegmentviaCIMS_Node0_action --> E_SendControlSegmentviaCIMS S_SendControlSegmentviaCIMS --> N_SendControlSegmentviaCIMS_Node0 N_SendControlSegmentviaCIMS_Node1{"Control segment needs to be sent"}:::decision N_SendControlSegmentviaCIMS_Node1_action["CIMS program is called with PURG
operation using CCCOM, MST-PCB, and
CONTROL-SEG parameters"]:::main N_SendControlSegmentviaCIMS_Node1 -- Yes --> N_SendControlSegmentviaCIMS_Node1_action N_SendControlSegmentviaCIMS_Node1_action --> E_SendControlSegmentviaCIMS N_SendControlSegmentviaCIMS_Node0 -- No --> N_SendControlSegmentviaCIMS_Node1 N_SendControlSegmentviaCIMS_Node1 -- No --> E_SendControlSegmentviaCIMS
File: GCSTONLY.cbl
GIVEN:
The system is running in TPE environment and a control segment is ready
WHEN:
The control segment needs to be transmitted
THEN:
The system calls CIMS with purge operation to send the control segment
File: GCSTONLY.cbl
GIVEN:
System is running in TPE environment and control segment is prepared
WHEN:
Control segment needs to be sent
THEN:
CIMS program is called with PURG operation using CCCOM, MST-PCB, and CONTROL-SEG parameters
β Consolidated Acceptance Criteria
- The control segment needs to be transmitted → the system initializes timestamp fields to low values, calculates segment length, and moves the control segment to KX2BMP area
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareKX2BMPParameters(["Start Step"])
E_PrepareKX2BMPParameters(["End Step"])
N_PrepareKX2BMPParameters_Node0{"The control segment needs to be
transmitted"}:::decision N_PrepareKX2BMPParameters_Node0_action["The system initializes timestamp
fields to low values, calculates
segment length, and moves the
control segment to KX2BMP area"]:::main N_PrepareKX2BMPParameters_Node0 -- Yes --> N_PrepareKX2BMPParameters_Node0_action N_PrepareKX2BMPParameters_Node0_action --> E_PrepareKX2BMPParameters S_PrepareKX2BMPParameters --> N_PrepareKX2BMPParameters_Node0 N_PrepareKX2BMPParameters_Node0 -- No --> E_PrepareKX2BMPParameters
transmitted"}:::decision N_PrepareKX2BMPParameters_Node0_action["The system initializes timestamp
fields to low values, calculates
segment length, and moves the
control segment to KX2BMP area"]:::main N_PrepareKX2BMPParameters_Node0 -- Yes --> N_PrepareKX2BMPParameters_Node0_action N_PrepareKX2BMPParameters_Node0_action --> E_PrepareKX2BMPParameters S_PrepareKX2BMPParameters --> N_PrepareKX2BMPParameters_Node0 N_PrepareKX2BMPParameters_Node0 -- No --> E_PrepareKX2BMPParameters
File: GCSTONLY.cbl
GIVEN:
The system is running in BPE environment and a control segment is ready
WHEN:
The control segment needs to be transmitted
THEN:
The system initializes timestamp fields to low values, calculates segment length, and moves the control segment to KX2BMP area
β Consolidated Acceptance Criteria
- The control segment transmission is initiated → the system performs KX2BMP insert operation to send the control segment
- Control segment needs to be sent → timestamp and task number are set to low values, control segment length is calculated, control segment is moved to KX2BMP area, and KX2BMP-INSERT is performed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendControlSegmentviaKX2BMP(["Start Step"])
E_SendControlSegmentviaKX2BMP(["End Step"])
N_SendControlSegmentviaKX2BMP_Node0{"The control segment transmission is
initiated"}:::decision N_SendControlSegmentviaKX2BMP_Node0_action["The system performs KX2BMP insert
operation to send the control
segment"]:::main N_SendControlSegmentviaKX2BMP_Node0 -- Yes --> N_SendControlSegmentviaKX2BMP_Node0_action N_SendControlSegmentviaKX2BMP_Node0_action --> E_SendControlSegmentviaKX2BMP S_SendControlSegmentviaKX2BMP --> N_SendControlSegmentviaKX2BMP_Node0 N_SendControlSegmentviaKX2BMP_Node1{"Control segment needs to be sent"}:::decision N_SendControlSegmentviaKX2BMP_Node1_action["Timestamp and task number are set
to low values, control segment
length is calculated, control
segment is moved to KX2BMP area, and
KX2BMP-INSERT is performed"]:::main N_SendControlSegmentviaKX2BMP_Node1 -- Yes --> N_SendControlSegmentviaKX2BMP_Node1_action N_SendControlSegmentviaKX2BMP_Node1_action --> E_SendControlSegmentviaKX2BMP N_SendControlSegmentviaKX2BMP_Node0 -- No --> N_SendControlSegmentviaKX2BMP_Node1 N_SendControlSegmentviaKX2BMP_Node1 -- No --> E_SendControlSegmentviaKX2BMP
initiated"}:::decision N_SendControlSegmentviaKX2BMP_Node0_action["The system performs KX2BMP insert
operation to send the control
segment"]:::main N_SendControlSegmentviaKX2BMP_Node0 -- Yes --> N_SendControlSegmentviaKX2BMP_Node0_action N_SendControlSegmentviaKX2BMP_Node0_action --> E_SendControlSegmentviaKX2BMP S_SendControlSegmentviaKX2BMP --> N_SendControlSegmentviaKX2BMP_Node0 N_SendControlSegmentviaKX2BMP_Node1{"Control segment needs to be sent"}:::decision N_SendControlSegmentviaKX2BMP_Node1_action["Timestamp and task number are set
to low values, control segment
length is calculated, control
segment is moved to KX2BMP area, and
KX2BMP-INSERT is performed"]:::main N_SendControlSegmentviaKX2BMP_Node1 -- Yes --> N_SendControlSegmentviaKX2BMP_Node1_action N_SendControlSegmentviaKX2BMP_Node1_action --> E_SendControlSegmentviaKX2BMP N_SendControlSegmentviaKX2BMP_Node0 -- No --> N_SendControlSegmentviaKX2BMP_Node1 N_SendControlSegmentviaKX2BMP_Node1 -- No --> E_SendControlSegmentviaKX2BMP
File: GCSTONLY.cbl
GIVEN:
The system is running in BPE environment and KX2BMP parameters are prepared
WHEN:
The control segment transmission is initiated
THEN:
The system performs KX2BMP insert operation to send the control segment
File: GCSTONLY.cbl
GIVEN:
System is running in BPE environment and control segment is prepared
WHEN:
Control segment needs to be sent
THEN:
- Timestamp
- Task number are set to low values, control segment length is calculated, control segment is moved to kx2bmp area, and kx2bmp-insert is performed
β Consolidated Acceptance Criteria
- System prepares to send control segment → flag bits are set to 64 and accept status is cleared to spaces
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFlagBitsto64(["Start Step"])
E_SetFlagBitsto64(["End Step"])
N_SetFlagBitsto64_Node0{"System prepares to send control
segment"}:::decision N_SetFlagBitsto64_Node0_action["Flag bits are set to 64 and accept
status is cleared to spaces"]:::main N_SetFlagBitsto64_Node0 -- Yes --> N_SetFlagBitsto64_Node0_action N_SetFlagBitsto64_Node0_action --> E_SetFlagBitsto64 S_SetFlagBitsto64 --> N_SetFlagBitsto64_Node0 N_SetFlagBitsto64_Node0 -- No --> E_SetFlagBitsto64
segment"}:::decision N_SetFlagBitsto64_Node0_action["Flag bits are set to 64 and accept
status is cleared to spaces"]:::main N_SetFlagBitsto64_Node0 -- Yes --> N_SetFlagBitsto64_Node0_action N_SetFlagBitsto64_Node0_action --> E_SetFlagBitsto64 S_SetFlagBitsto64 --> N_SetFlagBitsto64_Node0 N_SetFlagBitsto64_Node0 -- No --> E_SetFlagBitsto64
File: GCSTONLY.cbl
GIVEN:
Control segment processing is starting
WHEN:
System prepares to send control segment
THEN:
- Flag bits are set to 64
- Accept status is cleared to spaces
β Consolidated Acceptance Criteria
- Transaction code is not 'GCT026' → flag byte of control segment is set to OLV indicator
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsTransactionCodeGCT026(["Start Step"])
E_IsTransactionCodeGCT026(["End Step"])
N_IsTransactionCodeGCT026_Node0{"Transaction code is not GCT026"}:::decision
N_IsTransactionCodeGCT026_Node0_action["Flag byte of control segment is set
to OLV indicator"]:::main N_IsTransactionCodeGCT026_Node0 -- Yes --> N_IsTransactionCodeGCT026_Node0_action N_IsTransactionCodeGCT026_Node0_action --> E_IsTransactionCodeGCT026 S_IsTransactionCodeGCT026 --> N_IsTransactionCodeGCT026_Node0 N_IsTransactionCodeGCT026_Node0 -- No --> E_IsTransactionCodeGCT026
to OLV indicator"]:::main N_IsTransactionCodeGCT026_Node0 -- Yes --> N_IsTransactionCodeGCT026_Node0_action N_IsTransactionCodeGCT026_Node0_action --> E_IsTransactionCodeGCT026 S_IsTransactionCodeGCT026 --> N_IsTransactionCodeGCT026_Node0 N_IsTransactionCodeGCT026_Node0 -- No --> E_IsTransactionCodeGCT026
File: GCSTONLY.cbl
Exclusion / Alternative Path
GIVEN:
Control segment is being prepared with transaction code available
WHEN:
Transaction code is not 'GCT026'
THEN:
Flag byte of control segment is set to OLV indicator
β Consolidated Acceptance Criteria
- The terminal information retrieval process is initiated → the system calls FROMBASE service with IO-PCB, EIGHT, and ORIG-LTERM parameters to retrieve terminal details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallFROMBASEtoRetrieveTerminalInformation(["Start Step"])
E_CallFROMBASEtoRetrieveTerminalInformation(["End Step"])
N_CallFROMBASEtoRetrieveTerminalInformation_Node0{"The terminal information retrieval
process is initiated"}:::decision N_CallFROMBASEtoRetrieveTerminalInformation_Node0_action["The system calls FROMBASE service
with IO-PCB, EIGHT, and ORIG-LTERM
parameters to retrieve terminal
details"]:::main N_CallFROMBASEtoRetrieveTerminalInformation_Node0 -- Yes --> N_CallFROMBASEtoRetrieveTerminalInformation_Node0_action N_CallFROMBASEtoRetrieveTerminalInformation_Node0_action --> E_CallFROMBASEtoRetrieveTerminalInformation S_CallFROMBASEtoRetrieveTerminalInformation --> N_CallFROMBASEtoRetrieveTerminalInformation_Node0 N_CallFROMBASEtoRetrieveTerminalInformation_Node0 -- No --> E_CallFROMBASEtoRetrieveTerminalInformation
process is initiated"}:::decision N_CallFROMBASEtoRetrieveTerminalInformation_Node0_action["The system calls FROMBASE service
with IO-PCB, EIGHT, and ORIG-LTERM
parameters to retrieve terminal
details"]:::main N_CallFROMBASEtoRetrieveTerminalInformation_Node0 -- Yes --> N_CallFROMBASEtoRetrieveTerminalInformation_Node0_action N_CallFROMBASEtoRetrieveTerminalInformation_Node0_action --> E_CallFROMBASEtoRetrieveTerminalInformation S_CallFROMBASEtoRetrieveTerminalInformation --> N_CallFROMBASEtoRetrieveTerminalInformation_Node0 N_CallFROMBASEtoRetrieveTerminalInformation_Node0 -- No --> E_CallFROMBASEtoRetrieveTerminalInformation
File: GCSTONLY.cbl
GIVEN:
The system needs to obtain terminal information
WHEN:
The terminal information retrieval process is initiated
THEN:
The system calls FROMBASE service with IO-PCB, EIGHT, and ORIG-LTERM parameters to retrieve terminal details
β Consolidated Acceptance Criteria
- If the transaction code from CCCOM → the originating terminal is set to 'ISTSS1', error terminal is set to 'QCSPS1', and destination terminal is assigned to call letters position 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetOriginatingTerminaltoISTSS1(["Start Step"])
E_SetOriginatingTerminaltoISTSS1(["End Step"])
N_SetOriginatingTerminaltoISTSS1_Node0{"The system evaluates the
transaction code from CCCOM"}:::decision N_SetOriginatingTerminaltoISTSS1_Node0_action["The originating terminal is set to
ISTSS1 , error terminal is set to
QCSPS1 , and destination terminal is
assigned to call letters position 1"]:::main N_SetOriginatingTerminaltoISTSS1_Node0 -- Yes --> N_SetOriginatingTerminaltoISTSS1_Node0_action N_SetOriginatingTerminaltoISTSS1_Node0_action --> E_SetOriginatingTerminaltoISTSS1 S_SetOriginatingTerminaltoISTSS1 --> N_SetOriginatingTerminaltoISTSS1_Node0 N_SetOriginatingTerminaltoISTSS1_Node0 -- No --> E_SetOriginatingTerminaltoISTSS1
transaction code from CCCOM"}:::decision N_SetOriginatingTerminaltoISTSS1_Node0_action["The originating terminal is set to
ISTSS1 , error terminal is set to
QCSPS1 , and destination terminal is
assigned to call letters position 1"]:::main N_SetOriginatingTerminaltoISTSS1_Node0 -- Yes --> N_SetOriginatingTerminaltoISTSS1_Node0_action N_SetOriginatingTerminaltoISTSS1_Node0_action --> E_SetOriginatingTerminaltoISTSS1 S_SetOriginatingTerminaltoISTSS1 --> N_SetOriginatingTerminaltoISTSS1_Node0 N_SetOriginatingTerminaltoISTSS1_Node0 -- No --> E_SetOriginatingTerminaltoISTSS1
File: GCSTONLY.cbl
GIVEN:
A transaction with code 'GCT026' is being processed
WHEN:
The system evaluates the transaction code from CCCOM
THEN:
The originating terminal is set to 'ISTSS1', error terminal is set to 'QCSPS1', and destination terminal is assigned to call letters position 1
β Consolidated Acceptance Criteria
- If the transaction code from CCCOM → both the originating terminal and error terminal are set to the same value as the destination terminal
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDestinationTerminalasBothOriginatingandErrorTerminal(["Start Step"])
E_SetDestinationTerminalasBothOriginatingandErrorTerminal(["End Step"])
N_SetDestinationTerminalasBothOriginatingandErrorTerminal_Node0{"The system evaluates the
transaction code from CCCOM"}:::decision N_SetDestinationTerminalasBothOriginatingandErrorTerminal_Node0_action["Both the originating terminal and
error terminal are set to the same
value as the destination terminal"]:::main N_SetDestinationTerminalasBothOriginatingandErrorTerminal_Node0 -- Yes --> N_SetDestinationTerminalasBothOriginatingandErrorTerminal_Node0_action N_SetDestinationTerminalasBothOriginatingandErrorTerminal_Node0_action --> E_SetDestinationTerminalasBothOriginatingandErrorTerminal S_SetDestinationTerminalasBothOriginatingandErrorTerminal --> N_SetDestinationTerminalasBothOriginatingandErrorTerminal_Node0 N_SetDestinationTerminalasBothOriginatingandErrorTerminal_Node0 -- No --> E_SetDestinationTerminalasBothOriginatingandErrorTerminal
transaction code from CCCOM"}:::decision N_SetDestinationTerminalasBothOriginatingandErrorTerminal_Node0_action["Both the originating terminal and
error terminal are set to the same
value as the destination terminal"]:::main N_SetDestinationTerminalasBothOriginatingandErrorTerminal_Node0 -- Yes --> N_SetDestinationTerminalasBothOriginatingandErrorTerminal_Node0_action N_SetDestinationTerminalasBothOriginatingandErrorTerminal_Node0_action --> E_SetDestinationTerminalasBothOriginatingandErrorTerminal S_SetDestinationTerminalasBothOriginatingandErrorTerminal --> N_SetDestinationTerminalasBothOriginatingandErrorTerminal_Node0 N_SetDestinationTerminalasBothOriginatingandErrorTerminal_Node0 -- No --> E_SetDestinationTerminalasBothOriginatingandErrorTerminal
File: GCSTONLY.cbl
GIVEN:
A transaction with any code other than 'GCT026' is being processed
WHEN:
The system evaluates the transaction code from CCCOM
THEN:
- Both the originating terminal
- Error terminal are set to the same value as the destination terminal
β Consolidated Acceptance Criteria
- The transaction code equals 'GCT026' → the origin terminal is set to 'ISTSS1', the error terminal is set to 'QCSPS1', and the destination terminal is assigned to the first call letters position
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSpecialTerminalConfigurationforGCT026(["Start Step"])
E_SetSpecialTerminalConfigurationforGCT026(["End Step"])
N_SetSpecialTerminalConfigurationforGCT026_Node0{"The transaction code equals GCT026"}:::decision
N_SetSpecialTerminalConfigurationforGCT026_Node0_action["The origin terminal is set to
ISTSS1 , the error terminal is set
to QCSPS1 , and the destination
terminal is assigned to the first
call letters position"]:::main N_SetSpecialTerminalConfigurationforGCT026_Node0 -- Yes --> N_SetSpecialTerminalConfigurationforGCT026_Node0_action N_SetSpecialTerminalConfigurationforGCT026_Node0_action --> E_SetSpecialTerminalConfigurationforGCT026 S_SetSpecialTerminalConfigurationforGCT026 --> N_SetSpecialTerminalConfigurationforGCT026_Node0 N_SetSpecialTerminalConfigurationforGCT026_Node0 -- No --> E_SetSpecialTerminalConfigurationforGCT026
ISTSS1 , the error terminal is set
to QCSPS1 , and the destination
terminal is assigned to the first
call letters position"]:::main N_SetSpecialTerminalConfigurationforGCT026_Node0 -- Yes --> N_SetSpecialTerminalConfigurationforGCT026_Node0_action N_SetSpecialTerminalConfigurationforGCT026_Node0_action --> E_SetSpecialTerminalConfigurationforGCT026 S_SetSpecialTerminalConfigurationforGCT026 --> N_SetSpecialTerminalConfigurationforGCT026_Node0 N_SetSpecialTerminalConfigurationforGCT026_Node0 -- No --> E_SetSpecialTerminalConfigurationforGCT026
File: GCSTONLY.cbl
GIVEN:
A transaction is being processed
WHEN:
The transaction code equals 'GCT026'
THEN:
The origin terminal is set to 'ISTSS1', the error terminal is set to 'QCSPS1', and the destination terminal is assigned to the first call letters position
β Consolidated Acceptance Criteria
- The transaction code is not equal to 'GCT026' → both the origin terminal and error terminal are set to the same value as the destination terminal
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStandardTerminalConfiguration(["Start Step"])
E_SetStandardTerminalConfiguration(["End Step"])
N_SetStandardTerminalConfiguration_Node0{"The transaction code is not equal
to GCT026"}:::decision N_SetStandardTerminalConfiguration_Node0_action["Both the origin terminal and error
terminal are set to the same value
as the destination terminal"]:::main N_SetStandardTerminalConfiguration_Node0 -- Yes --> N_SetStandardTerminalConfiguration_Node0_action N_SetStandardTerminalConfiguration_Node0_action --> E_SetStandardTerminalConfiguration S_SetStandardTerminalConfiguration --> N_SetStandardTerminalConfiguration_Node0 N_SetStandardTerminalConfiguration_Node0 -- No --> E_SetStandardTerminalConfiguration
to GCT026"}:::decision N_SetStandardTerminalConfiguration_Node0_action["Both the origin terminal and error
terminal are set to the same value
as the destination terminal"]:::main N_SetStandardTerminalConfiguration_Node0 -- Yes --> N_SetStandardTerminalConfiguration_Node0_action N_SetStandardTerminalConfiguration_Node0_action --> E_SetStandardTerminalConfiguration S_SetStandardTerminalConfiguration --> N_SetStandardTerminalConfiguration_Node0 N_SetStandardTerminalConfiguration_Node0 -- No --> E_SetStandardTerminalConfiguration
File: GCSTONLY.cbl
Exclusion / Alternative Path
GIVEN:
A transaction is being processed
WHEN:
The transaction code is not equal to 'GCT026'
THEN:
- Both the origin terminal
- Error terminal are set to the same value as the destination terminal
β Consolidated Acceptance Criteria
- The system prepares the message header → the transaction code is moved to the original transaction field of the control segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveTransactionCodetoControlSegmentHeader(["Start Step"])
E_MoveTransactionCodetoControlSegmentHeader(["End Step"])
N_MoveTransactionCodetoControlSegmentHeader_Node0{"The system prepares the message
header"}:::decision N_MoveTransactionCodetoControlSegmentHeader_Node0_action["The transaction code is moved to
the original transaction field of
the control segment"]:::main N_MoveTransactionCodetoControlSegmentHeader_Node0 -- Yes --> N_MoveTransactionCodetoControlSegmentHeader_Node0_action N_MoveTransactionCodetoControlSegmentHeader_Node0_action --> E_MoveTransactionCodetoControlSegmentHeader S_MoveTransactionCodetoControlSegmentHeader --> N_MoveTransactionCodetoControlSegmentHeader_Node0 N_MoveTransactionCodetoControlSegmentHeader_Node0 -- No --> E_MoveTransactionCodetoControlSegmentHeader
header"}:::decision N_MoveTransactionCodetoControlSegmentHeader_Node0_action["The transaction code is moved to
the original transaction field of
the control segment"]:::main N_MoveTransactionCodetoControlSegmentHeader_Node0 -- Yes --> N_MoveTransactionCodetoControlSegmentHeader_Node0_action N_MoveTransactionCodetoControlSegmentHeader_Node0_action --> E_MoveTransactionCodetoControlSegmentHeader S_MoveTransactionCodetoControlSegmentHeader --> N_MoveTransactionCodetoControlSegmentHeader_Node0 N_MoveTransactionCodetoControlSegmentHeader_Node0 -- No --> E_MoveTransactionCodetoControlSegmentHeader
File: GCSTONLY.cbl
GIVEN:
A communication control block contains a transaction code
WHEN:
The system prepares the message header
THEN:
The transaction code is moved to the original transaction field of the control segment
β Consolidated Acceptance Criteria
- The system prepares the message header → the input record is moved to the menu header field of the control segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveInputRecordtoControlSegmentMenuHeader(["Start Step"])
E_MoveInputRecordtoControlSegmentMenuHeader(["End Step"])
N_MoveInputRecordtoControlSegmentMenuHeader_Node0{"The system prepares the message
header"}:::decision N_MoveInputRecordtoControlSegmentMenuHeader_Node0_action["The input record is moved to the
menu header field of the control
segment"]:::main N_MoveInputRecordtoControlSegmentMenuHeader_Node0 -- Yes --> N_MoveInputRecordtoControlSegmentMenuHeader_Node0_action N_MoveInputRecordtoControlSegmentMenuHeader_Node0_action --> E_MoveInputRecordtoControlSegmentMenuHeader S_MoveInputRecordtoControlSegmentMenuHeader --> N_MoveInputRecordtoControlSegmentMenuHeader_Node0 N_MoveInputRecordtoControlSegmentMenuHeader_Node0 -- No --> E_MoveInputRecordtoControlSegmentMenuHeader
header"}:::decision N_MoveInputRecordtoControlSegmentMenuHeader_Node0_action["The input record is moved to the
menu header field of the control
segment"]:::main N_MoveInputRecordtoControlSegmentMenuHeader_Node0 -- Yes --> N_MoveInputRecordtoControlSegmentMenuHeader_Node0_action N_MoveInputRecordtoControlSegmentMenuHeader_Node0_action --> E_MoveInputRecordtoControlSegmentMenuHeader S_MoveInputRecordtoControlSegmentMenuHeader --> N_MoveInputRecordtoControlSegmentMenuHeader_Node0 N_MoveInputRecordtoControlSegmentMenuHeader_Node0 -- No --> E_MoveInputRecordtoControlSegmentMenuHeader
File: GCSTONLY.cbl
GIVEN:
An input record contains data to be processed
WHEN:
The system prepares the message header
THEN:
The input record is moved to the menu header field of the control segment
β Consolidated Acceptance Criteria
- The system configures the control segment flag byte → the flag byte is set to low values to indicate GCT026-specific processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFlagBytetoLowValuesforGCT026(["Start Step"])
E_SetFlagBytetoLowValuesforGCT026(["End Step"])
N_SetFlagBytetoLowValuesforGCT026_Node0{"The system configures the control
segment flag byte"}:::decision N_SetFlagBytetoLowValuesforGCT026_Node0_action["The flag byte is set to low values
to indicate GCT026-specific
processing"]:::main N_SetFlagBytetoLowValuesforGCT026_Node0 -- Yes --> N_SetFlagBytetoLowValuesforGCT026_Node0_action N_SetFlagBytetoLowValuesforGCT026_Node0_action --> E_SetFlagBytetoLowValuesforGCT026 S_SetFlagBytetoLowValuesforGCT026 --> N_SetFlagBytetoLowValuesforGCT026_Node0 N_SetFlagBytetoLowValuesforGCT026_Node0 -- No --> E_SetFlagBytetoLowValuesforGCT026
segment flag byte"}:::decision N_SetFlagBytetoLowValuesforGCT026_Node0_action["The flag byte is set to low values
to indicate GCT026-specific
processing"]:::main N_SetFlagBytetoLowValuesforGCT026_Node0 -- Yes --> N_SetFlagBytetoLowValuesforGCT026_Node0_action N_SetFlagBytetoLowValuesforGCT026_Node0_action --> E_SetFlagBytetoLowValuesforGCT026 S_SetFlagBytetoLowValuesforGCT026 --> N_SetFlagBytetoLowValuesforGCT026_Node0 N_SetFlagBytetoLowValuesforGCT026_Node0 -- No --> E_SetFlagBytetoLowValuesforGCT026
File: GCSTONLY.cbl
GIVEN:
A transaction code equals 'GCT026'
WHEN:
The system configures the control segment flag byte
THEN:
The flag byte is set to low values to indicate GCT026-specific processing
β Consolidated Acceptance Criteria
- The system configures the control segment flag byte → the flag byte is set to the OLV indicator value for standard processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFlagBytetoOLVIndicatorforOtherTransactions(["Start Step"])
E_SetFlagBytetoOLVIndicatorforOtherTransactions(["End Step"])
N_SetFlagBytetoOLVIndicatorforOtherTransactions_Node0{"The system configures the control
segment flag byte"}:::decision N_SetFlagBytetoOLVIndicatorforOtherTransactions_Node0_action["The flag byte is set to the OLV
indicator value for standard
processing"]:::main N_SetFlagBytetoOLVIndicatorforOtherTransactions_Node0 -- Yes --> N_SetFlagBytetoOLVIndicatorforOtherTransactions_Node0_action N_SetFlagBytetoOLVIndicatorforOtherTransactions_Node0_action --> E_SetFlagBytetoOLVIndicatorforOtherTransactions S_SetFlagBytetoOLVIndicatorforOtherTransactions --> N_SetFlagBytetoOLVIndicatorforOtherTransactions_Node0 N_SetFlagBytetoOLVIndicatorforOtherTransactions_Node0 -- No --> E_SetFlagBytetoOLVIndicatorforOtherTransactions
segment flag byte"}:::decision N_SetFlagBytetoOLVIndicatorforOtherTransactions_Node0_action["The flag byte is set to the OLV
indicator value for standard
processing"]:::main N_SetFlagBytetoOLVIndicatorforOtherTransactions_Node0 -- Yes --> N_SetFlagBytetoOLVIndicatorforOtherTransactions_Node0_action N_SetFlagBytetoOLVIndicatorforOtherTransactions_Node0_action --> E_SetFlagBytetoOLVIndicatorforOtherTransactions S_SetFlagBytetoOLVIndicatorforOtherTransactions --> N_SetFlagBytetoOLVIndicatorforOtherTransactions_Node0 N_SetFlagBytetoOLVIndicatorforOtherTransactions_Node0 -- No --> E_SetFlagBytetoOLVIndicatorforOtherTransactions
File: GCSTONLY.cbl
Exclusion / Alternative Path
GIVEN:
A transaction code is not equal to 'GCT026'
WHEN:
The system configures the control segment flag byte
THEN:
The flag byte is set to the OLV indicator value for standard processing
β Consolidated Acceptance Criteria
- Call letters processing is initiated → the CALL-LETTERS-4 workspace is cleared to spaces
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearCALLLETTERS4workspace(["Start Step"])
E_ClearCALLLETTERS4workspace(["End Step"])
N_ClearCALLLETTERS4workspace_Node0{"Call letters processing is
initiated"}:::decision N_ClearCALLLETTERS4workspace_Node0_action["The CALL-LETTERS-4 workspace is
cleared to spaces"]:::main N_ClearCALLLETTERS4workspace_Node0 -- Yes --> N_ClearCALLLETTERS4workspace_Node0_action N_ClearCALLLETTERS4workspace_Node0_action --> E_ClearCALLLETTERS4workspace S_ClearCALLLETTERS4workspace --> N_ClearCALLLETTERS4workspace_Node0 N_ClearCALLLETTERS4workspace_Node0 -- No --> E_ClearCALLLETTERS4workspace
initiated"}:::decision N_ClearCALLLETTERS4workspace_Node0_action["The CALL-LETTERS-4 workspace is
cleared to spaces"]:::main N_ClearCALLLETTERS4workspace_Node0 -- Yes --> N_ClearCALLLETTERS4workspace_Node0_action N_ClearCALLLETTERS4workspace_Node0_action --> E_ClearCALLLETTERS4workspace S_ClearCALLLETTERS4workspace --> N_ClearCALLLETTERS4workspace_Node0 N_ClearCALLLETTERS4workspace_Node0 -- No --> E_ClearCALLLETTERS4workspace
File: GCSTONLY.cbl
GIVEN:
The system is ready to process call letters
WHEN:
Call letters processing is initiated
THEN:
The CALL-LETTERS-4 workspace is cleared to spaces
β Consolidated Acceptance Criteria
- Counter initialization is required → the counter J is set to 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetcounterJ1(["Start Step"])
E_SetcounterJ1(["End Step"])
N_SetcounterJ1_Node0{"Counter initialization is required"}:::decision
N_SetcounterJ1_Node0_action["The counter J is set to 1"]:::main
N_SetcounterJ1_Node0 -- Yes --> N_SetcounterJ1_Node0_action
N_SetcounterJ1_Node0_action --> E_SetcounterJ1
S_SetcounterJ1 --> N_SetcounterJ1_Node0
N_SetcounterJ1_Node0 -- No --> E_SetcounterJ1
File: GCSTONLY.cbl
GIVEN:
Call letters processing workspace is cleared
WHEN:
Counter initialization is required
THEN:
The counter J is set to 1
β Consolidated Acceptance Criteria
- Call letters data needs to be copied → the call letters at position J are copied to both CALL-LETTERS-1-2 and CALL-LETTERS-3-4 at the same position
- Both continuation conditions are satisfied → return to copy the next call letters data from the current position J
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopycalllettersfrompositionJ(["Start Step"])
E_CopycalllettersfrompositionJ(["End Step"])
N_CopycalllettersfrompositionJ_Node0{"Call letters data needs to be
copied"}:::decision N_CopycalllettersfrompositionJ_Node0_action["The call letters at position J are
copied to both CALL-LETTERS-1-2 and
CALL-LETTERS-3-4 at the same
position"]:::main N_CopycalllettersfrompositionJ_Node0 -- Yes --> N_CopycalllettersfrompositionJ_Node0_action N_CopycalllettersfrompositionJ_Node0_action --> E_CopycalllettersfrompositionJ S_CopycalllettersfrompositionJ --> N_CopycalllettersfrompositionJ_Node0 N_CopycalllettersfrompositionJ_Node1{"Both continuation conditions are
satisfied"}:::decision N_CopycalllettersfrompositionJ_Node1_action["Return to copy the next call
letters data from the current
position J"]:::main N_CopycalllettersfrompositionJ_Node1 -- Yes --> N_CopycalllettersfrompositionJ_Node1_action N_CopycalllettersfrompositionJ_Node1_action --> E_CopycalllettersfrompositionJ N_CopycalllettersfrompositionJ_Node0 -- No --> N_CopycalllettersfrompositionJ_Node1 N_CopycalllettersfrompositionJ_Node1 -- No --> E_CopycalllettersfrompositionJ
copied"}:::decision N_CopycalllettersfrompositionJ_Node0_action["The call letters at position J are
copied to both CALL-LETTERS-1-2 and
CALL-LETTERS-3-4 at the same
position"]:::main N_CopycalllettersfrompositionJ_Node0 -- Yes --> N_CopycalllettersfrompositionJ_Node0_action N_CopycalllettersfrompositionJ_Node0_action --> E_CopycalllettersfrompositionJ S_CopycalllettersfrompositionJ --> N_CopycalllettersfrompositionJ_Node0 N_CopycalllettersfrompositionJ_Node1{"Both continuation conditions are
satisfied"}:::decision N_CopycalllettersfrompositionJ_Node1_action["Return to copy the next call
letters data from the current
position J"]:::main N_CopycalllettersfrompositionJ_Node1 -- Yes --> N_CopycalllettersfrompositionJ_Node1_action N_CopycalllettersfrompositionJ_Node1_action --> E_CopycalllettersfrompositionJ N_CopycalllettersfrompositionJ_Node0 -- No --> N_CopycalllettersfrompositionJ_Node1 N_CopycalllettersfrompositionJ_Node1 -- No --> E_CopycalllettersfrompositionJ
File: GCSTONLY.cbl
GIVEN:
Counter J is positioned at a valid call letters position
WHEN:
Call letters data needs to be copied
THEN:
- The call letters at position j are copied to both call-letters-1-2
- Call-letters-3-4 at the same position
File: GCSTONLY.cbl
Exclusion / Alternative Path
GIVEN:
Position J is less than 13 AND call letters data at position J is not empty
WHEN:
Both continuation conditions are satisfied
THEN:
Return to copy the next call letters data from the current position J
β Consolidated Acceptance Criteria
- Moving to the next call letters position → the counter J is incremented by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementcounterJ(["Start Step"])
E_IncrementcounterJ(["End Step"])
N_IncrementcounterJ_Node0{"Moving to the next call letters
position"}:::decision N_IncrementcounterJ_Node0_action["The counter J is incremented by 1"]:::main N_IncrementcounterJ_Node0 -- Yes --> N_IncrementcounterJ_Node0_action N_IncrementcounterJ_Node0_action --> E_IncrementcounterJ S_IncrementcounterJ --> N_IncrementcounterJ_Node0 N_IncrementcounterJ_Node0 -- No --> E_IncrementcounterJ
position"}:::decision N_IncrementcounterJ_Node0_action["The counter J is incremented by 1"]:::main N_IncrementcounterJ_Node0 -- Yes --> N_IncrementcounterJ_Node0_action N_IncrementcounterJ_Node0_action --> E_IncrementcounterJ S_IncrementcounterJ --> N_IncrementcounterJ_Node0 N_IncrementcounterJ_Node0 -- No --> E_IncrementcounterJ
File: GCSTONLY.cbl
GIVEN:
Current call letters position has been processed
WHEN:
Moving to the next call letters position
THEN:
The counter J is incremented by 1
β Consolidated Acceptance Criteria
- Checking position boundaries for call letters processing → if J is less than 13, continue processing; otherwise, complete call letters processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsJ13(["Start Step"])
E_IsJ13(["End Step"])
N_IsJ13_Node0{"Checking position boundaries for
call letters processing"}:::decision N_IsJ13_Node0_action["If J is less than 13, continue
processing otherwise, complete call
letters processing"]:::main N_IsJ13_Node0 -- Yes --> N_IsJ13_Node0_action N_IsJ13_Node0_action --> E_IsJ13 S_IsJ13 --> N_IsJ13_Node0 N_IsJ13_Node0 -- No --> E_IsJ13
call letters processing"}:::decision N_IsJ13_Node0_action["If J is less than 13, continue
processing otherwise, complete call
letters processing"]:::main N_IsJ13_Node0 -- Yes --> N_IsJ13_Node0_action N_IsJ13_Node0_action --> E_IsJ13 S_IsJ13 --> N_IsJ13_Node0 N_IsJ13_Node0 -- No --> E_IsJ13
File: GCSTONLY.cbl
GIVEN:
Counter J has been incremented to a new position
WHEN:
Checking position boundaries for call letters processing
THEN:
If J is less than 13, continue processing; otherwise, complete call letters processing
β Consolidated Acceptance Criteria
- Checking for available call letters data at position J → if CALL-LETTERS-2 at position J is not empty (not equal to space), continue processing; otherwise, complete call letters processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCALLLETTERS2notempty(["Start Step"])
E_IsCALLLETTERS2notempty(["End Step"])
N_IsCALLLETTERS2notempty_Node0{"Checking for available call letters
data at position J"}:::decision N_IsCALLLETTERS2notempty_Node0_action["If CALL-LETTERS-2 at position J is
not empty not equal to space,
continue processing otherwise,
complete call letters processing"]:::main N_IsCALLLETTERS2notempty_Node0 -- Yes --> N_IsCALLLETTERS2notempty_Node0_action N_IsCALLLETTERS2notempty_Node0_action --> E_IsCALLLETTERS2notempty S_IsCALLLETTERS2notempty --> N_IsCALLLETTERS2notempty_Node0 N_IsCALLLETTERS2notempty_Node0 -- No --> E_IsCALLLETTERS2notempty
data at position J"}:::decision N_IsCALLLETTERS2notempty_Node0_action["If CALL-LETTERS-2 at position J is
not empty not equal to space,
continue processing otherwise,
complete call letters processing"]:::main N_IsCALLLETTERS2notempty_Node0 -- Yes --> N_IsCALLLETTERS2notempty_Node0_action N_IsCALLLETTERS2notempty_Node0_action --> E_IsCALLLETTERS2notempty S_IsCALLLETTERS2notempty --> N_IsCALLLETTERS2notempty_Node0 N_IsCALLLETTERS2notempty_Node0 -- No --> E_IsCALLLETTERS2notempty
File: GCSTONLY.cbl
GIVEN:
Current position J is within valid range (less than 13)
WHEN:
Checking for available call letters data at position J
THEN:
If CALL-LETTERS-2 at position J is not empty (not equal to space), continue processing; otherwise, complete call letters processing
β Consolidated Acceptance Criteria
- The system processes call letters duplication → the call letter at position J is copied to both CALL-LETTERS-1-2 and CALL-LETTERS-3-4 arrays at the same position
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyCallLetterstoMultipleArrays(["Start Step"])
E_CopyCallLetterstoMultipleArrays(["End Step"])
N_CopyCallLetterstoMultipleArrays_Node0{"The system processes call letters
duplication"}:::decision N_CopyCallLetterstoMultipleArrays_Node0_action["The call letter at position J is
copied to both CALL-LETTERS-1-2 and
CALL-LETTERS-3-4 arrays at the same
position"]:::main N_CopyCallLetterstoMultipleArrays_Node0 -- Yes --> N_CopyCallLetterstoMultipleArrays_Node0_action N_CopyCallLetterstoMultipleArrays_Node0_action --> E_CopyCallLetterstoMultipleArrays S_CopyCallLetterstoMultipleArrays --> N_CopyCallLetterstoMultipleArrays_Node0 N_CopyCallLetterstoMultipleArrays_Node0 -- No --> E_CopyCallLetterstoMultipleArrays
duplication"}:::decision N_CopyCallLetterstoMultipleArrays_Node0_action["The call letter at position J is
copied to both CALL-LETTERS-1-2 and
CALL-LETTERS-3-4 arrays at the same
position"]:::main N_CopyCallLetterstoMultipleArrays_Node0 -- Yes --> N_CopyCallLetterstoMultipleArrays_Node0_action N_CopyCallLetterstoMultipleArrays_Node0_action --> E_CopyCallLetterstoMultipleArrays S_CopyCallLetterstoMultipleArrays --> N_CopyCallLetterstoMultipleArrays_Node0 N_CopyCallLetterstoMultipleArrays_Node0 -- No --> E_CopyCallLetterstoMultipleArrays
File: GCSTONLY.cbl
GIVEN:
Call letters exist in the source array at position J
WHEN:
The system processes call letters duplication
THEN:
- The call letter at position j is copied to both call-letters-1-2
- Call-letters-3-4 arrays at the same position
β Consolidated Acceptance Criteria
- The system completes copying a call letter → the position counter J is incremented by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementPositionCounter(["Start Step"])
E_IncrementPositionCounter(["End Step"])
N_IncrementPositionCounter_Node0{"The system completes copying a call
letter"}:::decision N_IncrementPositionCounter_Node0_action["The position counter J is
incremented by 1"]:::main N_IncrementPositionCounter_Node0 -- Yes --> N_IncrementPositionCounter_Node0_action N_IncrementPositionCounter_Node0_action --> E_IncrementPositionCounter S_IncrementPositionCounter --> N_IncrementPositionCounter_Node0 N_IncrementPositionCounter_Node0 -- No --> E_IncrementPositionCounter
letter"}:::decision N_IncrementPositionCounter_Node0_action["The position counter J is
incremented by 1"]:::main N_IncrementPositionCounter_Node0 -- Yes --> N_IncrementPositionCounter_Node0_action N_IncrementPositionCounter_Node0_action --> E_IncrementPositionCounter S_IncrementPositionCounter --> N_IncrementPositionCounter_Node0 N_IncrementPositionCounter_Node0 -- No --> E_IncrementPositionCounter
File: GCSTONLY.cbl
GIVEN:
A call letter has been processed at the current position
WHEN:
The system completes copying a call letter
THEN:
The position counter J is incremented by 1
β Consolidated Acceptance Criteria
- The output record initialization process begins → the output record structure should be cleared and filled with spaces to establish a clean baseline
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearOutputRecordStructureFillwithSpaces(["Start Step"])
E_ClearOutputRecordStructureFillwithSpaces(["End Step"])
N_ClearOutputRecordStructureFillwithSpaces_Node0{"The output record initialization
process begins"}:::decision N_ClearOutputRecordStructureFillwithSpaces_Node0_action["The output record structure should
be cleared and filled with spaces to
establish a clean baseline"]:::main N_ClearOutputRecordStructureFillwithSpaces_Node0 -- Yes --> N_ClearOutputRecordStructureFillwithSpaces_Node0_action N_ClearOutputRecordStructureFillwithSpaces_Node0_action --> E_ClearOutputRecordStructureFillwithSpaces S_ClearOutputRecordStructureFillwithSpaces --> N_ClearOutputRecordStructureFillwithSpaces_Node0 N_ClearOutputRecordStructureFillwithSpaces_Node0 -- No --> E_ClearOutputRecordStructureFillwithSpaces
process begins"}:::decision N_ClearOutputRecordStructureFillwithSpaces_Node0_action["The output record structure should
be cleared and filled with spaces to
establish a clean baseline"]:::main N_ClearOutputRecordStructureFillwithSpaces_Node0 -- Yes --> N_ClearOutputRecordStructureFillwithSpaces_Node0_action N_ClearOutputRecordStructureFillwithSpaces_Node0_action --> E_ClearOutputRecordStructureFillwithSpaces S_ClearOutputRecordStructureFillwithSpaces --> N_ClearOutputRecordStructureFillwithSpaces_Node0 N_ClearOutputRecordStructureFillwithSpaces_Node0 -- No --> E_ClearOutputRecordStructureFillwithSpaces
File: GCSTONLY.cbl
GIVEN:
The system is ready to prepare output records for processing
WHEN:
The output record initialization process begins
THEN:
- The output record structure should be cleared
- Filled with spaces to establish a clean baseline
β Consolidated Acceptance Criteria
- The system needs to populate the first output record position → the formatted call letters data should be moved to the first position of the output data segment
- The call letters data contains space characters → the first space character in the call letters should be replaced with a hash symbol (#)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveCallLettersDatatoFirstOutputRecordPosition(["Start Step"])
E_MoveCallLettersDatatoFirstOutputRecordPosition(["End Step"])
N_MoveCallLettersDatatoFirstOutputRecordPosition_Node0{"The system needs to populate the
first output record position"}:::decision N_MoveCallLettersDatatoFirstOutputRecordPosition_Node0_action["The formatted call letters data
should be moved to the first
position of the output data segment"]:::main N_MoveCallLettersDatatoFirstOutputRecordPosition_Node0 -- Yes --> N_MoveCallLettersDatatoFirstOutputRecordPosition_Node0_action N_MoveCallLettersDatatoFirstOutputRecordPosition_Node0_action --> E_MoveCallLettersDatatoFirstOutputRecordPosition S_MoveCallLettersDatatoFirstOutputRecordPosition --> N_MoveCallLettersDatatoFirstOutputRecordPosition_Node0 N_MoveCallLettersDatatoFirstOutputRecordPosition_Node1{"The call letters data contains
space characters"}:::decision N_MoveCallLettersDatatoFirstOutputRecordPosition_Node1_action["The first space character in the
call letters should be replaced with
a hash symbol"]:::main N_MoveCallLettersDatatoFirstOutputRecordPosition_Node1 -- Yes --> N_MoveCallLettersDatatoFirstOutputRecordPosition_Node1_action N_MoveCallLettersDatatoFirstOutputRecordPosition_Node1_action --> E_MoveCallLettersDatatoFirstOutputRecordPosition N_MoveCallLettersDatatoFirstOutputRecordPosition_Node0 -- No --> N_MoveCallLettersDatatoFirstOutputRecordPosition_Node1 N_MoveCallLettersDatatoFirstOutputRecordPosition_Node1 -- No --> E_MoveCallLettersDatatoFirstOutputRecordPosition
first output record position"}:::decision N_MoveCallLettersDatatoFirstOutputRecordPosition_Node0_action["The formatted call letters data
should be moved to the first
position of the output data segment"]:::main N_MoveCallLettersDatatoFirstOutputRecordPosition_Node0 -- Yes --> N_MoveCallLettersDatatoFirstOutputRecordPosition_Node0_action N_MoveCallLettersDatatoFirstOutputRecordPosition_Node0_action --> E_MoveCallLettersDatatoFirstOutputRecordPosition S_MoveCallLettersDatatoFirstOutputRecordPosition --> N_MoveCallLettersDatatoFirstOutputRecordPosition_Node0 N_MoveCallLettersDatatoFirstOutputRecordPosition_Node1{"The call letters data contains
space characters"}:::decision N_MoveCallLettersDatatoFirstOutputRecordPosition_Node1_action["The first space character in the
call letters should be replaced with
a hash symbol"]:::main N_MoveCallLettersDatatoFirstOutputRecordPosition_Node1 -- Yes --> N_MoveCallLettersDatatoFirstOutputRecordPosition_Node1_action N_MoveCallLettersDatatoFirstOutputRecordPosition_Node1_action --> E_MoveCallLettersDatatoFirstOutputRecordPosition N_MoveCallLettersDatatoFirstOutputRecordPosition_Node0 -- No --> N_MoveCallLettersDatatoFirstOutputRecordPosition_Node1 N_MoveCallLettersDatatoFirstOutputRecordPosition_Node1 -- No --> E_MoveCallLettersDatatoFirstOutputRecordPosition
File: GCSTONLY.cbl
GIVEN:
The call letters have been processed and formatted in CALL-LETTERS-4
WHEN:
The system needs to populate the first output record position
THEN:
The formatted call letters data should be moved to the first position of the output data segment
File: GCSTONLY.cbl
GIVEN:
Call letters data has been placed in the first output record position
WHEN:
The call letters data contains space characters
THEN:
The first space character in the call letters should be replaced with a hash symbol (#)
β Consolidated Acceptance Criteria
- The system processes the call letters record in OLV-REC OF DATA-SEG (1) → the first space character in the call letters record is replaced with '#' character
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReplaceFirstSpacewithCharacter(["Start Step"])
E_ReplaceFirstSpacewithCharacter(["End Step"])
N_ReplaceFirstSpacewithCharacter_Node0{"The system processes the call
letters record in OLV-REC OF
DATA-SEG 1"}:::decision N_ReplaceFirstSpacewithCharacter_Node0_action["The first space character in the
call letters record is replaced with
character"]:::main N_ReplaceFirstSpacewithCharacter_Node0 -- Yes --> N_ReplaceFirstSpacewithCharacter_Node0_action N_ReplaceFirstSpacewithCharacter_Node0_action --> E_ReplaceFirstSpacewithCharacter S_ReplaceFirstSpacewithCharacter --> N_ReplaceFirstSpacewithCharacter_Node0 N_ReplaceFirstSpacewithCharacter_Node0 -- No --> E_ReplaceFirstSpacewithCharacter
letters record in OLV-REC OF
DATA-SEG 1"}:::decision N_ReplaceFirstSpacewithCharacter_Node0_action["The first space character in the
call letters record is replaced with
character"]:::main N_ReplaceFirstSpacewithCharacter_Node0 -- Yes --> N_ReplaceFirstSpacewithCharacter_Node0_action N_ReplaceFirstSpacewithCharacter_Node0_action --> E_ReplaceFirstSpacewithCharacter S_ReplaceFirstSpacewithCharacter --> N_ReplaceFirstSpacewithCharacter_Node0 N_ReplaceFirstSpacewithCharacter_Node0 -- No --> E_ReplaceFirstSpacewithCharacter
File: GCSTONLY.cbl
GIVEN:
Call letters data is available in CALL-LETTERS-4 and has been moved to the first position of the output data segment
WHEN:
The system processes the call letters record in OLV-REC OF DATA-SEG (1)
THEN:
The first space character in the call letters record is replaced with '#' character
β Consolidated Acceptance Criteria
- The first record processing begins → the position counter I is initialized to value 2 to reserve position 1 for call letters data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializePositionCounter(["Start Step"])
E_InitializePositionCounter(["End Step"])
N_InitializePositionCounter_Node0{"The first record processing begins"}:::decision
N_InitializePositionCounter_Node0_action["The position counter I is
initialized to value 2 to reserve
position 1 for call letters data"]:::main N_InitializePositionCounter_Node0 -- Yes --> N_InitializePositionCounter_Node0_action N_InitializePositionCounter_Node0_action --> E_InitializePositionCounter S_InitializePositionCounter --> N_InitializePositionCounter_Node0 N_InitializePositionCounter_Node0 -- No --> E_InitializePositionCounter
initialized to value 2 to reserve
position 1 for call letters data"]:::main N_InitializePositionCounter_Node0 -- Yes --> N_InitializePositionCounter_Node0_action N_InitializePositionCounter_Node0_action --> E_InitializePositionCounter S_InitializePositionCounter --> N_InitializePositionCounter_Node0 N_InitializePositionCounter_Node0 -- No --> E_InitializePositionCounter
File: GCSTONLY.cbl
GIVEN:
The system is processing the first record in a new batch
WHEN:
The first record processing begins
THEN:
The position counter I is initialized to value 2 to reserve position 1 for call letters data
β Consolidated Acceptance Criteria
- The system needs to store the input record in the data segment → the position counter I is set to 2 to place the input record in the second position of the output data array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPositionto2(["Start Step"])
E_SetPositionto2(["End Step"])
N_SetPositionto2_Node0{"The system needs to store the input
record in the data segment"}:::decision N_SetPositionto2_Node0_action["The position counter I is set to 2
to place the input record in the
second position of the output data
array"]:::main N_SetPositionto2_Node0 -- Yes --> N_SetPositionto2_Node0_action N_SetPositionto2_Node0_action --> E_SetPositionto2 S_SetPositionto2 --> N_SetPositionto2_Node0 N_SetPositionto2_Node0 -- No --> E_SetPositionto2
record in the data segment"}:::decision N_SetPositionto2_Node0_action["The position counter I is set to 2
to place the input record in the
second position of the output data
array"]:::main N_SetPositionto2_Node0 -- Yes --> N_SetPositionto2_Node0_action N_SetPositionto2_Node0_action --> E_SetPositionto2 S_SetPositionto2 --> N_SetPositionto2_Node0 N_SetPositionto2_Node0 -- No --> E_SetPositionto2
File: GCSTONLY.cbl
GIVEN:
The position counter has been initialized
WHEN:
The system needs to store the input record in the data segment
THEN:
The position counter I is set to 2 to place the input record in the second position of the output data array
β Consolidated Acceptance Criteria
- The system executes the record storage operation → the input record is moved to position I (which is 2) in the OLV-REC array of the DATA-SEG structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveInputRecordtoOutputDataPosition2(["Start Step"])
E_MoveInputRecordtoOutputDataPosition2(["End Step"])
N_MoveInputRecordtoOutputDataPosition2_Node0{"The system executes the record
storage operation"}:::decision N_MoveInputRecordtoOutputDataPosition2_Node0_action["The input record is moved to
position I which is 2 in the OLV-REC
array of the DATA-SEG structure"]:::main N_MoveInputRecordtoOutputDataPosition2_Node0 -- Yes --> N_MoveInputRecordtoOutputDataPosition2_Node0_action N_MoveInputRecordtoOutputDataPosition2_Node0_action --> E_MoveInputRecordtoOutputDataPosition2 S_MoveInputRecordtoOutputDataPosition2 --> N_MoveInputRecordtoOutputDataPosition2_Node0 N_MoveInputRecordtoOutputDataPosition2_Node0 -- No --> E_MoveInputRecordtoOutputDataPosition2
storage operation"}:::decision N_MoveInputRecordtoOutputDataPosition2_Node0_action["The input record is moved to
position I which is 2 in the OLV-REC
array of the DATA-SEG structure"]:::main N_MoveInputRecordtoOutputDataPosition2_Node0 -- Yes --> N_MoveInputRecordtoOutputDataPosition2_Node0_action N_MoveInputRecordtoOutputDataPosition2_Node0_action --> E_MoveInputRecordtoOutputDataPosition2 S_MoveInputRecordtoOutputDataPosition2 --> N_MoveInputRecordtoOutputDataPosition2_Node0 N_MoveInputRecordtoOutputDataPosition2_Node0 -- No --> E_MoveInputRecordtoOutputDataPosition2
File: GCSTONLY.cbl
GIVEN:
The position counter I is set to 2 and the input record is available
WHEN:
The system executes the record storage operation
THEN:
The input record is moved to position I (which is 2) in the OLV-REC array of the DATA-SEG structure
β Consolidated Acceptance Criteria
- The system begins processing the next record → the record counter is incremented by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementRecordCounterby1(["Start Step"])
E_IncrementRecordCounterby1(["End Step"])
N_IncrementRecordCounterby1_Node0{"The system begins processing the
next record"}:::decision N_IncrementRecordCounterby1_Node0_action["The record counter is incremented
by 1"]:::main N_IncrementRecordCounterby1_Node0 -- Yes --> N_IncrementRecordCounterby1_Node0_action N_IncrementRecordCounterby1_Node0_action --> E_IncrementRecordCounterby1 S_IncrementRecordCounterby1 --> N_IncrementRecordCounterby1_Node0 N_IncrementRecordCounterby1_Node0 -- No --> E_IncrementRecordCounterby1
next record"}:::decision N_IncrementRecordCounterby1_Node0_action["The record counter is incremented
by 1"]:::main N_IncrementRecordCounterby1_Node0 -- Yes --> N_IncrementRecordCounterby1_Node0_action N_IncrementRecordCounterby1_Node0_action --> E_IncrementRecordCounterby1 S_IncrementRecordCounterby1 --> N_IncrementRecordCounterby1_Node0 N_IncrementRecordCounterby1_Node0 -- No --> E_IncrementRecordCounterby1
File: GCSTONLY.cbl
GIVEN:
A subsequent record is being processed
WHEN:
The system begins processing the next record
THEN:
The record counter is incremented by 1
β Consolidated Acceptance Criteria
- The system processes the input record → the input record is moved to the data segment at the position indicated by the record counter
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreInputRecordinOutputDataSegment(["Start Step"])
E_StoreInputRecordinOutputDataSegment(["End Step"])
N_StoreInputRecordinOutputDataSegment_Node0{"The system processes the input
record"}:::decision N_StoreInputRecordinOutputDataSegment_Node0_action["The input record is moved to the
data segment at the position
indicated by the record counter"]:::main N_StoreInputRecordinOutputDataSegment_Node0 -- Yes --> N_StoreInputRecordinOutputDataSegment_Node0_action N_StoreInputRecordinOutputDataSegment_Node0_action --> E_StoreInputRecordinOutputDataSegment S_StoreInputRecordinOutputDataSegment --> N_StoreInputRecordinOutputDataSegment_Node0 N_StoreInputRecordinOutputDataSegment_Node0 -- No --> E_StoreInputRecordinOutputDataSegment
record"}:::decision N_StoreInputRecordinOutputDataSegment_Node0_action["The input record is moved to the
data segment at the position
indicated by the record counter"]:::main N_StoreInputRecordinOutputDataSegment_Node0 -- Yes --> N_StoreInputRecordinOutputDataSegment_Node0_action N_StoreInputRecordinOutputDataSegment_Node0_action --> E_StoreInputRecordinOutputDataSegment S_StoreInputRecordinOutputDataSegment --> N_StoreInputRecordinOutputDataSegment_Node0 N_StoreInputRecordinOutputDataSegment_Node0 -- No --> E_StoreInputRecordinOutputDataSegment
File: GCSTONLY.cbl
GIVEN:
An input record needs to be processed and the record counter has been incremented
WHEN:
The system processes the input record
THEN:
The input record is moved to the data segment at the position indicated by the record counter
β Consolidated Acceptance Criteria
- If the current batch size → if the record counter equals 22, the batch is considered full and ready for processing, otherwise continue accumulating records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsRecordCounter22(["Start Step"])
E_IsRecordCounter22(["End Step"])
N_IsRecordCounter22_Node0{"The system evaluates the current
batch size"}:::decision N_IsRecordCounter22_Node0_action["If the record counter equals 22,
the batch is considered full and
ready for processing, otherwise
continue accumulating records"]:::main N_IsRecordCounter22_Node0 -- Yes --> N_IsRecordCounter22_Node0_action N_IsRecordCounter22_Node0_action --> E_IsRecordCounter22 S_IsRecordCounter22 --> N_IsRecordCounter22_Node0 N_IsRecordCounter22_Node0 -- No --> E_IsRecordCounter22
batch size"}:::decision N_IsRecordCounter22_Node0_action["If the record counter equals 22,
the batch is considered full and
ready for processing, otherwise
continue accumulating records"]:::main N_IsRecordCounter22_Node0 -- Yes --> N_IsRecordCounter22_Node0_action N_IsRecordCounter22_Node0_action --> E_IsRecordCounter22 S_IsRecordCounter22 --> N_IsRecordCounter22_Node0 N_IsRecordCounter22_Node0 -- No --> E_IsRecordCounter22
File: GCSTONLY.cbl
GIVEN:
A record has been added to the current batch
WHEN:
The system evaluates the current batch size
THEN:
- If the record counter equals 22, the batch is considered full
- Ready for processing, otherwise continue accumulating records
β Consolidated Acceptance Criteria
- The system prepares the data segment for transmission → the data segment length is set to 1786 bytes
- The batch size limit is reached → the data segment length is set to 1786 bytes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDataSegmentLengthto1786(["Start Step"])
E_SetDataSegmentLengthto1786(["End Step"])
N_SetDataSegmentLengthto1786_Node0{"The system prepares the data
segment for transmission"}:::decision N_SetDataSegmentLengthto1786_Node0_action["The data segment length is set to
1786 bytes"]:::main N_SetDataSegmentLengthto1786_Node0 -- Yes --> N_SetDataSegmentLengthto1786_Node0_action N_SetDataSegmentLengthto1786_Node0_action --> E_SetDataSegmentLengthto1786 S_SetDataSegmentLengthto1786 --> N_SetDataSegmentLengthto1786_Node0 N_SetDataSegmentLengthto1786_Node1{"The batch size limit is reached"}:::decision N_SetDataSegmentLengthto1786_Node1_action["The data segment length is set to
1786 bytes"]:::main N_SetDataSegmentLengthto1786_Node1 -- Yes --> N_SetDataSegmentLengthto1786_Node1_action N_SetDataSegmentLengthto1786_Node1_action --> E_SetDataSegmentLengthto1786 N_SetDataSegmentLengthto1786_Node0 -- No --> N_SetDataSegmentLengthto1786_Node1 N_SetDataSegmentLengthto1786_Node1 -- No --> E_SetDataSegmentLengthto1786
segment for transmission"}:::decision N_SetDataSegmentLengthto1786_Node0_action["The data segment length is set to
1786 bytes"]:::main N_SetDataSegmentLengthto1786_Node0 -- Yes --> N_SetDataSegmentLengthto1786_Node0_action N_SetDataSegmentLengthto1786_Node0_action --> E_SetDataSegmentLengthto1786 S_SetDataSegmentLengthto1786 --> N_SetDataSegmentLengthto1786_Node0 N_SetDataSegmentLengthto1786_Node1{"The batch size limit is reached"}:::decision N_SetDataSegmentLengthto1786_Node1_action["The data segment length is set to
1786 bytes"]:::main N_SetDataSegmentLengthto1786_Node1 -- Yes --> N_SetDataSegmentLengthto1786_Node1_action N_SetDataSegmentLengthto1786_Node1_action --> E_SetDataSegmentLengthto1786 N_SetDataSegmentLengthto1786_Node0 -- No --> N_SetDataSegmentLengthto1786_Node1 N_SetDataSegmentLengthto1786_Node1 -- No --> E_SetDataSegmentLengthto1786
File: GCSTONLY.cbl
GIVEN:
The record counter equals 22 indicating a full batch
WHEN:
The system prepares the data segment for transmission
THEN:
The data segment length is set to 1786 bytes
File: GCSTONLY.cbl
GIVEN:
A data segment has accumulated exactly 22 records
WHEN:
The batch size limit is reached
THEN:
The data segment length is set to 1786 bytes
β Consolidated Acceptance Criteria
- The system sends the data segment → if running in TPE environment, use CIMS with ISRT operation, otherwise use KX2BMP insert operation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendDataSegmenttoMessageQueue(["Start Step"])
E_SendDataSegmenttoMessageQueue(["End Step"])
N_SendDataSegmenttoMessageQueue_Node0{"The system sends the data segment"}:::decision
N_SendDataSegmenttoMessageQueue_Node0_action["If running in TPE environment, use
CIMS with ISRT operation, otherwise
use KX2BMP insert operation"]:::main N_SendDataSegmenttoMessageQueue_Node0 -- Yes --> N_SendDataSegmenttoMessageQueue_Node0_action N_SendDataSegmenttoMessageQueue_Node0_action --> E_SendDataSegmenttoMessageQueue S_SendDataSegmenttoMessageQueue --> N_SendDataSegmenttoMessageQueue_Node0 N_SendDataSegmenttoMessageQueue_Node0 -- No --> E_SendDataSegmenttoMessageQueue
CIMS with ISRT operation, otherwise
use KX2BMP insert operation"]:::main N_SendDataSegmenttoMessageQueue_Node0 -- Yes --> N_SendDataSegmenttoMessageQueue_Node0_action N_SendDataSegmenttoMessageQueue_Node0_action --> E_SendDataSegmenttoMessageQueue S_SendDataSegmenttoMessageQueue --> N_SendDataSegmenttoMessageQueue_Node0 N_SendDataSegmenttoMessageQueue_Node0 -- No --> E_SendDataSegmenttoMessageQueue
File: GCSTONLY.cbl
GIVEN:
A data segment with 22 records and length 1786 is ready for transmission
WHEN:
The system sends the data segment
THEN:
If running in TPE environment, use CIMS with ISRT operation, otherwise use KX2BMP insert operation
β Consolidated Acceptance Criteria
- The system completes batch processing → the record counter is reset to 0
- The batch processing is complete → the record counter (I) is reset to 0
- The transmission is complete → the record counter I is reset to 0
- The batch transmission is complete → the record counter should be reset to 0 to start accumulating the next batch
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ResetRecordCounterto0(["Start Step"])
E_ResetRecordCounterto0(["End Step"])
N_ResetRecordCounterto0_Node0{"The system completes batch
processing"}:::decision N_ResetRecordCounterto0_Node0_action["The record counter is reset to 0"]:::main N_ResetRecordCounterto0_Node0 -- Yes --> N_ResetRecordCounterto0_Node0_action N_ResetRecordCounterto0_Node0_action --> E_ResetRecordCounterto0 S_ResetRecordCounterto0 --> N_ResetRecordCounterto0_Node0 N_ResetRecordCounterto0_Node1{"The batch processing is complete"}:::decision N_ResetRecordCounterto0_Node1_action["The record counter I is reset to 0"]:::main N_ResetRecordCounterto0_Node1 -- Yes --> N_ResetRecordCounterto0_Node1_action N_ResetRecordCounterto0_Node1_action --> E_ResetRecordCounterto0 N_ResetRecordCounterto0_Node0 -- No --> N_ResetRecordCounterto0_Node1 N_ResetRecordCounterto0_Node2{"The transmission is complete"}:::decision N_ResetRecordCounterto0_Node2_action["The record counter I is reset to 0"]:::main N_ResetRecordCounterto0_Node2 -- Yes --> N_ResetRecordCounterto0_Node2_action N_ResetRecordCounterto0_Node2_action --> E_ResetRecordCounterto0 N_ResetRecordCounterto0_Node1 -- No --> N_ResetRecordCounterto0_Node2 N_ResetRecordCounterto0_Node3{"The batch transmission is complete"}:::decision N_ResetRecordCounterto0_Node3_action["The record counter should be reset
to 0 to start accumulating the next
batch"]:::main N_ResetRecordCounterto0_Node3 -- Yes --> N_ResetRecordCounterto0_Node3_action N_ResetRecordCounterto0_Node3_action --> E_ResetRecordCounterto0 N_ResetRecordCounterto0_Node2 -- No --> N_ResetRecordCounterto0_Node3 N_ResetRecordCounterto0_Node3 -- No --> E_ResetRecordCounterto0
processing"}:::decision N_ResetRecordCounterto0_Node0_action["The record counter is reset to 0"]:::main N_ResetRecordCounterto0_Node0 -- Yes --> N_ResetRecordCounterto0_Node0_action N_ResetRecordCounterto0_Node0_action --> E_ResetRecordCounterto0 S_ResetRecordCounterto0 --> N_ResetRecordCounterto0_Node0 N_ResetRecordCounterto0_Node1{"The batch processing is complete"}:::decision N_ResetRecordCounterto0_Node1_action["The record counter I is reset to 0"]:::main N_ResetRecordCounterto0_Node1 -- Yes --> N_ResetRecordCounterto0_Node1_action N_ResetRecordCounterto0_Node1_action --> E_ResetRecordCounterto0 N_ResetRecordCounterto0_Node0 -- No --> N_ResetRecordCounterto0_Node1 N_ResetRecordCounterto0_Node2{"The transmission is complete"}:::decision N_ResetRecordCounterto0_Node2_action["The record counter I is reset to 0"]:::main N_ResetRecordCounterto0_Node2 -- Yes --> N_ResetRecordCounterto0_Node2_action N_ResetRecordCounterto0_Node2_action --> E_ResetRecordCounterto0 N_ResetRecordCounterto0_Node1 -- No --> N_ResetRecordCounterto0_Node2 N_ResetRecordCounterto0_Node3{"The batch transmission is complete"}:::decision N_ResetRecordCounterto0_Node3_action["The record counter should be reset
to 0 to start accumulating the next
batch"]:::main N_ResetRecordCounterto0_Node3 -- Yes --> N_ResetRecordCounterto0_Node3_action N_ResetRecordCounterto0_Node3_action --> E_ResetRecordCounterto0 N_ResetRecordCounterto0_Node2 -- No --> N_ResetRecordCounterto0_Node3 N_ResetRecordCounterto0_Node3 -- No --> E_ResetRecordCounterto0
File: GCSTONLY.cbl
GIVEN:
A full batch of 22 records has been successfully transmitted
WHEN:
The system completes batch processing
THEN:
The record counter is reset to 0
File: GCSTONLY.cbl
GIVEN:
A full batch of 22 records has been processed and sent
WHEN:
The batch processing is complete
THEN:
The record counter (I) is reset to 0
File: GCSTONLY.cbl
GIVEN:
A data segment with 22 records has been successfully transmitted
WHEN:
The transmission is complete
THEN:
The record counter I is reset to 0
File: GCSTONLY.cbl
GIVEN:
A batch of records has been successfully transmitted and processed
WHEN:
The batch transmission is complete
THEN:
The record counter should be reset to 0 to start accumulating the next batch
β Consolidated Acceptance Criteria
- The system prepares for the next batch → the output record area is cleared with spaces
- The system completes the batch processing cycle → the output record area is cleared with spaces
- Preparing for the next batch of records → the output record area is cleared to spaces
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearOutputRecords(["Start Step"])
E_ClearOutputRecords(["End Step"])
N_ClearOutputRecords_Node0{"The system prepares for the next
batch"}:::decision N_ClearOutputRecords_Node0_action["The output record area is cleared
with spaces"]:::main N_ClearOutputRecords_Node0 -- Yes --> N_ClearOutputRecords_Node0_action N_ClearOutputRecords_Node0_action --> E_ClearOutputRecords S_ClearOutputRecords --> N_ClearOutputRecords_Node0 N_ClearOutputRecords_Node1{"The system completes the batch
processing cycle"}:::decision N_ClearOutputRecords_Node1_action["The output record area is cleared
with spaces"]:::main N_ClearOutputRecords_Node1 -- Yes --> N_ClearOutputRecords_Node1_action N_ClearOutputRecords_Node1_action --> E_ClearOutputRecords N_ClearOutputRecords_Node0 -- No --> N_ClearOutputRecords_Node1 N_ClearOutputRecords_Node2{"Preparing for the next batch of
records"}:::decision N_ClearOutputRecords_Node2_action["The output record area is cleared
to spaces"]:::main N_ClearOutputRecords_Node2 -- Yes --> N_ClearOutputRecords_Node2_action N_ClearOutputRecords_Node2_action --> E_ClearOutputRecords N_ClearOutputRecords_Node1 -- No --> N_ClearOutputRecords_Node2 N_ClearOutputRecords_Node2 -- No --> E_ClearOutputRecords
batch"}:::decision N_ClearOutputRecords_Node0_action["The output record area is cleared
with spaces"]:::main N_ClearOutputRecords_Node0 -- Yes --> N_ClearOutputRecords_Node0_action N_ClearOutputRecords_Node0_action --> E_ClearOutputRecords S_ClearOutputRecords --> N_ClearOutputRecords_Node0 N_ClearOutputRecords_Node1{"The system completes the batch
processing cycle"}:::decision N_ClearOutputRecords_Node1_action["The output record area is cleared
with spaces"]:::main N_ClearOutputRecords_Node1 -- Yes --> N_ClearOutputRecords_Node1_action N_ClearOutputRecords_Node1_action --> E_ClearOutputRecords N_ClearOutputRecords_Node0 -- No --> N_ClearOutputRecords_Node1 N_ClearOutputRecords_Node2{"Preparing for the next batch of
records"}:::decision N_ClearOutputRecords_Node2_action["The output record area is cleared
to spaces"]:::main N_ClearOutputRecords_Node2 -- Yes --> N_ClearOutputRecords_Node2_action N_ClearOutputRecords_Node2_action --> E_ClearOutputRecords N_ClearOutputRecords_Node1 -- No --> N_ClearOutputRecords_Node2 N_ClearOutputRecords_Node2 -- No --> E_ClearOutputRecords
File: GCSTONLY.cbl
GIVEN:
A batch has been processed and the counter has been reset
WHEN:
The system prepares for the next batch
THEN:
The output record area is cleared with spaces
File: GCSTONLY.cbl
GIVEN:
A batch has been processed and the record counter has been reset
WHEN:
The system completes the batch processing cycle
THEN:
The output record area is cleared with spaces
File: GCSTONLY.cbl
GIVEN:
A data segment has been transmitted and the record counter is reset
WHEN:
Preparing for the next batch of records
THEN:
The output record area is cleared to spaces
β Consolidated Acceptance Criteria
- The system processes a subsequent record after the first record → the record counter I is incremented by 1 to point to the next available position
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementRecordCounterADD1TOI(["Start Step"])
E_IncrementRecordCounterADD1TOI(["End Step"])
N_IncrementRecordCounterADD1TOI_Node0{"The system processes a subsequent
record after the first record"}:::decision N_IncrementRecordCounterADD1TOI_Node0_action["The record counter I is incremented
by 1 to point to the next available
position"]:::main N_IncrementRecordCounterADD1TOI_Node0 -- Yes --> N_IncrementRecordCounterADD1TOI_Node0_action N_IncrementRecordCounterADD1TOI_Node0_action --> E_IncrementRecordCounterADD1TOI S_IncrementRecordCounterADD1TOI --> N_IncrementRecordCounterADD1TOI_Node0 N_IncrementRecordCounterADD1TOI_Node0 -- No --> E_IncrementRecordCounterADD1TOI
record after the first record"}:::decision N_IncrementRecordCounterADD1TOI_Node0_action["The record counter I is incremented
by 1 to point to the next available
position"]:::main N_IncrementRecordCounterADD1TOI_Node0 -- Yes --> N_IncrementRecordCounterADD1TOI_Node0_action N_IncrementRecordCounterADD1TOI_Node0_action --> E_IncrementRecordCounterADD1TOI S_IncrementRecordCounterADD1TOI --> N_IncrementRecordCounterADD1TOI_Node0 N_IncrementRecordCounterADD1TOI_Node0 -- No --> E_IncrementRecordCounterADD1TOI
File: GCSTONLY.cbl
GIVEN:
A record counter I exists to track current position in data segment
WHEN:
The system processes a subsequent record after the first record
THEN:
The record counter I is incremented by 1 to point to the next available position
β Consolidated Acceptance Criteria
- The system needs to store the input record in the data segment → the input record is moved to the OLV-REC position I within the data segment array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreInputRecordinDataSegmentatPositionI(["Start Step"])
E_StoreInputRecordinDataSegmentatPositionI(["End Step"])
N_StoreInputRecordinDataSegmentatPositionI_Node0{"The system needs to store the input
record in the data segment"}:::decision N_StoreInputRecordinDataSegmentatPositionI_Node0_action["The input record is moved to the
OLV-REC position I within the data
segment array"]:::main N_StoreInputRecordinDataSegmentatPositionI_Node0 -- Yes --> N_StoreInputRecordinDataSegmentatPositionI_Node0_action N_StoreInputRecordinDataSegmentatPositionI_Node0_action --> E_StoreInputRecordinDataSegmentatPositionI S_StoreInputRecordinDataSegmentatPositionI --> N_StoreInputRecordinDataSegmentatPositionI_Node0 N_StoreInputRecordinDataSegmentatPositionI_Node0 -- No --> E_StoreInputRecordinDataSegmentatPositionI
record in the data segment"}:::decision N_StoreInputRecordinDataSegmentatPositionI_Node0_action["The input record is moved to the
OLV-REC position I within the data
segment array"]:::main N_StoreInputRecordinDataSegmentatPositionI_Node0 -- Yes --> N_StoreInputRecordinDataSegmentatPositionI_Node0_action N_StoreInputRecordinDataSegmentatPositionI_Node0_action --> E_StoreInputRecordinDataSegmentatPositionI S_StoreInputRecordinDataSegmentatPositionI --> N_StoreInputRecordinDataSegmentatPositionI_Node0 N_StoreInputRecordinDataSegmentatPositionI_Node0 -- No --> E_StoreInputRecordinDataSegmentatPositionI
File: GCSTONLY.cbl
GIVEN:
An input record is available for processing and record counter I indicates the target position
WHEN:
The system needs to store the input record in the data segment
THEN:
The input record is moved to the OLV-REC position I within the data segment array
β Consolidated Acceptance Criteria
- The system begins processing the record → the record counter (I) is incremented by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RecordCounterIncremented(["Start Step"])
E_RecordCounterIncremented(["End Step"])
N_RecordCounterIncremented_Node0{"The system begins processing the
record"}:::decision N_RecordCounterIncremented_Node0_action["The record counter I is incremented
by 1"]:::main N_RecordCounterIncremented_Node0 -- Yes --> N_RecordCounterIncremented_Node0_action N_RecordCounterIncremented_Node0_action --> E_RecordCounterIncremented S_RecordCounterIncremented --> N_RecordCounterIncremented_Node0 N_RecordCounterIncremented_Node0 -- No --> E_RecordCounterIncremented
record"}:::decision N_RecordCounterIncremented_Node0_action["The record counter I is incremented
by 1"]:::main N_RecordCounterIncremented_Node0 -- Yes --> N_RecordCounterIncremented_Node0_action N_RecordCounterIncremented_Node0_action --> E_RecordCounterIncremented S_RecordCounterIncremented --> N_RecordCounterIncremented_Node0 N_RecordCounterIncremented_Node0 -- No --> E_RecordCounterIncremented
File: GCSTONLY.cbl
GIVEN:
A new record is being processed in the next record processing section
WHEN:
The system begins processing the record
THEN:
The record counter (I) is incremented by 1
β Consolidated Acceptance Criteria
- If the current record count → if the record count equals 22, batch processing is triggered; otherwise, processing continues to exit
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsRecordCount22(["Start Step"])
E_IsRecordCount22(["End Step"])
N_IsRecordCount22_Node0{"The system evaluates the current
record count"}:::decision N_IsRecordCount22_Node0_action["If the record count equals 22,
batch processing is triggered
otherwise, processing continues to
exit"]:::main N_IsRecordCount22_Node0 -- Yes --> N_IsRecordCount22_Node0_action N_IsRecordCount22_Node0_action --> E_IsRecordCount22 S_IsRecordCount22 --> N_IsRecordCount22_Node0 N_IsRecordCount22_Node0 -- No --> E_IsRecordCount22
record count"}:::decision N_IsRecordCount22_Node0_action["If the record count equals 22,
batch processing is triggered
otherwise, processing continues to
exit"]:::main N_IsRecordCount22_Node0 -- Yes --> N_IsRecordCount22_Node0_action N_IsRecordCount22_Node0_action --> E_IsRecordCount22 S_IsRecordCount22 --> N_IsRecordCount22_Node0 N_IsRecordCount22_Node0 -- No --> E_IsRecordCount22
File: GCSTONLY.cbl
GIVEN:
A record has been added to the data segment and the record counter has been incremented
WHEN:
The system evaluates the current record count
THEN:
If the record count equals 22, batch processing is triggered; otherwise, processing continues to exit
β Consolidated Acceptance Criteria
- The system prepares to send the data segment → the segment length of the data segment is set to 1786
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSegmentLengthto1786(["Start Step"])
E_SetSegmentLengthto1786(["End Step"])
N_SetSegmentLengthto1786_Node0{"The system prepares to send the
data segment"}:::decision N_SetSegmentLengthto1786_Node0_action["The segment length of the data
segment is set to 1786"]:::main N_SetSegmentLengthto1786_Node0 -- Yes --> N_SetSegmentLengthto1786_Node0_action N_SetSegmentLengthto1786_Node0_action --> E_SetSegmentLengthto1786 S_SetSegmentLengthto1786 --> N_SetSegmentLengthto1786_Node0 N_SetSegmentLengthto1786_Node0 -- No --> E_SetSegmentLengthto1786
data segment"}:::decision N_SetSegmentLengthto1786_Node0_action["The segment length of the data
segment is set to 1786"]:::main N_SetSegmentLengthto1786_Node0 -- Yes --> N_SetSegmentLengthto1786_Node0_action N_SetSegmentLengthto1786_Node0_action --> E_SetSegmentLengthto1786 S_SetSegmentLengthto1786 --> N_SetSegmentLengthto1786_Node0 N_SetSegmentLengthto1786_Node0 -- No --> E_SetSegmentLengthto1786
File: GCSTONLY.cbl
GIVEN:
The record counter has reached 22 records
WHEN:
The system prepares to send the data segment
THEN:
The segment length of the data segment is set to 1786
β Consolidated Acceptance Criteria
- The system processes the full batch → the data segment is sent using the appropriate method based on the runtime environment (CIMS for TPE or KX2BMP for BPE)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendDataSegment(["Start Step"])
E_SendDataSegment(["End Step"])
N_SendDataSegment_Node0{"The system processes the full batch"}:::decision
N_SendDataSegment_Node0_action["The data segment is sent using the
appropriate method based on the
runtime environment CIMS for TPE or
KX2BMP for BPE"]:::main N_SendDataSegment_Node0 -- Yes --> N_SendDataSegment_Node0_action N_SendDataSegment_Node0_action --> E_SendDataSegment S_SendDataSegment --> N_SendDataSegment_Node0 N_SendDataSegment_Node0 -- No --> E_SendDataSegment
appropriate method based on the
runtime environment CIMS for TPE or
KX2BMP for BPE"]:::main N_SendDataSegment_Node0 -- Yes --> N_SendDataSegment_Node0_action N_SendDataSegment_Node0_action --> E_SendDataSegment S_SendDataSegment --> N_SendDataSegment_Node0 N_SendDataSegment_Node0 -- No --> E_SendDataSegment
File: GCSTONLY.cbl
GIVEN:
A data segment contains 22 records and has been assigned a segment length of 1786
WHEN:
The system processes the full batch
THEN:
The data segment is sent using the appropriate method based on the runtime environment (CIMS for TPE or KX2BMP for BPE)
β Consolidated Acceptance Criteria
- The transmission process begins → the accept status field is cleared to spaces
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearAcceptStatus(["Start Step"])
E_ClearAcceptStatus(["End Step"])
N_ClearAcceptStatus_Node0{"The transmission process begins"}:::decision
N_ClearAcceptStatus_Node0_action["The accept status field is cleared
to spaces"]:::main N_ClearAcceptStatus_Node0 -- Yes --> N_ClearAcceptStatus_Node0_action N_ClearAcceptStatus_Node0_action --> E_ClearAcceptStatus S_ClearAcceptStatus --> N_ClearAcceptStatus_Node0 N_ClearAcceptStatus_Node0 -- No --> E_ClearAcceptStatus
to spaces"]:::main N_ClearAcceptStatus_Node0 -- Yes --> N_ClearAcceptStatus_Node0_action N_ClearAcceptStatus_Node0_action --> E_ClearAcceptStatus S_ClearAcceptStatus --> N_ClearAcceptStatus_Node0 N_ClearAcceptStatus_Node0 -- No --> E_ClearAcceptStatus
File: GCSTONLY.cbl
GIVEN:
A data segment is ready for transmission
WHEN:
The transmission process begins
THEN:
The accept status field is cleared to spaces
β Consolidated Acceptance Criteria
- The system checks the runtime environment → if running in TPE environment, use CIMS transmission method, otherwise use KX2BMP transmission method
- The environment parameter is checked for its value → the system sets the environment type to TPE if the parameter is empty or low-value, otherwise sets it to BPE
- The system checks the environment parameter from system environment → if environment parameter is empty or low-value, set environment type to TPE, otherwise set environment type to BPE
- The environment type is determined as either TPE or BPE → tPE environment uses CIMS service while BPE environment uses KX2BMP service
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckEnvironmentType(["Start Step"])
E_CheckEnvironmentType(["End Step"])
N_CheckEnvironmentType_Node0{"The system checks the runtime
environment"}:::decision N_CheckEnvironmentType_Node0_action["If running in TPE environment, use
CIMS transmission method, otherwise
use KX2BMP transmission method"]:::main N_CheckEnvironmentType_Node0 -- Yes --> N_CheckEnvironmentType_Node0_action N_CheckEnvironmentType_Node0_action --> E_CheckEnvironmentType S_CheckEnvironmentType --> N_CheckEnvironmentType_Node0 N_CheckEnvironmentType_Node1{"The environment parameter is
checked for its value"}:::decision N_CheckEnvironmentType_Node1_action["The system sets the environment
type to TPE if the parameter is
empty or low-value, otherwise sets
it to BPE"]:::main N_CheckEnvironmentType_Node1 -- Yes --> N_CheckEnvironmentType_Node1_action N_CheckEnvironmentType_Node1_action --> E_CheckEnvironmentType N_CheckEnvironmentType_Node0 -- No --> N_CheckEnvironmentType_Node1 N_CheckEnvironmentType_Node2{"The system checks the environment
parameter from system environment"}:::decision N_CheckEnvironmentType_Node2_action["If environment parameter is empty
or low-value, set environment type
to TPE, otherwise set environment
type to BPE"]:::main N_CheckEnvironmentType_Node2 -- Yes --> N_CheckEnvironmentType_Node2_action N_CheckEnvironmentType_Node2_action --> E_CheckEnvironmentType N_CheckEnvironmentType_Node1 -- No --> N_CheckEnvironmentType_Node2 N_CheckEnvironmentType_Node3{"The environment type is determined
as either TPE or BPE"}:::decision N_CheckEnvironmentType_Node3_action["TPE environment uses CIMS service
while BPE environment uses KX2BMP
service"]:::main N_CheckEnvironmentType_Node3 -- Yes --> N_CheckEnvironmentType_Node3_action N_CheckEnvironmentType_Node3_action --> E_CheckEnvironmentType N_CheckEnvironmentType_Node2 -- No --> N_CheckEnvironmentType_Node3 N_CheckEnvironmentType_Node3 -- No --> E_CheckEnvironmentType
environment"}:::decision N_CheckEnvironmentType_Node0_action["If running in TPE environment, use
CIMS transmission method, otherwise
use KX2BMP transmission method"]:::main N_CheckEnvironmentType_Node0 -- Yes --> N_CheckEnvironmentType_Node0_action N_CheckEnvironmentType_Node0_action --> E_CheckEnvironmentType S_CheckEnvironmentType --> N_CheckEnvironmentType_Node0 N_CheckEnvironmentType_Node1{"The environment parameter is
checked for its value"}:::decision N_CheckEnvironmentType_Node1_action["The system sets the environment
type to TPE if the parameter is
empty or low-value, otherwise sets
it to BPE"]:::main N_CheckEnvironmentType_Node1 -- Yes --> N_CheckEnvironmentType_Node1_action N_CheckEnvironmentType_Node1_action --> E_CheckEnvironmentType N_CheckEnvironmentType_Node0 -- No --> N_CheckEnvironmentType_Node1 N_CheckEnvironmentType_Node2{"The system checks the environment
parameter from system environment"}:::decision N_CheckEnvironmentType_Node2_action["If environment parameter is empty
or low-value, set environment type
to TPE, otherwise set environment
type to BPE"]:::main N_CheckEnvironmentType_Node2 -- Yes --> N_CheckEnvironmentType_Node2_action N_CheckEnvironmentType_Node2_action --> E_CheckEnvironmentType N_CheckEnvironmentType_Node1 -- No --> N_CheckEnvironmentType_Node2 N_CheckEnvironmentType_Node3{"The environment type is determined
as either TPE or BPE"}:::decision N_CheckEnvironmentType_Node3_action["TPE environment uses CIMS service
while BPE environment uses KX2BMP
service"]:::main N_CheckEnvironmentType_Node3 -- Yes --> N_CheckEnvironmentType_Node3_action N_CheckEnvironmentType_Node3_action --> E_CheckEnvironmentType N_CheckEnvironmentType_Node2 -- No --> N_CheckEnvironmentType_Node3 N_CheckEnvironmentType_Node3 -- No --> E_CheckEnvironmentType
File: GCSTONLY.cbl
GIVEN:
A data segment needs to be transmitted
WHEN:
The system checks the runtime environment
THEN:
If running in TPE environment, use CIMS transmission method, otherwise use KX2BMP transmission method
File: GCSTONLY.cbl
GIVEN:
A system environment parameter is available for evaluation
WHEN:
The environment parameter is checked for its value
THEN:
The system sets the environment type to TPE if the parameter is empty or low-value, otherwise sets it to BPE
File: GCSTONLY.cbl
GIVEN:
A message processing request is initiated
WHEN:
The system checks the environment parameter from system environment
THEN:
If environment parameter is empty or low-value, set environment type to TPE, otherwise set environment type to BPE
File: GCSTONLY.cbl
GIVEN:
The system is processing messages and needs to send data to a queue
WHEN:
The environment type is determined as either TPE or BPE
THEN:
TPE environment uses CIMS service while BPE environment uses KX2BMP service
β Consolidated Acceptance Criteria
- Data transmission is initiated → the system calls CIMS service with ISRT operation to insert the data segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendviaCIMSTPEEnvironment(["Start Step"])
E_SendviaCIMSTPEEnvironment(["End Step"])
N_SendviaCIMSTPEEnvironment_Node0{"Data transmission is initiated"}:::decision
N_SendviaCIMSTPEEnvironment_Node0_action["The system calls CIMS service with
ISRT operation to insert the data
segment"]:::main N_SendviaCIMSTPEEnvironment_Node0 -- Yes --> N_SendviaCIMSTPEEnvironment_Node0_action N_SendviaCIMSTPEEnvironment_Node0_action --> E_SendviaCIMSTPEEnvironment S_SendviaCIMSTPEEnvironment --> N_SendviaCIMSTPEEnvironment_Node0 N_SendviaCIMSTPEEnvironment_Node0 -- No --> E_SendviaCIMSTPEEnvironment
ISRT operation to insert the data
segment"]:::main N_SendviaCIMSTPEEnvironment_Node0 -- Yes --> N_SendviaCIMSTPEEnvironment_Node0_action N_SendviaCIMSTPEEnvironment_Node0_action --> E_SendviaCIMSTPEEnvironment S_SendviaCIMSTPEEnvironment --> N_SendviaCIMSTPEEnvironment_Node0 N_SendviaCIMSTPEEnvironment_Node0 -- No --> E_SendviaCIMSTPEEnvironment
File: GCSTONLY.cbl
GIVEN:
The system is running in TPE environment and has a data segment ready for transmission
WHEN:
Data transmission is initiated
THEN:
The system calls CIMS service with ISRT operation to insert the data segment
β Consolidated Acceptance Criteria
- Preparing for KX2BMP transmission → the KX2BMP length is computed as the length of the data segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateKX2BMPLength(["Start Step"])
E_CalculateKX2BMPLength(["End Step"])
N_CalculateKX2BMPLength_Node0{"Preparing for KX2BMP transmission"}:::decision
N_CalculateKX2BMPLength_Node0_action["The KX2BMP length is computed as
the length of the data segment"]:::main N_CalculateKX2BMPLength_Node0 -- Yes --> N_CalculateKX2BMPLength_Node0_action N_CalculateKX2BMPLength_Node0_action --> E_CalculateKX2BMPLength S_CalculateKX2BMPLength --> N_CalculateKX2BMPLength_Node0 N_CalculateKX2BMPLength_Node0 -- No --> E_CalculateKX2BMPLength
the length of the data segment"]:::main N_CalculateKX2BMPLength_Node0 -- Yes --> N_CalculateKX2BMPLength_Node0_action N_CalculateKX2BMPLength_Node0_action --> E_CalculateKX2BMPLength S_CalculateKX2BMPLength --> N_CalculateKX2BMPLength_Node0 N_CalculateKX2BMPLength_Node0 -- No --> E_CalculateKX2BMPLength
File: GCSTONLY.cbl
GIVEN:
The system is running in BPE environment and has a data segment ready for transmission
WHEN:
Preparing for KX2BMP transmission
THEN:
The KX2BMP length is computed as the length of the data segment
β Consolidated Acceptance Criteria
- Preparing data for KX2BMP transmission → the data segment is moved to the KX2BMP area
- KX2BMP parameters are being finalized for transmission → the control segment or data segment content is moved to the KX2BMP transmission area
- Data needs to be moved to KX2BMP service area → system moves the data segment to KX2BMP-AREA for service processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveDatatoKX2BMPArea(["Start Step"])
E_MoveDatatoKX2BMPArea(["End Step"])
N_MoveDatatoKX2BMPArea_Node0{"Preparing data for KX2BMP
transmission"}:::decision N_MoveDatatoKX2BMPArea_Node0_action["The data segment is moved to the
KX2BMP area"]:::main N_MoveDatatoKX2BMPArea_Node0 -- Yes --> N_MoveDatatoKX2BMPArea_Node0_action N_MoveDatatoKX2BMPArea_Node0_action --> E_MoveDatatoKX2BMPArea S_MoveDatatoKX2BMPArea --> N_MoveDatatoKX2BMPArea_Node0 N_MoveDatatoKX2BMPArea_Node1{"KX2BMP parameters are being
finalized for transmission"}:::decision N_MoveDatatoKX2BMPArea_Node1_action["The control segment or data segment
content is moved to the KX2BMP
transmission area"]:::main N_MoveDatatoKX2BMPArea_Node1 -- Yes --> N_MoveDatatoKX2BMPArea_Node1_action N_MoveDatatoKX2BMPArea_Node1_action --> E_MoveDatatoKX2BMPArea N_MoveDatatoKX2BMPArea_Node0 -- No --> N_MoveDatatoKX2BMPArea_Node1 N_MoveDatatoKX2BMPArea_Node2{"Data needs to be moved to KX2BMP
service area"}:::decision N_MoveDatatoKX2BMPArea_Node2_action["System moves the data segment to
KX2BMP-AREA for service processing"]:::main N_MoveDatatoKX2BMPArea_Node2 -- Yes --> N_MoveDatatoKX2BMPArea_Node2_action N_MoveDatatoKX2BMPArea_Node2_action --> E_MoveDatatoKX2BMPArea N_MoveDatatoKX2BMPArea_Node1 -- No --> N_MoveDatatoKX2BMPArea_Node2 N_MoveDatatoKX2BMPArea_Node2 -- No --> E_MoveDatatoKX2BMPArea
transmission"}:::decision N_MoveDatatoKX2BMPArea_Node0_action["The data segment is moved to the
KX2BMP area"]:::main N_MoveDatatoKX2BMPArea_Node0 -- Yes --> N_MoveDatatoKX2BMPArea_Node0_action N_MoveDatatoKX2BMPArea_Node0_action --> E_MoveDatatoKX2BMPArea S_MoveDatatoKX2BMPArea --> N_MoveDatatoKX2BMPArea_Node0 N_MoveDatatoKX2BMPArea_Node1{"KX2BMP parameters are being
finalized for transmission"}:::decision N_MoveDatatoKX2BMPArea_Node1_action["The control segment or data segment
content is moved to the KX2BMP
transmission area"]:::main N_MoveDatatoKX2BMPArea_Node1 -- Yes --> N_MoveDatatoKX2BMPArea_Node1_action N_MoveDatatoKX2BMPArea_Node1_action --> E_MoveDatatoKX2BMPArea N_MoveDatatoKX2BMPArea_Node0 -- No --> N_MoveDatatoKX2BMPArea_Node1 N_MoveDatatoKX2BMPArea_Node2{"Data needs to be moved to KX2BMP
service area"}:::decision N_MoveDatatoKX2BMPArea_Node2_action["System moves the data segment to
KX2BMP-AREA for service processing"]:::main N_MoveDatatoKX2BMPArea_Node2 -- Yes --> N_MoveDatatoKX2BMPArea_Node2_action N_MoveDatatoKX2BMPArea_Node2_action --> E_MoveDatatoKX2BMPArea N_MoveDatatoKX2BMPArea_Node1 -- No --> N_MoveDatatoKX2BMPArea_Node2 N_MoveDatatoKX2BMPArea_Node2 -- No --> E_MoveDatatoKX2BMPArea
File: GCSTONLY.cbl
GIVEN:
The system is running in BPE environment and the KX2BMP length is calculated
WHEN:
Preparing data for KX2BMP transmission
THEN:
The data segment is moved to the KX2BMP area
File: GCSTONLY.cbl
GIVEN:
The system is running in BPE environment and has prepared message data with calculated length
WHEN:
KX2BMP parameters are being finalized for transmission
THEN:
The control segment or data segment content is moved to the KX2BMP transmission area
File: GCSTONLY.cbl
GIVEN:
Data segment is ready for transmission and KX2BMP length is calculated
WHEN:
Data needs to be moved to KX2BMP service area
THEN:
System moves the data segment to KX2BMP-AREA for service processing
β Consolidated Acceptance Criteria
- Data transmission is executed → the KX2BMP-INSERT procedure is performed to transmit the data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExecuteKX2BMPInsert(["Start Step"])
E_ExecuteKX2BMPInsert(["End Step"])
N_ExecuteKX2BMPInsert_Node0{"Data transmission is executed"}:::decision
N_ExecuteKX2BMPInsert_Node0_action["The KX2BMP-INSERT procedure is
performed to transmit the data"]:::main N_ExecuteKX2BMPInsert_Node0 -- Yes --> N_ExecuteKX2BMPInsert_Node0_action N_ExecuteKX2BMPInsert_Node0_action --> E_ExecuteKX2BMPInsert S_ExecuteKX2BMPInsert --> N_ExecuteKX2BMPInsert_Node0 N_ExecuteKX2BMPInsert_Node0 -- No --> E_ExecuteKX2BMPInsert
performed to transmit the data"]:::main N_ExecuteKX2BMPInsert_Node0 -- Yes --> N_ExecuteKX2BMPInsert_Node0_action N_ExecuteKX2BMPInsert_Node0_action --> E_ExecuteKX2BMPInsert S_ExecuteKX2BMPInsert --> N_ExecuteKX2BMPInsert_Node0 N_ExecuteKX2BMPInsert_Node0 -- No --> E_ExecuteKX2BMPInsert
File: GCSTONLY.cbl
GIVEN:
The system is running in BPE environment and data is prepared in KX2BMP area
WHEN:
Data transmission is executed
THEN:
The KX2BMP-INSERT procedure is performed to transmit the data
β Consolidated Acceptance Criteria
- A message transmission operation is requested → the system calls CIMS program with the appropriate message parameters and control blocks
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallCIMSwithMessageParameters(["Start Step"])
E_CallCIMSwithMessageParameters(["End Step"])
N_CallCIMSwithMessageParameters_Node0{"A message transmission operation is
requested"}:::decision N_CallCIMSwithMessageParameters_Node0_action["The system calls CIMS program with
the appropriate message parameters
and control blocks"]:::main N_CallCIMSwithMessageParameters_Node0 -- Yes --> N_CallCIMSwithMessageParameters_Node0_action N_CallCIMSwithMessageParameters_Node0_action --> E_CallCIMSwithMessageParameters S_CallCIMSwithMessageParameters --> N_CallCIMSwithMessageParameters_Node0 N_CallCIMSwithMessageParameters_Node0 -- No --> E_CallCIMSwithMessageParameters
requested"}:::decision N_CallCIMSwithMessageParameters_Node0_action["The system calls CIMS program with
the appropriate message parameters
and control blocks"]:::main N_CallCIMSwithMessageParameters_Node0 -- Yes --> N_CallCIMSwithMessageParameters_Node0_action N_CallCIMSwithMessageParameters_Node0_action --> E_CallCIMSwithMessageParameters S_CallCIMSwithMessageParameters --> N_CallCIMSwithMessageParameters_Node0 N_CallCIMSwithMessageParameters_Node0 -- No --> E_CallCIMSwithMessageParameters
File: GCSTONLY.cbl
GIVEN:
The system is running in TPE environment and a message needs to be transmitted
WHEN:
A message transmission operation is requested
THEN:
- The system calls cims program with the appropriate message parameters
- Control blocks
β Consolidated Acceptance Criteria
- Message transmission is initiated → the system sets timestamp fields to low-value, sets task number to low-value, and configures the destination parameter
- KX2BMP service is selected for message processing → system sets timestamp fields to low-value, sets task number to low-value, and configures destination from MST-BMP
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetKX2BMPParameters(["Start Step"])
E_SetKX2BMPParameters(["End Step"])
N_SetKX2BMPParameters_Node0{"Message transmission is initiated"}:::decision
N_SetKX2BMPParameters_Node0_action["The system sets timestamp fields to
low-value, sets task number to
low-value, and configures the
destination parameter"]:::main N_SetKX2BMPParameters_Node0 -- Yes --> N_SetKX2BMPParameters_Node0_action N_SetKX2BMPParameters_Node0_action --> E_SetKX2BMPParameters S_SetKX2BMPParameters --> N_SetKX2BMPParameters_Node0 N_SetKX2BMPParameters_Node1{"KX2BMP service is selected for
message processing"}:::decision N_SetKX2BMPParameters_Node1_action["System sets timestamp fields to
low-value, sets task number to
low-value, and configures
destination from MST-BMP"]:::main N_SetKX2BMPParameters_Node1 -- Yes --> N_SetKX2BMPParameters_Node1_action N_SetKX2BMPParameters_Node1_action --> E_SetKX2BMPParameters N_SetKX2BMPParameters_Node0 -- No --> N_SetKX2BMPParameters_Node1 N_SetKX2BMPParameters_Node1 -- No --> E_SetKX2BMPParameters
low-value, sets task number to
low-value, and configures the
destination parameter"]:::main N_SetKX2BMPParameters_Node0 -- Yes --> N_SetKX2BMPParameters_Node0_action N_SetKX2BMPParameters_Node0_action --> E_SetKX2BMPParameters S_SetKX2BMPParameters --> N_SetKX2BMPParameters_Node0 N_SetKX2BMPParameters_Node1{"KX2BMP service is selected for
message processing"}:::decision N_SetKX2BMPParameters_Node1_action["System sets timestamp fields to
low-value, sets task number to
low-value, and configures
destination from MST-BMP"]:::main N_SetKX2BMPParameters_Node1 -- Yes --> N_SetKX2BMPParameters_Node1_action N_SetKX2BMPParameters_Node1_action --> E_SetKX2BMPParameters N_SetKX2BMPParameters_Node0 -- No --> N_SetKX2BMPParameters_Node1 N_SetKX2BMPParameters_Node1 -- No --> E_SetKX2BMPParameters
File: GCSTONLY.cbl
GIVEN:
The system is running in BPE environment and a message needs to be transmitted
WHEN:
Message transmission is initiated
THEN:
The system sets timestamp fields to low-value, sets task number to low-value, and configures the destination parameter
File: GCSTONLY.cbl
GIVEN:
The system is running in BPE environment and needs to send data
WHEN:
KX2BMP service is selected for message processing
THEN:
System sets timestamp fields to low-value, sets task number to low-value, and configures destination from MST-BMP
β Consolidated Acceptance Criteria
- The message length needs to be determined → the system computes the KX2BMP length as the length of the message segment
- KX2BMP parameters are being set up and message length needs to be determined → the message length is calculated based on the length of the control segment or data segment being transmitted
- The data segment length needs to be determined → system computes KX2BMP-LENGTH as the length of the data segment being sent
- The system prepares the message parameters → the message length is calculated based on the length of the data segment or control segment being processed
- The system needs to determine the message size → the message length is computed based on the actual data segment or control segment length
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateMessageLength(["Start Step"])
E_CalculateMessageLength(["End Step"])
N_CalculateMessageLength_Node0{"The message length needs to be
determined"}:::decision N_CalculateMessageLength_Node0_action["The system computes the KX2BMP
length as the length of the message
segment"]:::main N_CalculateMessageLength_Node0 -- Yes --> N_CalculateMessageLength_Node0_action N_CalculateMessageLength_Node0_action --> E_CalculateMessageLength S_CalculateMessageLength --> N_CalculateMessageLength_Node0 N_CalculateMessageLength_Node1{"KX2BMP parameters are being set up
and message length needs to be
determined"}:::decision N_CalculateMessageLength_Node1_action["The message length is calculated
based on the length of the control
segment or data segment being
transmitted"]:::main N_CalculateMessageLength_Node1 -- Yes --> N_CalculateMessageLength_Node1_action N_CalculateMessageLength_Node1_action --> E_CalculateMessageLength N_CalculateMessageLength_Node0 -- No --> N_CalculateMessageLength_Node1 N_CalculateMessageLength_Node2{"The data segment length needs to be
determined"}:::decision N_CalculateMessageLength_Node2_action["System computes KX2BMP-LENGTH as
the length of the data segment being
sent"]:::main N_CalculateMessageLength_Node2 -- Yes --> N_CalculateMessageLength_Node2_action N_CalculateMessageLength_Node2_action --> E_CalculateMessageLength N_CalculateMessageLength_Node1 -- No --> N_CalculateMessageLength_Node2 N_CalculateMessageLength_Node3{"The system prepares the message
parameters"}:::decision N_CalculateMessageLength_Node3_action["The message length is calculated
based on the length of the data
segment or control segment being
processed"]:::main N_CalculateMessageLength_Node3 -- Yes --> N_CalculateMessageLength_Node3_action N_CalculateMessageLength_Node3_action --> E_CalculateMessageLength N_CalculateMessageLength_Node2 -- No --> N_CalculateMessageLength_Node3 N_CalculateMessageLength_Node4{"The system needs to determine the
message size"}:::decision N_CalculateMessageLength_Node4_action["The message length is computed
based on the actual data segment or
control segment length"]:::main N_CalculateMessageLength_Node4 -- Yes --> N_CalculateMessageLength_Node4_action N_CalculateMessageLength_Node4_action --> E_CalculateMessageLength N_CalculateMessageLength_Node3 -- No --> N_CalculateMessageLength_Node4 N_CalculateMessageLength_Node4 -- No --> E_CalculateMessageLength
determined"}:::decision N_CalculateMessageLength_Node0_action["The system computes the KX2BMP
length as the length of the message
segment"]:::main N_CalculateMessageLength_Node0 -- Yes --> N_CalculateMessageLength_Node0_action N_CalculateMessageLength_Node0_action --> E_CalculateMessageLength S_CalculateMessageLength --> N_CalculateMessageLength_Node0 N_CalculateMessageLength_Node1{"KX2BMP parameters are being set up
and message length needs to be
determined"}:::decision N_CalculateMessageLength_Node1_action["The message length is calculated
based on the length of the control
segment or data segment being
transmitted"]:::main N_CalculateMessageLength_Node1 -- Yes --> N_CalculateMessageLength_Node1_action N_CalculateMessageLength_Node1_action --> E_CalculateMessageLength N_CalculateMessageLength_Node0 -- No --> N_CalculateMessageLength_Node1 N_CalculateMessageLength_Node2{"The data segment length needs to be
determined"}:::decision N_CalculateMessageLength_Node2_action["System computes KX2BMP-LENGTH as
the length of the data segment being
sent"]:::main N_CalculateMessageLength_Node2 -- Yes --> N_CalculateMessageLength_Node2_action N_CalculateMessageLength_Node2_action --> E_CalculateMessageLength N_CalculateMessageLength_Node1 -- No --> N_CalculateMessageLength_Node2 N_CalculateMessageLength_Node3{"The system prepares the message
parameters"}:::decision N_CalculateMessageLength_Node3_action["The message length is calculated
based on the length of the data
segment or control segment being
processed"]:::main N_CalculateMessageLength_Node3 -- Yes --> N_CalculateMessageLength_Node3_action N_CalculateMessageLength_Node3_action --> E_CalculateMessageLength N_CalculateMessageLength_Node2 -- No --> N_CalculateMessageLength_Node3 N_CalculateMessageLength_Node4{"The system needs to determine the
message size"}:::decision N_CalculateMessageLength_Node4_action["The message length is computed
based on the actual data segment or
control segment length"]:::main N_CalculateMessageLength_Node4 -- Yes --> N_CalculateMessageLength_Node4_action N_CalculateMessageLength_Node4_action --> E_CalculateMessageLength N_CalculateMessageLength_Node3 -- No --> N_CalculateMessageLength_Node4 N_CalculateMessageLength_Node4 -- No --> E_CalculateMessageLength
File: GCSTONLY.cbl
GIVEN:
A message is prepared for KX2BMP transmission in BPE environment
WHEN:
The message length needs to be determined
THEN:
The system computes the KX2BMP length as the length of the message segment
File: GCSTONLY.cbl
GIVEN:
The system is running in BPE environment and has message data ready for transmission
WHEN:
- Kx2bmp parameters are being set up
- Message length needs to be determined
THEN:
The message length is calculated based on the length of the control segment or data segment being transmitted
File: GCSTONLY.cbl
GIVEN:
Data needs to be sent to message queue via KX2BMP service
WHEN:
The data segment length needs to be determined
THEN:
System computes KX2BMP-LENGTH as the length of the data segment being sent
File: GCSTONLY.cbl
GIVEN:
Message data needs to be sent through service call
WHEN:
The system prepares the message parameters
THEN:
The message length is calculated based on the length of the data segment or control segment being processed
File: GCSTONLY.cbl
GIVEN:
Message data is ready to be sent
WHEN:
The system needs to determine the message size
THEN:
The message length is computed based on the actual data segment or control segment length
β Consolidated Acceptance Criteria
- The message content needs to be prepared for transmission → the system moves the message segment content to the KX2BMP area
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveMessagetoKX2BMPArea(["Start Step"])
E_MoveMessagetoKX2BMPArea(["End Step"])
N_MoveMessagetoKX2BMPArea_Node0{"The message content needs to be
prepared for transmission"}:::decision N_MoveMessagetoKX2BMPArea_Node0_action["The system moves the message
segment content to the KX2BMP area"]:::main N_MoveMessagetoKX2BMPArea_Node0 -- Yes --> N_MoveMessagetoKX2BMPArea_Node0_action N_MoveMessagetoKX2BMPArea_Node0_action --> E_MoveMessagetoKX2BMPArea S_MoveMessagetoKX2BMPArea --> N_MoveMessagetoKX2BMPArea_Node0 N_MoveMessagetoKX2BMPArea_Node0 -- No --> E_MoveMessagetoKX2BMPArea
prepared for transmission"}:::decision N_MoveMessagetoKX2BMPArea_Node0_action["The system moves the message
segment content to the KX2BMP area"]:::main N_MoveMessagetoKX2BMPArea_Node0 -- Yes --> N_MoveMessagetoKX2BMPArea_Node0_action N_MoveMessagetoKX2BMPArea_Node0_action --> E_MoveMessagetoKX2BMPArea S_MoveMessagetoKX2BMPArea --> N_MoveMessagetoKX2BMPArea_Node0 N_MoveMessagetoKX2BMPArea_Node0 -- No --> E_MoveMessagetoKX2BMPArea
File: GCSTONLY.cbl
GIVEN:
A message is ready for KX2BMP transmission and the length has been calculated
WHEN:
The message content needs to be prepared for transmission
THEN:
The system moves the message segment content to the KX2BMP area
β Consolidated Acceptance Criteria
- The KX2BMP transmission is executed → the system calls KX2BMP program with all required parameters including program name, destination, application ID, system ID, operation, length, area, return code, timestamp, task number, and timestamp2
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallKX2BMPProgram(["Start Step"])
E_CallKX2BMPProgram(["End Step"])
N_CallKX2BMPProgram_Node0{"The KX2BMP transmission is executed"}:::decision
N_CallKX2BMPProgram_Node0_action["The system calls KX2BMP program
with all required parameters
including program name, destination,
application ID, system ID,
operation, length, area, return
code, timestamp, task number, and
timestamp2"]:::main N_CallKX2BMPProgram_Node0 -- Yes --> N_CallKX2BMPProgram_Node0_action N_CallKX2BMPProgram_Node0_action --> E_CallKX2BMPProgram S_CallKX2BMPProgram --> N_CallKX2BMPProgram_Node0 N_CallKX2BMPProgram_Node0 -- No --> E_CallKX2BMPProgram
with all required parameters
including program name, destination,
application ID, system ID,
operation, length, area, return
code, timestamp, task number, and
timestamp2"]:::main N_CallKX2BMPProgram_Node0 -- Yes --> N_CallKX2BMPProgram_Node0_action N_CallKX2BMPProgram_Node0_action --> E_CallKX2BMPProgram S_CallKX2BMPProgram --> N_CallKX2BMPProgram_Node0 N_CallKX2BMPProgram_Node0 -- No --> E_CallKX2BMPProgram
File: GCSTONLY.cbl
GIVEN:
Message parameters are set up for KX2BMP transmission
WHEN:
The KX2BMP transmission is executed
THEN:
The system calls KX2BMP program with all required parameters including program name, destination, application ID, system ID, operation, length, area, return code, timestamp, task number, and timestamp2
β Consolidated Acceptance Criteria
- The KX2BMP return code is evaluated → the system determines transmission success if the return code indicates OK status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_KX2BMPReturnCodeOK(["Start Step"])
E_KX2BMPReturnCodeOK(["End Step"])
N_KX2BMPReturnCodeOK_Node0{"The KX2BMP return code is evaluated"}:::decision
N_KX2BMPReturnCodeOK_Node0_action["The system determines transmission
success if the return code indicates
OK status"]:::main N_KX2BMPReturnCodeOK_Node0 -- Yes --> N_KX2BMPReturnCodeOK_Node0_action N_KX2BMPReturnCodeOK_Node0_action --> E_KX2BMPReturnCodeOK S_KX2BMPReturnCodeOK --> N_KX2BMPReturnCodeOK_Node0 N_KX2BMPReturnCodeOK_Node0 -- No --> E_KX2BMPReturnCodeOK
success if the return code indicates
OK status"]:::main N_KX2BMPReturnCodeOK_Node0 -- Yes --> N_KX2BMPReturnCodeOK_Node0_action N_KX2BMPReturnCodeOK_Node0_action --> E_KX2BMPReturnCodeOK S_KX2BMPReturnCodeOK --> N_KX2BMPReturnCodeOK_Node0 N_KX2BMPReturnCodeOK_Node0 -- No --> E_KX2BMPReturnCodeOK
File: GCSTONLY.cbl
GIVEN:
KX2BMP program has been called for message transmission
WHEN:
The KX2BMP return code is evaluated
THEN:
The system determines transmission success if the return code indicates OK status
β Consolidated Acceptance Criteria
- The transmission failure is detected → the system displays error messages with the return code, sets return code to 99, calls error handling functions, and stops program execution
- Error handling is triggered → system displays error messages with return code, sets return code to 99, calls error handling functions, and stops program execution
- The return code indicates an error condition → error messages are displayed, return code is set to 99, condition code is set, and processing is stopped
- The return code indicates an error condition → error messages are displayed showing the failure and the specific return code received
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DisplayErrorMessages(["Start Step"])
E_DisplayErrorMessages(["End Step"])
N_DisplayErrorMessages_Node0{"The transmission failure is
detected"}:::decision N_DisplayErrorMessages_Node0_action["The system displays error messages
with the return code, sets return
code to 99, calls error handling
functions, and stops program
execution"]:::main N_DisplayErrorMessages_Node0 -- Yes --> N_DisplayErrorMessages_Node0_action N_DisplayErrorMessages_Node0_action --> E_DisplayErrorMessages S_DisplayErrorMessages --> N_DisplayErrorMessages_Node0 N_DisplayErrorMessages_Node1{"Error handling is triggered"}:::decision N_DisplayErrorMessages_Node1_action["System displays error messages with
return code, sets return code to 99,
calls error handling functions, and
stops program execution"]:::exclusion N_DisplayErrorMessages_Node1 -- Yes -->|Alternative| N_DisplayErrorMessages_Node1_action N_DisplayErrorMessages_Node1_action --> E_DisplayErrorMessages N_DisplayErrorMessages_Node0 -- No --> N_DisplayErrorMessages_Node1 N_DisplayErrorMessages_Node2{"The return code indicates an error
condition"}:::decision N_DisplayErrorMessages_Node2_action["Error messages are displayed,
return code is set to 99, condition
code is set, and processing is
stopped"]:::exclusion N_DisplayErrorMessages_Node2 -- Yes -->|Alternative| N_DisplayErrorMessages_Node2_action N_DisplayErrorMessages_Node2_action --> E_DisplayErrorMessages N_DisplayErrorMessages_Node1 -- No --> N_DisplayErrorMessages_Node2 N_DisplayErrorMessages_Node3{"The return code indicates an error
condition"}:::decision N_DisplayErrorMessages_Node3_action["Error messages are displayed
showing the failure and the specific
return code received"]:::exclusion N_DisplayErrorMessages_Node3 -- Yes -->|Alternative| N_DisplayErrorMessages_Node3_action N_DisplayErrorMessages_Node3_action --> E_DisplayErrorMessages N_DisplayErrorMessages_Node2 -- No --> N_DisplayErrorMessages_Node3 N_DisplayErrorMessages_Node3 -- No --> E_DisplayErrorMessages
detected"}:::decision N_DisplayErrorMessages_Node0_action["The system displays error messages
with the return code, sets return
code to 99, calls error handling
functions, and stops program
execution"]:::main N_DisplayErrorMessages_Node0 -- Yes --> N_DisplayErrorMessages_Node0_action N_DisplayErrorMessages_Node0_action --> E_DisplayErrorMessages S_DisplayErrorMessages --> N_DisplayErrorMessages_Node0 N_DisplayErrorMessages_Node1{"Error handling is triggered"}:::decision N_DisplayErrorMessages_Node1_action["System displays error messages with
return code, sets return code to 99,
calls error handling functions, and
stops program execution"]:::exclusion N_DisplayErrorMessages_Node1 -- Yes -->|Alternative| N_DisplayErrorMessages_Node1_action N_DisplayErrorMessages_Node1_action --> E_DisplayErrorMessages N_DisplayErrorMessages_Node0 -- No --> N_DisplayErrorMessages_Node1 N_DisplayErrorMessages_Node2{"The return code indicates an error
condition"}:::decision N_DisplayErrorMessages_Node2_action["Error messages are displayed,
return code is set to 99, condition
code is set, and processing is
stopped"]:::exclusion N_DisplayErrorMessages_Node2 -- Yes -->|Alternative| N_DisplayErrorMessages_Node2_action N_DisplayErrorMessages_Node2_action --> E_DisplayErrorMessages N_DisplayErrorMessages_Node1 -- No --> N_DisplayErrorMessages_Node2 N_DisplayErrorMessages_Node3{"The return code indicates an error
condition"}:::decision N_DisplayErrorMessages_Node3_action["Error messages are displayed
showing the failure and the specific
return code received"]:::exclusion N_DisplayErrorMessages_Node3 -- Yes -->|Alternative| N_DisplayErrorMessages_Node3_action N_DisplayErrorMessages_Node3_action --> E_DisplayErrorMessages N_DisplayErrorMessages_Node2 -- No --> N_DisplayErrorMessages_Node3 N_DisplayErrorMessages_Node3 -- No --> E_DisplayErrorMessages
File: GCSTONLY.cbl
GIVEN:
KX2BMP transmission has failed with a non-OK return code
WHEN:
The transmission failure is detected
THEN:
The system displays error messages with the return code, sets return code to 99, calls error handling functions, and stops program execution
File: GCSTONLY.cbl
GIVEN:
KX2BMP service has failed with a non-OK return code
WHEN:
Error handling is triggered
THEN:
System displays error messages with return code, sets return code to 99, calls error handling functions, and stops program execution
File: GCSTONLY.cbl
GIVEN:
An external service call has failed
WHEN:
The return code indicates an error condition
THEN:
Error messages are displayed, return code is set to 99, condition code is set, and processing is stopped
File: GCSTONLY.cbl
GIVEN:
KX2BMP service call has failed
WHEN:
The return code indicates an error condition
THEN:
- Error messages are displayed showing the failure
- The specific return code received
β Consolidated Acceptance Criteria
- CIMS call preparation is initiated → set up CCCOM control block with communication parameters and clear accept status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCCCOMControlBlock(["Start Step"])
E_SetCCCOMControlBlock(["End Step"])
N_SetCCCOMControlBlock_Node0{"CIMS call preparation is initiated"}:::decision
N_SetCCCOMControlBlock_Node0_action["Set up CCCOM control block with
communication parameters and clear
accept status"]:::main N_SetCCCOMControlBlock_Node0 -- Yes --> N_SetCCCOMControlBlock_Node0_action N_SetCCCOMControlBlock_Node0_action --> E_SetCCCOMControlBlock S_SetCCCOMControlBlock --> N_SetCCCOMControlBlock_Node0 N_SetCCCOMControlBlock_Node0 -- No --> E_SetCCCOMControlBlock
communication parameters and clear
accept status"]:::main N_SetCCCOMControlBlock_Node0 -- Yes --> N_SetCCCOMControlBlock_Node0_action N_SetCCCOMControlBlock_Node0_action --> E_SetCCCOMControlBlock S_SetCCCOMControlBlock --> N_SetCCCOMControlBlock_Node0 N_SetCCCOMControlBlock_Node0 -- No --> E_SetCCCOMControlBlock
File: GCSTONLY.cbl
GIVEN:
System is running in TPE environment and message processing is required
WHEN:
CIMS call preparation is initiated
THEN:
- Set up cccom control block with communication parameters
- Clear accept status
β Consolidated Acceptance Criteria
- Operation type needs to be determined → select CHNG for initial setup, PURG for control segment processing, or ISRT for data segment processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetOperationType(["Start Step"])
E_SetOperationType(["End Step"])
N_SetOperationType_Node0{"Operation type needs to be
determined"}:::decision N_SetOperationType_Node0_action["Select CHNG for initial setup, PURG
for control segment processing, or
ISRT for data segment processing"]:::main N_SetOperationType_Node0 -- Yes --> N_SetOperationType_Node0_action N_SetOperationType_Node0_action --> E_SetOperationType S_SetOperationType --> N_SetOperationType_Node0 N_SetOperationType_Node0 -- No --> E_SetOperationType
determined"}:::decision N_SetOperationType_Node0_action["Select CHNG for initial setup, PURG
for control segment processing, or
ISRT for data segment processing"]:::main N_SetOperationType_Node0 -- Yes --> N_SetOperationType_Node0_action N_SetOperationType_Node0_action --> E_SetOperationType S_SetOperationType --> N_SetOperationType_Node0 N_SetOperationType_Node0 -- No --> E_SetOperationType
File: GCSTONLY.cbl
GIVEN:
CIMS call is being prepared for message processing
WHEN:
Operation type needs to be determined
THEN:
Select CHNG for initial setup, PURG for control segment processing, or ISRT for data segment processing
β Consolidated Acceptance Criteria
- PCB reference is being configured → set MST-PCB as the database reference for all CIMS operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPCBReference(["Start Step"])
E_SetPCBReference(["End Step"])
N_SetPCBReference_Node0{"PCB reference is being configured"}:::decision
N_SetPCBReference_Node0_action["Set MST-PCB as the database
reference for all CIMS operations"]:::main N_SetPCBReference_Node0 -- Yes --> N_SetPCBReference_Node0_action N_SetPCBReference_Node0_action --> E_SetPCBReference S_SetPCBReference --> N_SetPCBReference_Node0 N_SetPCBReference_Node0 -- No --> E_SetPCBReference
reference for all CIMS operations"]:::main N_SetPCBReference_Node0 -- Yes --> N_SetPCBReference_Node0_action N_SetPCBReference_Node0_action --> E_SetPCBReference S_SetPCBReference --> N_SetPCBReference_Node0 N_SetPCBReference_Node0 -- No --> E_SetPCBReference
File: GCSTONLY.cbl
GIVEN:
CIMS operation requires database access
WHEN:
PCB reference is being configured
THEN:
Set MST-PCB as the database reference for all CIMS operations
β Consolidated Acceptance Criteria
- Data segment needs to be assigned → for CHNG operations use MST-BMP, for PURG operations use CONTROL-SEG, for ISRT operations use DATA-SEG
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDataSegment(["Start Step"])
E_SetDataSegment(["End Step"])
N_SetDataSegment_Node0{"Data segment needs to be assigned"}:::decision
N_SetDataSegment_Node0_action["For CHNG operations use MST-BMP,
for PURG operations use CONTROL-SEG,
for ISRT operations use DATA-SEG"]:::main N_SetDataSegment_Node0 -- Yes --> N_SetDataSegment_Node0_action N_SetDataSegment_Node0_action --> E_SetDataSegment S_SetDataSegment --> N_SetDataSegment_Node0 N_SetDataSegment_Node0 -- No --> E_SetDataSegment
for PURG operations use CONTROL-SEG,
for ISRT operations use DATA-SEG"]:::main N_SetDataSegment_Node0 -- Yes --> N_SetDataSegment_Node0_action N_SetDataSegment_Node0_action --> E_SetDataSegment S_SetDataSegment --> N_SetDataSegment_Node0 N_SetDataSegment_Node0 -- No --> E_SetDataSegment
File: GCSTONLY.cbl
GIVEN:
CIMS operation is being configured with data payload
WHEN:
Data segment needs to be assigned
THEN:
For CHNG operations use MST-BMP, for PURG operations use CONTROL-SEG, for ISRT operations use DATA-SEG
β Consolidated Acceptance Criteria
- CIMS operation execution is required → call external CIMS program with CCCOM control block, operation type, PCB reference, and data segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExecuteCIMSCall(["Start Step"])
E_ExecuteCIMSCall(["End Step"])
N_ExecuteCIMSCall_Node0{"CIMS operation execution is
required"}:::decision N_ExecuteCIMSCall_Node0_action["Call external CIMS program with
CCCOM control block, operation type,
PCB reference, and data segment"]:::main N_ExecuteCIMSCall_Node0 -- Yes --> N_ExecuteCIMSCall_Node0_action N_ExecuteCIMSCall_Node0_action --> E_ExecuteCIMSCall S_ExecuteCIMSCall --> N_ExecuteCIMSCall_Node0 N_ExecuteCIMSCall_Node0 -- No --> E_ExecuteCIMSCall
required"}:::decision N_ExecuteCIMSCall_Node0_action["Call external CIMS program with
CCCOM control block, operation type,
PCB reference, and data segment"]:::main N_ExecuteCIMSCall_Node0 -- Yes --> N_ExecuteCIMSCall_Node0_action N_ExecuteCIMSCall_Node0_action --> E_ExecuteCIMSCall S_ExecuteCIMSCall --> N_ExecuteCIMSCall_Node0 N_ExecuteCIMSCall_Node0 -- No --> E_ExecuteCIMSCall
File: GCSTONLY.cbl
GIVEN:
All CIMS parameters are properly configured
WHEN:
CIMS operation execution is required
THEN:
Call external CIMS program with CCCOM control block, operation type, PCB reference, and data segment
β Consolidated Acceptance Criteria
- KX2BMP parameters are being set up for message processing → both primary and secondary timestamp fields are cleared to low values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearTimestampFields(["Start Step"])
E_ClearTimestampFields(["End Step"])
N_ClearTimestampFields_Node0{"KX2BMP parameters are being set up
for message processing"}:::decision N_ClearTimestampFields_Node0_action["Both primary and secondary
timestamp fields are cleared to low
values"]:::main N_ClearTimestampFields_Node0 -- Yes --> N_ClearTimestampFields_Node0_action N_ClearTimestampFields_Node0_action --> E_ClearTimestampFields S_ClearTimestampFields --> N_ClearTimestampFields_Node0 N_ClearTimestampFields_Node0 -- No --> E_ClearTimestampFields
for message processing"}:::decision N_ClearTimestampFields_Node0_action["Both primary and secondary
timestamp fields are cleared to low
values"]:::main N_ClearTimestampFields_Node0 -- Yes --> N_ClearTimestampFields_Node0_action N_ClearTimestampFields_Node0_action --> E_ClearTimestampFields S_ClearTimestampFields --> N_ClearTimestampFields_Node0 N_ClearTimestampFields_Node0 -- No --> E_ClearTimestampFields
File: GCSTONLY.cbl
GIVEN:
The system is running in BPE environment and needs to prepare message data for transmission
WHEN:
KX2BMP parameters are being set up for message processing
THEN:
- Both primary
- Secondary timestamp fields are cleared to low values
β Consolidated Acceptance Criteria
- KX2BMP parameters are being set up for message processing → the task number field is cleared to low value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearTaskNumber(["Start Step"])
E_ClearTaskNumber(["End Step"])
N_ClearTaskNumber_Node0{"KX2BMP parameters are being set up
for message processing"}:::decision N_ClearTaskNumber_Node0_action["The task number field is cleared to
low value"]:::main N_ClearTaskNumber_Node0 -- Yes --> N_ClearTaskNumber_Node0_action N_ClearTaskNumber_Node0_action --> E_ClearTaskNumber S_ClearTaskNumber --> N_ClearTaskNumber_Node0 N_ClearTaskNumber_Node0 -- No --> E_ClearTaskNumber
for message processing"}:::decision N_ClearTaskNumber_Node0_action["The task number field is cleared to
low value"]:::main N_ClearTaskNumber_Node0 -- Yes --> N_ClearTaskNumber_Node0_action N_ClearTaskNumber_Node0_action --> E_ClearTaskNumber S_ClearTaskNumber --> N_ClearTaskNumber_Node0 N_ClearTaskNumber_Node0 -- No --> E_ClearTaskNumber
File: GCSTONLY.cbl
GIVEN:
The system is running in BPE environment and needs to prepare message data for transmission
WHEN:
KX2BMP parameters are being set up for message processing
THEN:
The task number field is cleared to low value
β Consolidated Acceptance Criteria
- The system needs to prepare for the next batch → the output record area should be cleared with spaces
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearOutputRecordswithSpaces(["Start Step"])
E_ClearOutputRecordswithSpaces(["End Step"])
N_ClearOutputRecordswithSpaces_Node0{"The system needs to prepare for the
next batch"}:::decision N_ClearOutputRecordswithSpaces_Node0_action["The output record area should be
cleared with spaces"]:::main N_ClearOutputRecordswithSpaces_Node0 -- Yes --> N_ClearOutputRecordswithSpaces_Node0_action N_ClearOutputRecordswithSpaces_Node0_action --> E_ClearOutputRecordswithSpaces S_ClearOutputRecordswithSpaces --> N_ClearOutputRecordswithSpaces_Node0 N_ClearOutputRecordswithSpaces_Node0 -- No --> E_ClearOutputRecordswithSpaces
next batch"}:::decision N_ClearOutputRecordswithSpaces_Node0_action["The output record area should be
cleared with spaces"]:::main N_ClearOutputRecordswithSpaces_Node0 -- Yes --> N_ClearOutputRecordswithSpaces_Node0_action N_ClearOutputRecordswithSpaces_Node0_action --> E_ClearOutputRecordswithSpaces S_ClearOutputRecordswithSpaces --> N_ClearOutputRecordswithSpaces_Node0 N_ClearOutputRecordswithSpaces_Node0 -- No --> E_ClearOutputRecordswithSpaces
File: GCSTONLY.cbl
GIVEN:
A batch transmission has been completed
WHEN:
The system needs to prepare for the next batch
THEN:
The output record area should be cleared with spaces
β Consolidated Acceptance Criteria
- The system checks the record counter to determine if records exist → if record counter is greater than 0, proceed to calculate segment length and send records; otherwise skip to final purge message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ArethereremainingrecordstosendCheckifrecordcounter0(["Start Step"])
E_ArethereremainingrecordstosendCheckifrecordcounter0(["End Step"])
N_ArethereremainingrecordstosendCheckifrecordcounter0_Node0{"The system checks the record
counter to determine if records
exist"}:::decision N_ArethereremainingrecordstosendCheckifrecordcounter0_Node0_action["If record counter is greater than
0, proceed to calculate segment
length and send records otherwise
skip to final purge message"]:::main N_ArethereremainingrecordstosendCheckifrecordcounter0_Node0 -- Yes --> N_ArethereremainingrecordstosendCheckifrecordcounter0_Node0_action N_ArethereremainingrecordstosendCheckifrecordcounter0_Node0_action --> E_ArethereremainingrecordstosendCheckifrecordcounter0 S_ArethereremainingrecordstosendCheckifrecordcounter0 --> N_ArethereremainingrecordstosendCheckifrecordcounter0_Node0 N_ArethereremainingrecordstosendCheckifrecordcounter0_Node0 -- No --> E_ArethereremainingrecordstosendCheckifrecordcounter0
counter to determine if records
exist"}:::decision N_ArethereremainingrecordstosendCheckifrecordcounter0_Node0_action["If record counter is greater than
0, proceed to calculate segment
length and send records otherwise
skip to final purge message"]:::main N_ArethereremainingrecordstosendCheckifrecordcounter0_Node0 -- Yes --> N_ArethereremainingrecordstosendCheckifrecordcounter0_Node0_action N_ArethereremainingrecordstosendCheckifrecordcounter0_Node0_action --> E_ArethereremainingrecordstosendCheckifrecordcounter0 S_ArethereremainingrecordstosendCheckifrecordcounter0 --> N_ArethereremainingrecordstosendCheckifrecordcounter0_Node0 N_ArethereremainingrecordstosendCheckifrecordcounter0_Node0 -- No --> E_ArethereremainingrecordstosendCheckifrecordcounter0
File: GCSTONLY.cbl
GIVEN:
The WRAP function has been called to finalize processing
WHEN:
The system checks the record counter to determine if records exist
THEN:
- If record counter is greater than 0, proceed to calculate segment length
- Send records; otherwise skip to final purge message
β Consolidated Acceptance Criteria
- The system needs to determine the segment length for the final data transmission → calculate segment length as number of records multiplied by 81 plus 4 bytes overhead
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateDynamicSegmentLengthLengthNumberofRecords814(["Start Step"])
E_CalculateDynamicSegmentLengthLengthNumberofRecords814(["End Step"])
N_CalculateDynamicSegmentLengthLengthNumberofRecords814_Node0{"The system needs to determine the
segment length for the final data
transmission"}:::decision N_CalculateDynamicSegmentLengthLengthNumberofRecords814_Node0_action["Calculate segment length as number
of records multiplied by 81 plus 4
bytes overhead"]:::main N_CalculateDynamicSegmentLengthLengthNumberofRecords814_Node0 -- Yes --> N_CalculateDynamicSegmentLengthLengthNumberofRecords814_Node0_action N_CalculateDynamicSegmentLengthLengthNumberofRecords814_Node0_action --> E_CalculateDynamicSegmentLengthLengthNumberofRecords814 S_CalculateDynamicSegmentLengthLengthNumberofRecords814 --> N_CalculateDynamicSegmentLengthLengthNumberofRecords814_Node0 N_CalculateDynamicSegmentLengthLengthNumberofRecords814_Node0 -- No --> E_CalculateDynamicSegmentLengthLengthNumberofRecords814
segment length for the final data
transmission"}:::decision N_CalculateDynamicSegmentLengthLengthNumberofRecords814_Node0_action["Calculate segment length as number
of records multiplied by 81 plus 4
bytes overhead"]:::main N_CalculateDynamicSegmentLengthLengthNumberofRecords814_Node0 -- Yes --> N_CalculateDynamicSegmentLengthLengthNumberofRecords814_Node0_action N_CalculateDynamicSegmentLengthLengthNumberofRecords814_Node0_action --> E_CalculateDynamicSegmentLengthLengthNumberofRecords814 S_CalculateDynamicSegmentLengthLengthNumberofRecords814 --> N_CalculateDynamicSegmentLengthLengthNumberofRecords814_Node0 N_CalculateDynamicSegmentLengthLengthNumberofRecords814_Node0 -- No --> E_CalculateDynamicSegmentLengthLengthNumberofRecords814
File: GCSTONLY.cbl
GIVEN:
There are remaining records to be sent (record counter > 0)
WHEN:
The system needs to determine the segment length for the final data transmission
THEN:
Calculate segment length as number of records multiplied by 81 plus 4 bytes overhead
β Consolidated Acceptance Criteria
- The system is ready to send the final data segment → send the data segment with calculated length to the message processing system based on runtime environment (TPE or BPE)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendDataSegmentwithRemainingRecordstoMessageQueue(["Start Step"])
E_SendDataSegmentwithRemainingRecordstoMessageQueue(["End Step"])
N_SendDataSegmentwithRemainingRecordstoMessageQueue_Node0{"The system is ready to send the
final data segment"}:::decision N_SendDataSegmentwithRemainingRecordstoMessageQueue_Node0_action["Send the data segment with
calculated length to the message
processing system based on runtime
environment TPE or BPE"]:::main N_SendDataSegmentwithRemainingRecordstoMessageQueue_Node0 -- Yes --> N_SendDataSegmentwithRemainingRecordstoMessageQueue_Node0_action N_SendDataSegmentwithRemainingRecordstoMessageQueue_Node0_action --> E_SendDataSegmentwithRemainingRecordstoMessageQueue S_SendDataSegmentwithRemainingRecordstoMessageQueue --> N_SendDataSegmentwithRemainingRecordstoMessageQueue_Node0 N_SendDataSegmentwithRemainingRecordstoMessageQueue_Node0 -- No --> E_SendDataSegmentwithRemainingRecordstoMessageQueue
final data segment"}:::decision N_SendDataSegmentwithRemainingRecordstoMessageQueue_Node0_action["Send the data segment with
calculated length to the message
processing system based on runtime
environment TPE or BPE"]:::main N_SendDataSegmentwithRemainingRecordstoMessageQueue_Node0 -- Yes --> N_SendDataSegmentwithRemainingRecordstoMessageQueue_Node0_action N_SendDataSegmentwithRemainingRecordstoMessageQueue_Node0_action --> E_SendDataSegmentwithRemainingRecordstoMessageQueue S_SendDataSegmentwithRemainingRecordstoMessageQueue --> N_SendDataSegmentwithRemainingRecordstoMessageQueue_Node0 N_SendDataSegmentwithRemainingRecordstoMessageQueue_Node0 -- No --> E_SendDataSegmentwithRemainingRecordstoMessageQueue
File: GCSTONLY.cbl
GIVEN:
The segment length has been calculated for remaining records
WHEN:
The system is ready to send the final data segment
THEN:
Send the data segment with calculated length to the message processing system based on runtime environment (TPE or BPE)
β Consolidated Acceptance Criteria
- The system needs to complete the WRAP function processing → send a purge message to the message processing system if running in TPE environment to finalize the transaction
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendFinalPurgeMessagetoCompleteTransaction(["Start Step"])
E_SendFinalPurgeMessagetoCompleteTransaction(["End Step"])
N_SendFinalPurgeMessagetoCompleteTransaction_Node0{"The system needs to complete the
WRAP function processing"}:::decision N_SendFinalPurgeMessagetoCompleteTransaction_Node0_action["Send a purge message to the message
processing system if running in TPE
environment to finalize the
transaction"]:::main N_SendFinalPurgeMessagetoCompleteTransaction_Node0 -- Yes --> N_SendFinalPurgeMessagetoCompleteTransaction_Node0_action N_SendFinalPurgeMessagetoCompleteTransaction_Node0_action --> E_SendFinalPurgeMessagetoCompleteTransaction S_SendFinalPurgeMessagetoCompleteTransaction --> N_SendFinalPurgeMessagetoCompleteTransaction_Node0 N_SendFinalPurgeMessagetoCompleteTransaction_Node0 -- No --> E_SendFinalPurgeMessagetoCompleteTransaction
WRAP function processing"}:::decision N_SendFinalPurgeMessagetoCompleteTransaction_Node0_action["Send a purge message to the message
processing system if running in TPE
environment to finalize the
transaction"]:::main N_SendFinalPurgeMessagetoCompleteTransaction_Node0 -- Yes --> N_SendFinalPurgeMessagetoCompleteTransaction_Node0_action N_SendFinalPurgeMessagetoCompleteTransaction_Node0_action --> E_SendFinalPurgeMessagetoCompleteTransaction S_SendFinalPurgeMessagetoCompleteTransaction --> N_SendFinalPurgeMessagetoCompleteTransaction_Node0 N_SendFinalPurgeMessagetoCompleteTransaction_Node0 -- No --> E_SendFinalPurgeMessagetoCompleteTransaction
File: GCSTONLY.cbl
GIVEN:
All remaining records have been processed or no records existed
WHEN:
The system needs to complete the WRAP function processing
THEN:
Send a purge message to the message processing system if running in TPE environment to finalize the transaction
β Consolidated Acceptance Criteria
- The system needs to send the last segment with partial data → calculate segment length as number of records multiplied by 81 plus 4 bytes overhead and apply this length to the data segment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateVariableLengthRecords814(["Start Step"])
E_CalculateVariableLengthRecords814(["End Step"])
N_CalculateVariableLengthRecords814_Node0{"The system needs to send the last
segment with partial data"}:::decision N_CalculateVariableLengthRecords814_Node0_action["Calculate segment length as number
of records multiplied by 81 plus 4
bytes overhead and apply this length
to the data segment"]:::main N_CalculateVariableLengthRecords814_Node0 -- Yes --> N_CalculateVariableLengthRecords814_Node0_action N_CalculateVariableLengthRecords814_Node0_action --> E_CalculateVariableLengthRecords814 S_CalculateVariableLengthRecords814 --> N_CalculateVariableLengthRecords814_Node0 N_CalculateVariableLengthRecords814_Node0 -- No --> E_CalculateVariableLengthRecords814
segment with partial data"}:::decision N_CalculateVariableLengthRecords814_Node0_action["Calculate segment length as number
of records multiplied by 81 plus 4
bytes overhead and apply this length
to the data segment"]:::main N_CalculateVariableLengthRecords814_Node0 -- Yes --> N_CalculateVariableLengthRecords814_Node0_action N_CalculateVariableLengthRecords814_Node0_action --> E_CalculateVariableLengthRecords814 S_CalculateVariableLengthRecords814 --> N_CalculateVariableLengthRecords814_Node0 N_CalculateVariableLengthRecords814_Node0 -- No --> E_CalculateVariableLengthRecords814
File: GCSTONLY.cbl
Exclusion / Alternative Path
GIVEN:
There are remaining records to process (record counter I is not equal to 0)
WHEN:
The system needs to send the last segment with partial data
THEN:
- Calculate segment length as number of records multiplied by 81 plus 4 bytes overhead
- Apply this length to the data segment
β Consolidated Acceptance Criteria
- The record counter reaches 22 → set the data segment length to the fixed value of 1786 bytes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFixedLength1786bytes(["Start Step"])
E_SetFixedLength1786bytes(["End Step"])
N_SetFixedLength1786bytes_Node0{"The record counter reaches 22"}:::decision
N_SetFixedLength1786bytes_Node0_action["Set the data segment length to the
fixed value of 1786 bytes"]:::main N_SetFixedLength1786bytes_Node0 -- Yes --> N_SetFixedLength1786bytes_Node0_action N_SetFixedLength1786bytes_Node0_action --> E_SetFixedLength1786bytes S_SetFixedLength1786bytes --> N_SetFixedLength1786bytes_Node0 N_SetFixedLength1786bytes_Node0 -- No --> E_SetFixedLength1786bytes
fixed value of 1786 bytes"]:::main N_SetFixedLength1786bytes_Node0 -- Yes --> N_SetFixedLength1786bytes_Node0_action N_SetFixedLength1786bytes_Node0_action --> E_SetFixedLength1786bytes S_SetFixedLength1786bytes --> N_SetFixedLength1786bytes_Node0 N_SetFixedLength1786bytes_Node0 -- No --> E_SetFixedLength1786bytes
File: GCSTONLY.cbl
GIVEN:
A complete batch of 22 records has been accumulated for processing
WHEN:
The record counter reaches 22
THEN:
Set the data segment length to the fixed value of 1786 bytes
β Consolidated Acceptance Criteria
- Determining how to calculate segment length → if record counter I is not equal to 0, use variable length calculation; otherwise use fixed length for complete batches
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Arethereremainingrecordstoprocess(["Start Step"])
E_Arethereremainingrecordstoprocess(["End Step"])
N_Arethereremainingrecordstoprocess_Node0{"Determining how to calculate
segment length"}:::decision N_Arethereremainingrecordstoprocess_Node0_action["If record counter I is not equal to
0, use variable length calculation
otherwise use fixed length for
complete batches"]:::main N_Arethereremainingrecordstoprocess_Node0 -- Yes --> N_Arethereremainingrecordstoprocess_Node0_action N_Arethereremainingrecordstoprocess_Node0_action --> E_Arethereremainingrecordstoprocess S_Arethereremainingrecordstoprocess --> N_Arethereremainingrecordstoprocess_Node0 N_Arethereremainingrecordstoprocess_Node0 -- No --> E_Arethereremainingrecordstoprocess
segment length"}:::decision N_Arethereremainingrecordstoprocess_Node0_action["If record counter I is not equal to
0, use variable length calculation
otherwise use fixed length for
complete batches"]:::main N_Arethereremainingrecordstoprocess_Node0 -- Yes --> N_Arethereremainingrecordstoprocess_Node0_action N_Arethereremainingrecordstoprocess_Node0_action --> E_Arethereremainingrecordstoprocess S_Arethereremainingrecordstoprocess --> N_Arethereremainingrecordstoprocess_Node0 N_Arethereremainingrecordstoprocess_Node0 -- No --> E_Arethereremainingrecordstoprocess
File: GCSTONLY.cbl
GIVEN:
The system is processing data segments
WHEN:
Determining how to calculate segment length
THEN:
If record counter I is not equal to 0, use variable length calculation; otherwise use fixed length for complete batches
β Consolidated Acceptance Criteria
- A message queue operation is required → the system calls CIMS service with appropriate parameters for the operation type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseCIMSforTPEEnvironment(["Start Step"])
E_UseCIMSforTPEEnvironment(["End Step"])
N_UseCIMSforTPEEnvironment_Node0{"A message queue operation is
required"}:::decision N_UseCIMSforTPEEnvironment_Node0_action["The system calls CIMS service with
appropriate parameters for the
operation type"]:::main N_UseCIMSforTPEEnvironment_Node0 -- Yes --> N_UseCIMSforTPEEnvironment_Node0_action N_UseCIMSforTPEEnvironment_Node0_action --> E_UseCIMSforTPEEnvironment S_UseCIMSforTPEEnvironment --> N_UseCIMSforTPEEnvironment_Node0 N_UseCIMSforTPEEnvironment_Node0 -- No --> E_UseCIMSforTPEEnvironment
required"}:::decision N_UseCIMSforTPEEnvironment_Node0_action["The system calls CIMS service with
appropriate parameters for the
operation type"]:::main N_UseCIMSforTPEEnvironment_Node0 -- Yes --> N_UseCIMSforTPEEnvironment_Node0_action N_UseCIMSforTPEEnvironment_Node0_action --> E_UseCIMSforTPEEnvironment S_UseCIMSforTPEEnvironment --> N_UseCIMSforTPEEnvironment_Node0 N_UseCIMSforTPEEnvironment_Node0 -- No --> E_UseCIMSforTPEEnvironment
File: GCSTONLY.cbl
GIVEN:
The system is running in TPE environment and has data to send
WHEN:
A message queue operation is required
THEN:
The system calls CIMS service with appropriate parameters for the operation type
β Consolidated Acceptance Criteria
- KX2BMP service needs to be executed → system calls KX2BMP with program name, destination, application ID, system ID, operation, length, area, return code, timestamp, task number, and timestamp2 parameters
- The system needs to send data to external service → kX2BMP service is called with all required parameters including program name, destination, application ID, system ID, operation type, length, data area, return code, timestamp, task number, and timestamp2
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallKX2BMPService(["Start Step"])
E_CallKX2BMPService(["End Step"])
N_CallKX2BMPService_Node0{"KX2BMP service needs to be executed"}:::decision
N_CallKX2BMPService_Node0_action["System calls KX2BMP with program
name, destination, application ID,
system ID, operation, length, area,
return code, timestamp, task number,
and timestamp2 parameters"]:::main N_CallKX2BMPService_Node0 -- Yes --> N_CallKX2BMPService_Node0_action N_CallKX2BMPService_Node0_action --> E_CallKX2BMPService S_CallKX2BMPService --> N_CallKX2BMPService_Node0 N_CallKX2BMPService_Node1{"The system needs to send data to
external service"}:::decision N_CallKX2BMPService_Node1_action["KX2BMP service is called with all
required parameters including
program name, destination,
application ID, system ID, operation
type, length, data area, return
code, timestamp, task number, and
timestamp2"]:::main N_CallKX2BMPService_Node1 -- Yes --> N_CallKX2BMPService_Node1_action N_CallKX2BMPService_Node1_action --> E_CallKX2BMPService N_CallKX2BMPService_Node0 -- No --> N_CallKX2BMPService_Node1 N_CallKX2BMPService_Node1 -- No --> E_CallKX2BMPService
name, destination, application ID,
system ID, operation, length, area,
return code, timestamp, task number,
and timestamp2 parameters"]:::main N_CallKX2BMPService_Node0 -- Yes --> N_CallKX2BMPService_Node0_action N_CallKX2BMPService_Node0_action --> E_CallKX2BMPService S_CallKX2BMPService --> N_CallKX2BMPService_Node0 N_CallKX2BMPService_Node1{"The system needs to send data to
external service"}:::decision N_CallKX2BMPService_Node1_action["KX2BMP service is called with all
required parameters including
program name, destination,
application ID, system ID, operation
type, length, data area, return
code, timestamp, task number, and
timestamp2"]:::main N_CallKX2BMPService_Node1 -- Yes --> N_CallKX2BMPService_Node1_action N_CallKX2BMPService_Node1_action --> E_CallKX2BMPService N_CallKX2BMPService_Node0 -- No --> N_CallKX2BMPService_Node1 N_CallKX2BMPService_Node1 -- No --> E_CallKX2BMPService
File: GCSTONLY.cbl
GIVEN:
All KX2BMP parameters are configured and data is ready
WHEN:
KX2BMP service needs to be executed
THEN:
System calls KX2BMP with program name, destination, application ID, system ID, operation, length, area, return code, timestamp, task number, and timestamp2 parameters
File: GCSTONLY.cbl
GIVEN:
Message parameters, length, and data are prepared
WHEN:
The system needs to send data to external service
THEN:
KX2BMP service is called with all required parameters including program name, destination, application ID, system ID, operation type, length, data area, return code, timestamp, task number, and timestamp2
β Consolidated Acceptance Criteria
- The return code is evaluated for success or failure → if return code indicates success, processing continues; if return code indicates failure, error handling is triggered
- System checks if the return code indicates success (KX2BMP-RC-OK) → system determines whether to continue normal processing or handle error condition
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckKX2BMPReturnCode(["Start Step"])
E_CheckKX2BMPReturnCode(["End Step"])
N_CheckKX2BMPReturnCode_Node0{"The return code is evaluated for
success or failure"}:::decision N_CheckKX2BMPReturnCode_Node0_action["If return code indicates success,
processing continues if return code
indicates failure, error handling is
triggered"]:::main N_CheckKX2BMPReturnCode_Node0 -- Yes --> N_CheckKX2BMPReturnCode_Node0_action N_CheckKX2BMPReturnCode_Node0_action --> E_CheckKX2BMPReturnCode S_CheckKX2BMPReturnCode --> N_CheckKX2BMPReturnCode_Node0 N_CheckKX2BMPReturnCode_Node1{"System checks if the return code
indicates success KX2BMP-RC-OK"}:::decision N_CheckKX2BMPReturnCode_Node1_action["System determines whether to
continue normal processing or handle
error condition"]:::main N_CheckKX2BMPReturnCode_Node1 -- Yes --> N_CheckKX2BMPReturnCode_Node1_action N_CheckKX2BMPReturnCode_Node1_action --> E_CheckKX2BMPReturnCode N_CheckKX2BMPReturnCode_Node0 -- No --> N_CheckKX2BMPReturnCode_Node1 N_CheckKX2BMPReturnCode_Node1 -- No --> E_CheckKX2BMPReturnCode
success or failure"}:::decision N_CheckKX2BMPReturnCode_Node0_action["If return code indicates success,
processing continues if return code
indicates failure, error handling is
triggered"]:::main N_CheckKX2BMPReturnCode_Node0 -- Yes --> N_CheckKX2BMPReturnCode_Node0_action N_CheckKX2BMPReturnCode_Node0_action --> E_CheckKX2BMPReturnCode S_CheckKX2BMPReturnCode --> N_CheckKX2BMPReturnCode_Node0 N_CheckKX2BMPReturnCode_Node1{"System checks if the return code
indicates success KX2BMP-RC-OK"}:::decision N_CheckKX2BMPReturnCode_Node1_action["System determines whether to
continue normal processing or handle
error condition"]:::main N_CheckKX2BMPReturnCode_Node1 -- Yes --> N_CheckKX2BMPReturnCode_Node1_action N_CheckKX2BMPReturnCode_Node1_action --> E_CheckKX2BMPReturnCode N_CheckKX2BMPReturnCode_Node0 -- No --> N_CheckKX2BMPReturnCode_Node1 N_CheckKX2BMPReturnCode_Node1 -- No --> E_CheckKX2BMPReturnCode
File: GCSTONLY.cbl
GIVEN:
KX2BMP service has been executed and returned a status code
WHEN:
The return code is evaluated for success or failure
THEN:
If return code indicates success, processing continues; if return code indicates failure, error handling is triggered
File: GCSTONLY.cbl
GIVEN:
KX2BMP service call has completed and returned a status code
WHEN:
System checks if the return code indicates success (KX2BMP-RC-OK)
THEN:
System determines whether to continue normal processing or handle error condition
β Consolidated Acceptance Criteria
- The system sets up message parameters → the primary timestamp and secondary timestamp are both set to low-value and the task number is set to low-value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMessageTimestamptoLowValue(["Start Step"])
E_SetMessageTimestamptoLowValue(["End Step"])
N_SetMessageTimestamptoLowValue_Node0{"The system sets up message
parameters"}:::decision N_SetMessageTimestamptoLowValue_Node0_action["The primary timestamp and secondary
timestamp are both set to low-value
and the task number is set to
low-value"]:::main N_SetMessageTimestamptoLowValue_Node0 -- Yes --> N_SetMessageTimestamptoLowValue_Node0_action N_SetMessageTimestamptoLowValue_Node0_action --> E_SetMessageTimestamptoLowValue S_SetMessageTimestamptoLowValue --> N_SetMessageTimestamptoLowValue_Node0 N_SetMessageTimestamptoLowValue_Node0 -- No --> E_SetMessageTimestamptoLowValue
parameters"}:::decision N_SetMessageTimestamptoLowValue_Node0_action["The primary timestamp and secondary
timestamp are both set to low-value
and the task number is set to
low-value"]:::main N_SetMessageTimestamptoLowValue_Node0 -- Yes --> N_SetMessageTimestamptoLowValue_Node0_action N_SetMessageTimestamptoLowValue_Node0_action --> E_SetMessageTimestamptoLowValue S_SetMessageTimestamptoLowValue --> N_SetMessageTimestamptoLowValue_Node0 N_SetMessageTimestamptoLowValue_Node0 -- No --> E_SetMessageTimestamptoLowValue
File: GCSTONLY.cbl
GIVEN:
A message service call is being prepared
WHEN:
The system sets up message parameters
THEN:
- The primary timestamp
- Secondary timestamp are both set to low-value
- The task number is set to low-value
β Consolidated Acceptance Criteria
- The system prepares the message for service call → the data segment or control segment is moved to the message area
- The system is ready to send the message → the data is moved to the message area for transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveDatatoMessageArea(["Start Step"])
E_MoveDatatoMessageArea(["End Step"])
N_MoveDatatoMessageArea_Node0{"The system prepares the message for
service call"}:::decision N_MoveDatatoMessageArea_Node0_action["The data segment or control segment
is moved to the message area"]:::main N_MoveDatatoMessageArea_Node0 -- Yes --> N_MoveDatatoMessageArea_Node0_action N_MoveDatatoMessageArea_Node0_action --> E_MoveDatatoMessageArea S_MoveDatatoMessageArea --> N_MoveDatatoMessageArea_Node0 N_MoveDatatoMessageArea_Node1{"The system is ready to send the
message"}:::decision N_MoveDatatoMessageArea_Node1_action["The data is moved to the message
area for transmission"]:::main N_MoveDatatoMessageArea_Node1 -- Yes --> N_MoveDatatoMessageArea_Node1_action N_MoveDatatoMessageArea_Node1_action --> E_MoveDatatoMessageArea N_MoveDatatoMessageArea_Node0 -- No --> N_MoveDatatoMessageArea_Node1 N_MoveDatatoMessageArea_Node1 -- No --> E_MoveDatatoMessageArea
service call"}:::decision N_MoveDatatoMessageArea_Node0_action["The data segment or control segment
is moved to the message area"]:::main N_MoveDatatoMessageArea_Node0 -- Yes --> N_MoveDatatoMessageArea_Node0_action N_MoveDatatoMessageArea_Node0_action --> E_MoveDatatoMessageArea S_MoveDatatoMessageArea --> N_MoveDatatoMessageArea_Node0 N_MoveDatatoMessageArea_Node1{"The system is ready to send the
message"}:::decision N_MoveDatatoMessageArea_Node1_action["The data is moved to the message
area for transmission"]:::main N_MoveDatatoMessageArea_Node1 -- Yes --> N_MoveDatatoMessageArea_Node1_action N_MoveDatatoMessageArea_Node1_action --> E_MoveDatatoMessageArea N_MoveDatatoMessageArea_Node0 -- No --> N_MoveDatatoMessageArea_Node1 N_MoveDatatoMessageArea_Node1 -- No --> E_MoveDatatoMessageArea
File: GCSTONLY.cbl
GIVEN:
Business data is ready for transmission
WHEN:
The system prepares the message for service call
THEN:
The data segment or control segment is moved to the message area
File: GCSTONLY.cbl
GIVEN:
Data segment or control segment is prepared for transmission
WHEN:
The system is ready to send the message
THEN:
The data is moved to the message area for transmission
β Consolidated Acceptance Criteria
- The system needs to send business data through external service → the KX2BMP service is called with all required parameters including program name, destination, application ID, system ID, operation type, message length, data area, return code, timestamps, and task number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExecuteKX2BMPServiceCall(["Start Step"])
E_ExecuteKX2BMPServiceCall(["End Step"])
N_ExecuteKX2BMPServiceCall_Node0{"The system needs to send business
data through external service"}:::decision N_ExecuteKX2BMPServiceCall_Node0_action["The KX2BMP service is called with
all required parameters including
program name, destination,
application ID, system ID, operation
type, message length, data area,
return code, timestamps, and task
number"]:::main N_ExecuteKX2BMPServiceCall_Node0 -- Yes --> N_ExecuteKX2BMPServiceCall_Node0_action N_ExecuteKX2BMPServiceCall_Node0_action --> E_ExecuteKX2BMPServiceCall S_ExecuteKX2BMPServiceCall --> N_ExecuteKX2BMPServiceCall_Node0 N_ExecuteKX2BMPServiceCall_Node0 -- No --> E_ExecuteKX2BMPServiceCall
data through external service"}:::decision N_ExecuteKX2BMPServiceCall_Node0_action["The KX2BMP service is called with
all required parameters including
program name, destination,
application ID, system ID, operation
type, message length, data area,
return code, timestamps, and task
number"]:::main N_ExecuteKX2BMPServiceCall_Node0 -- Yes --> N_ExecuteKX2BMPServiceCall_Node0_action N_ExecuteKX2BMPServiceCall_Node0_action --> E_ExecuteKX2BMPServiceCall S_ExecuteKX2BMPServiceCall --> N_ExecuteKX2BMPServiceCall_Node0 N_ExecuteKX2BMPServiceCall_Node0 -- No --> E_ExecuteKX2BMPServiceCall
File: GCSTONLY.cbl
GIVEN:
Message parameters are configured and data is prepared
WHEN:
The system needs to send business data through external service
THEN:
The KX2BMP service is called with all required parameters including program name, destination, application ID, system ID, operation type, message length, data area, return code, timestamps, and task number
β Consolidated Acceptance Criteria
- The system receives a return code from the service → if the return code indicates success, processing continues normally, otherwise error handling is triggered
- The system receives a return code from the service → if the return code indicates success (KX2BMP-RC-OK), processing continues normally, otherwise error handling is triggered
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckReturnCode(["Start Step"])
E_CheckReturnCode(["End Step"])
N_CheckReturnCode_Node0{"The system receives a return code
from the service"}:::decision N_CheckReturnCode_Node0_action["If the return code indicates
success, processing continues
normally, otherwise error handling
is triggered"]:::main N_CheckReturnCode_Node0 -- Yes --> N_CheckReturnCode_Node0_action N_CheckReturnCode_Node0_action --> E_CheckReturnCode S_CheckReturnCode --> N_CheckReturnCode_Node0 N_CheckReturnCode_Node1{"The system receives a return code
from the service"}:::decision N_CheckReturnCode_Node1_action["If the return code indicates
success KX2BMP-RC-OK, processing
continues normally, otherwise error
handling is triggered"]:::main N_CheckReturnCode_Node1 -- Yes --> N_CheckReturnCode_Node1_action N_CheckReturnCode_Node1_action --> E_CheckReturnCode N_CheckReturnCode_Node0 -- No --> N_CheckReturnCode_Node1 N_CheckReturnCode_Node1 -- No --> E_CheckReturnCode
from the service"}:::decision N_CheckReturnCode_Node0_action["If the return code indicates
success, processing continues
normally, otherwise error handling
is triggered"]:::main N_CheckReturnCode_Node0 -- Yes --> N_CheckReturnCode_Node0_action N_CheckReturnCode_Node0_action --> E_CheckReturnCode S_CheckReturnCode --> N_CheckReturnCode_Node0 N_CheckReturnCode_Node1{"The system receives a return code
from the service"}:::decision N_CheckReturnCode_Node1_action["If the return code indicates
success KX2BMP-RC-OK, processing
continues normally, otherwise error
handling is triggered"]:::main N_CheckReturnCode_Node1 -- Yes --> N_CheckReturnCode_Node1_action N_CheckReturnCode_Node1_action --> E_CheckReturnCode N_CheckReturnCode_Node0 -- No --> N_CheckReturnCode_Node1 N_CheckReturnCode_Node1 -- No --> E_CheckReturnCode
File: GCSTONLY.cbl
GIVEN:
An external service call has been executed
WHEN:
The system receives a return code from the service
THEN:
If the return code indicates success, processing continues normally, otherwise error handling is triggered
File: GCSTONLY.cbl
GIVEN:
KX2BMP service call has completed
WHEN:
The system receives a return code from the service
THEN:
If the return code indicates success (KX2BMP-RC-OK), processing continues normally, otherwise error handling is triggered
β Consolidated Acceptance Criteria
- The system is running in BPE environment and preparing message parameters → the timestamp, timestamp2, and task number fields are cleared to low values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMessageParameters(["Start Step"])
E_SetMessageParameters(["End Step"])
N_SetMessageParameters_Node0{"The system is running in BPE
environment and preparing message
parameters"}:::decision N_SetMessageParameters_Node0_action["The timestamp, timestamp2, and task
number fields are cleared to low
values"]:::main N_SetMessageParameters_Node0 -- Yes --> N_SetMessageParameters_Node0_action N_SetMessageParameters_Node0_action --> E_SetMessageParameters S_SetMessageParameters --> N_SetMessageParameters_Node0 N_SetMessageParameters_Node0 -- No --> E_SetMessageParameters
environment and preparing message
parameters"}:::decision N_SetMessageParameters_Node0_action["The timestamp, timestamp2, and task
number fields are cleared to low
values"]:::main N_SetMessageParameters_Node0 -- Yes --> N_SetMessageParameters_Node0_action N_SetMessageParameters_Node0_action --> E_SetMessageParameters S_SetMessageParameters --> N_SetMessageParameters_Node0 N_SetMessageParameters_Node0 -- No --> E_SetMessageParameters
File: GCSTONLY.cbl
GIVEN:
A message needs to be sent to an external service
WHEN:
- The system is running in bpe environment
- Preparing message parameters
THEN:
The timestamp, timestamp2, and task number fields are cleared to low values
β Consolidated Acceptance Criteria
- Error handling is initiated → the return code is set to 99 to indicate service failure
- System needs to set a standardized error indicator → system assigns return code value of 99 to indicate service failure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReturnCodeto99(["Start Step"])
E_SetReturnCodeto99(["End Step"])
N_SetReturnCodeto99_Node0{"Error handling is initiated"}:::decision
N_SetReturnCodeto99_Node0_action["The return code is set to 99 to
indicate service failure"]:::exclusion N_SetReturnCodeto99_Node0 -- Yes -->|Alternative| N_SetReturnCodeto99_Node0_action N_SetReturnCodeto99_Node0_action --> E_SetReturnCodeto99 S_SetReturnCodeto99 --> N_SetReturnCodeto99_Node0 N_SetReturnCodeto99_Node1{"System needs to set a standardized
error indicator"}:::decision N_SetReturnCodeto99_Node1_action["System assigns return code value of
99 to indicate service failure"]:::exclusion N_SetReturnCodeto99_Node1 -- Yes -->|Alternative| N_SetReturnCodeto99_Node1_action N_SetReturnCodeto99_Node1_action --> E_SetReturnCodeto99 N_SetReturnCodeto99_Node0 -- No --> N_SetReturnCodeto99_Node1 N_SetReturnCodeto99_Node1 -- No --> E_SetReturnCodeto99
indicate service failure"]:::exclusion N_SetReturnCodeto99_Node0 -- Yes -->|Alternative| N_SetReturnCodeto99_Node0_action N_SetReturnCodeto99_Node0_action --> E_SetReturnCodeto99 S_SetReturnCodeto99 --> N_SetReturnCodeto99_Node0 N_SetReturnCodeto99_Node1{"System needs to set a standardized
error indicator"}:::decision N_SetReturnCodeto99_Node1_action["System assigns return code value of
99 to indicate service failure"]:::exclusion N_SetReturnCodeto99_Node1 -- Yes -->|Alternative| N_SetReturnCodeto99_Node1_action N_SetReturnCodeto99_Node1_action --> E_SetReturnCodeto99 N_SetReturnCodeto99_Node0 -- No --> N_SetReturnCodeto99_Node1 N_SetReturnCodeto99_Node1 -- No --> E_SetReturnCodeto99
File: GCSTONLY.cbl
GIVEN:
KX2BMP service call has failed
WHEN:
Error handling is initiated
THEN:
The return code is set to 99 to indicate service failure
File: GCSTONLY.cbl
GIVEN:
KX2BMP service call has failed and error logging is complete
WHEN:
System needs to set a standardized error indicator
THEN:
System assigns return code value of 99 to indicate service failure
β Consolidated Acceptance Criteria
- Error handling continues → the condition code is set to 99 using CCF_SET_CONDCODE service
- System needs to notify external processes of the error condition → system calls external services to set both return code and condition code to 99
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetConditionCode(["Start Step"])
E_SetConditionCode(["End Step"])
N_SetConditionCode_Node0{"Error handling continues"}:::decision
N_SetConditionCode_Node0_action["The condition code is set to 99
using CCFSETCONDCODE service"]:::exclusion N_SetConditionCode_Node0 -- Yes -->|Alternative| N_SetConditionCode_Node0_action N_SetConditionCode_Node0_action --> E_SetConditionCode S_SetConditionCode --> N_SetConditionCode_Node0 N_SetConditionCode_Node1{"System needs to notify external
processes of the error condition"}:::decision N_SetConditionCode_Node1_action["System calls external services to
set both return code and condition
code to 99"]:::exclusion N_SetConditionCode_Node1 -- Yes -->|Alternative| N_SetConditionCode_Node1_action N_SetConditionCode_Node1_action --> E_SetConditionCode N_SetConditionCode_Node0 -- No --> N_SetConditionCode_Node1 N_SetConditionCode_Node1 -- No --> E_SetConditionCode
using CCFSETCONDCODE service"]:::exclusion N_SetConditionCode_Node0 -- Yes -->|Alternative| N_SetConditionCode_Node0_action N_SetConditionCode_Node0_action --> E_SetConditionCode S_SetConditionCode --> N_SetConditionCode_Node0 N_SetConditionCode_Node1{"System needs to notify external
processes of the error condition"}:::decision N_SetConditionCode_Node1_action["System calls external services to
set both return code and condition
code to 99"]:::exclusion N_SetConditionCode_Node1 -- Yes -->|Alternative| N_SetConditionCode_Node1_action N_SetConditionCode_Node1_action --> E_SetConditionCode N_SetConditionCode_Node0 -- No --> N_SetConditionCode_Node1 N_SetConditionCode_Node1 -- No --> E_SetConditionCode
File: GCSTONLY.cbl
GIVEN:
Service call has failed and return code is set to 99
WHEN:
Error handling continues
THEN:
The condition code is set to 99 using CCF_SET_CONDCODE service
File: GCSTONLY.cbl
GIVEN:
Error return code has been set to 99 due to KX2BMP service failure
WHEN:
System needs to notify external processes of the error condition
THEN:
- System calls external services to set both return code
- Condition code to 99
β Consolidated Acceptance Criteria
- All error handling steps are completed → processing is stopped and the program terminates
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StopProcessing(["Start Step"])
E_StopProcessing(["End Step"])
N_StopProcessing_Node0{"All error handling steps are
completed"}:::decision N_StopProcessing_Node0_action["Processing is stopped and the
program terminates"]:::exclusion N_StopProcessing_Node0 -- Yes -->|Alternative| N_StopProcessing_Node0_action N_StopProcessing_Node0_action --> E_StopProcessing S_StopProcessing --> N_StopProcessing_Node0 N_StopProcessing_Node0 -- No --> E_StopProcessing
completed"}:::decision N_StopProcessing_Node0_action["Processing is stopped and the
program terminates"]:::exclusion N_StopProcessing_Node0 -- Yes -->|Alternative| N_StopProcessing_Node0_action N_StopProcessing_Node0_action --> E_StopProcessing S_StopProcessing --> N_StopProcessing_Node0 N_StopProcessing_Node0 -- No --> E_StopProcessing
File: GCSTONLY.cbl
GIVEN:
External service call has failed and error codes are set
WHEN:
All error handling steps are completed
THEN:
- Processing is stopped
- The program terminates
β Consolidated Acceptance Criteria
- KX2BMP service is called with program parameters including destination, operation, length, and data area → external KX2BMP service processes the request and returns a status code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExecuteKX2BMPCall(["Start Step"])
E_ExecuteKX2BMPCall(["End Step"])
N_ExecuteKX2BMPCall_Node0{"KX2BMP service is called with
program parameters including
destination, operation, length, and
data area"}:::decision N_ExecuteKX2BMPCall_Node0_action["External KX2BMP service processes
the request and returns a status
code"]:::main N_ExecuteKX2BMPCall_Node0 -- Yes --> N_ExecuteKX2BMPCall_Node0_action N_ExecuteKX2BMPCall_Node0_action --> E_ExecuteKX2BMPCall S_ExecuteKX2BMPCall --> N_ExecuteKX2BMPCall_Node0 N_ExecuteKX2BMPCall_Node0 -- No --> E_ExecuteKX2BMPCall
program parameters including
destination, operation, length, and
data area"}:::decision N_ExecuteKX2BMPCall_Node0_action["External KX2BMP service processes
the request and returns a status
code"]:::main N_ExecuteKX2BMPCall_Node0 -- Yes --> N_ExecuteKX2BMPCall_Node0_action N_ExecuteKX2BMPCall_Node0_action --> E_ExecuteKX2BMPCall S_ExecuteKX2BMPCall --> N_ExecuteKX2BMPCall_Node0 N_ExecuteKX2BMPCall_Node0 -- No --> E_ExecuteKX2BMPCall
File: GCSTONLY.cbl
GIVEN:
System is running in BPE environment and needs to process a data segment
WHEN:
KX2BMP service is called with program parameters including destination, operation, length, and data area
THEN:
- External kx2bmp service processes the request
- Returns a status code
β Consolidated Acceptance Criteria
- System needs to record the failure for troubleshooting purposes → system displays error boundary markers and the specific return code to system error output
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogErrorMessages(["Start Step"])
E_LogErrorMessages(["End Step"])
N_LogErrorMessages_Node0{"System needs to record the failure
for troubleshooting purposes"}:::decision N_LogErrorMessages_Node0_action["System displays error boundary
markers and the specific return code
to system error output"]:::main N_LogErrorMessages_Node0 -- Yes --> N_LogErrorMessages_Node0_action N_LogErrorMessages_Node0_action --> E_LogErrorMessages S_LogErrorMessages --> N_LogErrorMessages_Node0 N_LogErrorMessages_Node0 -- No --> E_LogErrorMessages
for troubleshooting purposes"}:::decision N_LogErrorMessages_Node0_action["System displays error boundary
markers and the specific return code
to system error output"]:::main N_LogErrorMessages_Node0 -- Yes --> N_LogErrorMessages_Node0_action N_LogErrorMessages_Node0_action --> E_LogErrorMessages S_LogErrorMessages --> N_LogErrorMessages_Node0 N_LogErrorMessages_Node0 -- No --> E_LogErrorMessages
File: GCSTONLY.cbl
GIVEN:
KX2BMP service call has failed with an error return code
WHEN:
System needs to record the failure for troubleshooting purposes
THEN:
- System displays error boundary markers
- The specific return code to system error output
β Consolidated Acceptance Criteria
- System has logged errors and set appropriate return codes → system terminates all processing immediately without continuing to next steps
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TerminateProcessing(["Start Step"])
E_TerminateProcessing(["End Step"])
N_TerminateProcessing_Node0{"System has logged errors and set
appropriate return codes"}:::decision N_TerminateProcessing_Node0_action["System terminates all processing
immediately without continuing to
next steps"]:::main N_TerminateProcessing_Node0 -- Yes --> N_TerminateProcessing_Node0_action N_TerminateProcessing_Node0_action --> E_TerminateProcessing S_TerminateProcessing --> N_TerminateProcessing_Node0 N_TerminateProcessing_Node0 -- No --> E_TerminateProcessing
appropriate return codes"}:::decision N_TerminateProcessing_Node0_action["System terminates all processing
immediately without continuing to
next steps"]:::main N_TerminateProcessing_Node0 -- Yes --> N_TerminateProcessing_Node0_action N_TerminateProcessing_Node0_action --> E_TerminateProcessing S_TerminateProcessing --> N_TerminateProcessing_Node0 N_TerminateProcessing_Node0 -- No --> E_TerminateProcessing
File: GCSTONLY.cbl
GIVEN:
KX2BMP service has failed and all error handling steps are complete
WHEN:
- System has logged errors
- Set appropriate return codes
THEN:
System terminates all processing immediately without continuing to next steps
β Consolidated Acceptance Criteria
- System validates that no errors occurred during the service call → system continues with normal processing flow without any error handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinueNormalProcessing(["Start Step"])
E_ContinueNormalProcessing(["End Step"])
N_ContinueNormalProcessing_Node0{"System validates that no errors
occurred during the service call"}:::decision N_ContinueNormalProcessing_Node0_action["System continues with normal
processing flow without any error
handling"]:::main N_ContinueNormalProcessing_Node0 -- Yes --> N_ContinueNormalProcessing_Node0_action N_ContinueNormalProcessing_Node0_action --> E_ContinueNormalProcessing S_ContinueNormalProcessing --> N_ContinueNormalProcessing_Node0 N_ContinueNormalProcessing_Node0 -- No --> E_ContinueNormalProcessing
occurred during the service call"}:::decision N_ContinueNormalProcessing_Node0_action["System continues with normal
processing flow without any error
handling"]:::main N_ContinueNormalProcessing_Node0 -- Yes --> N_ContinueNormalProcessing_Node0_action N_ContinueNormalProcessing_Node0_action --> E_ContinueNormalProcessing S_ContinueNormalProcessing --> N_ContinueNormalProcessing_Node0 N_ContinueNormalProcessing_Node0 -- No --> E_ContinueNormalProcessing
File: GCSTONLY.cbl
GIVEN:
KX2BMP service call has completed successfully with OK return code
WHEN:
System validates that no errors occurred during the service call
THEN:
System continues with normal processing flow without any error handling
GCX003 Sequence (US Train)
Objective: Orchestrates key processes including Request Processing Loop, User Security Validation, Train Origin Validation, Estimated Time of Arrival Validation, US Customs Train ID Generation, and other related sub-functions.
πΊοΈ High-Level Visual Map
flowchart TD
A[Start Train Export Processing]:::start
B{1:Request Processing Loop - More Requests?}:::decision
C[46:AEI Request Type Classification]:::process
D[2:User Security Validation]:::process
E{User Has Access?}:::decision
F[3:Train Origin Validation]:::process
G[4:Estimated Time of Arrival Validation]:::process
H[5:US Customs Train ID Generation]:::process
I[6:MERLIN Customs ID Validation]:::process
J[47:Equipment Limit Validation]:::process
K{7:Equipment Processing Loop - More Equipment?}:::decision
L[8:Container Waybill Retrieval]:::process
M[9:Car Waybill Retrieval]:::process
N[10:Cargo Record Retrieval]:::process
O[11:Cargo Attachment to Train]:::process
P[12:Equipment Detail Line Building]:::process
Q[13:Equipment Type Validation]:::process
R[14:Cargo Information Processing]:::process
S[15:Bond Type Classification]:::process
T[16:Special Manifest Processing]:::process
U[17:Cargo Status Validation]:::process
V[18:Bill Type Validation]:::process
W[19:Equipment Load Status Validation]:::process
X[20:Mexico Customs Documentation Check]:::process
Y[21:Detour Processing Coordination]:::process
Z1[22:TE Bond Port Change Processing]:::process
Z2[23:TR Bond Diversion Processing]:::process
Z3[24:Border Clearance Detour Processing]:::process
Z4[25:US-US Movement Detour Processing]:::process
Z5[26:US-Mexico Export Detour Processing]:::process
Z6[27:Geographic Route Validation]:::process
Z7[28:Container on Flat Car Processing]:::process
AA[29:Report Header and Summary Building]:::process
BB{Request Action Type?}:::decision
CC[30:Train Database Record Creation]:::process
DD[32:EDI Train List Transmission]:::process
EE[33:Report Transmission to Customs]:::process
FF[34:Large Report Email Pagination]:::process
GG[35:Report Distribution to Originator]:::process
HH[36:AEI Report Processing]:::process
II[37:AEI Activity Logging]:::process
JJ[38:Canadian Export Report Generation]:::process
KK[39:Enhanced Report Generation]:::process
LL[40:PDF Report Generation]:::process
MM[41:Error Message Processing]:::process
NN[42:Duplicate Equipment Removal]:::process
OO[43:Activity Audit Logging]:::process
PP[44:Database Rollback Processing]:::process
QQ[End Processing]:::final
%% Data Sources
GCSUTRT[(GCSUTRT - Train Database)]:::datasource
GCSUSRT[(GCSUSRT - Cargo Database)]:::datasource
SHIPROOT[(SHIPROOT - Waybill Database)]:::datasource
SHIPCOMM[(SHIPCOMM - Waybill Comments)]:::datasource
GCSTBRT[(GCSTBRT - Reference Tables)]:::datasource
FWCIROOT[(FWCIROOT - Container Inquiry)]:::datasource
FWIQROOT[(FWIQROOT - Waybill Inquiry)]:::datasource
FWSWRWR[(FWSWRWR - Container Database)]:::datasource
EMTZ[(EMTZ - MERLIN Database)]:::datasource
AELWRKTB[(AELWRKTB - AEI Work Table)]:::datasource
%% Main Flow
A --> B
B -->|Yes| C
C --> D
D --> E
E -->|No| MM
E -->|Yes| F
F --> G
G --> H
H --> I
I --> J
J --> K
K -->|Yes| L
L --> M
M --> N
N --> O
O --> P
P --> Q
Q --> R
R --> S
S --> T
T --> U
U --> V
V --> W
W --> X
X --> Y
Y --> Z1
Z1 --> Z2
Z2 --> Z3
Z3 --> Z4
Z4 --> Z5
Z5 --> Z6
Z6 --> Z7
Z7 --> K
K -->|No| AA
AA --> BB
BB -->|SEND| CC
BB -->|REPORT| GG
BB -->|OTHER| PP
CC --> DD
DD --> EE
EE --> FF
FF --> GG
GG --> HH
HH --> II
II --> JJ
JJ --> KK
KK --> LL
LL --> NN
NN --> OO
OO --> B
B -->|No| QQ
MM --> PP
PP --> QQ
%% Data Source Interactions
GCSTBRT -.->|Read Security Tables| D
GCSTBRT -.->|Read Station Tables| F
GCSTBRT -.->|Read Reference Data| I
GCSUTRT -.->|Read/Write Train Records| H
GCSUTRT -.->|Store Train List| CC
SHIPROOT -.->|Read Waybill Data| L
SHIPROOT -.->|Read Waybill Data| M
SHIPCOMM -.->|Read Waybill Comments| M
GCSUSRT -.->|Read/Write Cargo Records| N
GCSUSRT -.->|Update Cargo Status| O
FWCIROOT -.->|Read Container Info| L
FWIQROOT -.->|Read Inquiry Data| M
FWSWRWR -.->|Read Container Data| Z7
EMTZ -.->|Read MERLIN Data| I
AELWRKTB -.->|Read AEI Configuration| HH
%% Class Definitions
classDef start fill:#67A353
classDef process fill:#08AAD2
classDef decision fill:#FFE347
classDef datasource fill:#2EA597
classDef final fill:#D13313
classDef success fill:#2BB534
classDef error fill:#D13313
π Step-by-Step Logic Trace
β Consolidated Acceptance Criteria
- The user's SCAC access is invalid AND the request is not an AEI train send request → generate error message 14 (access denied) and set user access flag to NO
- The user's UTF authorization is not 'U' or 'S' AND the request is not an AEI train send request → generate error message 13 (insufficient authorization) and set user access flag to NO
- The user's special manifest authorization is not 'S' AND the request is not an AEI train send request → set user not authorized for special manifest flag to TRUE
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_2UserSecurityValidation(["Start Step"])
E_2UserSecurityValidation(["End Step"])
N_2UserSecurityValidation_Node0{"The user s SCAC access is invalid
AND the request is not an AEI train
send request"}:::decision N_2UserSecurityValidation_Node0_action["Generate error message 14 access
denied and set user access flag to
NO"]:::exclusion N_2UserSecurityValidation_Node0 -- Yes -->|Alternative| N_2UserSecurityValidation_Node0_action N_2UserSecurityValidation_Node0_action --> E_2UserSecurityValidation S_2UserSecurityValidation --> N_2UserSecurityValidation_Node0 N_2UserSecurityValidation_Node1{"The user s UTF authorization is not
U or S AND the request is not an AEI
train send request"}:::decision N_2UserSecurityValidation_Node1_action["Generate error message 13
insufficient authorization and set
user access flag to NO"]:::main N_2UserSecurityValidation_Node1 -- Yes --> N_2UserSecurityValidation_Node1_action N_2UserSecurityValidation_Node1_action --> E_2UserSecurityValidation N_2UserSecurityValidation_Node0 -- No --> N_2UserSecurityValidation_Node1 N_2UserSecurityValidation_Node2{"The user s special manifest
authorization is not S AND the
request is not an AEI train send
request"}:::decision N_2UserSecurityValidation_Node2_action["Set user not authorized for special
manifest flag to TRUE"]:::main N_2UserSecurityValidation_Node2 -- Yes --> N_2UserSecurityValidation_Node2_action N_2UserSecurityValidation_Node2_action --> E_2UserSecurityValidation N_2UserSecurityValidation_Node1 -- No --> N_2UserSecurityValidation_Node2 N_2UserSecurityValidation_Node2 -- No --> E_2UserSecurityValidation
AND the request is not an AEI train
send request"}:::decision N_2UserSecurityValidation_Node0_action["Generate error message 14 access
denied and set user access flag to
NO"]:::exclusion N_2UserSecurityValidation_Node0 -- Yes -->|Alternative| N_2UserSecurityValidation_Node0_action N_2UserSecurityValidation_Node0_action --> E_2UserSecurityValidation S_2UserSecurityValidation --> N_2UserSecurityValidation_Node0 N_2UserSecurityValidation_Node1{"The user s UTF authorization is not
U or S AND the request is not an AEI
train send request"}:::decision N_2UserSecurityValidation_Node1_action["Generate error message 13
insufficient authorization and set
user access flag to NO"]:::main N_2UserSecurityValidation_Node1 -- Yes --> N_2UserSecurityValidation_Node1_action N_2UserSecurityValidation_Node1_action --> E_2UserSecurityValidation N_2UserSecurityValidation_Node0 -- No --> N_2UserSecurityValidation_Node1 N_2UserSecurityValidation_Node2{"The user s special manifest
authorization is not S AND the
request is not an AEI train send
request"}:::decision N_2UserSecurityValidation_Node2_action["Set user not authorized for special
manifest flag to TRUE"]:::main N_2UserSecurityValidation_Node2 -- Yes --> N_2UserSecurityValidation_Node2_action N_2UserSecurityValidation_Node2_action --> E_2UserSecurityValidation N_2UserSecurityValidation_Node1 -- No --> N_2UserSecurityValidation_Node2 N_2UserSecurityValidation_Node2 -- No --> E_2UserSecurityValidation
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A user attempts to process a train request with their ACF2 user ID
WHEN:
- The user's scac access is invalid
- The request is not an aei train send request
THEN:
Generate error message 14 (access denied) and set user access flag to NO
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A user requests to send a train manifest
WHEN:
The user's UTF authorization is not 'U' or 'S' AND the request is not an AEI train send request
THEN:
Generate error message 13 (insufficient authorization) and set user access flag to NO
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A user requests to send a train manifest that requires special manifest processing
WHEN:
The user's special manifest authorization is not 'S' AND the request is not an AEI train send request
THEN:
Set user not authorized for special manifest flag to TRUE
β Consolidated Acceptance Criteria
- The train origin field is blank or spaces → generate error message 2 (missing train origin) and exit validation
- The origin is not found in station code table OR the US station code is blank → generate error message 2 (invalid train origin)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_3TrainOriginValidation(["Start Step"])
E_3TrainOriginValidation(["End Step"])
N_3TrainOriginValidation_Node0{"The train origin field is blank or
spaces"}:::decision N_3TrainOriginValidation_Node0_action["Generate error message 2 missing
train origin and exit validation"]:::main N_3TrainOriginValidation_Node0 -- Yes --> N_3TrainOriginValidation_Node0_action N_3TrainOriginValidation_Node0_action --> E_3TrainOriginValidation S_3TrainOriginValidation --> N_3TrainOriginValidation_Node0 N_3TrainOriginValidation_Node1{"The origin is not found in station
code table OR the US station code is
blank"}:::decision N_3TrainOriginValidation_Node1_action["Generate error message 2 invalid
train origin"]:::main N_3TrainOriginValidation_Node1 -- Yes --> N_3TrainOriginValidation_Node1_action N_3TrainOriginValidation_Node1_action --> E_3TrainOriginValidation N_3TrainOriginValidation_Node0 -- No --> N_3TrainOriginValidation_Node1 N_3TrainOriginValidation_Node1 -- No --> E_3TrainOriginValidation
spaces"}:::decision N_3TrainOriginValidation_Node0_action["Generate error message 2 missing
train origin and exit validation"]:::main N_3TrainOriginValidation_Node0 -- Yes --> N_3TrainOriginValidation_Node0_action N_3TrainOriginValidation_Node0_action --> E_3TrainOriginValidation S_3TrainOriginValidation --> N_3TrainOriginValidation_Node0 N_3TrainOriginValidation_Node1{"The origin is not found in station
code table OR the US station code is
blank"}:::decision N_3TrainOriginValidation_Node1_action["Generate error message 2 invalid
train origin"]:::main N_3TrainOriginValidation_Node1 -- Yes --> N_3TrainOriginValidation_Node1_action N_3TrainOriginValidation_Node1_action --> E_3TrainOriginValidation N_3TrainOriginValidation_Node0 -- No --> N_3TrainOriginValidation_Node1 N_3TrainOriginValidation_Node1 -- No --> E_3TrainOriginValidation
File: GCX003.cbl
GIVEN:
A train request is being processed
WHEN:
The train origin field is blank or spaces
THEN:
Generate error message 2 (missing train origin) and exit validation
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A train origin is provided
WHEN:
The origin is not found in station code table OR the US station code is blank
THEN:
Generate error message 2 (invalid train origin)
β Consolidated Acceptance Criteria
- The ETA date equals '000000' → generate error message 3 (invalid ETA date) and exit validation
- The date conversion fails:
- ETA time is not numeric
- hour is not 00-23
- minute is not 00-59
- For 'S' authorization: ETA is not within 30 days before to 5 days after current date, OR For other users: ETA is not within 2 days before to 2 days after current date → generate error message 4 (for 'S' users) or message 21 (for other users)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_4EstimatedTimeofArrivalValidation(["Start Step"])
E_4EstimatedTimeofArrivalValidation(["End Step"])
N_4EstimatedTimeofArrivalValidation_Node0{"The ETA date equals 000000"}:::decision
N_4EstimatedTimeofArrivalValidation_Node0_action["Generate error message 3 invalid
ETA date and exit validation"]:::main N_4EstimatedTimeofArrivalValidation_Node0 -- Yes --> N_4EstimatedTimeofArrivalValidation_Node0_action N_4EstimatedTimeofArrivalValidation_Node0_action --> E_4EstimatedTimeofArrivalValidation S_4EstimatedTimeofArrivalValidation --> N_4EstimatedTimeofArrivalValidation_Node0 N_4EstimatedTimeofArrivalValidation_Node1{"The date conversion fails OR ETA
time is not numeric OR hour is not
00-23 OR minute is not 00-59"}:::decision N_4EstimatedTimeofArrivalValidation_Node1_action["Generate error message 3 invalid
ETA format"]:::main N_4EstimatedTimeofArrivalValidation_Node1 -- Yes --> N_4EstimatedTimeofArrivalValidation_Node1_action N_4EstimatedTimeofArrivalValidation_Node1_action --> E_4EstimatedTimeofArrivalValidation N_4EstimatedTimeofArrivalValidation_Node0 -- No --> N_4EstimatedTimeofArrivalValidation_Node1 N_4EstimatedTimeofArrivalValidation_Node2{"For S authorization: ETA is not
within 30 days before to 5 days
after current date, OR For other
users: ETA is not within 2 days
before to 2 days after current date"}:::decision N_4EstimatedTimeofArrivalValidation_Node2_action["Generate error message 4 for S
users or message 21 for other users"]:::main N_4EstimatedTimeofArrivalValidation_Node2 -- Yes --> N_4EstimatedTimeofArrivalValidation_Node2_action N_4EstimatedTimeofArrivalValidation_Node2_action --> E_4EstimatedTimeofArrivalValidation N_4EstimatedTimeofArrivalValidation_Node1 -- No --> N_4EstimatedTimeofArrivalValidation_Node2 N_4EstimatedTimeofArrivalValidation_Node2 -- No --> E_4EstimatedTimeofArrivalValidation
ETA date and exit validation"]:::main N_4EstimatedTimeofArrivalValidation_Node0 -- Yes --> N_4EstimatedTimeofArrivalValidation_Node0_action N_4EstimatedTimeofArrivalValidation_Node0_action --> E_4EstimatedTimeofArrivalValidation S_4EstimatedTimeofArrivalValidation --> N_4EstimatedTimeofArrivalValidation_Node0 N_4EstimatedTimeofArrivalValidation_Node1{"The date conversion fails OR ETA
time is not numeric OR hour is not
00-23 OR minute is not 00-59"}:::decision N_4EstimatedTimeofArrivalValidation_Node1_action["Generate error message 3 invalid
ETA format"]:::main N_4EstimatedTimeofArrivalValidation_Node1 -- Yes --> N_4EstimatedTimeofArrivalValidation_Node1_action N_4EstimatedTimeofArrivalValidation_Node1_action --> E_4EstimatedTimeofArrivalValidation N_4EstimatedTimeofArrivalValidation_Node0 -- No --> N_4EstimatedTimeofArrivalValidation_Node1 N_4EstimatedTimeofArrivalValidation_Node2{"For S authorization: ETA is not
within 30 days before to 5 days
after current date, OR For other
users: ETA is not within 2 days
before to 2 days after current date"}:::decision N_4EstimatedTimeofArrivalValidation_Node2_action["Generate error message 4 for S
users or message 21 for other users"]:::main N_4EstimatedTimeofArrivalValidation_Node2 -- Yes --> N_4EstimatedTimeofArrivalValidation_Node2_action N_4EstimatedTimeofArrivalValidation_Node2_action --> E_4EstimatedTimeofArrivalValidation N_4EstimatedTimeofArrivalValidation_Node1 -- No --> N_4EstimatedTimeofArrivalValidation_Node2 N_4EstimatedTimeofArrivalValidation_Node2 -- No --> E_4EstimatedTimeofArrivalValidation
File: GCX003.cbl
GIVEN:
A train request includes an ETA date
WHEN:
The ETA date equals '000000'
THEN:
Generate error message 3 (invalid ETA date) and exit validation
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
An ETA date and time are provided
WHEN:
The date conversion fails OR ETA time is not numeric OR hour is not 00-23 OR minute is not 00-59
THEN:
Generate error message 3 (invalid ETA format)
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A valid ETA date is provided and user authorization level is determined
WHEN:
For 'S' authorization: ETA is not within 30 days before to 5 days after current date, OR For other users: ETA is not within 2 days before to 2 days after current date
THEN:
Generate error message 4 (for 'S' users) or message 21 (for other users)
β Consolidated Acceptance Criteria
- A train record with the same US customs train ID already exists AND is not marked as deleted → generate error message 6 (duplicate train ID)
- The existing train record is marked as deleted → delete the existing train record to allow creation of new record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_5USCustomsTrainIDGeneration(["Start Step"])
E_5USCustomsTrainIDGeneration(["End Step"])
N_5USCustomsTrainIDGeneration_Node0{"A train record with the same US
customs train ID already exists AND
is not marked as deleted"}:::decision N_5USCustomsTrainIDGeneration_Node0_action["Generate error message 6 duplicate
train ID"]:::main N_5USCustomsTrainIDGeneration_Node0 -- Yes --> N_5USCustomsTrainIDGeneration_Node0_action N_5USCustomsTrainIDGeneration_Node0_action --> E_5USCustomsTrainIDGeneration S_5USCustomsTrainIDGeneration --> N_5USCustomsTrainIDGeneration_Node0 N_5USCustomsTrainIDGeneration_Node1{"The existing train record is marked
as deleted"}:::decision N_5USCustomsTrainIDGeneration_Node1_action["Delete the existing train record to
allow creation of new record"]:::main N_5USCustomsTrainIDGeneration_Node1 -- Yes --> N_5USCustomsTrainIDGeneration_Node1_action N_5USCustomsTrainIDGeneration_Node1_action --> E_5USCustomsTrainIDGeneration N_5USCustomsTrainIDGeneration_Node0 -- No --> N_5USCustomsTrainIDGeneration_Node1 N_5USCustomsTrainIDGeneration_Node1 -- No --> E_5USCustomsTrainIDGeneration
customs train ID already exists AND
is not marked as deleted"}:::decision N_5USCustomsTrainIDGeneration_Node0_action["Generate error message 6 duplicate
train ID"]:::main N_5USCustomsTrainIDGeneration_Node0 -- Yes --> N_5USCustomsTrainIDGeneration_Node0_action N_5USCustomsTrainIDGeneration_Node0_action --> E_5USCustomsTrainIDGeneration S_5USCustomsTrainIDGeneration --> N_5USCustomsTrainIDGeneration_Node0 N_5USCustomsTrainIDGeneration_Node1{"The existing train record is marked
as deleted"}:::decision N_5USCustomsTrainIDGeneration_Node1_action["Delete the existing train record to
allow creation of new record"]:::main N_5USCustomsTrainIDGeneration_Node1 -- Yes --> N_5USCustomsTrainIDGeneration_Node1_action N_5USCustomsTrainIDGeneration_Node1_action --> E_5USCustomsTrainIDGeneration N_5USCustomsTrainIDGeneration_Node0 -- No --> N_5USCustomsTrainIDGeneration_Node1 N_5USCustomsTrainIDGeneration_Node1 -- No --> E_5USCustomsTrainIDGeneration
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Train details including SCAC, train ID, origin, consist number, and creation date
WHEN:
- A train record with the same us customs train id already exists
- Is not marked as deleted
THEN:
Generate error message 6 (duplicate train ID)
File: GCX003.cbl
GIVEN:
A train record with the same US customs train ID exists
WHEN:
The existing train record is marked as deleted
THEN:
Delete the existing train record to allow creation of new record
β Consolidated Acceptance Criteria
- The station's public MERLIN ID is blank OR the MERLIN ID is not found in MERLIN database → generate error message 7 (missing MERLIN ID) or message 8 (MERLIN ID not found)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_6MERLINCustomsIDValidation(["Start Step"])
E_6MERLINCustomsIDValidation(["End Step"])
N_6MERLINCustomsIDValidation_Node0{"The station s public MERLIN ID is
blank OR the MERLIN ID is not found
in MERLIN database"}:::decision N_6MERLINCustomsIDValidation_Node0_action["Generate error message 7 missing
MERLIN ID or message 8 MERLIN ID not
found"]:::main N_6MERLINCustomsIDValidation_Node0 -- Yes --> N_6MERLINCustomsIDValidation_Node0_action N_6MERLINCustomsIDValidation_Node0_action --> E_6MERLINCustomsIDValidation S_6MERLINCustomsIDValidation --> N_6MERLINCustomsIDValidation_Node0 N_6MERLINCustomsIDValidation_Node0 -- No --> E_6MERLINCustomsIDValidation
blank OR the MERLIN ID is not found
in MERLIN database"}:::decision N_6MERLINCustomsIDValidation_Node0_action["Generate error message 7 missing
MERLIN ID or message 8 MERLIN ID not
found"]:::main N_6MERLINCustomsIDValidation_Node0 -- Yes --> N_6MERLINCustomsIDValidation_Node0_action N_6MERLINCustomsIDValidation_Node0_action --> E_6MERLINCustomsIDValidation S_6MERLINCustomsIDValidation --> N_6MERLINCustomsIDValidation_Node0 N_6MERLINCustomsIDValidation_Node0 -- No --> E_6MERLINCustomsIDValidation
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Train origin station is validated
WHEN:
The station's public MERLIN ID is blank OR the MERLIN ID is not found in MERLIN database
THEN:
Generate error message 7 (missing MERLIN ID) or message 8 (MERLIN ID not found)
β Consolidated Acceptance Criteria
- Container is found in container inquiry system → retrieve waybill information using container inquiry data, otherwise use container database lookup
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_8ContainerWaybillRetrieval(["Start Step"])
E_8ContainerWaybillRetrieval(["End Step"])
N_8ContainerWaybillRetrieval_Node0{"Container is found in container
inquiry system"}:::decision N_8ContainerWaybillRetrieval_Node0_action["Retrieve waybill information using
container inquiry data, otherwise
use container database lookup"]:::main N_8ContainerWaybillRetrieval_Node0 -- Yes --> N_8ContainerWaybillRetrieval_Node0_action N_8ContainerWaybillRetrieval_Node0_action --> E_8ContainerWaybillRetrieval S_8ContainerWaybillRetrieval --> N_8ContainerWaybillRetrieval_Node0 N_8ContainerWaybillRetrieval_Node0 -- No --> E_8ContainerWaybillRetrieval
inquiry system"}:::decision N_8ContainerWaybillRetrieval_Node0_action["Retrieve waybill information using
container inquiry data, otherwise
use container database lookup"]:::main N_8ContainerWaybillRetrieval_Node0 -- Yes --> N_8ContainerWaybillRetrieval_Node0_action N_8ContainerWaybillRetrieval_Node0_action --> E_8ContainerWaybillRetrieval S_8ContainerWaybillRetrieval --> N_8ContainerWaybillRetrieval_Node0 N_8ContainerWaybillRetrieval_Node0 -- No --> E_8ContainerWaybillRetrieval
File: GCX003.cbl
GIVEN:
Equipment is identified as a container
WHEN:
Container is found in container inquiry system
THEN:
Retrieve waybill information using container inquiry data, otherwise use container database lookup
β Consolidated Acceptance Criteria
- Car waybill lookup is performed → retrieve latest waybill excluding temporary, corrector, and incomplete EDI waybills, and if car is loaded empty, treat as waybill not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_9CarWaybillRetrieval(["Start Step"])
E_9CarWaybillRetrieval(["End Step"])
N_9CarWaybillRetrieval_Node0{"Car waybill lookup is performed"}:::decision
N_9CarWaybillRetrieval_Node0_action["Retrieve latest waybill excluding
temporary, corrector, and incomplete
EDI waybills, and if car is loaded
empty, treat as waybill not found"]:::main N_9CarWaybillRetrieval_Node0 -- Yes --> N_9CarWaybillRetrieval_Node0_action N_9CarWaybillRetrieval_Node0_action --> E_9CarWaybillRetrieval S_9CarWaybillRetrieval --> N_9CarWaybillRetrieval_Node0 N_9CarWaybillRetrieval_Node0 -- No --> E_9CarWaybillRetrieval
temporary, corrector, and incomplete
EDI waybills, and if car is loaded
empty, treat as waybill not found"]:::main N_9CarWaybillRetrieval_Node0 -- Yes --> N_9CarWaybillRetrieval_Node0_action N_9CarWaybillRetrieval_Node0_action --> E_9CarWaybillRetrieval S_9CarWaybillRetrieval --> N_9CarWaybillRetrieval_Node0 N_9CarWaybillRetrieval_Node0 -- No --> E_9CarWaybillRetrieval
File: GCX003.cbl
GIVEN:
Equipment is identified as a car with init and number
WHEN:
Car waybill lookup is performed
THEN:
Retrieve latest waybill excluding temporary, corrector, and incomplete EDI waybills, and if car is loaded empty, treat as waybill not found
β Consolidated Acceptance Criteria
- Cargo lookup is performed using waybill number and equipment ID → retrieve first cargo record and set cargo found flag, otherwise set no cargo found flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_10CargoRecordRetrieval(["Start Step"])
E_10CargoRecordRetrieval(["End Step"])
N_10CargoRecordRetrieval_Node0{"Cargo lookup is performed using
waybill number and equipment ID"}:::decision N_10CargoRecordRetrieval_Node0_action["Retrieve first cargo record and set
cargo found flag, otherwise set no
cargo found flag"]:::main N_10CargoRecordRetrieval_Node0 -- Yes --> N_10CargoRecordRetrieval_Node0_action N_10CargoRecordRetrieval_Node0_action --> E_10CargoRecordRetrieval S_10CargoRecordRetrieval --> N_10CargoRecordRetrieval_Node0 N_10CargoRecordRetrieval_Node0 -- No --> E_10CargoRecordRetrieval
waybill number and equipment ID"}:::decision N_10CargoRecordRetrieval_Node0_action["Retrieve first cargo record and set
cargo found flag, otherwise set no
cargo found flag"]:::main N_10CargoRecordRetrieval_Node0 -- Yes --> N_10CargoRecordRetrieval_Node0_action N_10CargoRecordRetrieval_Node0_action --> E_10CargoRecordRetrieval S_10CargoRecordRetrieval --> N_10CargoRecordRetrieval_Node0 N_10CargoRecordRetrieval_Node0 -- No --> E_10CargoRecordRetrieval
File: GCX003.cbl
GIVEN:
A waybill is found for equipment
WHEN:
- Cargo lookup is performed using waybill number
- Equipment id
THEN:
- Retrieve first cargo record
- Set cargo found flag, otherwise set no cargo found flag
β Consolidated Acceptance Criteria
- Cargo is immediate transport:
- already created for IT
- US-Canada-US with release status
- default with release status
- empty equipment
- special manifest at Woburn PQ station
- export at non-Laredo stations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_11CargoAttachmenttoTrain(["Start Step"])
E_11CargoAttachmenttoTrain(["End Step"])
N_11CargoAttachmenttoTrain_Node0{"Cargo is immediate transport OR
already created for IT OR
US-Canada-US with release status OR
default with release status OR empty
equipment OR special manifest at
Woburn PQ station OR export at
non-Laredo stations"}:::decision N_11CargoAttachmenttoTrain_Node0_action["Skip cargo attachment to train"]:::main N_11CargoAttachmenttoTrain_Node0 -- Yes --> N_11CargoAttachmenttoTrain_Node0_action N_11CargoAttachmenttoTrain_Node0_action --> E_11CargoAttachmenttoTrain S_11CargoAttachmenttoTrain --> N_11CargoAttachmenttoTrain_Node0 N_11CargoAttachmenttoTrain_Node0 -- No --> E_11CargoAttachmenttoTrain
already created for IT OR
US-Canada-US with release status OR
default with release status OR empty
equipment OR special manifest at
Woburn PQ station OR export at
non-Laredo stations"}:::decision N_11CargoAttachmenttoTrain_Node0_action["Skip cargo attachment to train"]:::main N_11CargoAttachmenttoTrain_Node0 -- Yes --> N_11CargoAttachmenttoTrain_Node0_action N_11CargoAttachmenttoTrain_Node0_action --> E_11CargoAttachmenttoTrain S_11CargoAttachmenttoTrain --> N_11CargoAttachmenttoTrain_Node0 N_11CargoAttachmenttoTrain_Node0 -- No --> E_11CargoAttachmenttoTrain
File: GCX003.cbl
GIVEN:
Cargo is found for equipment and request action is SEND with no errors
WHEN:
Cargo is immediate transport OR already created for IT OR US-Canada-US with release status OR default with release status OR empty equipment OR special manifest at Woburn PQ station OR export at non-Laredo stations
THEN:
Skip cargo attachment to train
β Consolidated Acceptance Criteria
- Building equipment detail line → include equipment ID, load/empty indicator, equipment type, and format according to container or car type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_12EquipmentDetailLineBuilding(["Start Step"])
E_12EquipmentDetailLineBuilding(["End Step"])
N_12EquipmentDetailLineBuilding_Node0{"Building equipment detail line"}:::decision
N_12EquipmentDetailLineBuilding_Node0_action["Include equipment ID, loadempty
indicator, equipment type, and
format according to container or car
type"]:::main N_12EquipmentDetailLineBuilding_Node0 -- Yes --> N_12EquipmentDetailLineBuilding_Node0_action N_12EquipmentDetailLineBuilding_Node0_action --> E_12EquipmentDetailLineBuilding S_12EquipmentDetailLineBuilding --> N_12EquipmentDetailLineBuilding_Node0 N_12EquipmentDetailLineBuilding_Node0 -- No --> E_12EquipmentDetailLineBuilding
indicator, equipment type, and
format according to container or car
type"]:::main N_12EquipmentDetailLineBuilding_Node0 -- Yes --> N_12EquipmentDetailLineBuilding_Node0_action N_12EquipmentDetailLineBuilding_Node0_action --> E_12EquipmentDetailLineBuilding S_12EquipmentDetailLineBuilding --> N_12EquipmentDetailLineBuilding_Node0 N_12EquipmentDetailLineBuilding_Node0 -- No --> E_12EquipmentDetailLineBuilding
File: GCX003.cbl
GIVEN:
Equipment information is available
WHEN:
Building equipment detail line
THEN:
Include equipment ID, load/empty indicator, equipment type, and format according to container or car type
β Consolidated Acceptance Criteria
- Equipment type lookup fails → generate error message 35 (for containers) or message 36 (for cars) and set equipment error flag
- Double stack traffic type is determined → add double stack count to appropriate traffic counter (CPRS, CSXT, NS, or HAUL)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_13EquipmentTypeValidation(["Start Step"])
E_13EquipmentTypeValidation(["End Step"])
N_13EquipmentTypeValidation_Node0{"Equipment type lookup fails"}:::decision
N_13EquipmentTypeValidation_Node0_action["Generate error message 35 for
containers or message 36 for cars
and set equipment error flag"]:::main N_13EquipmentTypeValidation_Node0 -- Yes --> N_13EquipmentTypeValidation_Node0_action N_13EquipmentTypeValidation_Node0_action --> E_13EquipmentTypeValidation S_13EquipmentTypeValidation --> N_13EquipmentTypeValidation_Node0 N_13EquipmentTypeValidation_Node1{"Double stack traffic type is
determined"}:::decision N_13EquipmentTypeValidation_Node1_action["Add double stack count to
appropriate traffic counter CPRS,
CSXT, NS, or HAUL"]:::main N_13EquipmentTypeValidation_Node1 -- Yes --> N_13EquipmentTypeValidation_Node1_action N_13EquipmentTypeValidation_Node1_action --> E_13EquipmentTypeValidation N_13EquipmentTypeValidation_Node0 -- No --> N_13EquipmentTypeValidation_Node1 N_13EquipmentTypeValidation_Node1 -- No --> E_13EquipmentTypeValidation
containers or message 36 for cars
and set equipment error flag"]:::main N_13EquipmentTypeValidation_Node0 -- Yes --> N_13EquipmentTypeValidation_Node0_action N_13EquipmentTypeValidation_Node0_action --> E_13EquipmentTypeValidation S_13EquipmentTypeValidation --> N_13EquipmentTypeValidation_Node0 N_13EquipmentTypeValidation_Node1{"Double stack traffic type is
determined"}:::decision N_13EquipmentTypeValidation_Node1_action["Add double stack count to
appropriate traffic counter CPRS,
CSXT, NS, or HAUL"]:::main N_13EquipmentTypeValidation_Node1 -- Yes --> N_13EquipmentTypeValidation_Node1_action N_13EquipmentTypeValidation_Node1_action --> E_13EquipmentTypeValidation N_13EquipmentTypeValidation_Node0 -- No --> N_13EquipmentTypeValidation_Node1 N_13EquipmentTypeValidation_Node1 -- No --> E_13EquipmentTypeValidation
File: GCX003.cbl
GIVEN:
Equipment ID is provided
WHEN:
Equipment type lookup fails
THEN:
Generate error message 35 (for containers) or message 36 (for cars) and set equipment error flag
File: GCX003.cbl
GIVEN:
Equipment type is 'SK' and waybill is found
WHEN:
Double stack traffic type is determined
THEN:
Add double stack count to appropriate traffic counter (CPRS, CSXT, NS, or HAUL)
β Consolidated Acceptance Criteria
- Processing cargo information → extract US CCN key, load/empty code, bond numbers, and set appropriate bond found flags based on cargo type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_14CargoInformationProcessing(["Start Step"])
E_14CargoInformationProcessing(["End Step"])
N_14CargoInformationProcessing_Node0{"Processing cargo information"}:::decision
N_14CargoInformationProcessing_Node0_action["Extract US CCN key, loadempty code,
bond numbers, and set appropriate
bond found flags based on cargo type"]:::main N_14CargoInformationProcessing_Node0 -- Yes --> N_14CargoInformationProcessing_Node0_action N_14CargoInformationProcessing_Node0_action --> E_14CargoInformationProcessing S_14CargoInformationProcessing --> N_14CargoInformationProcessing_Node0 N_14CargoInformationProcessing_Node0 -- No --> E_14CargoInformationProcessing
bond numbers, and set appropriate
bond found flags based on cargo type"]:::main N_14CargoInformationProcessing_Node0 -- Yes --> N_14CargoInformationProcessing_Node0_action N_14CargoInformationProcessing_Node0_action --> E_14CargoInformationProcessing S_14CargoInformationProcessing --> N_14CargoInformationProcessing_Node0 N_14CargoInformationProcessing_Node0 -- No --> E_14CargoInformationProcessing
File: GCX003.cbl
GIVEN:
Cargo is found for equipment
WHEN:
Processing cargo information
THEN:
Extract US CCN key, load/empty code, bond numbers, and set appropriate bond found flags based on cargo type
β Consolidated Acceptance Criteria
- Bond type is US-Canada-US and not created for IT and not special TR → set TR bond found flag, and when bond type is transport export and not created for IT, set TE bond found flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_15BondTypeClassification(["Start Step"])
E_15BondTypeClassification(["End Step"])
N_15BondTypeClassification_Node0{"Bond type is US-Canada-US and not
created for IT and not special TR"}:::decision N_15BondTypeClassification_Node0_action["Set TR bond found flag, and when
bond type is transport export and
not created for IT, set TE bond
found flag"]:::main N_15BondTypeClassification_Node0 -- Yes --> N_15BondTypeClassification_Node0_action N_15BondTypeClassification_Node0_action --> E_15BondTypeClassification S_15BondTypeClassification --> N_15BondTypeClassification_Node0 N_15BondTypeClassification_Node0 -- No --> E_15BondTypeClassification
created for IT and not special TR"}:::decision N_15BondTypeClassification_Node0_action["Set TR bond found flag, and when
bond type is transport export and
not created for IT, set TE bond
found flag"]:::main N_15BondTypeClassification_Node0 -- Yes --> N_15BondTypeClassification_Node0_action N_15BondTypeClassification_Node0_action --> E_15BondTypeClassification S_15BondTypeClassification --> N_15BondTypeClassification_Node0 N_15BondTypeClassification_Node0 -- No --> E_15BondTypeClassification
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo with bond type information is processed
WHEN:
- Bond type is us-canada-us
- Not created for it
- Not special tr
THEN:
- Set tr bond found flag, and when bond type is transport export
- Not created for it, set te bond found flag
β Consolidated Acceptance Criteria
- Cargo has special manifest origin flag → set special manifest IT found flag, and when cargo is transport export with special manifest flag, set special manifest TE found flag
- Cargo has special 88 flag → set US-Mexico 88 found flag, and when cargo is US-Canada-US with special TR flag, set special TR found flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_16SpecialManifestProcessing(["Start Step"])
E_16SpecialManifestProcessing(["End Step"])
N_16SpecialManifestProcessing_Node0{"Cargo has special manifest origin
flag"}:::decision N_16SpecialManifestProcessing_Node0_action["Set special manifest IT found flag,
and when cargo is transport export
with special manifest flag, set
special manifest TE found flag"]:::main N_16SpecialManifestProcessing_Node0 -- Yes --> N_16SpecialManifestProcessing_Node0_action N_16SpecialManifestProcessing_Node0_action --> E_16SpecialManifestProcessing S_16SpecialManifestProcessing --> N_16SpecialManifestProcessing_Node0 N_16SpecialManifestProcessing_Node1{"Cargo has special 88 flag"}:::decision N_16SpecialManifestProcessing_Node1_action["Set US-Mexico 88 found flag, and
when cargo is US-Canada-US with
special TR flag, set special TR
found flag"]:::main N_16SpecialManifestProcessing_Node1 -- Yes --> N_16SpecialManifestProcessing_Node1_action N_16SpecialManifestProcessing_Node1_action --> E_16SpecialManifestProcessing N_16SpecialManifestProcessing_Node0 -- No --> N_16SpecialManifestProcessing_Node1 N_16SpecialManifestProcessing_Node1 -- No --> E_16SpecialManifestProcessing
flag"}:::decision N_16SpecialManifestProcessing_Node0_action["Set special manifest IT found flag,
and when cargo is transport export
with special manifest flag, set
special manifest TE found flag"]:::main N_16SpecialManifestProcessing_Node0 -- Yes --> N_16SpecialManifestProcessing_Node0_action N_16SpecialManifestProcessing_Node0_action --> E_16SpecialManifestProcessing S_16SpecialManifestProcessing --> N_16SpecialManifestProcessing_Node0 N_16SpecialManifestProcessing_Node1{"Cargo has special 88 flag"}:::decision N_16SpecialManifestProcessing_Node1_action["Set US-Mexico 88 found flag, and
when cargo is US-Canada-US with
special TR flag, set special TR
found flag"]:::main N_16SpecialManifestProcessing_Node1 -- Yes --> N_16SpecialManifestProcessing_Node1_action N_16SpecialManifestProcessing_Node1_action --> E_16SpecialManifestProcessing N_16SpecialManifestProcessing_Node0 -- No --> N_16SpecialManifestProcessing_Node1 N_16SpecialManifestProcessing_Node1 -- No --> E_16SpecialManifestProcessing
File: GCX003.cbl
GIVEN:
Cargo is being processed
WHEN:
Cargo has special manifest origin flag
THEN:
Set special manifest IT found flag, and when cargo is transport export with special manifest flag, set special manifest TE found flag
File: GCX003.cbl
GIVEN:
Cargo is export type with US-Mexico country codes
WHEN:
Cargo has special 88 flag
THEN:
Set US-Mexico 88 found flag, and when cargo is US-Canada-US with special TR flag, set special TR found flag
β Consolidated Acceptance Criteria
- Cargo status is pending, deleted, or error → generate error message 16 (cargo status invalid)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_17CargoStatusValidation(["Start Step"])
E_17CargoStatusValidation(["End Step"])
N_17CargoStatusValidation_Node0{"Cargo status is pending, deleted,
or error"}:::decision N_17CargoStatusValidation_Node0_action["Generate error message 16 cargo
status invalid"]:::exclusion N_17CargoStatusValidation_Node0 -- Yes -->|Alternative| N_17CargoStatusValidation_Node0_action N_17CargoStatusValidation_Node0_action --> E_17CargoStatusValidation S_17CargoStatusValidation --> N_17CargoStatusValidation_Node0 N_17CargoStatusValidation_Node0 -- No --> E_17CargoStatusValidation
or error"}:::decision N_17CargoStatusValidation_Node0_action["Generate error message 16 cargo
status invalid"]:::exclusion N_17CargoStatusValidation_Node0 -- Yes -->|Alternative| N_17CargoStatusValidation_Node0_action N_17CargoStatusValidation_Node0_action --> E_17CargoStatusValidation S_17CargoStatusValidation --> N_17CargoStatusValidation_Node0 N_17CargoStatusValidation_Node0 -- No --> E_17CargoStatusValidation
File: GCX003.cbl
GIVEN:
Cargo is found and being validated
WHEN:
Cargo status is pending, deleted, or error
THEN:
Generate error message 16 (cargo status invalid)
β Consolidated Acceptance Criteria
- Bill type is '15' → format as 'PPR 7512 15 US-CA-US', when bond type is IT or IE, format as 'AMS [bond_type] [bond_number]', when bond type is TE, TR, or MT, format as 'AMS 7512 [bond_type] [bond_number]'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_18BillTypeValidation(["Start Step"])
E_18BillTypeValidation(["End Step"])
N_18BillTypeValidation_Node0{"Bill type is 15"}:::decision
N_18BillTypeValidation_Node0_action["Format as PPR 7512 15 US-CA-US ,
when bond type is IT or IE, format
as AMS bondtype bondnumber , when
bond type is TE, TR, or MT, format
as AMS 7512 bondtype bondnumber"]:::main N_18BillTypeValidation_Node0 -- Yes --> N_18BillTypeValidation_Node0_action N_18BillTypeValidation_Node0_action --> E_18BillTypeValidation S_18BillTypeValidation --> N_18BillTypeValidation_Node0 N_18BillTypeValidation_Node0 -- No --> E_18BillTypeValidation
when bond type is IT or IE, format
as AMS bondtype bondnumber , when
bond type is TE, TR, or MT, format
as AMS 7512 bondtype bondnumber"]:::main N_18BillTypeValidation_Node0 -- Yes --> N_18BillTypeValidation_Node0_action N_18BillTypeValidation_Node0_action --> E_18BillTypeValidation S_18BillTypeValidation --> N_18BillTypeValidation_Node0 N_18BillTypeValidation_Node0 -- No --> E_18BillTypeValidation
File: GCX003.cbl
GIVEN:
Cargo with specific bill type is processed
WHEN:
Bill type is '15'
THEN:
Format as 'PPR 7512 15 US-CA-US', when bond type is IT or IE, format as 'AMS [bond_type] [bond_number]', when bond type is TE, TR, or MT, format as 'AMS 7512 [bond_type] [bond_number]'
β Consolidated Acceptance Criteria
- Cargo is empty equipment or empty residue type → set equipment as empty, update counters from loaded to empty, and format info as 'EMPTY'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_19EquipmentLoadStatusValidation(["Start Step"])
E_19EquipmentLoadStatusValidation(["End Step"])
N_19EquipmentLoadStatusValidation_Node0{"Cargo is empty equipment or empty
residue type"}:::decision N_19EquipmentLoadStatusValidation_Node0_action["Set equipment as empty, update
counters from loaded to empty, and
format info as EMPTY"]:::main N_19EquipmentLoadStatusValidation_Node0 -- Yes --> N_19EquipmentLoadStatusValidation_Node0_action N_19EquipmentLoadStatusValidation_Node0_action --> E_19EquipmentLoadStatusValidation S_19EquipmentLoadStatusValidation --> N_19EquipmentLoadStatusValidation_Node0 N_19EquipmentLoadStatusValidation_Node0 -- No --> E_19EquipmentLoadStatusValidation
residue type"}:::decision N_19EquipmentLoadStatusValidation_Node0_action["Set equipment as empty, update
counters from loaded to empty, and
format info as EMPTY"]:::main N_19EquipmentLoadStatusValidation_Node0 -- Yes --> N_19EquipmentLoadStatusValidation_Node0_action N_19EquipmentLoadStatusValidation_Node0_action --> E_19EquipmentLoadStatusValidation S_19EquipmentLoadStatusValidation --> N_19EquipmentLoadStatusValidation_Node0 N_19EquipmentLoadStatusValidation_Node0 -- No --> E_19EquipmentLoadStatusValidation
File: GCX003.cbl
GIVEN:
Equipment with cargo is being processed
WHEN:
Cargo is empty equipment or empty residue type
THEN:
Set equipment as empty, update counters from loaded to empty, and format info as 'EMPTY'
β Consolidated Acceptance Criteria
- FEN reference number is not found → generate error message 46, when KCM reference number is not found, generate error message 47, when cargo has hold border status, generate message 48, when cargo has DSP hold flag, generate message 49, when both hold border and DSP hold exist, generate message 52
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_20MexicoCustomsDocumentationCheck(["Start Step"])
E_20MexicoCustomsDocumentationCheck(["End Step"])
N_20MexicoCustomsDocumentationCheck_Node0{"FEN reference number is not found"}:::decision
N_20MexicoCustomsDocumentationCheck_Node0_action["Generate error message 46, when KCM
reference number is not found,
generate error message 47, when
cargo has hold border status,
generate message 48, when cargo has
DSP hold flag, generate message 49,
when both hold border and DSP hold
exist, generate message 52"]:::main N_20MexicoCustomsDocumentationCheck_Node0 -- Yes --> N_20MexicoCustomsDocumentationCheck_Node0_action N_20MexicoCustomsDocumentationCheck_Node0_action --> E_20MexicoCustomsDocumentationCheck S_20MexicoCustomsDocumentationCheck --> N_20MexicoCustomsDocumentationCheck_Node0 N_20MexicoCustomsDocumentationCheck_Node0 -- No --> E_20MexicoCustomsDocumentationCheck
reference number is not found,
generate error message 47, when
cargo has hold border status,
generate message 48, when cargo has
DSP hold flag, generate message 49,
when both hold border and DSP hold
exist, generate message 52"]:::main N_20MexicoCustomsDocumentationCheck_Node0 -- Yes --> N_20MexicoCustomsDocumentationCheck_Node0_action N_20MexicoCustomsDocumentationCheck_Node0_action --> E_20MexicoCustomsDocumentationCheck S_20MexicoCustomsDocumentationCheck --> N_20MexicoCustomsDocumentationCheck_Node0 N_20MexicoCustomsDocumentationCheck_Node0 -- No --> E_20MexicoCustomsDocumentationCheck
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is processed at Laredo TX station
WHEN:
FEN reference number is not found
THEN:
- Generate error message 46, when kcm reference number is not found, generate error message 47, when cargo has hold border status, generate message 48, when cargo has dsp hold flag, generate message 49, when both hold border
- Dsp hold exist, generate message 52
β Consolidated Acceptance Criteria
- Specific detour conditions are met for TE bond, TR bond, border clearance, US-US movement, or US-Mexico export → invoke appropriate detour processing routine (B551, B552, B553, B554, or B555)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_21DetourProcessingCoordination(["Start Step"])
E_21DetourProcessingCoordination(["End Step"])
N_21DetourProcessingCoordination_Node0{"Specific detour conditions are met
for TE bond, TR bond, border
clearance, US-US movement, or
US-Mexico export"}:::decision N_21DetourProcessingCoordination_Node0_action["Invoke appropriate detour
processing routine B551, B552, B553,
B554, or B555"]:::main N_21DetourProcessingCoordination_Node0 -- Yes --> N_21DetourProcessingCoordination_Node0_action N_21DetourProcessingCoordination_Node0_action --> E_21DetourProcessingCoordination S_21DetourProcessingCoordination --> N_21DetourProcessingCoordination_Node0 N_21DetourProcessingCoordination_Node0 -- No --> E_21DetourProcessingCoordination
for TE bond, TR bond, border
clearance, US-US movement, or
US-Mexico export"}:::decision N_21DetourProcessingCoordination_Node0_action["Invoke appropriate detour
processing routine B551, B552, B553,
B554, or B555"]:::main N_21DetourProcessingCoordination_Node0 -- Yes --> N_21DetourProcessingCoordination_Node0_action N_21DetourProcessingCoordination_Node0_action --> E_21DetourProcessingCoordination S_21DetourProcessingCoordination --> N_21DetourProcessingCoordination_Node0 N_21DetourProcessingCoordination_Node0 -- No --> E_21DetourProcessingCoordination
File: GCX003.cbl
GIVEN:
Cargo and waybill conditions are evaluated
WHEN:
Specific detour conditions are met for TE bond, TR bond, border clearance, US-US movement, or US-Mexico export
THEN:
Invoke appropriate detour processing routine (B551, B552, B553, B554, or B555)
β Consolidated Acceptance Criteria
- Request action is REPORT → generate message 19 with station code, when request action is SEND and user is authorized for special manifest, generate message 20 and spawn port change manifest, when user is not authorized, generate message 43
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_22TEBondPortChangeProcessing(["Start Step"])
E_22TEBondPortChangeProcessing(["End Step"])
N_22TEBondPortChangeProcessing_Node0{"Request action is REPORT"}:::decision
N_22TEBondPortChangeProcessing_Node0_action["Generate message 19 with station
code, when request action is SEND
and user is authorized for special
manifest, generate message 20 and
spawn port change manifest, when
user is not authorized, generate
message 43"]:::main N_22TEBondPortChangeProcessing_Node0 -- Yes --> N_22TEBondPortChangeProcessing_Node0_action N_22TEBondPortChangeProcessing_Node0_action --> E_22TEBondPortChangeProcessing S_22TEBondPortChangeProcessing --> N_22TEBondPortChangeProcessing_Node0 N_22TEBondPortChangeProcessing_Node0 -- No --> E_22TEBondPortChangeProcessing
code, when request action is SEND
and user is authorized for special
manifest, generate message 20 and
spawn port change manifest, when
user is not authorized, generate
message 43"]:::main N_22TEBondPortChangeProcessing_Node0 -- Yes --> N_22TEBondPortChangeProcessing_Node0_action N_22TEBondPortChangeProcessing_Node0_action --> E_22TEBondPortChangeProcessing S_22TEBondPortChangeProcessing --> N_22TEBondPortChangeProcessing_Node0 N_22TEBondPortChangeProcessing_Node0 -- No --> E_22TEBondPortChangeProcessing
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Transport export cargo not created for IT with location mismatch
WHEN:
Request action is REPORT
THEN:
- Generate message 19 with station code, when request action is send
- User is authorized for special manifest, generate message 20
- Spawn port change manifest, when user is not authorized, generate message 43
β Consolidated Acceptance Criteria
- Request action is REPORT → generate message 18, when request action is SEND and user is authorized for special manifest, generate message 23 and spawn detour manifest, when user is not authorized, generate message 43
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_23TRBondDiversionProcessing(["Start Step"])
E_23TRBondDiversionProcessing(["End Step"])
N_23TRBondDiversionProcessing_Node0{"Request action is REPORT"}:::decision
N_23TRBondDiversionProcessing_Node0_action["Generate message 18, when request
action is SEND and user is
authorized for special manifest,
generate message 23 and spawn detour
manifest, when user is not
authorized, generate message 43"]:::main N_23TRBondDiversionProcessing_Node0 -- Yes --> N_23TRBondDiversionProcessing_Node0_action N_23TRBondDiversionProcessing_Node0_action --> E_23TRBondDiversionProcessing S_23TRBondDiversionProcessing --> N_23TRBondDiversionProcessing_Node0 N_23TRBondDiversionProcessing_Node0 -- No --> E_23TRBondDiversionProcessing
action is SEND and user is
authorized for special manifest,
generate message 23 and spawn detour
manifest, when user is not
authorized, generate message 43"]:::main N_23TRBondDiversionProcessing_Node0 -- Yes --> N_23TRBondDiversionProcessing_Node0_action N_23TRBondDiversionProcessing_Node0_action --> E_23TRBondDiversionProcessing S_23TRBondDiversionProcessing --> N_23TRBondDiversionProcessing_Node0 N_23TRBondDiversionProcessing_Node0 -- No --> E_23TRBondDiversionProcessing
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Transit cargo not created for IT with release status
WHEN:
Request action is REPORT
THEN:
- Generate message 18, when request action is send
- User is authorized for special manifest, generate message 23
- Spawn detour manifest, when user is not authorized, generate message 43
β Consolidated Acceptance Criteria
- Cargo has release status and request action is REPORT → generate message 18, when request action is SEND and user is authorized for special manifest, generate message 23 and spawn detour manifest, when user is not authorized, generate message 43, when cargo does not have release status, generate message 31
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_24BorderClearanceDetourProcessing(["Start Step"])
E_24BorderClearanceDetourProcessing(["End Step"])
N_24BorderClearanceDetourProcessing_Node0{"Cargo has release status and
request action is REPORT"}:::decision N_24BorderClearanceDetourProcessing_Node0_action["Generate message 18, when request
action is SEND and user is
authorized for special manifest,
generate message 23 and spawn detour
manifest, when user is not
authorized, generate message 43,
when cargo does not have release
status, generate message 31"]:::main N_24BorderClearanceDetourProcessing_Node0 -- Yes --> N_24BorderClearanceDetourProcessing_Node0_action N_24BorderClearanceDetourProcessing_Node0_action --> E_24BorderClearanceDetourProcessing S_24BorderClearanceDetourProcessing --> N_24BorderClearanceDetourProcessing_Node0 N_24BorderClearanceDetourProcessing_Node0 -- No --> E_24BorderClearanceDetourProcessing
request action is REPORT"}:::decision N_24BorderClearanceDetourProcessing_Node0_action["Generate message 18, when request
action is SEND and user is
authorized for special manifest,
generate message 23 and spawn detour
manifest, when user is not
authorized, generate message 43,
when cargo does not have release
status, generate message 31"]:::main N_24BorderClearanceDetourProcessing_Node0 -- Yes --> N_24BorderClearanceDetourProcessing_Node0_action N_24BorderClearanceDetourProcessing_Node0_action --> E_24BorderClearanceDetourProcessing S_24BorderClearanceDetourProcessing --> N_24BorderClearanceDetourProcessing_Node0 N_24BorderClearanceDetourProcessing_Node0 -- No --> E_24BorderClearanceDetourProcessing
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Default cargo type not created for IT
WHEN:
- Cargo has release status
- Request action is report
THEN:
- Generate message 18, when request action is send
- User is authorized for special manifest, generate message 23
- Spawn detour manifest, when user is not authorized, generate message 43, when cargo does not have release status, generate message 31
β Consolidated Acceptance Criteria
- Request action is REPORT → generate message 18, when request action is SEND and user is authorized for special manifest, generate message 23 and spawn US-US detour manifest, when user is not authorized, generate message 43
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_25USUSMovementDetourProcessing(["Start Step"])
E_25USUSMovementDetourProcessing(["End Step"])
N_25USUSMovementDetourProcessing_Node0{"Request action is REPORT"}:::decision
N_25USUSMovementDetourProcessing_Node0_action["Generate message 18, when request
action is SEND and user is
authorized for special manifest,
generate message 23 and spawn US-US
detour manifest, when user is not
authorized, generate message 43"]:::main N_25USUSMovementDetourProcessing_Node0 -- Yes --> N_25USUSMovementDetourProcessing_Node0_action N_25USUSMovementDetourProcessing_Node0_action --> E_25USUSMovementDetourProcessing S_25USUSMovementDetourProcessing --> N_25USUSMovementDetourProcessing_Node0 N_25USUSMovementDetourProcessing_Node0 -- No --> E_25USUSMovementDetourProcessing
action is SEND and user is
authorized for special manifest,
generate message 23 and spawn US-US
detour manifest, when user is not
authorized, generate message 43"]:::main N_25USUSMovementDetourProcessing_Node0 -- Yes --> N_25USUSMovementDetourProcessing_Node0_action N_25USUSMovementDetourProcessing_Node0_action --> E_25USUSMovementDetourProcessing S_25USUSMovementDetourProcessing --> N_25USUSMovementDetourProcessing_Node0 N_25USUSMovementDetourProcessing_Node0 -- No --> E_25USUSMovementDetourProcessing
File: GCX003.cbl
GIVEN:
Waybill found with no cargo for US domestic movement
WHEN:
Request action is REPORT
THEN:
- Generate message 18, when request action is send
- User is authorized for special manifest, generate message 23
- Spawn us-us detour manifest, when user is not authorized, generate message 43
β Consolidated Acceptance Criteria
- Request action is REPORT → generate message 50, when request action is SEND and user is authorized for special manifest, generate message 23 and spawn 88-TR detour manifest, when user is not authorized, generate message 43, when cargo is not export type, generate message 31
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_26USMexicoExportDetourProcessing(["Start Step"])
E_26USMexicoExportDetourProcessing(["End Step"])
N_26USMexicoExportDetourProcessing_Node0{"Request action is REPORT"}:::decision
N_26USMexicoExportDetourProcessing_Node0_action["Generate message 50, when request
action is SEND and user is
authorized for special manifest,
generate message 23 and spawn 88-TR
detour manifest, when user is not
authorized, generate message 43,
when cargo is not export type,
generate message 31"]:::main N_26USMexicoExportDetourProcessing_Node0 -- Yes --> N_26USMexicoExportDetourProcessing_Node0_action N_26USMexicoExportDetourProcessing_Node0_action --> E_26USMexicoExportDetourProcessing S_26USMexicoExportDetourProcessing --> N_26USMexicoExportDetourProcessing_Node0 N_26USMexicoExportDetourProcessing_Node0 -- No --> E_26USMexicoExportDetourProcessing
action is SEND and user is
authorized for special manifest,
generate message 23 and spawn 88-TR
detour manifest, when user is not
authorized, generate message 43,
when cargo is not export type,
generate message 31"]:::main N_26USMexicoExportDetourProcessing_Node0 -- Yes --> N_26USMexicoExportDetourProcessing_Node0_action N_26USMexicoExportDetourProcessing_Node0_action --> E_26USMexicoExportDetourProcessing S_26USMexicoExportDetourProcessing --> N_26USMexicoExportDetourProcessing_Node0 N_26USMexicoExportDetourProcessing_Node0 -- No --> E_26USMexicoExportDetourProcessing
File: GCX003.cbl
GIVEN:
Export cargo with US-Mexico country codes without special manifest
WHEN:
Request action is REPORT
THEN:
- Generate message 50, when request action is send
- User is authorized for special manifest, generate message 23
- Spawn 88-tr detour manifest, when user is not authorized, generate message 43, when cargo is not export type, generate message 31
β Consolidated Acceptance Criteria
- Route contains hazmat code 'HM' → set routing indicator to 2, when route has CSXT or NS to CPRS via DET, set indicator to 3 (CSXT) or 4 (NS), otherwise set indicator to 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_27GeographicRouteValidation(["Start Step"])
E_27GeographicRouteValidation(["End Step"])
N_27GeographicRouteValidation_Node0{"Route contains hazmat code HM"}:::decision
N_27GeographicRouteValidation_Node0_action["Set routing indicator to 2, when
route has CSXT or NS to CPRS via
DET, set indicator to 3 CSXT or 4
NS, otherwise set indicator to 1"]:::main N_27GeographicRouteValidation_Node0 -- Yes --> N_27GeographicRouteValidation_Node0_action N_27GeographicRouteValidation_Node0_action --> E_27GeographicRouteValidation S_27GeographicRouteValidation --> N_27GeographicRouteValidation_Node0 N_27GeographicRouteValidation_Node0 -- No --> E_27GeographicRouteValidation
route has CSXT or NS to CPRS via
DET, set indicator to 3 CSXT or 4
NS, otherwise set indicator to 1"]:::main N_27GeographicRouteValidation_Node0 -- Yes --> N_27GeographicRouteValidation_Node0_action N_27GeographicRouteValidation_Node0_action --> E_27GeographicRouteValidation S_27GeographicRouteValidation --> N_27GeographicRouteValidation_Node0 N_27GeographicRouteValidation_Node0 -- No --> E_27GeographicRouteValidation
File: GCX003.cbl
GIVEN:
Waybill contains routing information
WHEN:
Route contains hazmat code 'HM'
THEN:
Set routing indicator to 2, when route has CSXT or NS to CPRS via DET, set indicator to 3 (CSXT) or 4 (NS), otherwise set indicator to 1
β Consolidated Acceptance Criteria
- Container is not found in primary database → search container database, if still not found, search inquiry system for container cross-reference, generate error message 11 if no container found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_28ContaineronFlatCarProcessing(["Start Step"])
E_28ContaineronFlatCarProcessing(["End Step"])
N_28ContaineronFlatCarProcessing_Node0{"Container is not found in primary
database"}:::decision N_28ContaineronFlatCarProcessing_Node0_action["Search container database, if still
not found, search inquiry system for
container cross-reference, generate
error message 11 if no container
found"]:::main N_28ContaineronFlatCarProcessing_Node0 -- Yes --> N_28ContaineronFlatCarProcessing_Node0_action N_28ContaineronFlatCarProcessing_Node0_action --> E_28ContaineronFlatCarProcessing S_28ContaineronFlatCarProcessing --> N_28ContaineronFlatCarProcessing_Node0 N_28ContaineronFlatCarProcessing_Node0 -- No --> E_28ContaineronFlatCarProcessing
database"}:::decision N_28ContaineronFlatCarProcessing_Node0_action["Search container database, if still
not found, search inquiry system for
container cross-reference, generate
error message 11 if no container
found"]:::main N_28ContaineronFlatCarProcessing_Node0 -- Yes --> N_28ContaineronFlatCarProcessing_Node0_action N_28ContaineronFlatCarProcessing_Node0_action --> E_28ContaineronFlatCarProcessing S_28ContaineronFlatCarProcessing --> N_28ContaineronFlatCarProcessing_Node0 N_28ContaineronFlatCarProcessing_Node0 -- No --> E_28ContaineronFlatCarProcessing
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Equipment is identified as container or waybill indicates conveying car with loaded status
WHEN:
Container is not found in primary database
THEN:
Search container database, if still not found, search inquiry system for container cross-reference, generate error message 11 if no container found
β Consolidated Acceptance Criteria
- Building final report → include train ID, origin station, user ID, processing date/time, action type (SEND/REPORT), result status, error/warning counts, equipment totals, and ETA information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_29ReportHeaderandSummaryBuilding(["Start Step"])
E_29ReportHeaderandSummaryBuilding(["End Step"])
N_29ReportHeaderandSummaryBuilding_Node0{"Building final report"}:::decision
N_29ReportHeaderandSummaryBuilding_Node0_action["Include train ID, origin station,
user ID, processing datetime, action
type SENDREPORT, result status,
errorwarning counts, equipment
totals, and ETA information"]:::main N_29ReportHeaderandSummaryBuilding_Node0 -- Yes --> N_29ReportHeaderandSummaryBuilding_Node0_action N_29ReportHeaderandSummaryBuilding_Node0_action --> E_29ReportHeaderandSummaryBuilding S_29ReportHeaderandSummaryBuilding --> N_29ReportHeaderandSummaryBuilding_Node0 N_29ReportHeaderandSummaryBuilding_Node0 -- No --> E_29ReportHeaderandSummaryBuilding
user ID, processing datetime, action
type SENDREPORT, result status,
errorwarning counts, equipment
totals, and ETA information"]:::main N_29ReportHeaderandSummaryBuilding_Node0 -- Yes --> N_29ReportHeaderandSummaryBuilding_Node0_action N_29ReportHeaderandSummaryBuilding_Node0_action --> E_29ReportHeaderandSummaryBuilding S_29ReportHeaderandSummaryBuilding --> N_29ReportHeaderandSummaryBuilding_Node0 N_29ReportHeaderandSummaryBuilding_Node0 -- No --> E_29ReportHeaderandSummaryBuilding
File: GCX003.cbl
GIVEN:
Train processing is complete
WHEN:
Building final report
THEN:
Include train ID, origin station, user ID, processing date/time, action type (SEND/REPORT), result status, error/warning counts, equipment totals, and ETA information
β Consolidated Acceptance Criteria
- Creating train database record → store train header with ID, origin, destination, ETA, AEI flag, and up to maximum equipment items with their cargo details, generate error if equipment limit exceeded
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_30TrainDatabaseRecordCreation(["Start Step"])
E_30TrainDatabaseRecordCreation(["End Step"])
N_30TrainDatabaseRecordCreation_Node0{"Creating train database record"}:::decision
N_30TrainDatabaseRecordCreation_Node0_action["Store train header with ID, origin,
destination, ETA, AEI flag, and up
to maximum equipment items with
their cargo details, generate error
if equipment limit exceeded"]:::main N_30TrainDatabaseRecordCreation_Node0 -- Yes --> N_30TrainDatabaseRecordCreation_Node0_action N_30TrainDatabaseRecordCreation_Node0_action --> E_30TrainDatabaseRecordCreation S_30TrainDatabaseRecordCreation --> N_30TrainDatabaseRecordCreation_Node0 N_30TrainDatabaseRecordCreation_Node0 -- No --> E_30TrainDatabaseRecordCreation
destination, ETA, AEI flag, and up
to maximum equipment items with
their cargo details, generate error
if equipment limit exceeded"]:::main N_30TrainDatabaseRecordCreation_Node0 -- Yes --> N_30TrainDatabaseRecordCreation_Node0_action N_30TrainDatabaseRecordCreation_Node0_action --> E_30TrainDatabaseRecordCreation S_30TrainDatabaseRecordCreation --> N_30TrainDatabaseRecordCreation_Node0 N_30TrainDatabaseRecordCreation_Node0 -- No --> E_30TrainDatabaseRecordCreation
File: GCX003.cbl
GIVEN:
Train processing completed successfully with SEND action
WHEN:
Creating train database record
THEN:
Store train header with ID, origin, destination, ETA, AEI flag, and up to maximum equipment items with their cargo details, generate error if equipment limit exceeded
β Consolidated Acceptance Criteria
- Transmitting to customs system → call EDI transmission module with train list data, generate error if transmission fails
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_32EDITrainListTransmission(["Start Step"])
E_32EDITrainListTransmission(["End Step"])
N_32EDITrainListTransmission_Node0{"Transmitting to customs system"}:::decision
N_32EDITrainListTransmission_Node0_action["Call EDI transmission module with
train list data, generate error if
transmission fails"]:::main N_32EDITrainListTransmission_Node0 -- Yes --> N_32EDITrainListTransmission_Node0_action N_32EDITrainListTransmission_Node0_action --> E_32EDITrainListTransmission S_32EDITrainListTransmission --> N_32EDITrainListTransmission_Node0 N_32EDITrainListTransmission_Node0 -- No --> E_32EDITrainListTransmission
train list data, generate error if
transmission fails"]:::main N_32EDITrainListTransmission_Node0 -- Yes --> N_32EDITrainListTransmission_Node0_action N_32EDITrainListTransmission_Node0_action --> E_32EDITrainListTransmission S_32EDITrainListTransmission --> N_32EDITrainListTransmission_Node0 N_32EDITrainListTransmission_Node0 -- No --> E_32EDITrainListTransmission
File: GCX003.cbl
GIVEN:
Train record is successfully created in database
WHEN:
Transmitting to customs system
THEN:
Call EDI transmission module with train list data, generate error if transmission fails
β Consolidated Acceptance Criteria
- Sending report to customs → send email to OM01247 with train details, equipment list, and status information, handle large reports with continuation logic
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_33ReportTransmissiontoCustoms(["Start Step"])
E_33ReportTransmissiontoCustoms(["End Step"])
N_33ReportTransmissiontoCustoms_Node0{"Sending report to customs"}:::decision
N_33ReportTransmissiontoCustoms_Node0_action["Send email to OM01247 with train
details, equipment list, and status
information, handle large reports
with continuation logic"]:::main N_33ReportTransmissiontoCustoms_Node0 -- Yes --> N_33ReportTransmissiontoCustoms_Node0_action N_33ReportTransmissiontoCustoms_Node0_action --> E_33ReportTransmissiontoCustoms S_33ReportTransmissiontoCustoms --> N_33ReportTransmissiontoCustoms_Node0 N_33ReportTransmissiontoCustoms_Node0 -- No --> E_33ReportTransmissiontoCustoms
details, equipment list, and status
information, handle large reports
with continuation logic"]:::main N_33ReportTransmissiontoCustoms_Node0 -- Yes --> N_33ReportTransmissiontoCustoms_Node0_action N_33ReportTransmissiontoCustoms_Node0_action --> E_33ReportTransmissiontoCustoms S_33ReportTransmissiontoCustoms --> N_33ReportTransmissiontoCustoms_Node0 N_33ReportTransmissiontoCustoms_Node0 -- No --> E_33ReportTransmissiontoCustoms
File: GCX003.cbl
GIVEN:
Train processing is completed successfully
WHEN:
Sending report to customs
THEN:
Send email to OM01247 with train details, equipment list, and status information, handle large reports with continuation logic
β Consolidated Acceptance Criteria
- Sending large report → send first portion, create continuation message with headers, and send remaining portions with continuation indicators
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_34LargeReportEmailPagination(["Start Step"])
E_34LargeReportEmailPagination(["End Step"])
N_34LargeReportEmailPagination_Node0{"Sending large report"}:::decision
N_34LargeReportEmailPagination_Node0_action["Send first portion, create
continuation message with headers,
and send remaining portions with
continuation indicators"]:::main N_34LargeReportEmailPagination_Node0 -- Yes --> N_34LargeReportEmailPagination_Node0_action N_34LargeReportEmailPagination_Node0_action --> E_34LargeReportEmailPagination S_34LargeReportEmailPagination --> N_34LargeReportEmailPagination_Node0 N_34LargeReportEmailPagination_Node0 -- No --> E_34LargeReportEmailPagination
continuation message with headers,
and send remaining portions with
continuation indicators"]:::main N_34LargeReportEmailPagination_Node0 -- Yes --> N_34LargeReportEmailPagination_Node0_action N_34LargeReportEmailPagination_Node0_action --> E_34LargeReportEmailPagination S_34LargeReportEmailPagination --> N_34LargeReportEmailPagination_Node0 N_34LargeReportEmailPagination_Node0 -- No --> E_34LargeReportEmailPagination
File: GCX003.cbl
GIVEN:
Report exceeds 699 lines
WHEN:
Sending large report
THEN:
Send first portion, create continuation message with headers, and send remaining portions with continuation indicators
β Consolidated Acceptance Criteria
- Distributing results to originator → send appropriate report type (error, sent, or report) to originator terminal or alternate terminal if specified
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_35ReportDistributiontoOriginator(["Start Step"])
E_35ReportDistributiontoOriginator(["End Step"])
N_35ReportDistributiontoOriginator_Node0{"Distributing results to originator"}:::decision
N_35ReportDistributiontoOriginator_Node0_action["Send appropriate report type error,
sent, or report to originator
terminal or alternate terminal if
specified"]:::main N_35ReportDistributiontoOriginator_Node0 -- Yes --> N_35ReportDistributiontoOriginator_Node0_action N_35ReportDistributiontoOriginator_Node0_action --> E_35ReportDistributiontoOriginator S_35ReportDistributiontoOriginator --> N_35ReportDistributiontoOriginator_Node0 N_35ReportDistributiontoOriginator_Node0 -- No --> E_35ReportDistributiontoOriginator
sent, or report to originator
terminal or alternate terminal if
specified"]:::main N_35ReportDistributiontoOriginator_Node0 -- Yes --> N_35ReportDistributiontoOriginator_Node0_action N_35ReportDistributiontoOriginator_Node0_action --> E_35ReportDistributiontoOriginator S_35ReportDistributiontoOriginator --> N_35ReportDistributiontoOriginator_Node0 N_35ReportDistributiontoOriginator_Node0 -- No --> E_35ReportDistributiontoOriginator
File: GCX003.cbl
GIVEN:
Train processing is completed
WHEN:
Distributing results to originator
THEN:
Send appropriate report type (error, sent, or report) to originator terminal or alternate terminal if specified
β Consolidated Acceptance Criteria
- Logging AEI activity → create log entry with train ID, user ID, date/time, action code 'ZZZ', and AEI send message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_37AEIActivityLogging(["Start Step"])
E_37AEIActivityLogging(["End Step"])
N_37AEIActivityLogging_Node0{"Logging AEI activity"}:::decision
N_37AEIActivityLogging_Node0_action["Create log entry with train ID,
user ID, datetime, action code ZZZ ,
and AEI send message"]:::main N_37AEIActivityLogging_Node0 -- Yes --> N_37AEIActivityLogging_Node0_action N_37AEIActivityLogging_Node0_action --> E_37AEIActivityLogging S_37AEIActivityLogging --> N_37AEIActivityLogging_Node0 N_37AEIActivityLogging_Node0 -- No --> E_37AEIActivityLogging
user ID, datetime, action code ZZZ ,
and AEI send message"]:::main N_37AEIActivityLogging_Node0 -- Yes --> N_37AEIActivityLogging_Node0_action N_37AEIActivityLogging_Node0_action --> E_37AEIActivityLogging S_37AEIActivityLogging --> N_37AEIActivityLogging_Node0 N_37AEIActivityLogging_Node0 -- No --> E_37AEIActivityLogging
File: GCX003.cbl
GIVEN:
AEI train processing is completed
WHEN:
Logging AEI activity
THEN:
Create log entry with train ID, user ID, date/time, action code 'ZZZ', and AEI send message
β Consolidated Acceptance Criteria
- Processing AEI report → retrieve email addresses from AEI work table for train origin, send report to configured addresses, use default addresses if none configured, handle email failures by sending to support
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_38AEIReportProcessing(["Start Step"])
E_38AEIReportProcessing(["End Step"])
N_38AEIReportProcessing_Node0{"Processing AEI report"}:::decision
N_38AEIReportProcessing_Node0_action["Retrieve email addresses from AEI
work table for train origin, send
report to configured addresses, use
default addresses if none
configured, handle email failures by
sending to support"]:::main N_38AEIReportProcessing_Node0 -- Yes --> N_38AEIReportProcessing_Node0_action N_38AEIReportProcessing_Node0_action --> E_38AEIReportProcessing S_38AEIReportProcessing --> N_38AEIReportProcessing_Node0 N_38AEIReportProcessing_Node0 -- No --> E_38AEIReportProcessing
work table for train origin, send
report to configured addresses, use
default addresses if none
configured, handle email failures by
sending to support"]:::main N_38AEIReportProcessing_Node0 -- Yes --> N_38AEIReportProcessing_Node0_action N_38AEIReportProcessing_Node0_action --> E_38AEIReportProcessing S_38AEIReportProcessing --> N_38AEIReportProcessing_Node0 N_38AEIReportProcessing_Node0 -- No --> E_38AEIReportProcessing
File: GCX003.cbl
GIVEN:
Request is AEI train send type
WHEN:
Processing AEI report
THEN:
Retrieve email addresses from AEI work table for train origin, send report to configured addresses, use default addresses if none configured, handle email failures by sending to support
β Consolidated Acceptance Criteria
- Generating export report → spawn GCX141 message for export report generation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_39CanadianExportReportGeneration(["Start Step"])
E_39CanadianExportReportGeneration(["End Step"])
N_39CanadianExportReportGeneration_Node0{"Generating export report"}:::decision
N_39CanadianExportReportGeneration_Node0_action["Spawn GCX141 message for export
report generation"]:::main N_39CanadianExportReportGeneration_Node0 -- Yes --> N_39CanadianExportReportGeneration_Node0_action N_39CanadianExportReportGeneration_Node0_action --> E_39CanadianExportReportGeneration S_39CanadianExportReportGeneration --> N_39CanadianExportReportGeneration_Node0 N_39CanadianExportReportGeneration_Node0 -- No --> E_39CanadianExportReportGeneration
report generation"]:::main N_39CanadianExportReportGeneration_Node0 -- Yes --> N_39CanadianExportReportGeneration_Node0_action N_39CanadianExportReportGeneration_Node0_action --> E_39CanadianExportReportGeneration S_39CanadianExportReportGeneration --> N_39CanadianExportReportGeneration_Node0 N_39CanadianExportReportGeneration_Node0 -- No --> E_39CanadianExportReportGeneration
File: GCX003.cbl
GIVEN:
Train processing completed successfully for non-Laredo stations
WHEN:
Generating export report
THEN:
Spawn GCX141 message for export report generation
β Consolidated Acceptance Criteria
- Generating enhanced report → create detailed report with car/container counts, locomotive counts, port information, ETA details, and equipment details with BOL information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_40EnhancedReportGeneration(["Start Step"])
E_40EnhancedReportGeneration(["End Step"])
N_40EnhancedReportGeneration_Node0{"Generating enhanced report"}:::decision
N_40EnhancedReportGeneration_Node0_action["Create detailed report with
carcontainer counts, locomotive
counts, port information, ETA
details, and equipment details with
BOL information"]:::main N_40EnhancedReportGeneration_Node0 -- Yes --> N_40EnhancedReportGeneration_Node0_action N_40EnhancedReportGeneration_Node0_action --> E_40EnhancedReportGeneration S_40EnhancedReportGeneration --> N_40EnhancedReportGeneration_Node0 N_40EnhancedReportGeneration_Node0 -- No --> E_40EnhancedReportGeneration
carcontainer counts, locomotive
counts, port information, ETA
details, and equipment details with
BOL information"]:::main N_40EnhancedReportGeneration_Node0 -- Yes --> N_40EnhancedReportGeneration_Node0_action N_40EnhancedReportGeneration_Node0_action --> E_40EnhancedReportGeneration S_40EnhancedReportGeneration --> N_40EnhancedReportGeneration_Node0 N_40EnhancedReportGeneration_Node0 -- No --> E_40EnhancedReportGeneration
File: GCX003.cbl
GIVEN:
Train processing completed successfully at Laredo TX station
WHEN:
Generating enhanced report
THEN:
Create detailed report with car/container counts, locomotive counts, port information, ETA details, and equipment details with BOL information
β Consolidated Acceptance Criteria
- Generating PDF reports → call GCX904 module to create PDF reports for both pre-exit report (80 character width) and export train report (132 character width)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_41PDFReportGeneration(["Start Step"])
E_41PDFReportGeneration(["End Step"])
N_41PDFReportGeneration_Node0{"Generating PDF reports"}:::decision
N_41PDFReportGeneration_Node0_action["Call GCX904 module to create PDF
reports for both pre-exit report 80
character width and export train
report 132 character width"]:::main N_41PDFReportGeneration_Node0 -- Yes --> N_41PDFReportGeneration_Node0_action N_41PDFReportGeneration_Node0_action --> E_41PDFReportGeneration S_41PDFReportGeneration --> N_41PDFReportGeneration_Node0 N_41PDFReportGeneration_Node0 -- No --> E_41PDFReportGeneration
reports for both pre-exit report 80
character width and export train
report 132 character width"]:::main N_41PDFReportGeneration_Node0 -- Yes --> N_41PDFReportGeneration_Node0_action N_41PDFReportGeneration_Node0_action --> E_41PDFReportGeneration S_41PDFReportGeneration --> N_41PDFReportGeneration_Node0 N_41PDFReportGeneration_Node0 -- No --> E_41PDFReportGeneration
File: GCX003.cbl
GIVEN:
Report data is prepared
WHEN:
Generating PDF reports
THEN:
Call GCX904 module to create PDF reports for both pre-exit report (80 character width) and export train report (132 character width)
β Consolidated Acceptance Criteria
- Processing message → increment appropriate counter (error, warning, info), track special message types (DSP holds), and handle spawn message indicators
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_42ErrorMessageProcessing(["Start Step"])
E_42ErrorMessageProcessing(["End Step"])
N_42ErrorMessageProcessing_Node0{"Processing message"}:::decision
N_42ErrorMessageProcessing_Node0_action["Increment appropriate counter
error, warning, info, track special
message types DSP holds, and handle
spawn message indicators"]:::main N_42ErrorMessageProcessing_Node0 -- Yes --> N_42ErrorMessageProcessing_Node0_action N_42ErrorMessageProcessing_Node0_action --> E_42ErrorMessageProcessing S_42ErrorMessageProcessing --> N_42ErrorMessageProcessing_Node0 N_42ErrorMessageProcessing_Node0 -- No --> E_42ErrorMessageProcessing
error, warning, info, track special
message types DSP holds, and handle
spawn message indicators"]:::main N_42ErrorMessageProcessing_Node0 -- Yes --> N_42ErrorMessageProcessing_Node0_action N_42ErrorMessageProcessing_Node0_action --> E_42ErrorMessageProcessing S_42ErrorMessageProcessing --> N_42ErrorMessageProcessing_Node0 N_42ErrorMessageProcessing_Node0 -- No --> E_42ErrorMessageProcessing
File: GCX003.cbl
GIVEN:
Error or warning message is generated
WHEN:
Processing message
THEN:
Increment appropriate counter (error, warning, info), track special message types (DSP holds), and handle spawn message indicators
β Consolidated Acceptance Criteria
- Scanning for duplicates → remove duplicate car IDs while preserving first occurrence, skip error/warning/info message lines
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_43DuplicateEquipmentRemoval(["Start Step"])
E_43DuplicateEquipmentRemoval(["End Step"])
N_43DuplicateEquipmentRemoval_Node0{"Scanning for duplicates"}:::decision
N_43DuplicateEquipmentRemoval_Node0_action["Remove duplicate car IDs while
preserving first occurrence, skip
errorwarninginfo message lines"]:::main N_43DuplicateEquipmentRemoval_Node0 -- Yes --> N_43DuplicateEquipmentRemoval_Node0_action N_43DuplicateEquipmentRemoval_Node0_action --> E_43DuplicateEquipmentRemoval S_43DuplicateEquipmentRemoval --> N_43DuplicateEquipmentRemoval_Node0 N_43DuplicateEquipmentRemoval_Node0 -- No --> E_43DuplicateEquipmentRemoval
preserving first occurrence, skip
errorwarninginfo message lines"]:::main N_43DuplicateEquipmentRemoval_Node0 -- Yes --> N_43DuplicateEquipmentRemoval_Node0_action N_43DuplicateEquipmentRemoval_Node0_action --> E_43DuplicateEquipmentRemoval S_43DuplicateEquipmentRemoval --> N_43DuplicateEquipmentRemoval_Node0 N_43DuplicateEquipmentRemoval_Node0 -- No --> E_43DuplicateEquipmentRemoval
File: GCX003.cbl
GIVEN:
Report contains equipment entries
WHEN:
Scanning for duplicates
THEN:
Remove duplicate car IDs while preserving first occurrence, skip error/warning/info message lines
β Consolidated Acceptance Criteria
- Logging cargo activity → create audit log entry with cargo CCN, user ID, date/time, action code 'ZZZ', and cargo added message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_44ActivityAuditLogging(["Start Step"])
E_44ActivityAuditLogging(["End Step"])
N_44ActivityAuditLogging_Node0{"Logging cargo activity"}:::decision
N_44ActivityAuditLogging_Node0_action["Create audit log entry with cargo
CCN, user ID, datetime, action code
ZZZ , and cargo added message"]:::main N_44ActivityAuditLogging_Node0 -- Yes --> N_44ActivityAuditLogging_Node0_action N_44ActivityAuditLogging_Node0_action --> E_44ActivityAuditLogging S_44ActivityAuditLogging --> N_44ActivityAuditLogging_Node0 N_44ActivityAuditLogging_Node0 -- No --> E_44ActivityAuditLogging
CCN, user ID, datetime, action code
ZZZ , and cargo added message"]:::main N_44ActivityAuditLogging_Node0 -- Yes --> N_44ActivityAuditLogging_Node0_action N_44ActivityAuditLogging_Node0_action --> E_44ActivityAuditLogging S_44ActivityAuditLogging --> N_44ActivityAuditLogging_Node0 N_44ActivityAuditLogging_Node0 -- No --> E_44ActivityAuditLogging
File: GCX003.cbl
GIVEN:
Cargo is successfully added to train
WHEN:
Logging cargo activity
THEN:
Create audit log entry with cargo CCN, user ID, date/time, action code 'ZZZ', and cargo added message
β Consolidated Acceptance Criteria
- Performing rollback → execute database rollback operation to undo all changes made during current transaction
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_45DatabaseRollbackProcessing(["Start Step"])
E_45DatabaseRollbackProcessing(["End Step"])
N_45DatabaseRollbackProcessing_Node0{"Performing rollback"}:::decision
N_45DatabaseRollbackProcessing_Node0_action["Execute database rollback operation
to undo all changes made during
current transaction"]:::main N_45DatabaseRollbackProcessing_Node0 -- Yes --> N_45DatabaseRollbackProcessing_Node0_action N_45DatabaseRollbackProcessing_Node0_action --> E_45DatabaseRollbackProcessing S_45DatabaseRollbackProcessing --> N_45DatabaseRollbackProcessing_Node0 N_45DatabaseRollbackProcessing_Node0 -- No --> E_45DatabaseRollbackProcessing
to undo all changes made during
current transaction"]:::main N_45DatabaseRollbackProcessing_Node0 -- Yes --> N_45DatabaseRollbackProcessing_Node0_action N_45DatabaseRollbackProcessing_Node0_action --> E_45DatabaseRollbackProcessing S_45DatabaseRollbackProcessing --> N_45DatabaseRollbackProcessing_Node0 N_45DatabaseRollbackProcessing_Node0 -- No --> E_45DatabaseRollbackProcessing
File: GCX003.cbl
GIVEN:
Processing errors occur that require rollback
WHEN:
Performing rollback
THEN:
Execute database rollback operation to undo all changes made during current transaction
β Consolidated Acceptance Criteria
- The request type equals the AEI request type constant → set AEI train send flag to YES, otherwise set AEI train send flag to NO
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_46AEIRequestTypeClassification(["Start Step"])
E_46AEIRequestTypeClassification(["End Step"])
N_46AEIRequestTypeClassification_Node0{"The request type equals the AEI
request type constant"}:::decision N_46AEIRequestTypeClassification_Node0_action["Set AEI train send flag to YES,
otherwise set AEI train send flag to
NO"]:::main N_46AEIRequestTypeClassification_Node0 -- Yes --> N_46AEIRequestTypeClassification_Node0_action N_46AEIRequestTypeClassification_Node0_action --> E_46AEIRequestTypeClassification S_46AEIRequestTypeClassification --> N_46AEIRequestTypeClassification_Node0 N_46AEIRequestTypeClassification_Node0 -- No --> E_46AEIRequestTypeClassification
request type constant"}:::decision N_46AEIRequestTypeClassification_Node0_action["Set AEI train send flag to YES,
otherwise set AEI train send flag to
NO"]:::main N_46AEIRequestTypeClassification_Node0 -- Yes --> N_46AEIRequestTypeClassification_Node0_action N_46AEIRequestTypeClassification_Node0_action --> E_46AEIRequestTypeClassification S_46AEIRequestTypeClassification --> N_46AEIRequestTypeClassification_Node0 N_46AEIRequestTypeClassification_Node0 -- No --> E_46AEIRequestTypeClassification
File: GCX003.cbl
GIVEN:
A train export request is received with a specific request type
WHEN:
The request type equals the AEI request type constant
THEN:
Set AEI train send flag to YES, otherwise set AEI train send flag to NO
β Consolidated Acceptance Criteria
- The first equipment item is marked as 'no more equipment' OR the 500th equipment item is not marked as 'no more equipment' → generate error message 5 (invalid equipment list size)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_47EquipmentLimitValidation(["Start Step"])
E_47EquipmentLimitValidation(["End Step"])
N_47EquipmentLimitValidation_Node0{"The first equipment item is marked
as no more equipment OR the 500th
equipment item is not marked as no
more equipment"}:::decision N_47EquipmentLimitValidation_Node0_action["Generate error message 5 invalid
equipment list size"]:::main N_47EquipmentLimitValidation_Node0 -- Yes --> N_47EquipmentLimitValidation_Node0_action N_47EquipmentLimitValidation_Node0_action --> E_47EquipmentLimitValidation S_47EquipmentLimitValidation --> N_47EquipmentLimitValidation_Node0 N_47EquipmentLimitValidation_Node0 -- No --> E_47EquipmentLimitValidation
as no more equipment OR the 500th
equipment item is not marked as no
more equipment"}:::decision N_47EquipmentLimitValidation_Node0_action["Generate error message 5 invalid
equipment list size"]:::main N_47EquipmentLimitValidation_Node0 -- Yes --> N_47EquipmentLimitValidation_Node0_action N_47EquipmentLimitValidation_Node0_action --> E_47EquipmentLimitValidation S_47EquipmentLimitValidation --> N_47EquipmentLimitValidation_Node0 N_47EquipmentLimitValidation_Node0 -- No --> E_47EquipmentLimitValidation
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A train request contains an equipment list
WHEN:
The first equipment item is marked as 'no more equipment' OR the 500th equipment item is not marked as 'no more equipment'
THEN:
Generate error message 5 (invalid equipment list size)
β Consolidated Acceptance Criteria
- The system starts processing → the first input message is read and message availability status is set
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReadFirstInputMessage(["Start Step"])
E_ReadFirstInputMessage(["End Step"])
N_ReadFirstInputMessage_Node0{"The system starts processing"}:::decision
N_ReadFirstInputMessage_Node0_action["The first input message is read and
message availability status is set"]:::main N_ReadFirstInputMessage_Node0 -- Yes --> N_ReadFirstInputMessage_Node0_action N_ReadFirstInputMessage_Node0_action --> E_ReadFirstInputMessage S_ReadFirstInputMessage --> N_ReadFirstInputMessage_Node0 N_ReadFirstInputMessage_Node0 -- No --> E_ReadFirstInputMessage
message availability status is set"]:::main N_ReadFirstInputMessage_Node0 -- Yes --> N_ReadFirstInputMessage_Node0_action N_ReadFirstInputMessage_Node0_action --> E_ReadFirstInputMessage S_ReadFirstInputMessage --> N_ReadFirstInputMessage_Node0 N_ReadFirstInputMessage_Node0 -- No --> E_ReadFirstInputMessage
File: GCX003.cbl
GIVEN:
The system is ready to process train export requests
WHEN:
The system starts processing
THEN:
- The first input message is read
- Message availability status is set
β Consolidated Acceptance Criteria
- The system checks the message availability status → processing continues if messages are available, otherwise the processing loop terminates
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreInputMessagesAvailable(["Start Step"])
E_MoreInputMessagesAvailable(["End Step"])
N_MoreInputMessagesAvailable_Node0{"The system checks the message
availability status"}:::decision N_MoreInputMessagesAvailable_Node0_action["Processing continues if messages
are available, otherwise the
processing loop terminates"]:::main N_MoreInputMessagesAvailable_Node0 -- Yes --> N_MoreInputMessagesAvailable_Node0_action N_MoreInputMessagesAvailable_Node0_action --> E_MoreInputMessagesAvailable S_MoreInputMessagesAvailable --> N_MoreInputMessagesAvailable_Node0 N_MoreInputMessagesAvailable_Node0 -- No --> E_MoreInputMessagesAvailable
availability status"}:::decision N_MoreInputMessagesAvailable_Node0_action["Processing continues if messages
are available, otherwise the
processing loop terminates"]:::main N_MoreInputMessagesAvailable_Node0 -- Yes --> N_MoreInputMessagesAvailable_Node0_action N_MoreInputMessagesAvailable_Node0_action --> E_MoreInputMessagesAvailable S_MoreInputMessagesAvailable --> N_MoreInputMessagesAvailable_Node0 N_MoreInputMessagesAvailable_Node0 -- No --> E_MoreInputMessagesAvailable
File: GCX003.cbl
GIVEN:
The system has attempted to read an input message
WHEN:
The system checks the message availability status
THEN:
Processing continues if messages are available, otherwise the processing loop terminates
β Consolidated Acceptance Criteria
- The system examines the request type field → the request is classified as either AEI type or regular type based on the request type value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClassifyRequestTypeAEIorRegular(["Start Step"])
E_ClassifyRequestTypeAEIorRegular(["End Step"])
N_ClassifyRequestTypeAEIorRegular_Node0{"The system examines the request
type field"}:::decision N_ClassifyRequestTypeAEIorRegular_Node0_action["The request is classified as either
AEI type or regular type based on
the request type value"]:::main N_ClassifyRequestTypeAEIorRegular_Node0 -- Yes --> N_ClassifyRequestTypeAEIorRegular_Node0_action N_ClassifyRequestTypeAEIorRegular_Node0_action --> E_ClassifyRequestTypeAEIorRegular S_ClassifyRequestTypeAEIorRegular --> N_ClassifyRequestTypeAEIorRegular_Node0 N_ClassifyRequestTypeAEIorRegular_Node0 -- No --> E_ClassifyRequestTypeAEIorRegular
type field"}:::decision N_ClassifyRequestTypeAEIorRegular_Node0_action["The request is classified as either
AEI type or regular type based on
the request type value"]:::main N_ClassifyRequestTypeAEIorRegular_Node0 -- Yes --> N_ClassifyRequestTypeAEIorRegular_Node0_action N_ClassifyRequestTypeAEIorRegular_Node0_action --> E_ClassifyRequestTypeAEIorRegular S_ClassifyRequestTypeAEIorRegular --> N_ClassifyRequestTypeAEIorRegular_Node0 N_ClassifyRequestTypeAEIorRegular_Node0 -- No --> E_ClassifyRequestTypeAEIorRegular
File: GCX003.cbl
GIVEN:
A train export request message has been received
WHEN:
The system examines the request type field
THEN:
The request is classified as either AEI type or regular type based on the request type value
β Consolidated Acceptance Criteria
- The system sets processing flags → aEI train send flag is set to YES if request type equals AEI request type, otherwise set to NO
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetAEIProcessingFlag(["Start Step"])
E_SetAEIProcessingFlag(["End Step"])
N_SetAEIProcessingFlag_Node0{"The system sets processing flags"}:::decision
N_SetAEIProcessingFlag_Node0_action["AEI train send flag is set to YES
if request type equals AEI request
type, otherwise set to NO"]:::main N_SetAEIProcessingFlag_Node0 -- Yes --> N_SetAEIProcessingFlag_Node0_action N_SetAEIProcessingFlag_Node0_action --> E_SetAEIProcessingFlag S_SetAEIProcessingFlag --> N_SetAEIProcessingFlag_Node0 N_SetAEIProcessingFlag_Node0 -- No --> E_SetAEIProcessingFlag
if request type equals AEI request
type, otherwise set to NO"]:::main N_SetAEIProcessingFlag_Node0 -- Yes --> N_SetAEIProcessingFlag_Node0_action N_SetAEIProcessingFlag_Node0_action --> E_SetAEIProcessingFlag S_SetAEIProcessingFlag --> N_SetAEIProcessingFlag_Node0 N_SetAEIProcessingFlag_Node0 -- No --> E_SetAEIProcessingFlag
File: GCX003.cbl
GIVEN:
The request type has been classified as AEI or regular
WHEN:
The system sets processing flags
THEN:
AEI train send flag is set to YES if request type equals AEI request type, otherwise set to NO
β Consolidated Acceptance Criteria
- The system prepares the request for processing → all request validations are performed including train security, origin validation, ETA validation, US customer train ID validation, equipment list validation, and customs ID retrieval
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareRequestforProcessing(["Start Step"])
E_PrepareRequestforProcessing(["End Step"])
N_PrepareRequestforProcessing_Node0{"The system prepares the request for
processing"}:::decision N_PrepareRequestforProcessing_Node0_action["All request validations are
performed including train security,
origin validation, ETA validation,
US customer train ID validation,
equipment list validation, and
customs ID retrieval"]:::main N_PrepareRequestforProcessing_Node0 -- Yes --> N_PrepareRequestforProcessing_Node0_action N_PrepareRequestforProcessing_Node0_action --> E_PrepareRequestforProcessing S_PrepareRequestforProcessing --> N_PrepareRequestforProcessing_Node0 N_PrepareRequestforProcessing_Node0 -- No --> E_PrepareRequestforProcessing
processing"}:::decision N_PrepareRequestforProcessing_Node0_action["All request validations are
performed including train security,
origin validation, ETA validation,
US customer train ID validation,
equipment list validation, and
customs ID retrieval"]:::main N_PrepareRequestforProcessing_Node0 -- Yes --> N_PrepareRequestforProcessing_Node0_action N_PrepareRequestforProcessing_Node0_action --> E_PrepareRequestforProcessing S_PrepareRequestforProcessing --> N_PrepareRequestforProcessing_Node0 N_PrepareRequestforProcessing_Node0 -- No --> E_PrepareRequestforProcessing
File: GCX003.cbl
GIVEN:
A train export request has been received and classified
WHEN:
The system prepares the request for processing
THEN:
All request validations are performed including train security, origin validation, ETA validation, US customer train ID validation, equipment list validation, and customs ID retrieval
β Consolidated Acceptance Criteria
- The system checks the user access status → processing continues to equipment processing if user has access, otherwise skips to request termination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UserHasAccesstoProcessRequest(["Start Step"])
E_UserHasAccesstoProcessRequest(["End Step"])
N_UserHasAccesstoProcessRequest_Node0{"The system checks the user access
status"}:::decision N_UserHasAccesstoProcessRequest_Node0_action["Processing continues to equipment
processing if user has access,
otherwise skips to request
termination"]:::main N_UserHasAccesstoProcessRequest_Node0 -- Yes --> N_UserHasAccesstoProcessRequest_Node0_action N_UserHasAccesstoProcessRequest_Node0_action --> E_UserHasAccesstoProcessRequest S_UserHasAccesstoProcessRequest --> N_UserHasAccesstoProcessRequest_Node0 N_UserHasAccesstoProcessRequest_Node0 -- No --> E_UserHasAccesstoProcessRequest
status"}:::decision N_UserHasAccesstoProcessRequest_Node0_action["Processing continues to equipment
processing if user has access,
otherwise skips to request
termination"]:::main N_UserHasAccesstoProcessRequest_Node0 -- Yes --> N_UserHasAccesstoProcessRequest_Node0_action N_UserHasAccesstoProcessRequest_Node0_action --> E_UserHasAccesstoProcessRequest S_UserHasAccesstoProcessRequest --> N_UserHasAccesstoProcessRequest_Node0 N_UserHasAccesstoProcessRequest_Node0 -- No --> E_UserHasAccesstoProcessRequest
File: GCX003.cbl
GIVEN:
Request preparation including security validation has been completed
WHEN:
The system checks the user access status
THEN:
Processing continues to equipment processing if user has access, otherwise skips to request termination
β Consolidated Acceptance Criteria
- The system processes the equipment list → each equipment item is processed through equipment validation, waybill retrieval, cargo processing, and report building until all equipment is processed or maximum limit of 499 items is reached
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessEquipmentListforTrain(["Start Step"])
E_ProcessEquipmentListforTrain(["End Step"])
N_ProcessEquipmentListforTrain_Node0{"The system processes the equipment
list"}:::decision N_ProcessEquipmentListforTrain_Node0_action["Each equipment item is processed
through equipment validation,
waybill retrieval, cargo processing,
and report building until all
equipment is processed or maximum
limit of 499 items is reached"]:::main N_ProcessEquipmentListforTrain_Node0 -- Yes --> N_ProcessEquipmentListforTrain_Node0_action N_ProcessEquipmentListforTrain_Node0_action --> E_ProcessEquipmentListforTrain S_ProcessEquipmentListforTrain --> N_ProcessEquipmentListforTrain_Node0 N_ProcessEquipmentListforTrain_Node0 -- No --> E_ProcessEquipmentListforTrain
list"}:::decision N_ProcessEquipmentListforTrain_Node0_action["Each equipment item is processed
through equipment validation,
waybill retrieval, cargo processing,
and report building until all
equipment is processed or maximum
limit of 499 items is reached"]:::main N_ProcessEquipmentListforTrain_Node0 -- Yes --> N_ProcessEquipmentListforTrain_Node0_action N_ProcessEquipmentListforTrain_Node0_action --> E_ProcessEquipmentListforTrain S_ProcessEquipmentListforTrain --> N_ProcessEquipmentListforTrain_Node0 N_ProcessEquipmentListforTrain_Node0 -- No --> E_ProcessEquipmentListforTrain
File: GCX003.cbl
GIVEN:
User has access to process the request and equipment list exists
WHEN:
The system processes the equipment list
THEN:
Each equipment item is processed through equipment validation, waybill retrieval, cargo processing, and report building until all equipment is processed or maximum limit of 499 items is reached
β Consolidated Acceptance Criteria
- The system terminates the current request → final report is generated, appropriate actions are taken based on request type (SEND, REPORT, or ERROR), and all necessary notifications are sent to originators and customs systems
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TerminateCurrentRequestProcessing(["Start Step"])
E_TerminateCurrentRequestProcessing(["End Step"])
N_TerminateCurrentRequestProcessing_Node0{"The system terminates the current
request"}:::decision N_TerminateCurrentRequestProcessing_Node0_action["Final report is generated,
appropriate actions are taken based
on request type SEND, REPORT, or
ERROR, and all necessary
notifications are sent to
originators and customs systems"]:::main N_TerminateCurrentRequestProcessing_Node0 -- Yes --> N_TerminateCurrentRequestProcessing_Node0_action N_TerminateCurrentRequestProcessing_Node0_action --> E_TerminateCurrentRequestProcessing S_TerminateCurrentRequestProcessing --> N_TerminateCurrentRequestProcessing_Node0 N_TerminateCurrentRequestProcessing_Node0 -- No --> E_TerminateCurrentRequestProcessing
request"}:::decision N_TerminateCurrentRequestProcessing_Node0_action["Final report is generated,
appropriate actions are taken based
on request type SEND, REPORT, or
ERROR, and all necessary
notifications are sent to
originators and customs systems"]:::main N_TerminateCurrentRequestProcessing_Node0 -- Yes --> N_TerminateCurrentRequestProcessing_Node0_action N_TerminateCurrentRequestProcessing_Node0_action --> E_TerminateCurrentRequestProcessing S_TerminateCurrentRequestProcessing --> N_TerminateCurrentRequestProcessing_Node0 N_TerminateCurrentRequestProcessing_Node0 -- No --> E_TerminateCurrentRequestProcessing
File: GCX003.cbl
GIVEN:
Equipment processing has been completed or user access was denied
WHEN:
The system terminates the current request
THEN:
- Final report is generated, appropriate actions are taken based on request type (send, report, or error), and all necessary notifications are sent to originators
- Customs systems
β Consolidated Acceptance Criteria
- The system attempts to read the next message → the next input message is read and message availability status is updated for the next loop iteration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReadNextInputMessage(["Start Step"])
E_ReadNextInputMessage(["End Step"])
N_ReadNextInputMessage_Node0{"The system attempts to read the
next message"}:::decision N_ReadNextInputMessage_Node0_action["The next input message is read and
message availability status is
updated for the next loop iteration"]:::main N_ReadNextInputMessage_Node0 -- Yes --> N_ReadNextInputMessage_Node0_action N_ReadNextInputMessage_Node0_action --> E_ReadNextInputMessage S_ReadNextInputMessage --> N_ReadNextInputMessage_Node0 N_ReadNextInputMessage_Node0 -- No --> E_ReadNextInputMessage
next message"}:::decision N_ReadNextInputMessage_Node0_action["The next input message is read and
message availability status is
updated for the next loop iteration"]:::main N_ReadNextInputMessage_Node0 -- Yes --> N_ReadNextInputMessage_Node0_action N_ReadNextInputMessage_Node0_action --> E_ReadNextInputMessage S_ReadNextInputMessage --> N_ReadNextInputMessage_Node0 N_ReadNextInputMessage_Node0 -- No --> E_ReadNextInputMessage
File: GCX003.cbl
GIVEN:
Current request processing has been terminated
WHEN:
The system attempts to read the next message
THEN:
- The next input message is read
- Message availability status is updated for the next loop iteration
β Consolidated Acceptance Criteria
- The system exits the processing loop → the main processing routine is completed and control returns to the calling program
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EndRequestProcessingLoop(["Start Step"])
E_EndRequestProcessingLoop(["End Step"])
N_EndRequestProcessingLoop_Node0{"The system exits the processing
loop"}:::decision N_EndRequestProcessingLoop_Node0_action["The main processing routine is
completed and control returns to the
calling program"]:::main N_EndRequestProcessingLoop_Node0 -- Yes --> N_EndRequestProcessingLoop_Node0_action N_EndRequestProcessingLoop_Node0_action --> E_EndRequestProcessingLoop S_EndRequestProcessingLoop --> N_EndRequestProcessingLoop_Node0 N_EndRequestProcessingLoop_Node0 -- No --> E_EndRequestProcessingLoop
loop"}:::decision N_EndRequestProcessingLoop_Node0_action["The main processing routine is
completed and control returns to the
calling program"]:::main N_EndRequestProcessingLoop_Node0 -- Yes --> N_EndRequestProcessingLoop_Node0_action N_EndRequestProcessingLoop_Node0_action --> E_EndRequestProcessingLoop S_EndRequestProcessingLoop --> N_EndRequestProcessingLoop_Node0 N_EndRequestProcessingLoop_Node0 -- No --> E_EndRequestProcessingLoop
File: GCX003.cbl
GIVEN:
No more input messages are available for processing
WHEN:
The system exits the processing loop
THEN:
- The main processing routine is completed
- Control returns to the calling program
β Consolidated Acceptance Criteria
- The system processes equipment items in sequence → processing stops when either all equipment is processed or the 499 item limit is reached
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreEquipmenttoProcessREQIDX499(["Start Step"])
E_MoreEquipmenttoProcessREQIDX499(["End Step"])
N_MoreEquipmenttoProcessREQIDX499_Node0{"The system processes equipment
items in sequence"}:::decision N_MoreEquipmenttoProcessREQIDX499_Node0_action["Processing stops when either all
equipment is processed or the 499
item limit is reached"]:::main N_MoreEquipmenttoProcessREQIDX499_Node0 -- Yes --> N_MoreEquipmenttoProcessREQIDX499_Node0_action N_MoreEquipmenttoProcessREQIDX499_Node0_action --> E_MoreEquipmenttoProcessREQIDX499 S_MoreEquipmenttoProcessREQIDX499 --> N_MoreEquipmenttoProcessREQIDX499_Node0 N_MoreEquipmenttoProcessREQIDX499_Node0 -- No --> E_MoreEquipmenttoProcessREQIDX499
items in sequence"}:::decision N_MoreEquipmenttoProcessREQIDX499_Node0_action["Processing stops when either all
equipment is processed or the 499
item limit is reached"]:::main N_MoreEquipmenttoProcessREQIDX499_Node0 -- Yes --> N_MoreEquipmenttoProcessREQIDX499_Node0_action N_MoreEquipmenttoProcessREQIDX499_Node0_action --> E_MoreEquipmenttoProcessREQIDX499 S_MoreEquipmenttoProcessREQIDX499 --> N_MoreEquipmenttoProcessREQIDX499_Node0 N_MoreEquipmenttoProcessREQIDX499_Node0 -- No --> E_MoreEquipmenttoProcessREQIDX499
File: GCX003.cbl
GIVEN:
A train request contains equipment items to be processed
WHEN:
The system processes equipment items in sequence
THEN:
Processing stops when either all equipment is processed or the 499 item limit is reached
β Consolidated Acceptance Criteria
- The system processes an equipment item at current index → the equipment ID is extracted and prepared with size 12 for formatting validation
- The system extracts equipment information from the request → the system must move the equipment ID from REQ-EQP-ID array to GCCARFM-INPUT and set the size to 12 characters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetEquipmentIDfromRequest(["Start Step"])
E_GetEquipmentIDfromRequest(["End Step"])
N_GetEquipmentIDfromRequest_Node0{"The system processes an equipment
item at current index"}:::decision N_GetEquipmentIDfromRequest_Node0_action["The equipment ID is extracted and
prepared with size 12 for formatting
validation"]:::main N_GetEquipmentIDfromRequest_Node0 -- Yes --> N_GetEquipmentIDfromRequest_Node0_action N_GetEquipmentIDfromRequest_Node0_action --> E_GetEquipmentIDfromRequest S_GetEquipmentIDfromRequest --> N_GetEquipmentIDfromRequest_Node0 N_GetEquipmentIDfromRequest_Node1{"The system extracts equipment
information from the request"}:::decision N_GetEquipmentIDfromRequest_Node1_action["The system must move the equipment
ID from REQ-EQP-ID array to
GCCARFM-INPUT and set the size to 12
characters"]:::main N_GetEquipmentIDfromRequest_Node1 -- Yes --> N_GetEquipmentIDfromRequest_Node1_action N_GetEquipmentIDfromRequest_Node1_action --> E_GetEquipmentIDfromRequest N_GetEquipmentIDfromRequest_Node0 -- No --> N_GetEquipmentIDfromRequest_Node1 N_GetEquipmentIDfromRequest_Node1 -- No --> E_GetEquipmentIDfromRequest
item at current index"}:::decision N_GetEquipmentIDfromRequest_Node0_action["The equipment ID is extracted and
prepared with size 12 for formatting
validation"]:::main N_GetEquipmentIDfromRequest_Node0 -- Yes --> N_GetEquipmentIDfromRequest_Node0_action N_GetEquipmentIDfromRequest_Node0_action --> E_GetEquipmentIDfromRequest S_GetEquipmentIDfromRequest --> N_GetEquipmentIDfromRequest_Node0 N_GetEquipmentIDfromRequest_Node1{"The system extracts equipment
information from the request"}:::decision N_GetEquipmentIDfromRequest_Node1_action["The system must move the equipment
ID from REQ-EQP-ID array to
GCCARFM-INPUT and set the size to 12
characters"]:::main N_GetEquipmentIDfromRequest_Node1 -- Yes --> N_GetEquipmentIDfromRequest_Node1_action N_GetEquipmentIDfromRequest_Node1_action --> E_GetEquipmentIDfromRequest N_GetEquipmentIDfromRequest_Node0 -- No --> N_GetEquipmentIDfromRequest_Node1 N_GetEquipmentIDfromRequest_Node1 -- No --> E_GetEquipmentIDfromRequest
File: GCX003.cbl
GIVEN:
A request contains equipment items at specific index positions
WHEN:
The system processes an equipment item at current index
THEN:
- The equipment id is extracted
- Prepared with size 12 for formatting validation
File: GCX003.cbl
GIVEN:
An equipment item needs to be processed
WHEN:
The system extracts equipment information from the request
THEN:
- The system must move the equipment id from req-eqp-id array to gccarfm-input
- Set the size to 12 characters
β Consolidated Acceptance Criteria
- The equipment formatter GCCCARFM is called to validate the format → if format is invalid, equipment error message 34 is generated and processing continues to next equipment
- The system calls the equipment formatter GCCCARFM → the system must check if GCCARFM-RC-SUCCESS is true to determine if the equipment format is valid
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentFormatValid(["Start Step"])
E_EquipmentFormatValid(["End Step"])
N_EquipmentFormatValid_Node0{"The equipment formatter GCCCARFM is
called to validate the format"}:::decision N_EquipmentFormatValid_Node0_action["If format is invalid, equipment
error message 34 is generated and
processing continues to next
equipment"]:::main N_EquipmentFormatValid_Node0 -- Yes --> N_EquipmentFormatValid_Node0_action N_EquipmentFormatValid_Node0_action --> E_EquipmentFormatValid S_EquipmentFormatValid --> N_EquipmentFormatValid_Node0 N_EquipmentFormatValid_Node1{"The system calls the equipment
formatter GCCCARFM"}:::decision N_EquipmentFormatValid_Node1_action["The system must check if
GCCARFM-RC-SUCCESS is true to
determine if the equipment format is
valid"]:::main N_EquipmentFormatValid_Node1 -- Yes --> N_EquipmentFormatValid_Node1_action N_EquipmentFormatValid_Node1_action --> E_EquipmentFormatValid N_EquipmentFormatValid_Node0 -- No --> N_EquipmentFormatValid_Node1 N_EquipmentFormatValid_Node1 -- No --> E_EquipmentFormatValid
called to validate the format"}:::decision N_EquipmentFormatValid_Node0_action["If format is invalid, equipment
error message 34 is generated and
processing continues to next
equipment"]:::main N_EquipmentFormatValid_Node0 -- Yes --> N_EquipmentFormatValid_Node0_action N_EquipmentFormatValid_Node0_action --> E_EquipmentFormatValid S_EquipmentFormatValid --> N_EquipmentFormatValid_Node0 N_EquipmentFormatValid_Node1{"The system calls the equipment
formatter GCCCARFM"}:::decision N_EquipmentFormatValid_Node1_action["The system must check if
GCCARFM-RC-SUCCESS is true to
determine if the equipment format is
valid"]:::main N_EquipmentFormatValid_Node1 -- Yes --> N_EquipmentFormatValid_Node1_action N_EquipmentFormatValid_Node1_action --> E_EquipmentFormatValid N_EquipmentFormatValid_Node0 -- No --> N_EquipmentFormatValid_Node1 N_EquipmentFormatValid_Node1 -- No --> E_EquipmentFormatValid
File: GCX003.cbl
GIVEN:
An equipment ID has been extracted from the request
WHEN:
The equipment formatter GCCCARFM is called to validate the format
THEN:
- If format is invalid, equipment error message 34 is generated
- Processing continues to next equipment
File: GCX003.cbl
GIVEN:
An equipment ID has been extracted from the request
WHEN:
The system calls the equipment formatter GCCCARFM
THEN:
The system must check if GCCARFM-RC-SUCCESS is true to determine if the equipment format is valid
β Consolidated Acceptance Criteria
- The system checks the equipment type in the waybill database → if equipment is identified as a container, container-specific waybill retrieval is performed, otherwise car waybill retrieval is used
- The system needs to retrieve waybill information → if container is found, use container-specific waybill retrieval, otherwise use car-specific waybill retrieval method
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContainerFound(["Start Step"])
E_ContainerFound(["End Step"])
N_ContainerFound_Node0{"The system checks the equipment
type in the waybill database"}:::decision N_ContainerFound_Node0_action["If equipment is identified as a
container, container-specific
waybill retrieval is performed,
otherwise car waybill retrieval is
used"]:::main N_ContainerFound_Node0 -- Yes --> N_ContainerFound_Node0_action N_ContainerFound_Node0_action --> E_ContainerFound S_ContainerFound --> N_ContainerFound_Node0 N_ContainerFound_Node1{"The system needs to retrieve
waybill information"}:::decision N_ContainerFound_Node1_action["If container is found, use
container-specific waybill
retrieval, otherwise use
car-specific waybill retrieval
method"]:::main N_ContainerFound_Node1 -- Yes --> N_ContainerFound_Node1_action N_ContainerFound_Node1_action --> E_ContainerFound N_ContainerFound_Node0 -- No --> N_ContainerFound_Node1 N_ContainerFound_Node1 -- No --> E_ContainerFound
type in the waybill database"}:::decision N_ContainerFound_Node0_action["If equipment is identified as a
container, container-specific
waybill retrieval is performed,
otherwise car waybill retrieval is
used"]:::main N_ContainerFound_Node0 -- Yes --> N_ContainerFound_Node0_action N_ContainerFound_Node0_action --> E_ContainerFound S_ContainerFound --> N_ContainerFound_Node0 N_ContainerFound_Node1{"The system needs to retrieve
waybill information"}:::decision N_ContainerFound_Node1_action["If container is found, use
container-specific waybill
retrieval, otherwise use
car-specific waybill retrieval
method"]:::main N_ContainerFound_Node1 -- Yes --> N_ContainerFound_Node1_action N_ContainerFound_Node1_action --> E_ContainerFound N_ContainerFound_Node0 -- No --> N_ContainerFound_Node1 N_ContainerFound_Node1 -- No --> E_ContainerFound
File: GCX003.cbl
GIVEN:
Equipment has been successfully formatted and validated
WHEN:
The system checks the equipment type in the waybill database
THEN:
If equipment is identified as a container, container-specific waybill retrieval is performed, otherwise car waybill retrieval is used
File: GCX003.cbl
GIVEN:
An equipment item is being processed
WHEN:
The system needs to retrieve waybill information
THEN:
If container is found, use container-specific waybill retrieval, otherwise use car-specific waybill retrieval method
β Consolidated Acceptance Criteria
- The system searches for waybill information → container waybill data is retrieved from SHIPROOT using container ID as the key
- Waybill retrieval is performed → system retrieves waybill using container ID through SHIPROOT container lookup or IQ container cross-reference if standard lookup fails
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveContainerWaybill(["Start Step"])
E_RetrieveContainerWaybill(["End Step"])
N_RetrieveContainerWaybill_Node0{"The system searches for waybill
information"}:::decision N_RetrieveContainerWaybill_Node0_action["Container waybill data is retrieved
from SHIPROOT using container ID as
the key"]:::main N_RetrieveContainerWaybill_Node0 -- Yes --> N_RetrieveContainerWaybill_Node0_action N_RetrieveContainerWaybill_Node0_action --> E_RetrieveContainerWaybill S_RetrieveContainerWaybill --> N_RetrieveContainerWaybill_Node0 N_RetrieveContainerWaybill_Node1{"Waybill retrieval is performed"}:::decision N_RetrieveContainerWaybill_Node1_action["System retrieves waybill using
container ID through SHIPROOT
container lookup or IQ container
cross-reference if standard lookup
fails"]:::main N_RetrieveContainerWaybill_Node1 -- Yes --> N_RetrieveContainerWaybill_Node1_action N_RetrieveContainerWaybill_Node1_action --> E_RetrieveContainerWaybill N_RetrieveContainerWaybill_Node0 -- No --> N_RetrieveContainerWaybill_Node1 N_RetrieveContainerWaybill_Node1 -- No --> E_RetrieveContainerWaybill
information"}:::decision N_RetrieveContainerWaybill_Node0_action["Container waybill data is retrieved
from SHIPROOT using container ID as
the key"]:::main N_RetrieveContainerWaybill_Node0 -- Yes --> N_RetrieveContainerWaybill_Node0_action N_RetrieveContainerWaybill_Node0_action --> E_RetrieveContainerWaybill S_RetrieveContainerWaybill --> N_RetrieveContainerWaybill_Node0 N_RetrieveContainerWaybill_Node1{"Waybill retrieval is performed"}:::decision N_RetrieveContainerWaybill_Node1_action["System retrieves waybill using
container ID through SHIPROOT
container lookup or IQ container
cross-reference if standard lookup
fails"]:::main N_RetrieveContainerWaybill_Node1 -- Yes --> N_RetrieveContainerWaybill_Node1_action N_RetrieveContainerWaybill_Node1_action --> E_RetrieveContainerWaybill N_RetrieveContainerWaybill_Node0 -- No --> N_RetrieveContainerWaybill_Node1 N_RetrieveContainerWaybill_Node1 -- No --> E_RetrieveContainerWaybill
File: GCX003.cbl
GIVEN:
Equipment is identified as a container type
WHEN:
The system searches for waybill information
THEN:
Container waybill data is retrieved from SHIPROOT using container ID as the key
File: GCX003.cbl
GIVEN:
Equipment is identified as a container
WHEN:
Waybill retrieval is performed
THEN:
System retrieves waybill using container ID through SHIPROOT container lookup or IQ container cross-reference if standard lookup fails
β Consolidated Acceptance Criteria
- The system searches for waybill information → primary waybill lookup is attempted, and if not found, inquiry system (FWCIROOT) is searched as fallback
- Waybill retrieval is performed → system attempts SHIPROOT car lookup first, then falls back to FWCARGET with specific parameters, and finally tries inquiry database lookup if needed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveCarWaybillwithFallback(["Start Step"])
E_RetrieveCarWaybillwithFallback(["End Step"])
N_RetrieveCarWaybillwithFallback_Node0{"The system searches for waybill
information"}:::decision N_RetrieveCarWaybillwithFallback_Node0_action["Primary waybill lookup is
attempted, and if not found, inquiry
system FWCIROOT is searched as
fallback"]:::main N_RetrieveCarWaybillwithFallback_Node0 -- Yes --> N_RetrieveCarWaybillwithFallback_Node0_action N_RetrieveCarWaybillwithFallback_Node0_action --> E_RetrieveCarWaybillwithFallback S_RetrieveCarWaybillwithFallback --> N_RetrieveCarWaybillwithFallback_Node0 N_RetrieveCarWaybillwithFallback_Node1{"Waybill retrieval is performed"}:::decision N_RetrieveCarWaybillwithFallback_Node1_action["System attempts SHIPROOT car lookup
first, then falls back to FWCARGET
with specific parameters, and
finally tries inquiry database
lookup if needed"]:::main N_RetrieveCarWaybillwithFallback_Node1 -- Yes --> N_RetrieveCarWaybillwithFallback_Node1_action N_RetrieveCarWaybillwithFallback_Node1_action --> E_RetrieveCarWaybillwithFallback N_RetrieveCarWaybillwithFallback_Node0 -- No --> N_RetrieveCarWaybillwithFallback_Node1 N_RetrieveCarWaybillwithFallback_Node1 -- No --> E_RetrieveCarWaybillwithFallback
information"}:::decision N_RetrieveCarWaybillwithFallback_Node0_action["Primary waybill lookup is
attempted, and if not found, inquiry
system FWCIROOT is searched as
fallback"]:::main N_RetrieveCarWaybillwithFallback_Node0 -- Yes --> N_RetrieveCarWaybillwithFallback_Node0_action N_RetrieveCarWaybillwithFallback_Node0_action --> E_RetrieveCarWaybillwithFallback S_RetrieveCarWaybillwithFallback --> N_RetrieveCarWaybillwithFallback_Node0 N_RetrieveCarWaybillwithFallback_Node1{"Waybill retrieval is performed"}:::decision N_RetrieveCarWaybillwithFallback_Node1_action["System attempts SHIPROOT car lookup
first, then falls back to FWCARGET
with specific parameters, and
finally tries inquiry database
lookup if needed"]:::main N_RetrieveCarWaybillwithFallback_Node1 -- Yes --> N_RetrieveCarWaybillwithFallback_Node1_action N_RetrieveCarWaybillwithFallback_Node1_action --> E_RetrieveCarWaybillwithFallback N_RetrieveCarWaybillwithFallback_Node0 -- No --> N_RetrieveCarWaybillwithFallback_Node1 N_RetrieveCarWaybillwithFallback_Node1 -- No --> E_RetrieveCarWaybillwithFallback
File: GCX003.cbl
GIVEN:
Equipment is identified as a railcar (not container)
WHEN:
The system searches for waybill information
THEN:
Primary waybill lookup is attempted, and if not found, inquiry system (FWCIROOT) is searched as fallback
File: GCX003.cbl
GIVEN:
Equipment is identified as a car (not container)
WHEN:
Waybill retrieval is performed
THEN:
System attempts SHIPROOT car lookup first, then falls back to FWCARGET with specific parameters, and finally tries inquiry database lookup if needed
β Consolidated Acceptance Criteria
- The equipment is marked as empty (E) and the waybill shows loaded status (L) → the waybill is treated as not found to prevent incorrect cargo association
- System checks waybill status → if waybill found and equipment is loaded empty car (EL='L' and empty indicator), treat as waybill not found, otherwise proceed with found waybill
- The system determines that no waybill was located in the primary system → initiate alternative waybill search using the inquiry root system (Z450-GU-SHIPROOT-INQ) to locate waybill information
- The system checks the return status from waybill retrieval → the system determines if a waybill was found or if an error occurred, and routes processing accordingly
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WaybillFound(["Start Step"])
E_WaybillFound(["End Step"])
N_WaybillFound_Node0{"The equipment is marked as empty E
and the waybill shows loaded status
L"}:::decision N_WaybillFound_Node0_action["The waybill is treated as not found
to prevent incorrect cargo
association"]:::main N_WaybillFound_Node0 -- Yes --> N_WaybillFound_Node0_action N_WaybillFound_Node0_action --> E_WaybillFound S_WaybillFound --> N_WaybillFound_Node0 N_WaybillFound_Node1{"System checks waybill status"}:::decision N_WaybillFound_Node1_action["If waybill found and equipment is
loaded empty car EL L and empty
indicator, treat as waybill not
found, otherwise proceed with found
waybill"]:::main N_WaybillFound_Node1 -- Yes --> N_WaybillFound_Node1_action N_WaybillFound_Node1_action --> E_WaybillFound N_WaybillFound_Node0 -- No --> N_WaybillFound_Node1 N_WaybillFound_Node2{"The system determines that no
waybill was located in the primary
system"}:::decision N_WaybillFound_Node2_action["Initiate alternative waybill search
using the inquiry root system
Z450-GU-SHIPROOT-INQ to locate
waybill information"]:::main N_WaybillFound_Node2 -- Yes --> N_WaybillFound_Node2_action N_WaybillFound_Node2_action --> E_WaybillFound N_WaybillFound_Node1 -- No --> N_WaybillFound_Node2 N_WaybillFound_Node3{"The system checks the return status
from waybill retrieval"}:::decision N_WaybillFound_Node3_action["The system determines if a waybill
was found or if an error occurred,
and routes processing accordingly"]:::main N_WaybillFound_Node3 -- Yes --> N_WaybillFound_Node3_action N_WaybillFound_Node3_action --> E_WaybillFound N_WaybillFound_Node2 -- No --> N_WaybillFound_Node3 N_WaybillFound_Node3 -- No --> E_WaybillFound
and the waybill shows loaded status
L"}:::decision N_WaybillFound_Node0_action["The waybill is treated as not found
to prevent incorrect cargo
association"]:::main N_WaybillFound_Node0 -- Yes --> N_WaybillFound_Node0_action N_WaybillFound_Node0_action --> E_WaybillFound S_WaybillFound --> N_WaybillFound_Node0 N_WaybillFound_Node1{"System checks waybill status"}:::decision N_WaybillFound_Node1_action["If waybill found and equipment is
loaded empty car EL L and empty
indicator, treat as waybill not
found, otherwise proceed with found
waybill"]:::main N_WaybillFound_Node1 -- Yes --> N_WaybillFound_Node1_action N_WaybillFound_Node1_action --> E_WaybillFound N_WaybillFound_Node0 -- No --> N_WaybillFound_Node1 N_WaybillFound_Node2{"The system determines that no
waybill was located in the primary
system"}:::decision N_WaybillFound_Node2_action["Initiate alternative waybill search
using the inquiry root system
Z450-GU-SHIPROOT-INQ to locate
waybill information"]:::main N_WaybillFound_Node2 -- Yes --> N_WaybillFound_Node2_action N_WaybillFound_Node2_action --> E_WaybillFound N_WaybillFound_Node1 -- No --> N_WaybillFound_Node2 N_WaybillFound_Node3{"The system checks the return status
from waybill retrieval"}:::decision N_WaybillFound_Node3_action["The system determines if a waybill
was found or if an error occurred,
and routes processing accordingly"]:::main N_WaybillFound_Node3 -- Yes --> N_WaybillFound_Node3_action N_WaybillFound_Node3_action --> E_WaybillFound N_WaybillFound_Node2 -- No --> N_WaybillFound_Node3 N_WaybillFound_Node3 -- No --> E_WaybillFound
File: GCX003.cbl
GIVEN:
A waybill has been located for equipment
WHEN:
The equipment is marked as empty (E) and the waybill shows loaded status (L)
THEN:
The waybill is treated as not found to prevent incorrect cargo association
File: GCX003.cbl
GIVEN:
Waybill retrieval has been attempted for equipment
WHEN:
System checks waybill status
THEN:
- If waybill found
- Equipment is loaded empty car (el='l' and empty indicator), treat as waybill not found, otherwise proceed with found waybill
File: GCX003.cbl
GIVEN:
Primary waybill retrieval indicates no waybill found
WHEN:
The system determines that no waybill was located in the primary system
THEN:
Initiate alternative waybill search using the inquiry root system (Z450-GU-SHIPROOT-INQ) to locate waybill information
File: GCX003.cbl
GIVEN:
FWCARGET module has been executed
WHEN:
The system checks the return status from waybill retrieval
THEN:
The system determines if a waybill was found or if an error occurred, and routes processing accordingly
β Consolidated Acceptance Criteria
- The system searches for associated cargo records → the first cargo record is retrieved using waybill root key, waybill date, and equipment ID as search criteria
- Cargo processing begins → system retrieves first cargo record using waybill root key and equipment ID, setting cargo found status appropriately
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveFirstCargoRecord(["Start Step"])
E_RetrieveFirstCargoRecord(["End Step"])
N_RetrieveFirstCargoRecord_Node0{"The system searches for associated
cargo records"}:::decision N_RetrieveFirstCargoRecord_Node0_action["The first cargo record is retrieved
using waybill root key, waybill
date, and equipment ID as search
criteria"]:::main N_RetrieveFirstCargoRecord_Node0 -- Yes --> N_RetrieveFirstCargoRecord_Node0_action N_RetrieveFirstCargoRecord_Node0_action --> E_RetrieveFirstCargoRecord S_RetrieveFirstCargoRecord --> N_RetrieveFirstCargoRecord_Node0 N_RetrieveFirstCargoRecord_Node1{"Cargo processing begins"}:::decision N_RetrieveFirstCargoRecord_Node1_action["System retrieves first cargo record
using waybill root key and equipment
ID, setting cargo found status
appropriately"]:::main N_RetrieveFirstCargoRecord_Node1 -- Yes --> N_RetrieveFirstCargoRecord_Node1_action N_RetrieveFirstCargoRecord_Node1_action --> E_RetrieveFirstCargoRecord N_RetrieveFirstCargoRecord_Node0 -- No --> N_RetrieveFirstCargoRecord_Node1 N_RetrieveFirstCargoRecord_Node1 -- No --> E_RetrieveFirstCargoRecord
cargo records"}:::decision N_RetrieveFirstCargoRecord_Node0_action["The first cargo record is retrieved
using waybill root key, waybill
date, and equipment ID as search
criteria"]:::main N_RetrieveFirstCargoRecord_Node0 -- Yes --> N_RetrieveFirstCargoRecord_Node0_action N_RetrieveFirstCargoRecord_Node0_action --> E_RetrieveFirstCargoRecord S_RetrieveFirstCargoRecord --> N_RetrieveFirstCargoRecord_Node0 N_RetrieveFirstCargoRecord_Node1{"Cargo processing begins"}:::decision N_RetrieveFirstCargoRecord_Node1_action["System retrieves first cargo record
using waybill root key and equipment
ID, setting cargo found status
appropriately"]:::main N_RetrieveFirstCargoRecord_Node1 -- Yes --> N_RetrieveFirstCargoRecord_Node1_action N_RetrieveFirstCargoRecord_Node1_action --> E_RetrieveFirstCargoRecord N_RetrieveFirstCargoRecord_Node0 -- No --> N_RetrieveFirstCargoRecord_Node1 N_RetrieveFirstCargoRecord_Node1 -- No --> E_RetrieveFirstCargoRecord
File: GCX003.cbl
GIVEN:
A valid waybill has been found for the equipment
WHEN:
The system searches for associated cargo records
THEN:
The first cargo record is retrieved using waybill root key, waybill date, and equipment ID as search criteria
File: GCX003.cbl
GIVEN:
Equipment has a valid waybill
WHEN:
Cargo processing begins
THEN:
- System retrieves first cargo record using waybill root key
- Equipment id, setting cargo found status appropriately
β Consolidated Acceptance Criteria
- Cargo retrieval operation completes → if no cargo is found, the no-cargo-found flag is set and error message processing is triggered
- The system checks for associated cargo records → processing branches to cargo handling if cargo found, otherwise proceeds to information field formatting
- The system checks for cargo existence → if cargo is found, proceed to bond type evaluation, otherwise process as original US-US movement
- The system checks for cargo existence → if cargo is found, proceed to bond type classification; if no cargo is found, proceed to original US-US movement detour processing
- The system checks for cargo existence → if no cargo is found, skip bond type processing and end the process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoFound(["Start Step"])
E_CargoFound(["End Step"])
N_CargoFound_Node0{"Cargo retrieval operation completes"}:::decision
N_CargoFound_Node0_action["If no cargo is found, the
no-cargo-found flag is set and error
message processing is triggered"]:::main N_CargoFound_Node0 -- Yes --> N_CargoFound_Node0_action N_CargoFound_Node0_action --> E_CargoFound S_CargoFound --> N_CargoFound_Node0 N_CargoFound_Node1{"The system checks for associated
cargo records"}:::decision N_CargoFound_Node1_action["Processing branches to cargo
handling if cargo found, otherwise
proceeds to information field
formatting"]:::main N_CargoFound_Node1 -- Yes --> N_CargoFound_Node1_action N_CargoFound_Node1_action --> E_CargoFound N_CargoFound_Node0 -- No --> N_CargoFound_Node1 N_CargoFound_Node2{"The system checks for cargo
existence"}:::decision N_CargoFound_Node2_action["If cargo is found, proceed to bond
type evaluation, otherwise process
as original US-US movement"]:::main N_CargoFound_Node2 -- Yes --> N_CargoFound_Node2_action N_CargoFound_Node2_action --> E_CargoFound N_CargoFound_Node1 -- No --> N_CargoFound_Node2 N_CargoFound_Node3{"The system checks for cargo
existence"}:::decision N_CargoFound_Node3_action["If cargo is found, proceed to bond
type classification if no cargo is
found, proceed to original US-US
movement detour processing"]:::main N_CargoFound_Node3 -- Yes --> N_CargoFound_Node3_action N_CargoFound_Node3_action --> E_CargoFound N_CargoFound_Node2 -- No --> N_CargoFound_Node3 N_CargoFound_Node4{"The system checks for cargo
existence"}:::decision N_CargoFound_Node4_action["If no cargo is found, skip bond
type processing and end the process"]:::main N_CargoFound_Node4 -- Yes --> N_CargoFound_Node4_action N_CargoFound_Node4_action --> E_CargoFound N_CargoFound_Node3 -- No --> N_CargoFound_Node4 N_CargoFound_Node4 -- No --> E_CargoFound
no-cargo-found flag is set and error
message processing is triggered"]:::main N_CargoFound_Node0 -- Yes --> N_CargoFound_Node0_action N_CargoFound_Node0_action --> E_CargoFound S_CargoFound --> N_CargoFound_Node0 N_CargoFound_Node1{"The system checks for associated
cargo records"}:::decision N_CargoFound_Node1_action["Processing branches to cargo
handling if cargo found, otherwise
proceeds to information field
formatting"]:::main N_CargoFound_Node1 -- Yes --> N_CargoFound_Node1_action N_CargoFound_Node1_action --> E_CargoFound N_CargoFound_Node0 -- No --> N_CargoFound_Node1 N_CargoFound_Node2{"The system checks for cargo
existence"}:::decision N_CargoFound_Node2_action["If cargo is found, proceed to bond
type evaluation, otherwise process
as original US-US movement"]:::main N_CargoFound_Node2 -- Yes --> N_CargoFound_Node2_action N_CargoFound_Node2_action --> E_CargoFound N_CargoFound_Node1 -- No --> N_CargoFound_Node2 N_CargoFound_Node3{"The system checks for cargo
existence"}:::decision N_CargoFound_Node3_action["If cargo is found, proceed to bond
type classification if no cargo is
found, proceed to original US-US
movement detour processing"]:::main N_CargoFound_Node3 -- Yes --> N_CargoFound_Node3_action N_CargoFound_Node3_action --> E_CargoFound N_CargoFound_Node2 -- No --> N_CargoFound_Node3 N_CargoFound_Node4{"The system checks for cargo
existence"}:::decision N_CargoFound_Node4_action["If no cargo is found, skip bond
type processing and end the process"]:::main N_CargoFound_Node4 -- Yes --> N_CargoFound_Node4_action N_CargoFound_Node4_action --> E_CargoFound N_CargoFound_Node3 -- No --> N_CargoFound_Node4 N_CargoFound_Node4 -- No --> E_CargoFound
File: GCX003.cbl
GIVEN:
The system has searched for cargo records associated with the waybill
WHEN:
Cargo retrieval operation completes
THEN:
- If no cargo is found, the no-cargo-found flag is set
- Error message processing is triggered
File: GCX003.cbl
GIVEN:
Equipment information has been processed
WHEN:
The system checks for associated cargo records
THEN:
Processing branches to cargo handling if cargo found, otherwise proceeds to information field formatting
File: GCX003.cbl
GIVEN:
A detour processing request is initiated
WHEN:
The system checks for cargo existence
THEN:
If cargo is found, proceed to bond type evaluation, otherwise process as original US-US movement
File: GCX003.cbl
GIVEN:
A request for detour processing is initiated
WHEN:
The system checks for cargo existence
THEN:
If cargo is found, proceed to bond type classification; if no cargo is found, proceed to original US-US movement detour processing
File: GCX003.cbl
GIVEN:
A cargo processing request is initiated
WHEN:
The system checks for cargo existence
THEN:
- If no cargo is found, skip bond type processing
- End the process
β Consolidated Acceptance Criteria
- The system retrieves detailed segment information → sEG07 (commodity description), SEG02 (reference numbers), and SEG08 (hazmat) data are retrieved and availability flags are set
- Detailed cargo information is needed → system retrieves segment 07 (cargo details), segment 02 (reference numbers), and segment 08 (hazmat information) and sets appropriate found/not found indicators
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveSegment07Data(["Start Step"])
E_RetrieveSegment07Data(["End Step"])
N_RetrieveSegment07Data_Node0{"The system retrieves detailed
segment information"}:::decision N_RetrieveSegment07Data_Node0_action["SEG07 commodity description, SEG02
reference numbers, and SEG08 hazmat
data are retrieved and availability
flags are set"]:::main N_RetrieveSegment07Data_Node0 -- Yes --> N_RetrieveSegment07Data_Node0_action N_RetrieveSegment07Data_Node0_action --> E_RetrieveSegment07Data S_RetrieveSegment07Data --> N_RetrieveSegment07Data_Node0 N_RetrieveSegment07Data_Node1{"Detailed cargo information is
needed"}:::decision N_RetrieveSegment07Data_Node1_action["System retrieves segment 07 cargo
details, segment 02 reference
numbers, and segment 08 hazmat
information and sets appropriate
foundnot found indicators"]:::main N_RetrieveSegment07Data_Node1 -- Yes --> N_RetrieveSegment07Data_Node1_action N_RetrieveSegment07Data_Node1_action --> E_RetrieveSegment07Data N_RetrieveSegment07Data_Node0 -- No --> N_RetrieveSegment07Data_Node1 N_RetrieveSegment07Data_Node1 -- No --> E_RetrieveSegment07Data
segment information"}:::decision N_RetrieveSegment07Data_Node0_action["SEG07 commodity description, SEG02
reference numbers, and SEG08 hazmat
data are retrieved and availability
flags are set"]:::main N_RetrieveSegment07Data_Node0 -- Yes --> N_RetrieveSegment07Data_Node0_action N_RetrieveSegment07Data_Node0_action --> E_RetrieveSegment07Data S_RetrieveSegment07Data --> N_RetrieveSegment07Data_Node0 N_RetrieveSegment07Data_Node1{"Detailed cargo information is
needed"}:::decision N_RetrieveSegment07Data_Node1_action["System retrieves segment 07 cargo
details, segment 02 reference
numbers, and segment 08 hazmat
information and sets appropriate
foundnot found indicators"]:::main N_RetrieveSegment07Data_Node1 -- Yes --> N_RetrieveSegment07Data_Node1_action N_RetrieveSegment07Data_Node1_action --> E_RetrieveSegment07Data N_RetrieveSegment07Data_Node0 -- No --> N_RetrieveSegment07Data_Node1 N_RetrieveSegment07Data_Node1 -- No --> E_RetrieveSegment07Data
File: GCX003.cbl
GIVEN:
A cargo record has been found for the equipment
WHEN:
The system retrieves detailed segment information
THEN:
- Seg07 (commodity description), seg02 (reference numbers), and seg08 (hazmat) data are retrieved
- Availability flags are set
File: GCX003.cbl
GIVEN:
A cargo record is being processed
WHEN:
Detailed cargo information is needed
THEN:
System retrieves segment 07 (cargo details), segment 02 (reference numbers), and segment 08 (hazmat information) and sets appropriate found/not found indicators
β Consolidated Acceptance Criteria
- The system builds report output → detailed report lines are created with equipment details, cargo information, and appropriate formatting for manifest display
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildEquipmentReportLine(["Start Step"])
E_BuildEquipmentReportLine(["End Step"])
N_BuildEquipmentReportLine_Node0{"The system builds report output"}:::decision
N_BuildEquipmentReportLine_Node0_action["Detailed report lines are created
with equipment details, cargo
information, and appropriate
formatting for manifest display"]:::main N_BuildEquipmentReportLine_Node0 -- Yes --> N_BuildEquipmentReportLine_Node0_action N_BuildEquipmentReportLine_Node0_action --> E_BuildEquipmentReportLine S_BuildEquipmentReportLine --> N_BuildEquipmentReportLine_Node0 N_BuildEquipmentReportLine_Node0 -- No --> E_BuildEquipmentReportLine
with equipment details, cargo
information, and appropriate
formatting for manifest display"]:::main N_BuildEquipmentReportLine_Node0 -- Yes --> N_BuildEquipmentReportLine_Node0_action N_BuildEquipmentReportLine_Node0_action --> E_BuildEquipmentReportLine S_BuildEquipmentReportLine --> N_BuildEquipmentReportLine_Node0 N_BuildEquipmentReportLine_Node0 -- No --> E_BuildEquipmentReportLine
File: GCX003.cbl
GIVEN:
Equipment and cargo data have been processed
WHEN:
The system builds report output
THEN:
Detailed report lines are created with equipment details, cargo information, and appropriate formatting for manifest display
β Consolidated Acceptance Criteria
- If cargo for train attachment → cargo is attached unless it is immediate transport, already created for IT, US-Canada-US with release status, default with release status, empty equipment, or special manifest cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AttachCargotoTrainSENDActionOnly(["Start Step"])
E_AttachCargotoTrainSENDActionOnly(["End Step"])
N_AttachCargotoTrainSENDActionOnly_Node0{"The system evaluates cargo for
train attachment"}:::decision N_AttachCargotoTrainSENDActionOnly_Node0_action["Cargo is attached unless it is
immediate transport, already created
for IT, US-Canada-US with release
status, default with release status,
empty equipment, or special manifest
cargo"]:::main N_AttachCargotoTrainSENDActionOnly_Node0 -- Yes --> N_AttachCargotoTrainSENDActionOnly_Node0_action N_AttachCargotoTrainSENDActionOnly_Node0_action --> E_AttachCargotoTrainSENDActionOnly S_AttachCargotoTrainSENDActionOnly --> N_AttachCargotoTrainSENDActionOnly_Node0 N_AttachCargotoTrainSENDActionOnly_Node0 -- No --> E_AttachCargotoTrainSENDActionOnly
train attachment"}:::decision N_AttachCargotoTrainSENDActionOnly_Node0_action["Cargo is attached unless it is
immediate transport, already created
for IT, US-Canada-US with release
status, default with release status,
empty equipment, or special manifest
cargo"]:::main N_AttachCargotoTrainSENDActionOnly_Node0 -- Yes --> N_AttachCargotoTrainSENDActionOnly_Node0_action N_AttachCargotoTrainSENDActionOnly_Node0_action --> E_AttachCargotoTrainSENDActionOnly S_AttachCargotoTrainSENDActionOnly --> N_AttachCargotoTrainSENDActionOnly_Node0 N_AttachCargotoTrainSENDActionOnly_Node0 -- No --> E_AttachCargotoTrainSENDActionOnly
File: GCX003.cbl
GIVEN:
The request action is SEND and cargo has been processed without errors
WHEN:
The system evaluates cargo for train attachment
THEN:
Cargo is attached unless it is immediate transport, already created for IT, US-Canada-US with release status, default with release status, empty equipment, or special manifest cargo
β Consolidated Acceptance Criteria
- The system searches for additional cargo records → the next cargo record with matching waybill and equipment criteria is retrieved for processing
- System continues cargo processing → retrieve next cargo record using same equipment and waybill criteria, updating cargo found status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveNextCargoRecord(["Start Step"])
E_RetrieveNextCargoRecord(["End Step"])
N_RetrieveNextCargoRecord_Node0{"The system searches for additional
cargo records"}:::decision N_RetrieveNextCargoRecord_Node0_action["The next cargo record with matching
waybill and equipment criteria is
retrieved for processing"]:::main N_RetrieveNextCargoRecord_Node0 -- Yes --> N_RetrieveNextCargoRecord_Node0_action N_RetrieveNextCargoRecord_Node0_action --> E_RetrieveNextCargoRecord S_RetrieveNextCargoRecord --> N_RetrieveNextCargoRecord_Node0 N_RetrieveNextCargoRecord_Node1{"System continues cargo processing"}:::decision N_RetrieveNextCargoRecord_Node1_action["Retrieve next cargo record using
same equipment and waybill criteria,
updating cargo found status"]:::main N_RetrieveNextCargoRecord_Node1 -- Yes --> N_RetrieveNextCargoRecord_Node1_action N_RetrieveNextCargoRecord_Node1_action --> E_RetrieveNextCargoRecord N_RetrieveNextCargoRecord_Node0 -- No --> N_RetrieveNextCargoRecord_Node1 N_RetrieveNextCargoRecord_Node1 -- No --> E_RetrieveNextCargoRecord
cargo records"}:::decision N_RetrieveNextCargoRecord_Node0_action["The next cargo record with matching
waybill and equipment criteria is
retrieved for processing"]:::main N_RetrieveNextCargoRecord_Node0 -- Yes --> N_RetrieveNextCargoRecord_Node0_action N_RetrieveNextCargoRecord_Node0_action --> E_RetrieveNextCargoRecord S_RetrieveNextCargoRecord --> N_RetrieveNextCargoRecord_Node0 N_RetrieveNextCargoRecord_Node1{"System continues cargo processing"}:::decision N_RetrieveNextCargoRecord_Node1_action["Retrieve next cargo record using
same equipment and waybill criteria,
updating cargo found status"]:::main N_RetrieveNextCargoRecord_Node1 -- Yes --> N_RetrieveNextCargoRecord_Node1_action N_RetrieveNextCargoRecord_Node1_action --> E_RetrieveNextCargoRecord N_RetrieveNextCargoRecord_Node0 -- No --> N_RetrieveNextCargoRecord_Node1 N_RetrieveNextCargoRecord_Node1 -- No --> E_RetrieveNextCargoRecord
File: GCX003.cbl
GIVEN:
A cargo record has been processed for the current equipment
WHEN:
The system searches for additional cargo records
THEN:
- The next cargo record with matching waybill
- Equipment criteria is retrieved for processing
File: GCX003.cbl
GIVEN:
Current cargo record processing is complete
WHEN:
System continues cargo processing
THEN:
- Retrieve next cargo record using same equipment
- Waybill criteria, updating cargo found status
β Consolidated Acceptance Criteria
- The system checks for additional cargo records → if more cargo records exist with matching waybill and equipment ID, processing continues, otherwise cargo processing completes
- System checks for more cargo records → if more cargo records exist for the same equipment and waybill combination, continue processing, otherwise complete cargo processing for this equipment
- If query results for additional records → more cargo records status is determined based on successful retrieval of next cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreCargoRecords(["Start Step"])
E_MoreCargoRecords(["End Step"])
N_MoreCargoRecords_Node0{"The system checks for additional
cargo records"}:::decision N_MoreCargoRecords_Node0_action["If more cargo records exist with
matching waybill and equipment ID,
processing continues, otherwise
cargo processing completes"]:::main N_MoreCargoRecords_Node0 -- Yes --> N_MoreCargoRecords_Node0_action N_MoreCargoRecords_Node0_action --> E_MoreCargoRecords S_MoreCargoRecords --> N_MoreCargoRecords_Node0 N_MoreCargoRecords_Node1{"System checks for more cargo
records"}:::decision N_MoreCargoRecords_Node1_action["If more cargo records exist for the
same equipment and waybill
combination, continue processing,
otherwise complete cargo processing
for this equipment"]:::main N_MoreCargoRecords_Node1 -- Yes --> N_MoreCargoRecords_Node1_action N_MoreCargoRecords_Node1_action --> E_MoreCargoRecords N_MoreCargoRecords_Node0 -- No --> N_MoreCargoRecords_Node1 N_MoreCargoRecords_Node2{"The system evaluates query results
for additional records"}:::decision N_MoreCargoRecords_Node2_action["More cargo records status is
determined based on successful
retrieval of next cargo record"]:::main N_MoreCargoRecords_Node2 -- Yes --> N_MoreCargoRecords_Node2_action N_MoreCargoRecords_Node2_action --> E_MoreCargoRecords N_MoreCargoRecords_Node1 -- No --> N_MoreCargoRecords_Node2 N_MoreCargoRecords_Node2 -- No --> E_MoreCargoRecords
cargo records"}:::decision N_MoreCargoRecords_Node0_action["If more cargo records exist with
matching waybill and equipment ID,
processing continues, otherwise
cargo processing completes"]:::main N_MoreCargoRecords_Node0 -- Yes --> N_MoreCargoRecords_Node0_action N_MoreCargoRecords_Node0_action --> E_MoreCargoRecords S_MoreCargoRecords --> N_MoreCargoRecords_Node0 N_MoreCargoRecords_Node1{"System checks for more cargo
records"}:::decision N_MoreCargoRecords_Node1_action["If more cargo records exist for the
same equipment and waybill
combination, continue processing,
otherwise complete cargo processing
for this equipment"]:::main N_MoreCargoRecords_Node1 -- Yes --> N_MoreCargoRecords_Node1_action N_MoreCargoRecords_Node1_action --> E_MoreCargoRecords N_MoreCargoRecords_Node0 -- No --> N_MoreCargoRecords_Node1 N_MoreCargoRecords_Node2{"The system evaluates query results
for additional records"}:::decision N_MoreCargoRecords_Node2_action["More cargo records status is
determined based on successful
retrieval of next cargo record"]:::main N_MoreCargoRecords_Node2 -- Yes --> N_MoreCargoRecords_Node2_action N_MoreCargoRecords_Node2_action --> E_MoreCargoRecords N_MoreCargoRecords_Node1 -- No --> N_MoreCargoRecords_Node2 N_MoreCargoRecords_Node2 -- No --> E_MoreCargoRecords
File: GCX003.cbl
GIVEN:
Cargo processing is in progress for current equipment
WHEN:
The system checks for additional cargo records
THEN:
- If more cargo records exist with matching waybill
- Equipment id, processing continues, otherwise cargo processing completes
File: GCX003.cbl
GIVEN:
Cargo processing is in progress for equipment
WHEN:
System checks for more cargo records
THEN:
- If more cargo records exist for the same equipment
- Waybill combination, continue processing, otherwise complete cargo processing for this equipment
File: GCX003.cbl
GIVEN:
Next cargo record query has been executed
WHEN:
The system evaluates query results for additional records
THEN:
More cargo records status is determined based on successful retrieval of next cargo record
β Consolidated Acceptance Criteria
- If processing results against business rules → appropriate error messages are generated for conditions like missing waybills, cargo status issues, bond type mismatches, or regulatory violations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateErrorMessages(["Start Step"])
E_GenerateErrorMessages(["End Step"])
N_GenerateErrorMessages_Node0{"The system evaluates processing
results against business rules"}:::decision N_GenerateErrorMessages_Node0_action["Appropriate error messages are
generated for conditions like
missing waybills, cargo status
issues, bond type mismatches, or
regulatory violations"]:::main N_GenerateErrorMessages_Node0 -- Yes --> N_GenerateErrorMessages_Node0_action N_GenerateErrorMessages_Node0_action --> E_GenerateErrorMessages S_GenerateErrorMessages --> N_GenerateErrorMessages_Node0 N_GenerateErrorMessages_Node0 -- No --> E_GenerateErrorMessages
results against business rules"}:::decision N_GenerateErrorMessages_Node0_action["Appropriate error messages are
generated for conditions like
missing waybills, cargo status
issues, bond type mismatches, or
regulatory violations"]:::main N_GenerateErrorMessages_Node0 -- Yes --> N_GenerateErrorMessages_Node0_action N_GenerateErrorMessages_Node0_action --> E_GenerateErrorMessages S_GenerateErrorMessages --> N_GenerateErrorMessages_Node0 N_GenerateErrorMessages_Node0 -- No --> E_GenerateErrorMessages
File: GCX003.cbl
GIVEN:
Equipment processing has completed for waybill and cargo retrieval
WHEN:
The system evaluates processing results against business rules
THEN:
Appropriate error messages are generated for conditions like missing waybills, cargo status issues, bond type mismatches, or regulatory violations
β Consolidated Acceptance Criteria
- The system searches for container information → container data is retrieved from FWSWRWR database or inquiry system, and if not found, error message 11 is generated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveContaineronFlatCar(["Start Step"])
E_RetrieveContaineronFlatCar(["End Step"])
N_RetrieveContaineronFlatCar_Node0{"The system searches for container
information"}:::decision N_RetrieveContaineronFlatCar_Node0_action["Container data is retrieved from
FWSWRWR database or inquiry system,
and if not found, error message 11
is generated"]:::main N_RetrieveContaineronFlatCar_Node0 -- Yes --> N_RetrieveContaineronFlatCar_Node0_action N_RetrieveContaineronFlatCar_Node0_action --> E_RetrieveContaineronFlatCar S_RetrieveContaineronFlatCar --> N_RetrieveContaineronFlatCar_Node0 N_RetrieveContaineronFlatCar_Node0 -- No --> E_RetrieveContaineronFlatCar
information"}:::decision N_RetrieveContaineronFlatCar_Node0_action["Container data is retrieved from
FWSWRWR database or inquiry system,
and if not found, error message 11
is generated"]:::main N_RetrieveContaineronFlatCar_Node0 -- Yes --> N_RetrieveContaineronFlatCar_Node0_action N_RetrieveContaineronFlatCar_Node0_action --> E_RetrieveContaineronFlatCar S_RetrieveContaineronFlatCar --> N_RetrieveContaineronFlatCar_Node0 N_RetrieveContaineronFlatCar_Node0 -- No --> E_RetrieveContaineronFlatCar
File: GCX003.cbl
GIVEN:
Equipment processing indicates container on flat car scenario or waybill shows conveying car with loaded status
WHEN:
The system searches for container information
THEN:
Container data is retrieved from FWSWRWR database or inquiry system, and if not found, error message 11 is generated
β Consolidated Acceptance Criteria
- The system checks container processing results → if containers are found, processing continues with next container, otherwise container processing completes for current equipment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContaineronFlatCar(["Start Step"])
E_ContaineronFlatCar(["End Step"])
N_ContaineronFlatCar_Node0{"The system checks container
processing results"}:::decision N_ContaineronFlatCar_Node0_action["If containers are found, processing
continues with next container,
otherwise container processing
completes for current equipment"]:::main N_ContaineronFlatCar_Node0 -- Yes --> N_ContaineronFlatCar_Node0_action N_ContaineronFlatCar_Node0_action --> E_ContaineronFlatCar S_ContaineronFlatCar --> N_ContaineronFlatCar_Node0 N_ContaineronFlatCar_Node0 -- No --> E_ContaineronFlatCar
processing results"}:::decision N_ContaineronFlatCar_Node0_action["If containers are found, processing
continues with next container,
otherwise container processing
completes for current equipment"]:::main N_ContaineronFlatCar_Node0 -- Yes --> N_ContaineronFlatCar_Node0_action N_ContaineronFlatCar_Node0_action --> E_ContaineronFlatCar S_ContaineronFlatCar --> N_ContaineronFlatCar_Node0 N_ContaineronFlatCar_Node0 -- No --> E_ContaineronFlatCar
File: GCX003.cbl
GIVEN:
Container retrieval processing has been attempted
WHEN:
The system checks container processing results
THEN:
If containers are found, processing continues with next container, otherwise container processing completes for current equipment
β Consolidated Acceptance Criteria
- The system prepares for next equipment item → equipment index is incremented and new report index is advanced for next equipment processing cycle
- The system prepares to process the next equipment item → the system must increment the equipment index REQ-IDX by 1 to move to the next equipment item
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementEquipmentIndex(["Start Step"])
E_IncrementEquipmentIndex(["End Step"])
N_IncrementEquipmentIndex_Node0{"The system prepares for next
equipment item"}:::decision N_IncrementEquipmentIndex_Node0_action["Equipment index is incremented and
new report index is advanced for
next equipment processing cycle"]:::main N_IncrementEquipmentIndex_Node0 -- Yes --> N_IncrementEquipmentIndex_Node0_action N_IncrementEquipmentIndex_Node0_action --> E_IncrementEquipmentIndex S_IncrementEquipmentIndex --> N_IncrementEquipmentIndex_Node0 N_IncrementEquipmentIndex_Node1{"The system prepares to process the
next equipment item"}:::decision N_IncrementEquipmentIndex_Node1_action["The system must increment the
equipment index REQ-IDX by 1 to move
to the next equipment item"]:::main N_IncrementEquipmentIndex_Node1 -- Yes --> N_IncrementEquipmentIndex_Node1_action N_IncrementEquipmentIndex_Node1_action --> E_IncrementEquipmentIndex N_IncrementEquipmentIndex_Node0 -- No --> N_IncrementEquipmentIndex_Node1 N_IncrementEquipmentIndex_Node1 -- No --> E_IncrementEquipmentIndex
equipment item"}:::decision N_IncrementEquipmentIndex_Node0_action["Equipment index is incremented and
new report index is advanced for
next equipment processing cycle"]:::main N_IncrementEquipmentIndex_Node0 -- Yes --> N_IncrementEquipmentIndex_Node0_action N_IncrementEquipmentIndex_Node0_action --> E_IncrementEquipmentIndex S_IncrementEquipmentIndex --> N_IncrementEquipmentIndex_Node0 N_IncrementEquipmentIndex_Node1{"The system prepares to process the
next equipment item"}:::decision N_IncrementEquipmentIndex_Node1_action["The system must increment the
equipment index REQ-IDX by 1 to move
to the next equipment item"]:::main N_IncrementEquipmentIndex_Node1 -- Yes --> N_IncrementEquipmentIndex_Node1_action N_IncrementEquipmentIndex_Node1_action --> E_IncrementEquipmentIndex N_IncrementEquipmentIndex_Node0 -- No --> N_IncrementEquipmentIndex_Node1 N_IncrementEquipmentIndex_Node1 -- No --> E_IncrementEquipmentIndex
File: GCX003.cbl
GIVEN:
Current equipment processing has completed (successful or with errors)
WHEN:
The system prepares for next equipment item
THEN:
- Equipment index is incremented
- New report index is advanced for next equipment processing cycle
File: GCX003.cbl
GIVEN:
Processing of the current equipment item is complete
WHEN:
The system prepares to process the next equipment item
THEN:
The system must increment the equipment index REQ-IDX by 1 to move to the next equipment item
β Consolidated Acceptance Criteria
- The cargo is classified as empty residue (88-GCUSRT-M1109-EMPTY-RESIDUE) → skip all error message generation and exit the error processing routine
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EmptyResidueCargo(["Start Step"])
E_EmptyResidueCargo(["End Step"])
N_EmptyResidueCargo_Node0{"The cargo is classified as empty
residue
88-GCUSRT-M1109-EMPTY-RESIDUE"}:::decision N_EmptyResidueCargo_Node0_action["Skip all error message generation
and exit the error processing
routine"]:::main N_EmptyResidueCargo_Node0 -- Yes --> N_EmptyResidueCargo_Node0_action N_EmptyResidueCargo_Node0_action --> E_EmptyResidueCargo S_EmptyResidueCargo --> N_EmptyResidueCargo_Node0 N_EmptyResidueCargo_Node0 -- No --> E_EmptyResidueCargo
residue
88-GCUSRT-M1109-EMPTY-RESIDUE"}:::decision N_EmptyResidueCargo_Node0_action["Skip all error message generation
and exit the error processing
routine"]:::main N_EmptyResidueCargo_Node0 -- Yes --> N_EmptyResidueCargo_Node0_action N_EmptyResidueCargo_Node0_action --> E_EmptyResidueCargo S_EmptyResidueCargo --> N_EmptyResidueCargo_Node0 N_EmptyResidueCargo_Node0 -- No --> E_EmptyResidueCargo
File: GCX003.cbl
GIVEN:
A cargo record exists for processing
WHEN:
The cargo is classified as empty residue (88-GCUSRT-M1109-EMPTY-RESIDUE)
THEN:
- Skip all error message generation
- Exit the error processing routine
β Consolidated Acceptance Criteria
- The equipment is marked as empty → skip error message generation and exit the error processing routine
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NoCargoFoundwithResidueWeight(["Start Step"])
E_NoCargoFoundwithResidueWeight(["End Step"])
N_NoCargoFoundwithResidueWeight_Node0{"The equipment is marked as empty"}:::decision
N_NoCargoFoundwithResidueWeight_Node0_action["Skip error message generation and
exit the error processing routine"]:::main N_NoCargoFoundwithResidueWeight_Node0 -- Yes --> N_NoCargoFoundwithResidueWeight_Node0_action N_NoCargoFoundwithResidueWeight_Node0_action --> E_NoCargoFoundwithResidueWeight S_NoCargoFoundwithResidueWeight --> N_NoCargoFoundwithResidueWeight_Node0 N_NoCargoFoundwithResidueWeight_Node0 -- No --> E_NoCargoFoundwithResidueWeight
exit the error processing routine"]:::main N_NoCargoFoundwithResidueWeight_Node0 -- Yes --> N_NoCargoFoundwithResidueWeight_Node0_action N_NoCargoFoundwithResidueWeight_Node0_action --> E_NoCargoFoundwithResidueWeight S_NoCargoFoundwithResidueWeight --> N_NoCargoFoundwithResidueWeight_Node0 N_NoCargoFoundwithResidueWeight_Node0 -- No --> E_NoCargoFoundwithResidueWeight
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
No cargo is found for the equipment AND residue weight is greater than 0 AND emergency response code is not found OR emergency response weight threshold is less than or equal to 7
WHEN:
The equipment is marked as empty
THEN:
- Skip error message generation
- Exit the error processing routine
β Consolidated Acceptance Criteria
- The origin-destination country codes are NOT 'CAMX' or 'MXCA' → generate message 27 (empty equipment warning)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EmptyEquipmentwithCountryCodesCAMXMXCA(["Start Step"])
E_EmptyEquipmentwithCountryCodesCAMXMXCA(["End Step"])
N_EmptyEquipmentwithCountryCodesCAMXMXCA_Node0{"The origin-destination country
codes are NOT CAMX or MXCA"}:::decision N_EmptyEquipmentwithCountryCodesCAMXMXCA_Node0_action["Generate message 27 empty equipment
warning"]:::main N_EmptyEquipmentwithCountryCodesCAMXMXCA_Node0 -- Yes --> N_EmptyEquipmentwithCountryCodesCAMXMXCA_Node0_action N_EmptyEquipmentwithCountryCodesCAMXMXCA_Node0_action --> E_EmptyEquipmentwithCountryCodesCAMXMXCA S_EmptyEquipmentwithCountryCodesCAMXMXCA --> N_EmptyEquipmentwithCountryCodesCAMXMXCA_Node0 N_EmptyEquipmentwithCountryCodesCAMXMXCA_Node0 -- No --> E_EmptyEquipmentwithCountryCodesCAMXMXCA
codes are NOT CAMX or MXCA"}:::decision N_EmptyEquipmentwithCountryCodesCAMXMXCA_Node0_action["Generate message 27 empty equipment
warning"]:::main N_EmptyEquipmentwithCountryCodesCAMXMXCA_Node0 -- Yes --> N_EmptyEquipmentwithCountryCodesCAMXMXCA_Node0_action N_EmptyEquipmentwithCountryCodesCAMXMXCA_Node0_action --> E_EmptyEquipmentwithCountryCodesCAMXMXCA S_EmptyEquipmentwithCountryCodesCAMXMXCA --> N_EmptyEquipmentwithCountryCodesCAMXMXCA_Node0 N_EmptyEquipmentwithCountryCodesCAMXMXCA_Node0 -- No --> E_EmptyEquipmentwithCountryCodesCAMXMXCA
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is found AND cargo type is empty equipment (88-GCUSRT-M1109-EMPTY-EQUIP)
WHEN:
The origin-destination country codes are NOT 'CAMX' or 'MXCA'
THEN:
Generate message 27 (empty equipment warning)
β Consolidated Acceptance Criteria
- The cargo does NOT have special manifest original designation → execute Crowley process logic (B525-CROWLEY-PROCESS)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ITBondTypeFound(["Start Step"])
E_ITBondTypeFound(["End Step"])
N_ITBondTypeFound_Node0{"The cargo does NOT have special
manifest original designation"}:::decision N_ITBondTypeFound_Node0_action["Execute Crowley process logic
B525-CROWLEY-PROCESS"]:::main N_ITBondTypeFound_Node0 -- Yes --> N_ITBondTypeFound_Node0_action N_ITBondTypeFound_Node0_action --> E_ITBondTypeFound S_ITBondTypeFound --> N_ITBondTypeFound_Node0 N_ITBondTypeFound_Node0 -- No --> E_ITBondTypeFound
manifest original designation"}:::decision N_ITBondTypeFound_Node0_action["Execute Crowley process logic
B525-CROWLEY-PROCESS"]:::main N_ITBondTypeFound_Node0 -- Yes --> N_ITBondTypeFound_Node0_action N_ITBondTypeFound_Node0_action --> E_ITBondTypeFound S_ITBondTypeFound --> N_ITBondTypeFound_Node0 N_ITBondTypeFound_Node0 -- No --> E_ITBondTypeFound
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is found AND bond type is 'IT' (in-transit)
WHEN:
The cargo does NOT have special manifest original designation
THEN:
Execute Crowley process logic (B525-CROWLEY-PROCESS)
β Consolidated Acceptance Criteria
- The crossing port is Woburn-PQ station → continue processing without generating error messages
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpecialManifestatWoburnPQStation(["Start Step"])
E_SpecialManifestatWoburnPQStation(["End Step"])
N_SpecialManifestatWoburnPQStation_Node0{"The crossing port is Woburn-PQ
station"}:::decision N_SpecialManifestatWoburnPQStation_Node0_action["Continue processing without
generating error messages"]:::main N_SpecialManifestatWoburnPQStation_Node0 -- Yes --> N_SpecialManifestatWoburnPQStation_Node0_action N_SpecialManifestatWoburnPQStation_Node0_action --> E_SpecialManifestatWoburnPQStation S_SpecialManifestatWoburnPQStation --> N_SpecialManifestatWoburnPQStation_Node0 N_SpecialManifestatWoburnPQStation_Node0 -- No --> E_SpecialManifestatWoburnPQStation
station"}:::decision N_SpecialManifestatWoburnPQStation_Node0_action["Continue processing without
generating error messages"]:::main N_SpecialManifestatWoburnPQStation_Node0 -- Yes --> N_SpecialManifestatWoburnPQStation_Node0_action N_SpecialManifestatWoburnPQStation_Node0_action --> E_SpecialManifestatWoburnPQStation S_SpecialManifestatWoburnPQStation --> N_SpecialManifestatWoburnPQStation_Node0 N_SpecialManifestatWoburnPQStation_Node0 -- No --> E_SpecialManifestatWoburnPQStation
File: GCX003.cbl
GIVEN:
Waybill is found AND cargo is found AND cargo has special manifest original designation
WHEN:
The crossing port is Woburn-PQ station
THEN:
Continue processing without generating error messages
β Consolidated Acceptance Criteria
- The crossing port is NOT Woburn-PQ station → continue processing without generating error messages
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpecialManifestSpecialType(["Start Step"])
E_SpecialManifestSpecialType(["End Step"])
N_SpecialManifestSpecialType_Node0{"The crossing port is NOT Woburn-PQ
station"}:::decision N_SpecialManifestSpecialType_Node0_action["Continue processing without
generating error messages"]:::main N_SpecialManifestSpecialType_Node0 -- Yes --> N_SpecialManifestSpecialType_Node0_action N_SpecialManifestSpecialType_Node0_action --> E_SpecialManifestSpecialType S_SpecialManifestSpecialType --> N_SpecialManifestSpecialType_Node0 N_SpecialManifestSpecialType_Node0 -- No --> E_SpecialManifestSpecialType
station"}:::decision N_SpecialManifestSpecialType_Node0_action["Continue processing without
generating error messages"]:::main N_SpecialManifestSpecialType_Node0 -- Yes --> N_SpecialManifestSpecialType_Node0_action N_SpecialManifestSpecialType_Node0_action --> E_SpecialManifestSpecialType S_SpecialManifestSpecialType --> N_SpecialManifestSpecialType_Node0 N_SpecialManifestSpecialType_Node0 -- No --> E_SpecialManifestSpecialType
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Waybill is found AND cargo is found AND cargo has special manifest special designation
WHEN:
The crossing port is NOT Woburn-PQ station
THEN:
Continue processing without generating error messages
β Consolidated Acceptance Criteria
- The crossing port is Laredo TX station → set the special TR found flag to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_USCANUSBondwithSpecialTR(["Start Step"])
E_USCANUSBondwithSpecialTR(["End Step"])
N_USCANUSBondwithSpecialTR_Node0{"The crossing port is Laredo TX
station"}:::decision N_USCANUSBondwithSpecialTR_Node0_action["Set the special TR found flag to
true"]:::main N_USCANUSBondwithSpecialTR_Node0 -- Yes --> N_USCANUSBondwithSpecialTR_Node0_action N_USCANUSBondwithSpecialTR_Node0_action --> E_USCANUSBondwithSpecialTR S_USCANUSBondwithSpecialTR --> N_USCANUSBondwithSpecialTR_Node0 N_USCANUSBondwithSpecialTR_Node0 -- No --> E_USCANUSBondwithSpecialTR
station"}:::decision N_USCANUSBondwithSpecialTR_Node0_action["Set the special TR found flag to
true"]:::main N_USCANUSBondwithSpecialTR_Node0 -- Yes --> N_USCANUSBondwithSpecialTR_Node0_action N_USCANUSBondwithSpecialTR_Node0_action --> E_USCANUSBondwithSpecialTR S_USCANUSBondwithSpecialTR --> N_USCANUSBondwithSpecialTR_Node0 N_USCANUSBondwithSpecialTR_Node0 -- No --> E_USCANUSBondwithSpecialTR
File: GCX003.cbl
GIVEN:
Waybill is found AND cargo is found AND bond type is US-Canada-US (88-GCUSRT-M1201-US-CAN-US) AND cargo has special TR designation
WHEN:
The crossing port is Laredo TX station
THEN:
Set the special TR found flag to true
β Consolidated Acceptance Criteria
- Processing the cargo record → set the US-Mexico 88 found flag to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExportBondwithSpecial88(["Start Step"])
E_ExportBondwithSpecial88(["End Step"])
N_ExportBondwithSpecial88_Node0{"Processing the cargo record"}:::decision
N_ExportBondwithSpecial88_Node0_action["Set the US-Mexico 88 found flag to
true"]:::main N_ExportBondwithSpecial88_Node0 -- Yes --> N_ExportBondwithSpecial88_Node0_action N_ExportBondwithSpecial88_Node0_action --> E_ExportBondwithSpecial88 S_ExportBondwithSpecial88 --> N_ExportBondwithSpecial88_Node0 N_ExportBondwithSpecial88_Node0 -- No --> E_ExportBondwithSpecial88
true"]:::main N_ExportBondwithSpecial88_Node0 -- Yes --> N_ExportBondwithSpecial88_Node0_action N_ExportBondwithSpecial88_Node0_action --> E_ExportBondwithSpecial88 S_ExportBondwithSpecial88 --> N_ExportBondwithSpecial88_Node0 N_ExportBondwithSpecial88_Node0 -- No --> E_ExportBondwithSpecial88
File: GCX003.cbl
GIVEN:
Waybill is found AND cargo is found AND bond type is export (88-GCUSRT-M1109-EXPORT) AND cargo has special 88 designation
WHEN:
Processing the cargo record
THEN:
Set the US-Mexico 88 found flag to true
β Consolidated Acceptance Criteria
- The crossing port is NOT Laredo TX station → execute US-Mexico export detour process (B550-DETOUR-PROCESS)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExportBondwithoutSpecial88(["Start Step"])
E_ExportBondwithoutSpecial88(["End Step"])
N_ExportBondwithoutSpecial88_Node0{"The crossing port is NOT Laredo TX
station"}:::decision N_ExportBondwithoutSpecial88_Node0_action["Execute US-Mexico export detour
process B550-DETOUR-PROCESS"]:::main N_ExportBondwithoutSpecial88_Node0 -- Yes --> N_ExportBondwithoutSpecial88_Node0_action N_ExportBondwithoutSpecial88_Node0_action --> E_ExportBondwithoutSpecial88 S_ExportBondwithoutSpecial88 --> N_ExportBondwithoutSpecial88_Node0 N_ExportBondwithoutSpecial88_Node0 -- No --> E_ExportBondwithoutSpecial88
station"}:::decision N_ExportBondwithoutSpecial88_Node0_action["Execute US-Mexico export detour
process B550-DETOUR-PROCESS"]:::main N_ExportBondwithoutSpecial88_Node0 -- Yes --> N_ExportBondwithoutSpecial88_Node0_action N_ExportBondwithoutSpecial88_Node0_action --> E_ExportBondwithoutSpecial88 S_ExportBondwithoutSpecial88 --> N_ExportBondwithoutSpecial88_Node0 N_ExportBondwithoutSpecial88_Node0 -- No --> E_ExportBondwithoutSpecial88
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Waybill is found AND cargo is found AND bond type is export (88-GCUSRT-M1109-EXPORT) AND cargo does NOT have special 88 designation AND origin-destination country codes are 'USMX'
WHEN:
The crossing port is NOT Laredo TX station
THEN:
Execute US-Mexico export detour process (B550-DETOUR-PROCESS)
β Consolidated Acceptance Criteria
- Bond type is transport export:
- US-Canada-US (without special TR)
- default type AND specific cargo status conditions are met AND cargo is marked for IT creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoFoundwithVariousBondConditions(["Start Step"])
E_CargoFoundwithVariousBondConditions(["End Step"])
N_CargoFoundwithVariousBondConditions_Node0{"Bond type is transport export OR
US-Canada-US without special TR OR
default type AND specific cargo
status conditions are met AND cargo
is marked for IT creation"}:::decision N_CargoFoundwithVariousBondConditions_Node0_action["Execute appropriate detour
processing logic and set
corresponding creation flags"]:::main N_CargoFoundwithVariousBondConditions_Node0 -- Yes --> N_CargoFoundwithVariousBondConditions_Node0_action N_CargoFoundwithVariousBondConditions_Node0_action --> E_CargoFoundwithVariousBondConditions S_CargoFoundwithVariousBondConditions --> N_CargoFoundwithVariousBondConditions_Node0 N_CargoFoundwithVariousBondConditions_Node0 -- No --> E_CargoFoundwithVariousBondConditions
US-Canada-US without special TR OR
default type AND specific cargo
status conditions are met AND cargo
is marked for IT creation"}:::decision N_CargoFoundwithVariousBondConditions_Node0_action["Execute appropriate detour
processing logic and set
corresponding creation flags"]:::main N_CargoFoundwithVariousBondConditions_Node0 -- Yes --> N_CargoFoundwithVariousBondConditions_Node0_action N_CargoFoundwithVariousBondConditions_Node0_action --> E_CargoFoundwithVariousBondConditions S_CargoFoundwithVariousBondConditions --> N_CargoFoundwithVariousBondConditions_Node0 N_CargoFoundwithVariousBondConditions_Node0 -- No --> E_CargoFoundwithVariousBondConditions
File: GCX003.cbl
GIVEN:
Waybill is found AND cargo is found
WHEN:
- Bond type is transport export or us-canada-us (without special tr) or default type
- Specific cargo status conditions are met
- Cargo is marked for it creation
THEN:
- Execute appropriate detour processing logic
- Set corresponding creation flags
β Consolidated Acceptance Criteria
- Waybill is not found OR waybill is not found and container is not found → generate message 10 (waybill not found error)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WaybillNotFoundScenarios(["Start Step"])
E_WaybillNotFoundScenarios(["End Step"])
N_WaybillNotFoundScenarios_Node0{"Waybill is not found OR waybill is
not found and container is not found"}:::decision N_WaybillNotFoundScenarios_Node0_action["Generate message 10 waybill not
found error"]:::main N_WaybillNotFoundScenarios_Node0 -- Yes --> N_WaybillNotFoundScenarios_Node0_action N_WaybillNotFoundScenarios_Node0_action --> E_WaybillNotFoundScenarios S_WaybillNotFoundScenarios --> N_WaybillNotFoundScenarios_Node0 N_WaybillNotFoundScenarios_Node0 -- No --> E_WaybillNotFoundScenarios
not found and container is not found"}:::decision N_WaybillNotFoundScenarios_Node0_action["Generate message 10 waybill not
found error"]:::main N_WaybillNotFoundScenarios_Node0 -- Yes --> N_WaybillNotFoundScenarios_Node0_action N_WaybillNotFoundScenarios_Node0_action --> E_WaybillNotFoundScenarios S_WaybillNotFoundScenarios --> N_WaybillNotFoundScenarios_Node0 N_WaybillNotFoundScenarios_Node0 -- No --> E_WaybillNotFoundScenarios
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Container is not found AND equipment is marked as loaded AND equipment is not a special business unit van
WHEN:
- Waybill is not found or waybill is not found
- Container is not found
THEN:
Generate message 10 (waybill not found error)
β Consolidated Acceptance Criteria
- Container is not found OR container is found but load/empty indicator is 'L' → generate message 15 (no cargo found error) with waybill root key and date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WaybillFoundbutNoCargo(["Start Step"])
E_WaybillFoundbutNoCargo(["End Step"])
N_WaybillFoundbutNoCargo_Node0{"Container is not found OR container
is found but loadempty indicator is
L"}:::decision N_WaybillFoundbutNoCargo_Node0_action["Generate message 15 no cargo found
error with waybill root key and date"]:::main N_WaybillFoundbutNoCargo_Node0 -- Yes --> N_WaybillFoundbutNoCargo_Node0_action N_WaybillFoundbutNoCargo_Node0_action --> E_WaybillFoundbutNoCargo S_WaybillFoundbutNoCargo --> N_WaybillFoundbutNoCargo_Node0 N_WaybillFoundbutNoCargo_Node0 -- No --> E_WaybillFoundbutNoCargo
is found but loadempty indicator is
L"}:::decision N_WaybillFoundbutNoCargo_Node0_action["Generate message 15 no cargo found
error with waybill root key and date"]:::main N_WaybillFoundbutNoCargo_Node0 -- Yes --> N_WaybillFoundbutNoCargo_Node0_action N_WaybillFoundbutNoCargo_Node0_action --> E_WaybillFoundbutNoCargo S_WaybillFoundbutNoCargo --> N_WaybillFoundbutNoCargo_Node0 N_WaybillFoundbutNoCargo_Node0 -- No --> E_WaybillFoundbutNoCargo
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Waybill is found AND no cargo is found AND equipment is marked as loaded AND equipment is not a conveying car AND idler indicator is not 'I'
WHEN:
Container is not found OR container is found but load/empty indicator is 'L'
THEN:
- Generate message 15 (no cargo found error) with waybill root key
- Date
β Consolidated Acceptance Criteria
- Cargo status is pending (88-GCUSRT-RT10-CPCARGO-PENDING):
- deleted (88-GCUSRT-RT10-CPCARGO-DELETED)
- error (88-GCUSRT-RT10-CPCARGO-ERROR)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoStatusIssues(["Start Step"])
E_CargoStatusIssues(["End Step"])
N_CargoStatusIssues_Node0{"Cargo status is pending
88-GCUSRT-RT10-CPCARGO-PENDING OR
deleted
88-GCUSRT-RT10-CPCARGO-DELETED OR
error 88-GCUSRT-RT10-CPCARGO-ERROR"}:::decision N_CargoStatusIssues_Node0_action["Generate message 16 cargo status
error"]:::exclusion N_CargoStatusIssues_Node0 -- Yes -->|Alternative| N_CargoStatusIssues_Node0_action N_CargoStatusIssues_Node0_action --> E_CargoStatusIssues S_CargoStatusIssues --> N_CargoStatusIssues_Node0 N_CargoStatusIssues_Node0 -- No --> E_CargoStatusIssues
88-GCUSRT-RT10-CPCARGO-PENDING OR
deleted
88-GCUSRT-RT10-CPCARGO-DELETED OR
error 88-GCUSRT-RT10-CPCARGO-ERROR"}:::decision N_CargoStatusIssues_Node0_action["Generate message 16 cargo status
error"]:::exclusion N_CargoStatusIssues_Node0 -- Yes -->|Alternative| N_CargoStatusIssues_Node0_action N_CargoStatusIssues_Node0_action --> E_CargoStatusIssues S_CargoStatusIssues --> N_CargoStatusIssues_Node0 N_CargoStatusIssues_Node0 -- No --> E_CargoStatusIssues
File: GCX003.cbl
GIVEN:
Cargo is found
WHEN:
Cargo status is pending (88-GCUSRT-RT10-CPCARGO-PENDING) OR deleted (88-GCUSRT-RT10-CPCARGO-DELETED) OR error (88-GCUSRT-RT10-CPCARGO-ERROR)
THEN:
Generate message 16 (cargo status error)
β Consolidated Acceptance Criteria
- Cargo status description equals export status constant → generate message 12 (TR bond status error)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TRBondExportStatus(["Start Step"])
E_TRBondExportStatus(["End Step"])
N_TRBondExportStatus_Node0{"Cargo status description equals
export status constant"}:::decision N_TRBondExportStatus_Node0_action["Generate message 12 TR bond status
error"]:::main N_TRBondExportStatus_Node0 -- Yes --> N_TRBondExportStatus_Node0_action N_TRBondExportStatus_Node0_action --> E_TRBondExportStatus S_TRBondExportStatus --> N_TRBondExportStatus_Node0 N_TRBondExportStatus_Node0 -- No --> E_TRBondExportStatus
export status constant"}:::decision N_TRBondExportStatus_Node0_action["Generate message 12 TR bond status
error"]:::main N_TRBondExportStatus_Node0 -- Yes --> N_TRBondExportStatus_Node0_action N_TRBondExportStatus_Node0_action --> E_TRBondExportStatus S_TRBondExportStatus --> N_TRBondExportStatus_Node0 N_TRBondExportStatus_Node0 -- No --> E_TRBondExportStatus
File: GCX003.cbl
GIVEN:
Cargo is found AND bond type is 'TR' (transit)
WHEN:
Cargo status description equals export status constant
THEN:
Generate message 12 (TR bond status error)
β Consolidated Acceptance Criteria
- The crossing port station code equals the cargo location ID → generate message 25 (MT bond vessel error)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MTBondVesselIssues(["Start Step"])
E_MTBondVesselIssues(["End Step"])
N_MTBondVesselIssues_Node0{"The crossing port station code
equals the cargo location ID"}:::decision N_MTBondVesselIssues_Node0_action["Generate message 25 MT bond vessel
error"]:::main N_MTBondVesselIssues_Node0 -- Yes --> N_MTBondVesselIssues_Node0_action N_MTBondVesselIssues_Node0_action --> E_MTBondVesselIssues S_MTBondVesselIssues --> N_MTBondVesselIssues_Node0 N_MTBondVesselIssues_Node0 -- No --> E_MTBondVesselIssues
equals the cargo location ID"}:::decision N_MTBondVesselIssues_Node0_action["Generate message 25 MT bond vessel
error"]:::main N_MTBondVesselIssues_Node0 -- Yes --> N_MTBondVesselIssues_Node0_action N_MTBondVesselIssues_Node0_action --> E_MTBondVesselIssues S_MTBondVesselIssues --> N_MTBondVesselIssues_Node0 N_MTBondVesselIssues_Node0 -- No --> E_MTBondVesselIssues
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is found AND bond type is 'MT' (merchandise in transit) AND vessel name is not 'TRAIN' and not spaces
WHEN:
The crossing port station code equals the cargo location ID
THEN:
Generate message 25 (MT bond vessel error)
β Consolidated Acceptance Criteria
- Vessel name character 23 is 'T' → generate message 17 (TE bond vessel error)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TEBondVesselIssues(["Start Step"])
E_TEBondVesselIssues(["End Step"])
N_TEBondVesselIssues_Node0{"Vessel name character 23 is T"}:::decision
N_TEBondVesselIssues_Node0_action["Generate message 17 TE bond vessel
error"]:::main N_TEBondVesselIssues_Node0 -- Yes --> N_TEBondVesselIssues_Node0_action N_TEBondVesselIssues_Node0_action --> E_TEBondVesselIssues S_TEBondVesselIssues --> N_TEBondVesselIssues_Node0 N_TEBondVesselIssues_Node0 -- No --> E_TEBondVesselIssues
error"]:::main N_TEBondVesselIssues_Node0 -- Yes --> N_TEBondVesselIssues_Node0_action N_TEBondVesselIssues_Node0_action --> E_TEBondVesselIssues S_TEBondVesselIssues --> N_TEBondVesselIssues_Node0 N_TEBondVesselIssues_Node0 -- No --> E_TEBondVesselIssues
File: GCX003.cbl
GIVEN:
Cargo is found AND bond type is 'TE' (transport export)
WHEN:
Vessel name character 23 is 'T'
THEN:
Generate message 17 (TE bond vessel error)
β Consolidated Acceptance Criteria
- Vessel name is not 'TRAIN' → generate message 17 (non-train vessel error)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NonTrainVesselIssues(["Start Step"])
E_NonTrainVesselIssues(["End Step"])
N_NonTrainVesselIssues_Node0{"Vessel name is not TRAIN"}:::decision
N_NonTrainVesselIssues_Node0_action["Generate message 17 non-train
vessel error"]:::main N_NonTrainVesselIssues_Node0 -- Yes --> N_NonTrainVesselIssues_Node0_action N_NonTrainVesselIssues_Node0_action --> E_NonTrainVesselIssues S_NonTrainVesselIssues --> N_NonTrainVesselIssues_Node0 N_NonTrainVesselIssues_Node0 -- No --> E_NonTrainVesselIssues
vessel error"]:::main N_NonTrainVesselIssues_Node0 -- Yes --> N_NonTrainVesselIssues_Node0_action N_NonTrainVesselIssues_Node0_action --> E_NonTrainVesselIssues S_NonTrainVesselIssues --> N_NonTrainVesselIssues_Node0 N_NonTrainVesselIssues_Node0 -- No --> E_NonTrainVesselIssues
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is found AND bond type is NOT 'TE' and NOT 'MT'
WHEN:
Vessel name is not 'TRAIN'
THEN:
Generate message 17 (non-train vessel error)
β Consolidated Acceptance Criteria
- The crossing port is Laredo TX station → evaluate cargo hold status and border conditions to generate messages 46-52 (FEN not found, KCM not found, hold border, hold apply, hold border apply)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LaredoStationSpecificChecks(["Start Step"])
E_LaredoStationSpecificChecks(["End Step"])
N_LaredoStationSpecificChecks_Node0{"The crossing port is Laredo TX
station"}:::decision N_LaredoStationSpecificChecks_Node0_action["Evaluate cargo hold status and
border conditions to generate
messages 46-52 FEN not found, KCM
not found, hold border, hold apply,
hold border apply"]:::main N_LaredoStationSpecificChecks_Node0 -- Yes --> N_LaredoStationSpecificChecks_Node0_action N_LaredoStationSpecificChecks_Node0_action --> E_LaredoStationSpecificChecks S_LaredoStationSpecificChecks --> N_LaredoStationSpecificChecks_Node0 N_LaredoStationSpecificChecks_Node0 -- No --> E_LaredoStationSpecificChecks
station"}:::decision N_LaredoStationSpecificChecks_Node0_action["Evaluate cargo hold status and
border conditions to generate
messages 46-52 FEN not found, KCM
not found, hold border, hold apply,
hold border apply"]:::main N_LaredoStationSpecificChecks_Node0 -- Yes --> N_LaredoStationSpecificChecks_Node0_action N_LaredoStationSpecificChecks_Node0_action --> E_LaredoStationSpecificChecks S_LaredoStationSpecificChecks --> N_LaredoStationSpecificChecks_Node0 N_LaredoStationSpecificChecks_Node0 -- No --> E_LaredoStationSpecificChecks
File: GCX003.cbl
GIVEN:
Cargo is found
WHEN:
The crossing port is Laredo TX station
THEN:
- Evaluate cargo hold status
- Border conditions to generate messages 46-52 (fen not found, kcm not found, hold border, hold apply, hold border apply)
β Consolidated Acceptance Criteria
- Cargo location ID does not match the crossing port station code → execute TE bond detour processing (B551-DETOUR-FOR-TE-BOND)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TEBondPortChangeConditions(["Start Step"])
E_TEBondPortChangeConditions(["End Step"])
N_TEBondPortChangeConditions_Node0{"Cargo location ID does not match
the crossing port station code"}:::decision N_TEBondPortChangeConditions_Node0_action["Execute TE bond detour processing
B551-DETOUR-FOR-TE-BOND"]:::main N_TEBondPortChangeConditions_Node0 -- Yes --> N_TEBondPortChangeConditions_Node0_action N_TEBondPortChangeConditions_Node0_action --> E_TEBondPortChangeConditions S_TEBondPortChangeConditions --> N_TEBondPortChangeConditions_Node0 N_TEBondPortChangeConditions_Node0 -- No --> E_TEBondPortChangeConditions
the crossing port station code"}:::decision N_TEBondPortChangeConditions_Node0_action["Execute TE bond detour processing
B551-DETOUR-FOR-TE-BOND"]:::main N_TEBondPortChangeConditions_Node0 -- Yes --> N_TEBondPortChangeConditions_Node0_action N_TEBondPortChangeConditions_Node0_action --> E_TEBondPortChangeConditions S_TEBondPortChangeConditions --> N_TEBondPortChangeConditions_Node0 N_TEBondPortChangeConditions_Node0 -- No --> E_TEBondPortChangeConditions
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is found AND bond type is transport export AND cargo is not created for IT AND cargo status is not export AND cargo is billable as CPRS
WHEN:
Cargo location ID does not match the crossing port station code
THEN:
Execute TE bond detour processing (B551-DETOUR-FOR-TE-BOND)
β Consolidated Acceptance Criteria
- The system checks if TR has already been created for IT cargo by evaluating GCUSRT-TR-CREATED-FOR-IT field → if TR is already created (GCUSRT-TR-CREATED-FOR-IT = 'Y'), skip further IT bond processing and exit the Crowley process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsTRAlreadyCreatedforIT(["Start Step"])
E_IsTRAlreadyCreatedforIT(["End Step"])
N_IsTRAlreadyCreatedforIT_Node0{"The system checks if TR has already
been created for IT cargo by
evaluating GCUSRT-TR-CREATED-FOR-IT
field"}:::decision N_IsTRAlreadyCreatedforIT_Node0_action["If TR is already created
GCUSRT-TR-CREATED-FOR-IT Y , skip
further IT bond processing and exit
the Crowley process"]:::main N_IsTRAlreadyCreatedforIT_Node0 -- Yes --> N_IsTRAlreadyCreatedforIT_Node0_action N_IsTRAlreadyCreatedforIT_Node0_action --> E_IsTRAlreadyCreatedforIT S_IsTRAlreadyCreatedforIT --> N_IsTRAlreadyCreatedforIT_Node0 N_IsTRAlreadyCreatedforIT_Node0 -- No --> E_IsTRAlreadyCreatedforIT
been created for IT cargo by
evaluating GCUSRT-TR-CREATED-FOR-IT
field"}:::decision N_IsTRAlreadyCreatedforIT_Node0_action["If TR is already created
GCUSRT-TR-CREATED-FOR-IT Y , skip
further IT bond processing and exit
the Crowley process"]:::main N_IsTRAlreadyCreatedforIT_Node0 -- Yes --> N_IsTRAlreadyCreatedforIT_Node0_action N_IsTRAlreadyCreatedforIT_Node0_action --> E_IsTRAlreadyCreatedforIT S_IsTRAlreadyCreatedforIT --> N_IsTRAlreadyCreatedforIT_Node0 N_IsTRAlreadyCreatedforIT_Node0 -- No --> E_IsTRAlreadyCreatedforIT
File: GCX003.cbl
GIVEN:
An IT bond cargo record exists in the system
WHEN:
The system checks if TR has already been created for IT cargo by evaluating GCUSRT-TR-CREATED-FOR-IT field
THEN:
- If tr is already created (gcusrt-tr-created-for-it = 'y'), skip further it bond processing
- Exit the crowley process
β Consolidated Acceptance Criteria
- If the request action type (REQ-ACTION-SEND) → if request action is SEND, proceed to check user authorization for special manifests; if request action is REPORT, generate report message MSG-24
- The request action is not SEND → skip the cargo attachment process and exit
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsRequestActionSEND(["Start Step"])
E_IsRequestActionSEND(["End Step"])
N_IsRequestActionSEND_Node0{"The system evaluates the request
action type REQ-ACTION-SEND"}:::decision N_IsRequestActionSEND_Node0_action["If request action is SEND, proceed
to check user authorization for
special manifests if request action
is REPORT, generate report message
MSG-24"]:::main N_IsRequestActionSEND_Node0 -- Yes --> N_IsRequestActionSEND_Node0_action N_IsRequestActionSEND_Node0_action --> E_IsRequestActionSEND S_IsRequestActionSEND --> N_IsRequestActionSEND_Node0 N_IsRequestActionSEND_Node1{"The request action is not SEND"}:::decision N_IsRequestActionSEND_Node1_action["Skip the cargo attachment process
and exit"]:::main N_IsRequestActionSEND_Node1 -- Yes --> N_IsRequestActionSEND_Node1_action N_IsRequestActionSEND_Node1_action --> E_IsRequestActionSEND N_IsRequestActionSEND_Node0 -- No --> N_IsRequestActionSEND_Node1 N_IsRequestActionSEND_Node1 -- No --> E_IsRequestActionSEND
action type REQ-ACTION-SEND"}:::decision N_IsRequestActionSEND_Node0_action["If request action is SEND, proceed
to check user authorization for
special manifests if request action
is REPORT, generate report message
MSG-24"]:::main N_IsRequestActionSEND_Node0 -- Yes --> N_IsRequestActionSEND_Node0_action N_IsRequestActionSEND_Node0_action --> E_IsRequestActionSEND S_IsRequestActionSEND --> N_IsRequestActionSEND_Node0 N_IsRequestActionSEND_Node1{"The request action is not SEND"}:::decision N_IsRequestActionSEND_Node1_action["Skip the cargo attachment process
and exit"]:::main N_IsRequestActionSEND_Node1 -- Yes --> N_IsRequestActionSEND_Node1_action N_IsRequestActionSEND_Node1_action --> E_IsRequestActionSEND N_IsRequestActionSEND_Node0 -- No --> N_IsRequestActionSEND_Node1 N_IsRequestActionSEND_Node1 -- No --> E_IsRequestActionSEND
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
An IT bond cargo requires processing and TR has not been created
WHEN:
The system evaluates the request action type (REQ-ACTION-SEND)
THEN:
If request action is SEND, proceed to check user authorization for special manifests; if request action is REPORT, generate report message MSG-24
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo attachment process is initiated
WHEN:
The request action is not SEND
THEN:
- Skip the cargo attachment process
- Exit
β Consolidated Acceptance Criteria
- The system checks user authorization status (WS-USER-NOT-AUTH-4-SPCL-MANIF) → if user is not authorized for special manifests, generate authorization error MSG-43; if user is authorized, proceed to create IT export special manifest MSG-23
- The system checks user's UTF-SPEC-MANI permission for special manifest authorization → if user does not have 'S' authorization AND it is not an AEI train send request, then set user not authorized for special manifest flag
- The system checks user authorization flag (WS-USER-NOT-AUTH-4-SPCL-MANIF) → if user is not authorized, generate authorization error message (43), otherwise proceed with special manifest creation
- The system checks the user's special manifest authorization status → the system determines if the user is authorized to proceed with special manifest creation or should be denied
- The system checks user authorization for special manifests → if user is not authorized, generate authorization error message (Message 43) and add to report; if authorized, proceed with port change notification
- The system checks if the user is authorized for special manifests AND the request is not an AEI train send → if user is not authorized for special manifests, generate authorization error message 43
- The request type equals the AEI request type constant → set AEI train send flag to YES and bypass special manifest authorization checks
- The system checks if user is authorized for special manifest creation → if user is not authorized for special manifests, generate error message 43 for unauthorized access; if authorized, proceed with special manifest creation
- The system checks user authorization for special manifests → the system should proceed with special manifest creation if authorized, otherwise generate an authorization error
- The user is not authorized for special manifests → the system should generate authorization error message 43 instead of creating the special manifest
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UserAuthorizedforSpecialManifests(["Start Step"])
E_UserAuthorizedforSpecialManifests(["End Step"])
N_UserAuthorizedforSpecialManifests_Node0{"The system checks user
authorization status
WS-USER-NOT-AUTH-4-SPCL-MANIF"}:::decision N_UserAuthorizedforSpecialManifests_Node0_action["If user is not authorized for
special manifests, generate
authorization error MSG-43 if user
is authorized, proceed to create IT
export special manifest MSG-23"]:::main N_UserAuthorizedforSpecialManifests_Node0 -- Yes --> N_UserAuthorizedforSpecialManifests_Node0_action N_UserAuthorizedforSpecialManifests_Node0_action --> E_UserAuthorizedforSpecialManifests S_UserAuthorizedforSpecialManifests --> N_UserAuthorizedforSpecialManifests_Node0 N_UserAuthorizedforSpecialManifests_Node1{"The system checks user s
UTF-SPEC-MANI permission for special
manifest authorization"}:::decision N_UserAuthorizedforSpecialManifests_Node1_action["If user does not have S
authorization AND it is not an AEI
train send request, then set user
not authorized for special manifest
flag"]:::main N_UserAuthorizedforSpecialManifests_Node1 -- Yes --> N_UserAuthorizedforSpecialManifests_Node1_action N_UserAuthorizedforSpecialManifests_Node1_action --> E_UserAuthorizedforSpecialManifests N_UserAuthorizedforSpecialManifests_Node0 -- No --> N_UserAuthorizedforSpecialManifests_Node1 N_UserAuthorizedforSpecialManifests_Node2{"The system checks user
authorization flag
WS-USER-NOT-AUTH-4-SPCL-MANIF"}:::decision N_UserAuthorizedforSpecialManifests_Node2_action["If user is not authorized, generate
authorization error message 43,
otherwise proceed with special
manifest creation"]:::main N_UserAuthorizedforSpecialManifests_Node2 -- Yes --> N_UserAuthorizedforSpecialManifests_Node2_action N_UserAuthorizedforSpecialManifests_Node2_action --> E_UserAuthorizedforSpecialManifests N_UserAuthorizedforSpecialManifests_Node1 -- No --> N_UserAuthorizedforSpecialManifests_Node2 N_UserAuthorizedforSpecialManifests_Node3{"The system checks the user s
special manifest authorization
status"}:::decision N_UserAuthorizedforSpecialManifests_Node3_action["The system determines if the user
is authorized to proceed with
special manifest creation or should
be denied"]:::main N_UserAuthorizedforSpecialManifests_Node3 -- Yes --> N_UserAuthorizedforSpecialManifests_Node3_action N_UserAuthorizedforSpecialManifests_Node3_action --> E_UserAuthorizedforSpecialManifests N_UserAuthorizedforSpecialManifests_Node2 -- No --> N_UserAuthorizedforSpecialManifests_Node3 N_UserAuthorizedforSpecialManifests_Node4{"The system checks user
authorization for special manifests"}:::decision N_UserAuthorizedforSpecialManifests_Node4_action["If user is not authorized, generate
authorization error message Message
43 and add to report if authorized,
proceed with port change
notification"]:::main N_UserAuthorizedforSpecialManifests_Node4 -- Yes --> N_UserAuthorizedforSpecialManifests_Node4_action N_UserAuthorizedforSpecialManifests_Node4_action --> E_UserAuthorizedforSpecialManifests N_UserAuthorizedforSpecialManifests_Node3 -- No --> N_UserAuthorizedforSpecialManifests_Node4 N_UserAuthorizedforSpecialManifests_Node5{"The system checks if the user is
authorized for special manifests AND
the request is not an AEI train send"}:::decision N_UserAuthorizedforSpecialManifests_Node5_action["If user is not authorized for
special manifests, generate
authorization error message 43"]:::main N_UserAuthorizedforSpecialManifests_Node5 -- Yes --> N_UserAuthorizedforSpecialManifests_Node5_action N_UserAuthorizedforSpecialManifests_Node5_action --> E_UserAuthorizedforSpecialManifests N_UserAuthorizedforSpecialManifests_Node4 -- No --> N_UserAuthorizedforSpecialManifests_Node5 N_UserAuthorizedforSpecialManifests_Node6{"The request type equals the AEI
request type constant"}:::decision N_UserAuthorizedforSpecialManifests_Node6_action["Set AEI train send flag to YES and
bypass special manifest
authorization checks"]:::main N_UserAuthorizedforSpecialManifests_Node6 -- Yes --> N_UserAuthorizedforSpecialManifests_Node6_action N_UserAuthorizedforSpecialManifests_Node6_action --> E_UserAuthorizedforSpecialManifests N_UserAuthorizedforSpecialManifests_Node5 -- No --> N_UserAuthorizedforSpecialManifests_Node6 N_UserAuthorizedforSpecialManifests_Node7{"The system checks if user is
authorized for special manifest
creation"}:::decision N_UserAuthorizedforSpecialManifests_Node7_action["If user is not authorized for
special manifests, generate error
message 43 for unauthorized access
if authorized, proceed with special
manifest creation"]:::main N_UserAuthorizedforSpecialManifests_Node7 -- Yes --> N_UserAuthorizedforSpecialManifests_Node7_action N_UserAuthorizedforSpecialManifests_Node7_action --> E_UserAuthorizedforSpecialManifests N_UserAuthorizedforSpecialManifests_Node6 -- No --> N_UserAuthorizedforSpecialManifests_Node7 N_UserAuthorizedforSpecialManifests_Node8{"The system checks user
authorization for special manifests"}:::decision N_UserAuthorizedforSpecialManifests_Node8_action["The system should proceed with
special manifest creation if
authorized, otherwise generate an
authorization error"]:::main N_UserAuthorizedforSpecialManifests_Node8 -- Yes --> N_UserAuthorizedforSpecialManifests_Node8_action N_UserAuthorizedforSpecialManifests_Node8_action --> E_UserAuthorizedforSpecialManifests N_UserAuthorizedforSpecialManifests_Node7 -- No --> N_UserAuthorizedforSpecialManifests_Node8 N_UserAuthorizedforSpecialManifests_Node9{"The user is not authorized for
special manifests"}:::decision N_UserAuthorizedforSpecialManifests_Node9_action["The system should generate
authorization error message 43
instead of creating the special
manifest"]:::main N_UserAuthorizedforSpecialManifests_Node9 -- Yes --> N_UserAuthorizedforSpecialManifests_Node9_action N_UserAuthorizedforSpecialManifests_Node9_action --> E_UserAuthorizedforSpecialManifests N_UserAuthorizedforSpecialManifests_Node8 -- No --> N_UserAuthorizedforSpecialManifests_Node9 N_UserAuthorizedforSpecialManifests_Node9 -- No --> E_UserAuthorizedforSpecialManifests
authorization status
WS-USER-NOT-AUTH-4-SPCL-MANIF"}:::decision N_UserAuthorizedforSpecialManifests_Node0_action["If user is not authorized for
special manifests, generate
authorization error MSG-43 if user
is authorized, proceed to create IT
export special manifest MSG-23"]:::main N_UserAuthorizedforSpecialManifests_Node0 -- Yes --> N_UserAuthorizedforSpecialManifests_Node0_action N_UserAuthorizedforSpecialManifests_Node0_action --> E_UserAuthorizedforSpecialManifests S_UserAuthorizedforSpecialManifests --> N_UserAuthorizedforSpecialManifests_Node0 N_UserAuthorizedforSpecialManifests_Node1{"The system checks user s
UTF-SPEC-MANI permission for special
manifest authorization"}:::decision N_UserAuthorizedforSpecialManifests_Node1_action["If user does not have S
authorization AND it is not an AEI
train send request, then set user
not authorized for special manifest
flag"]:::main N_UserAuthorizedforSpecialManifests_Node1 -- Yes --> N_UserAuthorizedforSpecialManifests_Node1_action N_UserAuthorizedforSpecialManifests_Node1_action --> E_UserAuthorizedforSpecialManifests N_UserAuthorizedforSpecialManifests_Node0 -- No --> N_UserAuthorizedforSpecialManifests_Node1 N_UserAuthorizedforSpecialManifests_Node2{"The system checks user
authorization flag
WS-USER-NOT-AUTH-4-SPCL-MANIF"}:::decision N_UserAuthorizedforSpecialManifests_Node2_action["If user is not authorized, generate
authorization error message 43,
otherwise proceed with special
manifest creation"]:::main N_UserAuthorizedforSpecialManifests_Node2 -- Yes --> N_UserAuthorizedforSpecialManifests_Node2_action N_UserAuthorizedforSpecialManifests_Node2_action --> E_UserAuthorizedforSpecialManifests N_UserAuthorizedforSpecialManifests_Node1 -- No --> N_UserAuthorizedforSpecialManifests_Node2 N_UserAuthorizedforSpecialManifests_Node3{"The system checks the user s
special manifest authorization
status"}:::decision N_UserAuthorizedforSpecialManifests_Node3_action["The system determines if the user
is authorized to proceed with
special manifest creation or should
be denied"]:::main N_UserAuthorizedforSpecialManifests_Node3 -- Yes --> N_UserAuthorizedforSpecialManifests_Node3_action N_UserAuthorizedforSpecialManifests_Node3_action --> E_UserAuthorizedforSpecialManifests N_UserAuthorizedforSpecialManifests_Node2 -- No --> N_UserAuthorizedforSpecialManifests_Node3 N_UserAuthorizedforSpecialManifests_Node4{"The system checks user
authorization for special manifests"}:::decision N_UserAuthorizedforSpecialManifests_Node4_action["If user is not authorized, generate
authorization error message Message
43 and add to report if authorized,
proceed with port change
notification"]:::main N_UserAuthorizedforSpecialManifests_Node4 -- Yes --> N_UserAuthorizedforSpecialManifests_Node4_action N_UserAuthorizedforSpecialManifests_Node4_action --> E_UserAuthorizedforSpecialManifests N_UserAuthorizedforSpecialManifests_Node3 -- No --> N_UserAuthorizedforSpecialManifests_Node4 N_UserAuthorizedforSpecialManifests_Node5{"The system checks if the user is
authorized for special manifests AND
the request is not an AEI train send"}:::decision N_UserAuthorizedforSpecialManifests_Node5_action["If user is not authorized for
special manifests, generate
authorization error message 43"]:::main N_UserAuthorizedforSpecialManifests_Node5 -- Yes --> N_UserAuthorizedforSpecialManifests_Node5_action N_UserAuthorizedforSpecialManifests_Node5_action --> E_UserAuthorizedforSpecialManifests N_UserAuthorizedforSpecialManifests_Node4 -- No --> N_UserAuthorizedforSpecialManifests_Node5 N_UserAuthorizedforSpecialManifests_Node6{"The request type equals the AEI
request type constant"}:::decision N_UserAuthorizedforSpecialManifests_Node6_action["Set AEI train send flag to YES and
bypass special manifest
authorization checks"]:::main N_UserAuthorizedforSpecialManifests_Node6 -- Yes --> N_UserAuthorizedforSpecialManifests_Node6_action N_UserAuthorizedforSpecialManifests_Node6_action --> E_UserAuthorizedforSpecialManifests N_UserAuthorizedforSpecialManifests_Node5 -- No --> N_UserAuthorizedforSpecialManifests_Node6 N_UserAuthorizedforSpecialManifests_Node7{"The system checks if user is
authorized for special manifest
creation"}:::decision N_UserAuthorizedforSpecialManifests_Node7_action["If user is not authorized for
special manifests, generate error
message 43 for unauthorized access
if authorized, proceed with special
manifest creation"]:::main N_UserAuthorizedforSpecialManifests_Node7 -- Yes --> N_UserAuthorizedforSpecialManifests_Node7_action N_UserAuthorizedforSpecialManifests_Node7_action --> E_UserAuthorizedforSpecialManifests N_UserAuthorizedforSpecialManifests_Node6 -- No --> N_UserAuthorizedforSpecialManifests_Node7 N_UserAuthorizedforSpecialManifests_Node8{"The system checks user
authorization for special manifests"}:::decision N_UserAuthorizedforSpecialManifests_Node8_action["The system should proceed with
special manifest creation if
authorized, otherwise generate an
authorization error"]:::main N_UserAuthorizedforSpecialManifests_Node8 -- Yes --> N_UserAuthorizedforSpecialManifests_Node8_action N_UserAuthorizedforSpecialManifests_Node8_action --> E_UserAuthorizedforSpecialManifests N_UserAuthorizedforSpecialManifests_Node7 -- No --> N_UserAuthorizedforSpecialManifests_Node8 N_UserAuthorizedforSpecialManifests_Node9{"The user is not authorized for
special manifests"}:::decision N_UserAuthorizedforSpecialManifests_Node9_action["The system should generate
authorization error message 43
instead of creating the special
manifest"]:::main N_UserAuthorizedforSpecialManifests_Node9 -- Yes --> N_UserAuthorizedforSpecialManifests_Node9_action N_UserAuthorizedforSpecialManifests_Node9_action --> E_UserAuthorizedforSpecialManifests N_UserAuthorizedforSpecialManifests_Node8 -- No --> N_UserAuthorizedforSpecialManifests_Node9 N_UserAuthorizedforSpecialManifests_Node9 -- No --> E_UserAuthorizedforSpecialManifests
File: GCX003.cbl
GIVEN:
A SEND request for IT bond cargo that requires special manifest creation
WHEN:
The system checks user authorization status (WS-USER-NOT-AUTH-4-SPCL-MANIF)
THEN:
If user is not authorized for special manifests, generate authorization error MSG-43; if user is authorized, proceed to create IT export special manifest MSG-23
File: GCX003.cbl
GIVEN:
A user has valid send permissions and no errors have occurred
WHEN:
The system checks user's UTF-SPEC-MANI permission for special manifest authorization
THEN:
- If user does not have 's' authorization
- It is not an aei train send request, then set user not authorized for special manifest flag
File: GCX003.cbl
GIVEN:
A SEND action is requested for IT bond processing
WHEN:
The system checks user authorization flag (WS-USER-NOT-AUTH-4-SPCL-MANIF)
THEN:
If user is not authorized, generate authorization error message (43), otherwise proceed with special manifest creation
File: GCX003.cbl
GIVEN:
Special manifest creation is required for the current operation
WHEN:
The system checks the user's special manifest authorization status
THEN:
The system determines if the user is authorized to proceed with special manifest creation or should be denied
File: GCX003.cbl
GIVEN:
A TE bond cargo requires port change processing and request action is SEND
WHEN:
The system checks user authorization for special manifests
THEN:
If user is not authorized, generate authorization error message (Message 43) and add to report; if authorized, proceed with port change notification
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A user is processing IT bond cargo that requires special manifest creation
WHEN:
- The system checks if the user is authorized for special manifests
- The request is not an aei train send
THEN:
If user is not authorized for special manifests, generate authorization error message 43
File: GCX003.cbl
GIVEN:
A train request is being processed
WHEN:
The request type equals the AEI request type constant
THEN:
- Set aei train send flag to yes
- Bypass special manifest authorization checks
File: GCX003.cbl
GIVEN:
A SEND request requires TR bond detour processing
WHEN:
The system checks if user is authorized for special manifest creation
THEN:
If user is not authorized for special manifests, generate error message 43 for unauthorized access; if authorized, proceed with special manifest creation
File: GCX003.cbl
GIVEN:
A US-US movement detour scenario exists and request action is SEND
WHEN:
The system checks user authorization for special manifests
THEN:
The system should proceed with special manifest creation if authorized, otherwise generate an authorization error
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A request action is SEND and IT cargo requires special manifest processing
WHEN:
The user is not authorized for special manifests
THEN:
The system should generate authorization error message 43 instead of creating the special manifest
β Consolidated Acceptance Criteria
- The system creates an IT export special manifest → generate message MSG-23, set IT export spawn flag (WS-IT-EXPORT-SPAWN), and call special manifest creation process (Z870-CREATE-SPECIAL-MANIFEST)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateITExportSpecialManifestMSG23(["Start Step"])
E_CreateITExportSpecialManifestMSG23(["End Step"])
N_CreateITExportSpecialManifestMSG23_Node0{"The system creates an IT export
special manifest"}:::decision N_CreateITExportSpecialManifestMSG23_Node0_action["Generate message MSG-23, set IT
export spawn flag
WS-IT-EXPORT-SPAWN, and call special
manifest creation process
Z870-CREATE-SPECIAL-MANIFEST"]:::main N_CreateITExportSpecialManifestMSG23_Node0 -- Yes --> N_CreateITExportSpecialManifestMSG23_Node0_action N_CreateITExportSpecialManifestMSG23_Node0_action --> E_CreateITExportSpecialManifestMSG23 S_CreateITExportSpecialManifestMSG23 --> N_CreateITExportSpecialManifestMSG23_Node0 N_CreateITExportSpecialManifestMSG23_Node0 -- No --> E_CreateITExportSpecialManifestMSG23
special manifest"}:::decision N_CreateITExportSpecialManifestMSG23_Node0_action["Generate message MSG-23, set IT
export spawn flag
WS-IT-EXPORT-SPAWN, and call special
manifest creation process
Z870-CREATE-SPECIAL-MANIFEST"]:::main N_CreateITExportSpecialManifestMSG23_Node0 -- Yes --> N_CreateITExportSpecialManifestMSG23_Node0_action N_CreateITExportSpecialManifestMSG23_Node0_action --> E_CreateITExportSpecialManifestMSG23 S_CreateITExportSpecialManifestMSG23 --> N_CreateITExportSpecialManifestMSG23_Node0 N_CreateITExportSpecialManifestMSG23_Node0 -- No --> E_CreateITExportSpecialManifestMSG23
File: GCX003.cbl
GIVEN:
A SEND request for IT bond cargo from an authorized user
WHEN:
The system creates an IT export special manifest
THEN:
Generate message MSG-23, set IT export spawn flag (WS-IT-EXPORT-SPAWN), and call special manifest creation process (Z870-CREATE-SPECIAL-MANIFEST)
β Consolidated Acceptance Criteria
- The system detects user is not authorized for special manifests (WS-USER-NOT-AUTH-4-SPCL-MANIF is true) → generate authorization error message MSG-43 and add it to the report without creating special manifest
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateAuthorizationErrorMSG43(["Start Step"])
E_GenerateAuthorizationErrorMSG43(["End Step"])
N_GenerateAuthorizationErrorMSG43_Node0{"The system detects user is not
authorized for special manifests
WS-USER-NOT-AUTH-4-SPCL-MANIF is
true"}:::decision N_GenerateAuthorizationErrorMSG43_Node0_action["Generate authorization error
message MSG-43 and add it to the
report without creating special
manifest"]:::main N_GenerateAuthorizationErrorMSG43_Node0 -- Yes --> N_GenerateAuthorizationErrorMSG43_Node0_action N_GenerateAuthorizationErrorMSG43_Node0_action --> E_GenerateAuthorizationErrorMSG43 S_GenerateAuthorizationErrorMSG43 --> N_GenerateAuthorizationErrorMSG43_Node0 N_GenerateAuthorizationErrorMSG43_Node0 -- No --> E_GenerateAuthorizationErrorMSG43
authorized for special manifests
WS-USER-NOT-AUTH-4-SPCL-MANIF is
true"}:::decision N_GenerateAuthorizationErrorMSG43_Node0_action["Generate authorization error
message MSG-43 and add it to the
report without creating special
manifest"]:::main N_GenerateAuthorizationErrorMSG43_Node0 -- Yes --> N_GenerateAuthorizationErrorMSG43_Node0_action N_GenerateAuthorizationErrorMSG43_Node0_action --> E_GenerateAuthorizationErrorMSG43 S_GenerateAuthorizationErrorMSG43 --> N_GenerateAuthorizationErrorMSG43_Node0 N_GenerateAuthorizationErrorMSG43_Node0 -- No --> E_GenerateAuthorizationErrorMSG43
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A SEND request for IT bond cargo from an unauthorized user
WHEN:
The system detects user is not authorized for special manifests (WS-USER-NOT-AUTH-4-SPCL-MANIF is true)
THEN:
- Generate authorization error message msg-43
- Add it to the report without creating special manifest
β Consolidated Acceptance Criteria
- The system processes a REPORT action for IT bond → generate report message MSG-24 and add it to the report without creating special manifest or spawn processes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateReportMessageMSG24(["Start Step"])
E_GenerateReportMessageMSG24(["End Step"])
N_GenerateReportMessageMSG24_Node0{"The system processes a REPORT
action for IT bond"}:::decision N_GenerateReportMessageMSG24_Node0_action["Generate report message MSG-24 and
add it to the report without
creating special manifest or spawn
processes"]:::main N_GenerateReportMessageMSG24_Node0 -- Yes --> N_GenerateReportMessageMSG24_Node0_action N_GenerateReportMessageMSG24_Node0_action --> E_GenerateReportMessageMSG24 S_GenerateReportMessageMSG24 --> N_GenerateReportMessageMSG24_Node0 N_GenerateReportMessageMSG24_Node0 -- No --> E_GenerateReportMessageMSG24
action for IT bond"}:::decision N_GenerateReportMessageMSG24_Node0_action["Generate report message MSG-24 and
add it to the report without
creating special manifest or spawn
processes"]:::main N_GenerateReportMessageMSG24_Node0 -- Yes --> N_GenerateReportMessageMSG24_Node0_action N_GenerateReportMessageMSG24_Node0_action --> E_GenerateReportMessageMSG24 S_GenerateReportMessageMSG24 --> N_GenerateReportMessageMSG24_Node0 N_GenerateReportMessageMSG24_Node0 -- No --> E_GenerateReportMessageMSG24
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
An IT bond cargo with REPORT action request and TR not already created
WHEN:
The system processes a REPORT action for IT bond
THEN:
- Generate report message msg-24
- Add it to the report without creating special manifest or spawn processes
β Consolidated Acceptance Criteria
- The request action is SEND and the system checks user authorization for special manifests → if the user is not authorized for special manifests, set MSG-43 unauthorized message and continue processing without creating the manifest
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckUserAuthorizationforSpecialManifests(["Start Step"])
E_CheckUserAuthorizationforSpecialManifests(["End Step"])
N_CheckUserAuthorizationforSpecialManifests_Node0{"The request action is SEND and the
system checks user authorization for
special manifests"}:::decision N_CheckUserAuthorizationforSpecialManifests_Node0_action["If the user is not authorized for
special manifests, set MSG-43
unauthorized message and continue
processing without creating the
manifest"]:::main N_CheckUserAuthorizationforSpecialManifests_Node0 -- Yes --> N_CheckUserAuthorizationforSpecialManifests_Node0_action N_CheckUserAuthorizationforSpecialManifests_Node0_action --> E_CheckUserAuthorizationforSpecialManifests S_CheckUserAuthorizationforSpecialManifests --> N_CheckUserAuthorizationforSpecialManifests_Node0 N_CheckUserAuthorizationforSpecialManifests_Node0 -- No --> E_CheckUserAuthorizationforSpecialManifests
system checks user authorization for
special manifests"}:::decision N_CheckUserAuthorizationforSpecialManifests_Node0_action["If the user is not authorized for
special manifests, set MSG-43
unauthorized message and continue
processing without creating the
manifest"]:::main N_CheckUserAuthorizationforSpecialManifests_Node0 -- Yes --> N_CheckUserAuthorizationforSpecialManifests_Node0_action N_CheckUserAuthorizationforSpecialManifests_Node0_action --> E_CheckUserAuthorizationforSpecialManifests S_CheckUserAuthorizationforSpecialManifests --> N_CheckUserAuthorizationforSpecialManifests_Node0 N_CheckUserAuthorizationforSpecialManifests_Node0 -- No --> E_CheckUserAuthorizationforSpecialManifests
File: GCX003.cbl
GIVEN:
A user is attempting to create an IT export special manifest for cargo with bond type 'IT' and special manifest original flag is set
WHEN:
- The request action is send
- The system checks user authorization for special manifests
THEN:
- If the user is not authorized for special manifests, set msg-43 unauthorized message
- Continue processing without creating the manifest
β Consolidated Acceptance Criteria
- The system checks if the cargo bond type is 'IT' and the special manifest original flag is not set → only proceed with IT export manifest creation if cargo bond type is 'IT' and special manifest original flag is not set, otherwise continue normal processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckCargoBondTypeIT(["Start Step"])
E_CheckCargoBondTypeIT(["End Step"])
N_CheckCargoBondTypeIT_Node0{"The system checks if the cargo bond
type is IT and the special manifest
original flag is not set"}:::decision N_CheckCargoBondTypeIT_Node0_action["Only proceed with IT export
manifest creation if cargo bond type
is IT and special manifest original
flag is not set, otherwise continue
normal processing"]:::main N_CheckCargoBondTypeIT_Node0 -- Yes --> N_CheckCargoBondTypeIT_Node0_action N_CheckCargoBondTypeIT_Node0_action --> E_CheckCargoBondTypeIT S_CheckCargoBondTypeIT --> N_CheckCargoBondTypeIT_Node0 N_CheckCargoBondTypeIT_Node0 -- No --> E_CheckCargoBondTypeIT
type is IT and the special manifest
original flag is not set"}:::decision N_CheckCargoBondTypeIT_Node0_action["Only proceed with IT export
manifest creation if cargo bond type
is IT and special manifest original
flag is not set, otherwise continue
normal processing"]:::main N_CheckCargoBondTypeIT_Node0 -- Yes --> N_CheckCargoBondTypeIT_Node0_action N_CheckCargoBondTypeIT_Node0_action --> E_CheckCargoBondTypeIT S_CheckCargoBondTypeIT --> N_CheckCargoBondTypeIT_Node0 N_CheckCargoBondTypeIT_Node0 -- No --> E_CheckCargoBondTypeIT
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is being processed for potential IT export special manifest creation
WHEN:
The system checks if the cargo bond type is 'IT' and the special manifest original flag is not set
THEN:
Only proceed with IT export manifest creation if cargo bond type is 'IT' and special manifest original flag is not set, otherwise continue normal processing
β Consolidated Acceptance Criteria
- The system checks the request action type → if request action is SEND and user is authorized, create MSG-23 and spawn special manifest; if request action is REPORT, create MSG-24 report-only message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckRequestActionSEND(["Start Step"])
E_CheckRequestActionSEND(["End Step"])
N_CheckRequestActionSEND_Node0{"The system checks the request
action type"}:::decision N_CheckRequestActionSEND_Node0_action["If request action is SEND and user
is authorized, create MSG-23 and
spawn special manifest if request
action is REPORT, create MSG-24
report-only message"]:::main N_CheckRequestActionSEND_Node0 -- Yes --> N_CheckRequestActionSEND_Node0_action N_CheckRequestActionSEND_Node0_action --> E_CheckRequestActionSEND S_CheckRequestActionSEND --> N_CheckRequestActionSEND_Node0 N_CheckRequestActionSEND_Node0 -- No --> E_CheckRequestActionSEND
action type"}:::decision N_CheckRequestActionSEND_Node0_action["If request action is SEND and user
is authorized, create MSG-23 and
spawn special manifest if request
action is REPORT, create MSG-24
report-only message"]:::main N_CheckRequestActionSEND_Node0 -- Yes --> N_CheckRequestActionSEND_Node0_action N_CheckRequestActionSEND_Node0_action --> E_CheckRequestActionSEND S_CheckRequestActionSEND --> N_CheckRequestActionSEND_Node0 N_CheckRequestActionSEND_Node0 -- No --> E_CheckRequestActionSEND
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
An IT export special manifest is being created for cargo with bond type 'IT' and special manifest original flag not set
WHEN:
The system checks the request action type
THEN:
- If request action is send
- User is authorized, create msg-23
- Spawn special manifest; if request action is report, create msg-24 report-only message
β Consolidated Acceptance Criteria
- The system creates the IT export special manifest → set MSG-23 message type, copy equipment line to report, add equipment to total count, set IT export spawn flag, initialize special manifest parameters with GCX101 IT export type, copy equipment ID, waybill number, waybill date, border codes, CCN from cargo record, origin/destination codes, and queue special manifest for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetITExportSpawnFlag(["Start Step"])
E_SetITExportSpawnFlag(["End Step"])
N_SetITExportSpawnFlag_Node0{"The system creates the IT export
special manifest"}:::decision N_SetITExportSpawnFlag_Node0_action["Set MSG-23 message type, copy
equipment line to report, add
equipment to total count, set IT
export spawn flag, initialize
special manifest parameters with
GCX101 IT export type, copy
equipment ID, waybill number,
waybill date, border codes, CCN from
cargo record, origindestination
codes, and queue special manifest
for processing"]:::main N_SetITExportSpawnFlag_Node0 -- Yes --> N_SetITExportSpawnFlag_Node0_action N_SetITExportSpawnFlag_Node0_action --> E_SetITExportSpawnFlag S_SetITExportSpawnFlag --> N_SetITExportSpawnFlag_Node0 N_SetITExportSpawnFlag_Node0 -- No --> E_SetITExportSpawnFlag
special manifest"}:::decision N_SetITExportSpawnFlag_Node0_action["Set MSG-23 message type, copy
equipment line to report, add
equipment to total count, set IT
export spawn flag, initialize
special manifest parameters with
GCX101 IT export type, copy
equipment ID, waybill number,
waybill date, border codes, CCN from
cargo record, origindestination
codes, and queue special manifest
for processing"]:::main N_SetITExportSpawnFlag_Node0 -- Yes --> N_SetITExportSpawnFlag_Node0_action N_SetITExportSpawnFlag_Node0_action --> E_SetITExportSpawnFlag S_SetITExportSpawnFlag --> N_SetITExportSpawnFlag_Node0 N_SetITExportSpawnFlag_Node0 -- No --> E_SetITExportSpawnFlag
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
User is authorized for special manifests, cargo bond type is 'IT', special manifest original flag is not set, and request action is SEND
WHEN:
The system creates the IT export special manifest
THEN:
Set MSG-23 message type, copy equipment line to report, add equipment to total count, set IT export spawn flag, initialize special manifest parameters with GCX101 IT export type, copy equipment ID, waybill number, waybill date, border codes, CCN from cargo record, origin/destination codes, and queue special manifest for processing
β Consolidated Acceptance Criteria
- The system checks SCAC access permission and the request is an AEI train request → access is granted even if SCAC access is invalid, but for non-AEI requests with invalid SCAC access, user access is denied and error message 14 is generated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckSCACAccessPermission(["Start Step"])
E_CheckSCACAccessPermission(["End Step"])
N_CheckSCACAccessPermission_Node0{"The system checks SCAC access
permission and the request is an AEI
train request"}:::decision N_CheckSCACAccessPermission_Node0_action["Access is granted even if SCAC
access is invalid, but for non-AEI
requests with invalid SCAC access,
user access is denied and error
message 14 is generated"]:::main N_CheckSCACAccessPermission_Node0 -- Yes --> N_CheckSCACAccessPermission_Node0_action N_CheckSCACAccessPermission_Node0_action --> E_CheckSCACAccessPermission S_CheckSCACAccessPermission --> N_CheckSCACAccessPermission_Node0 N_CheckSCACAccessPermission_Node0 -- No --> E_CheckSCACAccessPermission
permission and the request is an AEI
train request"}:::decision N_CheckSCACAccessPermission_Node0_action["Access is granted even if SCAC
access is invalid, but for non-AEI
requests with invalid SCAC access,
user access is denied and error
message 14 is generated"]:::main N_CheckSCACAccessPermission_Node0 -- Yes --> N_CheckSCACAccessPermission_Node0_action N_CheckSCACAccessPermission_Node0_action --> E_CheckSCACAccessPermission S_CheckSCACAccessPermission --> N_CheckSCACAccessPermission_Node0 N_CheckSCACAccessPermission_Node0 -- No --> E_CheckSCACAccessPermission
File: GCX003.cbl
GIVEN:
A user with ACF2 ID attempts to access train processing functionality
WHEN:
- The system checks scac access permission
- The request is an aei train request
THEN:
- Access is granted even if scac access is invalid, but for non-aei requests with invalid scac access, user access is denied
- Error message 14 is generated
β Consolidated Acceptance Criteria
- The system queries the user security table → if user profile is found, the profile data is loaded for further validation, otherwise processing continues with default permissions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveUserProfilefromSecurityTable(["Start Step"])
E_RetrieveUserProfilefromSecurityTable(["End Step"])
N_RetrieveUserProfilefromSecurityTable_Node0{"The system queries the user
security table"}:::decision N_RetrieveUserProfilefromSecurityTable_Node0_action["If user profile is found, the
profile data is loaded for further
validation, otherwise processing
continues with default permissions"]:::main N_RetrieveUserProfilefromSecurityTable_Node0 -- Yes --> N_RetrieveUserProfilefromSecurityTable_Node0_action N_RetrieveUserProfilefromSecurityTable_Node0_action --> E_RetrieveUserProfilefromSecurityTable S_RetrieveUserProfilefromSecurityTable --> N_RetrieveUserProfilefromSecurityTable_Node0 N_RetrieveUserProfilefromSecurityTable_Node0 -- No --> E_RetrieveUserProfilefromSecurityTable
security table"}:::decision N_RetrieveUserProfilefromSecurityTable_Node0_action["If user profile is found, the
profile data is loaded for further
validation, otherwise processing
continues with default permissions"]:::main N_RetrieveUserProfilefromSecurityTable_Node0 -- Yes --> N_RetrieveUserProfilefromSecurityTable_Node0_action N_RetrieveUserProfilefromSecurityTable_Node0_action --> E_RetrieveUserProfilefromSecurityTable S_RetrieveUserProfilefromSecurityTable --> N_RetrieveUserProfilefromSecurityTable_Node0 N_RetrieveUserProfilefromSecurityTable_Node0 -- No --> E_RetrieveUserProfilefromSecurityTable
File: GCX003.cbl
GIVEN:
A valid ACF2 user ID is available
WHEN:
The system queries the user security table
THEN:
If user profile is found, the profile data is loaded for further validation, otherwise processing continues with default permissions
β Consolidated Acceptance Criteria
- The system checks the user's train send authority flag → if user has 'U' or 'S' authorization or the request is an AEI train send, access is granted, otherwise error message 13 is generated and access is denied
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateUserTrainSendAuthority(["Start Step"])
E_ValidateUserTrainSendAuthority(["End Step"])
N_ValidateUserTrainSendAuthority_Node0{"The system checks the user s train
send authority flag"}:::decision N_ValidateUserTrainSendAuthority_Node0_action["If user has U or S authorization or
the request is an AEI train send,
access is granted, otherwise error
message 13 is generated and access
is denied"]:::main N_ValidateUserTrainSendAuthority_Node0 -- Yes --> N_ValidateUserTrainSendAuthority_Node0_action N_ValidateUserTrainSendAuthority_Node0_action --> E_ValidateUserTrainSendAuthority S_ValidateUserTrainSendAuthority --> N_ValidateUserTrainSendAuthority_Node0 N_ValidateUserTrainSendAuthority_Node0 -- No --> E_ValidateUserTrainSendAuthority
send authority flag"}:::decision N_ValidateUserTrainSendAuthority_Node0_action["If user has U or S authorization or
the request is an AEI train send,
access is granted, otherwise error
message 13 is generated and access
is denied"]:::main N_ValidateUserTrainSendAuthority_Node0 -- Yes --> N_ValidateUserTrainSendAuthority_Node0_action N_ValidateUserTrainSendAuthority_Node0_action --> E_ValidateUserTrainSendAuthority S_ValidateUserTrainSendAuthority --> N_ValidateUserTrainSendAuthority_Node0 N_ValidateUserTrainSendAuthority_Node0 -- No --> E_ValidateUserTrainSendAuthority
File: GCX003.cbl
GIVEN:
A user profile exists and the request action is SEND
WHEN:
The system checks the user's train send authority flag
THEN:
- If user has 'u' or 's' authorization or the request is an aei train send, access is granted, otherwise error message 13 is generated
- Access is denied
β Consolidated Acceptance Criteria
- The system checks the user's special manifest authorization flag → if user does not have 'S' authorization for special manifests, the special manifest flag is set to indicate restricted access
- The system checks special manifest permissions → authorization is evaluated if UTF-SPEC-MANI is not 'S' AND the request is not an AEI request
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckSpecialManifestAuthorization(["Start Step"])
E_CheckSpecialManifestAuthorization(["End Step"])
N_CheckSpecialManifestAuthorization_Node0{"The system checks the user s
special manifest authorization flag"}:::decision N_CheckSpecialManifestAuthorization_Node0_action["If user does not have S
authorization for special manifests,
the special manifest flag is set to
indicate restricted access"]:::main N_CheckSpecialManifestAuthorization_Node0 -- Yes --> N_CheckSpecialManifestAuthorization_Node0_action N_CheckSpecialManifestAuthorization_Node0_action --> E_CheckSpecialManifestAuthorization S_CheckSpecialManifestAuthorization --> N_CheckSpecialManifestAuthorization_Node0 N_CheckSpecialManifestAuthorization_Node1{"The system checks special manifest
permissions"}:::decision N_CheckSpecialManifestAuthorization_Node1_action["Authorization is evaluated if
UTF-SPEC-MANI is not S AND the
request is not an AEI request"]:::main N_CheckSpecialManifestAuthorization_Node1 -- Yes --> N_CheckSpecialManifestAuthorization_Node1_action N_CheckSpecialManifestAuthorization_Node1_action --> E_CheckSpecialManifestAuthorization N_CheckSpecialManifestAuthorization_Node0 -- No --> N_CheckSpecialManifestAuthorization_Node1 N_CheckSpecialManifestAuthorization_Node1 -- No --> E_CheckSpecialManifestAuthorization
special manifest authorization flag"}:::decision N_CheckSpecialManifestAuthorization_Node0_action["If user does not have S
authorization for special manifests,
the special manifest flag is set to
indicate restricted access"]:::main N_CheckSpecialManifestAuthorization_Node0 -- Yes --> N_CheckSpecialManifestAuthorization_Node0_action N_CheckSpecialManifestAuthorization_Node0_action --> E_CheckSpecialManifestAuthorization S_CheckSpecialManifestAuthorization --> N_CheckSpecialManifestAuthorization_Node0 N_CheckSpecialManifestAuthorization_Node1{"The system checks special manifest
permissions"}:::decision N_CheckSpecialManifestAuthorization_Node1_action["Authorization is evaluated if
UTF-SPEC-MANI is not S AND the
request is not an AEI request"]:::main N_CheckSpecialManifestAuthorization_Node1 -- Yes --> N_CheckSpecialManifestAuthorization_Node1_action N_CheckSpecialManifestAuthorization_Node1_action --> E_CheckSpecialManifestAuthorization N_CheckSpecialManifestAuthorization_Node0 -- No --> N_CheckSpecialManifestAuthorization_Node1 N_CheckSpecialManifestAuthorization_Node1 -- No --> E_CheckSpecialManifestAuthorization
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A user has valid send authority and the request is not an AEI train send
WHEN:
The system checks the user's special manifest authorization flag
THEN:
If user does not have 'S' authorization for special manifests, the special manifest flag is set to indicate restricted access
File: GCX003.cbl
GIVEN:
No errors have occurred in previous validations AND the request action is SEND
WHEN:
The system checks special manifest permissions
THEN:
Authorization is evaluated if UTF-SPEC-MANI is not 'S' AND the request is not an AEI request
β Consolidated Acceptance Criteria
- The system validates SCAC access permission for Canadian Pacific (CST-CP-SCAC) through GCCSCAC security module → if SCAC access is invalid AND it is not an AEI train send request, then set access denied message and deny user access
- The SCAC access validation returns invalid AND the request is not an AEI train send request → the system should set message fourteen as active, perform report index increment, set user access to denied, and terminate security validation
- The system calls GCCSCAC to validate SCAC access and the validation returns SCAC-ACCESS-INVALID flag and the request is not an AEI train send request → the system sets user access to denied, generates error message fourteen, and prevents further processing
- If the security validation result → access is considered valid unless the SCAC flag indicates invalid access AND the request is not an AEI train send request
- The system validates SCAC access permissions AND the request is not an AEI request type AND SCAC access is invalid → set user access denied flag and generate access denied message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SCACAccessValid(["Start Step"])
E_SCACAccessValid(["End Step"])
N_SCACAccessValid_Node0{"The system validates SCAC access
permission for Canadian Pacific
CST-CP-SCAC through GCCSCAC security
module"}:::decision N_SCACAccessValid_Node0_action["If SCAC access is invalid AND it is
not an AEI train send request, then
set access denied message and deny
user access"]:::main N_SCACAccessValid_Node0 -- Yes --> N_SCACAccessValid_Node0_action N_SCACAccessValid_Node0_action --> E_SCACAccessValid S_SCACAccessValid --> N_SCACAccessValid_Node0 N_SCACAccessValid_Node1{"The SCAC access validation returns
invalid AND the request is not an
AEI train send request"}:::decision N_SCACAccessValid_Node1_action["The system should set message
fourteen as active, perform report
index increment, set user access to
denied, and terminate security
validation"]:::exclusion N_SCACAccessValid_Node1 -- Yes -->|Alternative| N_SCACAccessValid_Node1_action N_SCACAccessValid_Node1_action --> E_SCACAccessValid N_SCACAccessValid_Node0 -- No --> N_SCACAccessValid_Node1 N_SCACAccessValid_Node2{"The system calls GCCSCAC to
validate SCAC access and the
validation returns
SCAC-ACCESS-INVALID flag and the
request is not an AEI train send
request"}:::decision N_SCACAccessValid_Node2_action["The system sets user access to
denied, generates error message
fourteen, and prevents further
processing"]:::exclusion N_SCACAccessValid_Node2 -- Yes -->|Alternative| N_SCACAccessValid_Node2_action N_SCACAccessValid_Node2_action --> E_SCACAccessValid N_SCACAccessValid_Node1 -- No --> N_SCACAccessValid_Node2 N_SCACAccessValid_Node3{"The system evaluates the security
validation result"}:::decision N_SCACAccessValid_Node3_action["Access is considered valid unless
the SCAC flag indicates invalid
access AND the request is not an AEI
train send request"]:::main N_SCACAccessValid_Node3 -- Yes --> N_SCACAccessValid_Node3_action N_SCACAccessValid_Node3_action --> E_SCACAccessValid N_SCACAccessValid_Node2 -- No --> N_SCACAccessValid_Node3 N_SCACAccessValid_Node4{"The system validates SCAC access
permissions AND the request is not
an AEI request type AND SCAC access
is invalid"}:::decision N_SCACAccessValid_Node4_action["Set user access denied flag and
generate access denied message"]:::exclusion N_SCACAccessValid_Node4 -- Yes -->|Alternative| N_SCACAccessValid_Node4_action N_SCACAccessValid_Node4_action --> E_SCACAccessValid N_SCACAccessValid_Node3 -- No --> N_SCACAccessValid_Node4 N_SCACAccessValid_Node4 -- No --> E_SCACAccessValid
permission for Canadian Pacific
CST-CP-SCAC through GCCSCAC security
module"}:::decision N_SCACAccessValid_Node0_action["If SCAC access is invalid AND it is
not an AEI train send request, then
set access denied message and deny
user access"]:::main N_SCACAccessValid_Node0 -- Yes --> N_SCACAccessValid_Node0_action N_SCACAccessValid_Node0_action --> E_SCACAccessValid S_SCACAccessValid --> N_SCACAccessValid_Node0 N_SCACAccessValid_Node1{"The SCAC access validation returns
invalid AND the request is not an
AEI train send request"}:::decision N_SCACAccessValid_Node1_action["The system should set message
fourteen as active, perform report
index increment, set user access to
denied, and terminate security
validation"]:::exclusion N_SCACAccessValid_Node1 -- Yes -->|Alternative| N_SCACAccessValid_Node1_action N_SCACAccessValid_Node1_action --> E_SCACAccessValid N_SCACAccessValid_Node0 -- No --> N_SCACAccessValid_Node1 N_SCACAccessValid_Node2{"The system calls GCCSCAC to
validate SCAC access and the
validation returns
SCAC-ACCESS-INVALID flag and the
request is not an AEI train send
request"}:::decision N_SCACAccessValid_Node2_action["The system sets user access to
denied, generates error message
fourteen, and prevents further
processing"]:::exclusion N_SCACAccessValid_Node2 -- Yes -->|Alternative| N_SCACAccessValid_Node2_action N_SCACAccessValid_Node2_action --> E_SCACAccessValid N_SCACAccessValid_Node1 -- No --> N_SCACAccessValid_Node2 N_SCACAccessValid_Node3{"The system evaluates the security
validation result"}:::decision N_SCACAccessValid_Node3_action["Access is considered valid unless
the SCAC flag indicates invalid
access AND the request is not an AEI
train send request"]:::main N_SCACAccessValid_Node3 -- Yes --> N_SCACAccessValid_Node3_action N_SCACAccessValid_Node3_action --> E_SCACAccessValid N_SCACAccessValid_Node2 -- No --> N_SCACAccessValid_Node3 N_SCACAccessValid_Node4{"The system validates SCAC access
permissions AND the request is not
an AEI request type AND SCAC access
is invalid"}:::decision N_SCACAccessValid_Node4_action["Set user access denied flag and
generate access denied message"]:::exclusion N_SCACAccessValid_Node4 -- Yes -->|Alternative| N_SCACAccessValid_Node4_action N_SCACAccessValid_Node4_action --> E_SCACAccessValid N_SCACAccessValid_Node3 -- No --> N_SCACAccessValid_Node4 N_SCACAccessValid_Node4 -- No --> E_SCACAccessValid
File: GCX003.cbl
GIVEN:
A user with ACF2 user ID attempts to access train processing functionality
WHEN:
The system validates SCAC access permission for Canadian Pacific (CST-CP-SCAC) through GCCSCAC security module
THEN:
- If scac access is invalid
- It is not an aei train send request, then set access denied message
- Deny user access
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A user attempts to access the train manifest system with their ACF2 user ID and CP-SCAC code
WHEN:
- The scac access validation returns invalid
- The request is not an aei train send request
THEN:
The system should set message fourteen as active, perform report index increment, set user access to denied, and terminate security validation
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A user attempts to process a train request with their ACF2 user ID and the system needs to validate SCAC access for CP (Canadian Pacific) operations
WHEN:
- The system calls gccscac to validate scac access
- The validation returns scac-access-invalid flag
- The request is not an aei train send request
THEN:
The system sets user access to denied, generates error message fourteen, and prevents further processing
File: GCX003.cbl
GIVEN:
The SCAC security module has been called
WHEN:
The system evaluates the security validation result
THEN:
- Access is considered valid unless the scac flag indicates invalid access
- The request is not an aei train send request
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A user attempts to access train send functionality
WHEN:
- The system validates scac access permissions
- The request is not an aei request type
- Scac access is invalid
THEN:
- Set user access denied flag
- Generate access denied message
β Consolidated Acceptance Criteria
- The request type equals AEI request type (AEI-TRAIN-SEND-YES is true) → allow the user to continue processing despite invalid SCAC access
- The request is identified as an AEI train send request → the system grants send authorization despite the lack of standard UTF-ADD permissions
- The system checks the train send type → if the train send is marked as AEI-enabled, additional AEI logging must be performed
- The system checks the request type → if the request is an AEI train send request, additional AEI logging must be performed AND if not an AEI request, complete the transmission process normally
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AEITrainSendRequest(["Start Step"])
E_AEITrainSendRequest(["End Step"])
N_AEITrainSendRequest_Node0{"The request type equals AEI request
type AEI-TRAIN-SEND-YES is true"}:::decision N_AEITrainSendRequest_Node0_action["Allow the user to continue
processing despite invalid SCAC
access"]:::main N_AEITrainSendRequest_Node0 -- Yes --> N_AEITrainSendRequest_Node0_action N_AEITrainSendRequest_Node0_action --> E_AEITrainSendRequest S_AEITrainSendRequest --> N_AEITrainSendRequest_Node0 N_AEITrainSendRequest_Node1{"The request is identified as an AEI
train send request"}:::decision N_AEITrainSendRequest_Node1_action["The system grants send
authorization despite the lack of
standard UTF-ADD permissions"]:::main N_AEITrainSendRequest_Node1 -- Yes --> N_AEITrainSendRequest_Node1_action N_AEITrainSendRequest_Node1_action --> E_AEITrainSendRequest N_AEITrainSendRequest_Node0 -- No --> N_AEITrainSendRequest_Node1 N_AEITrainSendRequest_Node2{"The system checks the train send
type"}:::decision N_AEITrainSendRequest_Node2_action["If the train send is marked as
AEI-enabled, additional AEI logging
must be performed"]:::main N_AEITrainSendRequest_Node2 -- Yes --> N_AEITrainSendRequest_Node2_action N_AEITrainSendRequest_Node2_action --> E_AEITrainSendRequest N_AEITrainSendRequest_Node1 -- No --> N_AEITrainSendRequest_Node2 N_AEITrainSendRequest_Node3{"The system checks the request type"}:::decision N_AEITrainSendRequest_Node3_action["If the request is an AEI train send
request, additional AEI logging must
be performed AND if not an AEI
request, complete the transmission
process normally"]:::main N_AEITrainSendRequest_Node3 -- Yes --> N_AEITrainSendRequest_Node3_action N_AEITrainSendRequest_Node3_action --> E_AEITrainSendRequest N_AEITrainSendRequest_Node2 -- No --> N_AEITrainSendRequest_Node3 N_AEITrainSendRequest_Node3 -- No --> E_AEITrainSendRequest
type AEI-TRAIN-SEND-YES is true"}:::decision N_AEITrainSendRequest_Node0_action["Allow the user to continue
processing despite invalid SCAC
access"]:::main N_AEITrainSendRequest_Node0 -- Yes --> N_AEITrainSendRequest_Node0_action N_AEITrainSendRequest_Node0_action --> E_AEITrainSendRequest S_AEITrainSendRequest --> N_AEITrainSendRequest_Node0 N_AEITrainSendRequest_Node1{"The request is identified as an AEI
train send request"}:::decision N_AEITrainSendRequest_Node1_action["The system grants send
authorization despite the lack of
standard UTF-ADD permissions"]:::main N_AEITrainSendRequest_Node1 -- Yes --> N_AEITrainSendRequest_Node1_action N_AEITrainSendRequest_Node1_action --> E_AEITrainSendRequest N_AEITrainSendRequest_Node0 -- No --> N_AEITrainSendRequest_Node1 N_AEITrainSendRequest_Node2{"The system checks the train send
type"}:::decision N_AEITrainSendRequest_Node2_action["If the train send is marked as
AEI-enabled, additional AEI logging
must be performed"]:::main N_AEITrainSendRequest_Node2 -- Yes --> N_AEITrainSendRequest_Node2_action N_AEITrainSendRequest_Node2_action --> E_AEITrainSendRequest N_AEITrainSendRequest_Node1 -- No --> N_AEITrainSendRequest_Node2 N_AEITrainSendRequest_Node3{"The system checks the request type"}:::decision N_AEITrainSendRequest_Node3_action["If the request is an AEI train send
request, additional AEI logging must
be performed AND if not an AEI
request, complete the transmission
process normally"]:::main N_AEITrainSendRequest_Node3 -- Yes --> N_AEITrainSendRequest_Node3_action N_AEITrainSendRequest_Node3_action --> E_AEITrainSendRequest N_AEITrainSendRequest_Node2 -- No --> N_AEITrainSendRequest_Node3 N_AEITrainSendRequest_Node3 -- No --> E_AEITrainSendRequest
File: GCX003.cbl
GIVEN:
A user has invalid SCAC access permission
WHEN:
The request type equals AEI request type (AEI-TRAIN-SEND-YES is true)
THEN:
Allow the user to continue processing despite invalid SCAC access
File: GCX003.cbl
GIVEN:
A user lacks standard UTF-ADD authorization ('U' or 'S') for send operations
WHEN:
The request is identified as an AEI train send request
THEN:
The system grants send authorization despite the lack of standard UTF-ADD permissions
File: GCX003.cbl
GIVEN:
A train list has been successfully transmitted via EDI
WHEN:
The system checks the train send type
THEN:
If the train send is marked as AEI-enabled, additional AEI logging must be performed
File: GCX003.cbl
GIVEN:
The EDI transmission has completed successfully
WHEN:
The system checks the request type
THEN:
- If the request is an aei train send request, additional aei logging must be performed
- If not an aei request, complete the transmission process normally
β Consolidated Acceptance Criteria
- The system searches for user security profile in GCSTBRT table using ACF2 user ID → if profile is found, load user security settings; otherwise set default security settings to spaces
- The system attempts to retrieve the user's security profile from GCSTBRT table using their ACF2 user ID → if the profile is found successfully, load the user security segment data, otherwise initialize an empty security segment
- The system performs a database lookup for the user's ACF2 ID in the GCSTBRT-US table → if the profile is found, the system loads the user segment data, otherwise initializes an empty profile with spaces
- The system attempts to retrieve user profile from GCSTBRT security table → load user profile segment if found, otherwise initialize with default empty profile settings
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UserProfileFound(["Start Step"])
E_UserProfileFound(["End Step"])
N_UserProfileFound_Node0{"The system searches for user
security profile in GCSTBRT table
using ACF2 user ID"}:::decision N_UserProfileFound_Node0_action["If profile is found, load user
security settings otherwise set
default security settings to spaces"]:::main N_UserProfileFound_Node0 -- Yes --> N_UserProfileFound_Node0_action N_UserProfileFound_Node0_action --> E_UserProfileFound S_UserProfileFound --> N_UserProfileFound_Node0 N_UserProfileFound_Node1{"The system attempts to retrieve the
user s security profile from GCSTBRT
table using their ACF2 user ID"}:::decision N_UserProfileFound_Node1_action["If the profile is found
successfully, load the user security
segment data, otherwise initialize
an empty security segment"]:::main N_UserProfileFound_Node1 -- Yes --> N_UserProfileFound_Node1_action N_UserProfileFound_Node1_action --> E_UserProfileFound N_UserProfileFound_Node0 -- No --> N_UserProfileFound_Node1 N_UserProfileFound_Node2{"The system performs a database
lookup for the user s ACF2 ID in the
GCSTBRT-US table"}:::decision N_UserProfileFound_Node2_action["If the profile is found, the system
loads the user segment data,
otherwise initializes an empty
profile with spaces"]:::main N_UserProfileFound_Node2 -- Yes --> N_UserProfileFound_Node2_action N_UserProfileFound_Node2_action --> E_UserProfileFound N_UserProfileFound_Node1 -- No --> N_UserProfileFound_Node2 N_UserProfileFound_Node3{"The system attempts to retrieve
user profile from GCSTBRT security
table"}:::decision N_UserProfileFound_Node3_action["Load user profile segment if found,
otherwise initialize with default
empty profile settings"]:::main N_UserProfileFound_Node3 -- Yes --> N_UserProfileFound_Node3_action N_UserProfileFound_Node3_action --> E_UserProfileFound N_UserProfileFound_Node2 -- No --> N_UserProfileFound_Node3 N_UserProfileFound_Node3 -- No --> E_UserProfileFound
security profile in GCSTBRT table
using ACF2 user ID"}:::decision N_UserProfileFound_Node0_action["If profile is found, load user
security settings otherwise set
default security settings to spaces"]:::main N_UserProfileFound_Node0 -- Yes --> N_UserProfileFound_Node0_action N_UserProfileFound_Node0_action --> E_UserProfileFound S_UserProfileFound --> N_UserProfileFound_Node0 N_UserProfileFound_Node1{"The system attempts to retrieve the
user s security profile from GCSTBRT
table using their ACF2 user ID"}:::decision N_UserProfileFound_Node1_action["If the profile is found
successfully, load the user security
segment data, otherwise initialize
an empty security segment"]:::main N_UserProfileFound_Node1 -- Yes --> N_UserProfileFound_Node1_action N_UserProfileFound_Node1_action --> E_UserProfileFound N_UserProfileFound_Node0 -- No --> N_UserProfileFound_Node1 N_UserProfileFound_Node2{"The system performs a database
lookup for the user s ACF2 ID in the
GCSTBRT-US table"}:::decision N_UserProfileFound_Node2_action["If the profile is found, the system
loads the user segment data,
otherwise initializes an empty
profile with spaces"]:::main N_UserProfileFound_Node2 -- Yes --> N_UserProfileFound_Node2_action N_UserProfileFound_Node2_action --> E_UserProfileFound N_UserProfileFound_Node1 -- No --> N_UserProfileFound_Node2 N_UserProfileFound_Node3{"The system attempts to retrieve
user profile from GCSTBRT security
table"}:::decision N_UserProfileFound_Node3_action["Load user profile segment if found,
otherwise initialize with default
empty profile settings"]:::main N_UserProfileFound_Node3 -- Yes --> N_UserProfileFound_Node3_action N_UserProfileFound_Node3_action --> E_UserProfileFound N_UserProfileFound_Node2 -- No --> N_UserProfileFound_Node3 N_UserProfileFound_Node3 -- No --> E_UserProfileFound
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A user has valid SCAC access or AEI exception applies
WHEN:
The system searches for user security profile in GCSTBRT table using ACF2 user ID
THEN:
If profile is found, load user security settings; otherwise set default security settings to spaces
File: GCX003.cbl
GIVEN:
A user has passed SCAC access validation
WHEN:
The system attempts to retrieve the user's security profile from GCSTBRT table using their ACF2 user ID
THEN:
If the profile is found successfully, load the user security segment data, otherwise initialize an empty security segment
File: GCX003.cbl
GIVEN:
A user with valid SCAC access needs their security profile validated for train processing operations
WHEN:
The system performs a database lookup for the user's ACF2 ID in the GCSTBRT-US table
THEN:
If the profile is found, the system loads the user segment data, otherwise initializes an empty profile with spaces
File: GCX003.cbl
GIVEN:
A valid user ID exists in the system
WHEN:
The system attempts to retrieve user profile from GCSTBRT security table
THEN:
Load user profile segment if found, otherwise initialize with default empty profile settings
β Consolidated Acceptance Criteria
- The system checks user's UTF-ADD permission in security profile → if user does not have 'U' or 'S' authorization AND it is not an AEI train send request, then set send permission denied message and deny access
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UserHasSendPermission(["Start Step"])
E_UserHasSendPermission(["End Step"])
N_UserHasSendPermission_Node0{"The system checks user s UTF-ADD
permission in security profile"}:::decision N_UserHasSendPermission_Node0_action["If user does not have U or S
authorization AND it is not an AEI
train send request, then set send
permission denied message and deny
access"]:::main N_UserHasSendPermission_Node0 -- Yes --> N_UserHasSendPermission_Node0_action N_UserHasSendPermission_Node0_action --> E_UserHasSendPermission S_UserHasSendPermission --> N_UserHasSendPermission_Node0 N_UserHasSendPermission_Node0 -- No --> E_UserHasSendPermission
permission in security profile"}:::decision N_UserHasSendPermission_Node0_action["If user does not have U or S
authorization AND it is not an AEI
train send request, then set send
permission denied message and deny
access"]:::main N_UserHasSendPermission_Node0 -- Yes --> N_UserHasSendPermission_Node0_action N_UserHasSendPermission_Node0_action --> E_UserHasSendPermission S_UserHasSendPermission --> N_UserHasSendPermission_Node0 N_UserHasSendPermission_Node0 -- No --> E_UserHasSendPermission
File: GCX003.cbl
GIVEN:
A user requests to perform a send action (REQ-ACTION-SEND is true)
WHEN:
The system checks user's UTF-ADD permission in security profile
THEN:
- If user does not have 'u' or 's' authorization
- It is not an aei train send request, then set send permission denied message
- Deny access
β Consolidated Acceptance Criteria
- The user does not have UTF-ADD authority of 'U' or 'S' AND the request is not an AEI train send request → the system should set message thirteen as active, perform report index increment, and set user access to denied
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UserHasUTFADDAuthority(["Start Step"])
E_UserHasUTFADDAuthority(["End Step"])
N_UserHasUTFADDAuthority_Node0{"The user does not have UTF-ADD
authority of U or S AND the request
is not an AEI train send request"}:::decision N_UserHasUTFADDAuthority_Node0_action["The system should set message
thirteen as active, perform report
index increment, and set user access
to denied"]:::main N_UserHasUTFADDAuthority_Node0 -- Yes --> N_UserHasUTFADDAuthority_Node0_action N_UserHasUTFADDAuthority_Node0_action --> E_UserHasUTFADDAuthority S_UserHasUTFADDAuthority --> N_UserHasUTFADDAuthority_Node0 N_UserHasUTFADDAuthority_Node0 -- No --> E_UserHasUTFADDAuthority
authority of U or S AND the request
is not an AEI train send request"}:::decision N_UserHasUTFADDAuthority_Node0_action["The system should set message
thirteen as active, perform report
index increment, and set user access
to denied"]:::main N_UserHasUTFADDAuthority_Node0 -- Yes --> N_UserHasUTFADDAuthority_Node0_action N_UserHasUTFADDAuthority_Node0_action --> E_UserHasUTFADDAuthority S_UserHasUTFADDAuthority --> N_UserHasUTFADDAuthority_Node0 N_UserHasUTFADDAuthority_Node0 -- No --> E_UserHasUTFADDAuthority
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A user requests to perform a send action on train manifest data
WHEN:
The user does not have UTF-ADD authority of 'U' or 'S' AND the request is not an AEI train send request
THEN:
The system should set message thirteen as active, perform report index increment, and set user access to denied
β Consolidated Acceptance Criteria
- The user's UTF special manifest authority is not 'S' AND the request is not an AEI train send request → the system should set the user as not authorized for special manifest processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UserHasSpecialManifestAuthority(["Start Step"])
E_UserHasSpecialManifestAuthority(["End Step"])
N_UserHasSpecialManifestAuthority_Node0{"The user s UTF special manifest
authority is not S AND the request
is not an AEI train send request"}:::decision N_UserHasSpecialManifestAuthority_Node0_action["The system should set the user as
not authorized for special manifest
processing"]:::main N_UserHasSpecialManifestAuthority_Node0 -- Yes --> N_UserHasSpecialManifestAuthority_Node0_action N_UserHasSpecialManifestAuthority_Node0_action --> E_UserHasSpecialManifestAuthority S_UserHasSpecialManifestAuthority --> N_UserHasSpecialManifestAuthority_Node0 N_UserHasSpecialManifestAuthority_Node0 -- No --> E_UserHasSpecialManifestAuthority
authority is not S AND the request
is not an AEI train send request"}:::decision N_UserHasSpecialManifestAuthority_Node0_action["The system should set the user as
not authorized for special manifest
processing"]:::main N_UserHasSpecialManifestAuthority_Node0 -- Yes --> N_UserHasSpecialManifestAuthority_Node0_action N_UserHasSpecialManifestAuthority_Node0_action --> E_UserHasSpecialManifestAuthority S_UserHasSpecialManifestAuthority --> N_UserHasSpecialManifestAuthority_Node0 N_UserHasSpecialManifestAuthority_Node0 -- No --> E_UserHasSpecialManifestAuthority
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A user has valid send action permissions and no errors have occurred
WHEN:
The user's UTF special manifest authority is not 'S' AND the request is not an AEI train send request
THEN:
The system should set the user as not authorized for special manifest processing
β Consolidated Acceptance Criteria
- The request action is SEND and the user's UTF-ADD field contains value 'U' (Update) or 'S' (Special) or the request is an AEI train send request → the system grants send authorization and allows the user to proceed with sending train data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UTFADDUorS(["Start Step"])
E_UTFADDUorS(["End Step"])
N_UTFADDUorS_Node0{"The request action is SEND and the
user s UTF-ADD field contains value
U Update or S Special or the request
is an AEI train send request"}:::decision N_UTFADDUorS_Node0_action["The system grants send
authorization and allows the user to
proceed with sending train data"]:::main N_UTFADDUorS_Node0 -- Yes --> N_UTFADDUorS_Node0_action N_UTFADDUorS_Node0_action --> E_UTFADDUorS S_UTFADDUorS --> N_UTFADDUorS_Node0 N_UTFADDUorS_Node0 -- No --> E_UTFADDUorS
user s UTF-ADD field contains value
U Update or S Special or the request
is an AEI train send request"}:::decision N_UTFADDUorS_Node0_action["The system grants send
authorization and allows the user to
proceed with sending train data"]:::main N_UTFADDUorS_Node0 -- Yes --> N_UTFADDUorS_Node0_action N_UTFADDUorS_Node0_action --> E_UTFADDUorS S_UTFADDUorS --> N_UTFADDUorS_Node0 N_UTFADDUorS_Node0 -- No --> E_UTFADDUorS
File: GCX003.cbl
GIVEN:
A user requests to send train data and the system has retrieved their security profile
WHEN:
- The request action is send
- The user's utf-add field contains value 'u' (update) or 's' (special) or the request is an aei train send request
THEN:
- The system grants send authorization
- Allows the user to proceed with sending train data
β Consolidated Acceptance Criteria
- The request action is SEND and the user's UTF-ADD field is not 'U' or 'S' and the request is not an AEI train send request → the system sets user access to denied, generates error message thirteen, and prevents send operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetNoUserAccessSendNotAuthorized(["Start Step"])
E_SetNoUserAccessSendNotAuthorized(["End Step"])
N_SetNoUserAccessSendNotAuthorized_Node0{"The request action is SEND and the
user s UTF-ADD field is not U or S
and the request is not an AEI train
send request"}:::decision N_SetNoUserAccessSendNotAuthorized_Node0_action["The system sets user access to
denied, generates error message
thirteen, and prevents send
operations"]:::main N_SetNoUserAccessSendNotAuthorized_Node0 -- Yes --> N_SetNoUserAccessSendNotAuthorized_Node0_action N_SetNoUserAccessSendNotAuthorized_Node0_action --> E_SetNoUserAccessSendNotAuthorized S_SetNoUserAccessSendNotAuthorized --> N_SetNoUserAccessSendNotAuthorized_Node0 N_SetNoUserAccessSendNotAuthorized_Node0 -- No --> E_SetNoUserAccessSendNotAuthorized
user s UTF-ADD field is not U or S
and the request is not an AEI train
send request"}:::decision N_SetNoUserAccessSendNotAuthorized_Node0_action["The system sets user access to
denied, generates error message
thirteen, and prevents send
operations"]:::main N_SetNoUserAccessSendNotAuthorized_Node0 -- Yes --> N_SetNoUserAccessSendNotAuthorized_Node0_action N_SetNoUserAccessSendNotAuthorized_Node0_action --> E_SetNoUserAccessSendNotAuthorized S_SetNoUserAccessSendNotAuthorized --> N_SetNoUserAccessSendNotAuthorized_Node0 N_SetNoUserAccessSendNotAuthorized_Node0 -- No --> E_SetNoUserAccessSendNotAuthorized
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A user requests to send train data but lacks proper authorization
WHEN:
- The request action is send
- The user's utf-add field is not 'u' or 's' and the request is not an aei train send request
THEN:
The system sets user access to denied, generates error message thirteen, and prevents send operations
β Consolidated Acceptance Criteria
- The user's UTF-SPEC-MANI field does not equal 'S' (Special) and the request is not an AEI train send request → the system sets the user as not authorized for special manifest operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UTFSPECMANIS(["Start Step"])
E_UTFSPECMANIS(["End Step"])
N_UTFSPECMANIS_Node0{"The user s UTF-SPEC-MANI field does
not equal S Special and the request
is not an AEI train send request"}:::decision N_UTFSPECMANIS_Node0_action["The system sets the user as not
authorized for special manifest
operations"]:::main N_UTFSPECMANIS_Node0 -- Yes --> N_UTFSPECMANIS_Node0_action N_UTFSPECMANIS_Node0_action --> E_UTFSPECMANIS S_UTFSPECMANIS --> N_UTFSPECMANIS_Node0 N_UTFSPECMANIS_Node0 -- No --> E_UTFSPECMANIS
not equal S Special and the request
is not an AEI train send request"}:::decision N_UTFSPECMANIS_Node0_action["The system sets the user as not
authorized for special manifest
operations"]:::main N_UTFSPECMANIS_Node0 -- Yes --> N_UTFSPECMANIS_Node0_action N_UTFSPECMANIS_Node0_action --> E_UTFSPECMANIS S_UTFSPECMANIS --> N_UTFSPECMANIS_Node0 N_UTFSPECMANIS_Node0 -- No --> E_UTFSPECMANIS
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A user has been granted send authorization and the system needs to check special manifest permissions
WHEN:
The user's UTF-SPEC-MANI field does not equal 'S' (Special) and the request is not an AEI train send request
THEN:
The system sets the user as not authorized for special manifest operations
β Consolidated Acceptance Criteria
- The system needs to validate user access permissions → the user ID is retrieved from the system communication area
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetUserIDfromCCCOM(["Start Step"])
E_GetUserIDfromCCCOM(["End Step"])
N_GetUserIDfromCCCOM_Node0{"The system needs to validate user
access permissions"}:::decision N_GetUserIDfromCCCOM_Node0_action["The user ID is retrieved from the
system communication area"]:::main N_GetUserIDfromCCCOM_Node0 -- Yes --> N_GetUserIDfromCCCOM_Node0_action N_GetUserIDfromCCCOM_Node0_action --> E_GetUserIDfromCCCOM S_GetUserIDfromCCCOM --> N_GetUserIDfromCCCOM_Node0 N_GetUserIDfromCCCOM_Node0 -- No --> E_GetUserIDfromCCCOM
access permissions"}:::decision N_GetUserIDfromCCCOM_Node0_action["The user ID is retrieved from the
system communication area"]:::main N_GetUserIDfromCCCOM_Node0 -- Yes --> N_GetUserIDfromCCCOM_Node0_action N_GetUserIDfromCCCOM_Node0_action --> E_GetUserIDfromCCCOM S_GetUserIDfromCCCOM --> N_GetUserIDfromCCCOM_Node0 N_GetUserIDfromCCCOM_Node0 -- No --> E_GetUserIDfromCCCOM
File: GCX003.cbl
GIVEN:
A user session is active in the system
WHEN:
The system needs to validate user access permissions
THEN:
The user ID is retrieved from the system communication area
β Consolidated Acceptance Criteria
- The system needs to validate carrier access permissions → the SCAC code is set to the Canadian Pacific carrier code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSCACCodetoCPSCAC(["Start Step"])
E_SetSCACCodetoCPSCAC(["End Step"])
N_SetSCACCodetoCPSCAC_Node0{"The system needs to validate
carrier access permissions"}:::decision N_SetSCACCodetoCPSCAC_Node0_action["The SCAC code is set to the
Canadian Pacific carrier code"]:::main N_SetSCACCodetoCPSCAC_Node0 -- Yes --> N_SetSCACCodetoCPSCAC_Node0_action N_SetSCACCodetoCPSCAC_Node0_action --> E_SetSCACCodetoCPSCAC S_SetSCACCodetoCPSCAC --> N_SetSCACCodetoCPSCAC_Node0 N_SetSCACCodetoCPSCAC_Node0 -- No --> E_SetSCACCodetoCPSCAC
carrier access permissions"}:::decision N_SetSCACCodetoCPSCAC_Node0_action["The SCAC code is set to the
Canadian Pacific carrier code"]:::main N_SetSCACCodetoCPSCAC_Node0 -- Yes --> N_SetSCACCodetoCPSCAC_Node0_action N_SetSCACCodetoCPSCAC_Node0_action --> E_SetSCACCodetoCPSCAC S_SetSCACCodetoCPSCAC --> N_SetSCACCodetoCPSCAC_Node0 N_SetSCACCodetoCPSCAC_Node0 -- No --> E_SetSCACCodetoCPSCAC
File: GCX003.cbl
GIVEN:
A train security validation is being performed
WHEN:
The system needs to validate carrier access permissions
THEN:
The SCAC code is set to the Canadian Pacific carrier code
β Consolidated Acceptance Criteria
- The system needs to verify carrier access permissions → the GCCSCAC security module is called with user and carrier parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCSCACSecurityModule(["Start Step"])
E_CallGCCSCACSecurityModule(["End Step"])
N_CallGCCSCACSecurityModule_Node0{"The system needs to verify carrier
access permissions"}:::decision N_CallGCCSCACSecurityModule_Node0_action["The GCCSCAC security module is
called with user and carrier
parameters"]:::main N_CallGCCSCACSecurityModule_Node0 -- Yes --> N_CallGCCSCACSecurityModule_Node0_action N_CallGCCSCACSecurityModule_Node0_action --> E_CallGCCSCACSecurityModule S_CallGCCSCACSecurityModule --> N_CallGCCSCACSecurityModule_Node0 N_CallGCCSCACSecurityModule_Node0 -- No --> E_CallGCCSCACSecurityModule
access permissions"}:::decision N_CallGCCSCACSecurityModule_Node0_action["The GCCSCAC security module is
called with user and carrier
parameters"]:::main N_CallGCCSCACSecurityModule_Node0 -- Yes --> N_CallGCCSCACSecurityModule_Node0_action N_CallGCCSCACSecurityModule_Node0_action --> E_CallGCCSCACSecurityModule S_CallGCCSCACSecurityModule --> N_CallGCCSCACSecurityModule_Node0 N_CallGCCSCACSecurityModule_Node0 -- No --> E_CallGCCSCACSecurityModule
File: GCX003.cbl
GIVEN:
User ID and SCAC code are available for validation
WHEN:
The system needs to verify carrier access permissions
THEN:
- The gccscac security module is called with user
- Carrier parameters
β Consolidated Acceptance Criteria
- The system needs to determine the request type → the request is classified as AEI if the request type equals the AEI request type constant
- The request type equals the AEI request type constant → set AEI train send flag to YES, otherwise set to NO
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifAEITrainSendRequest(["Start Step"])
E_CheckifAEITrainSendRequest(["End Step"])
N_CheckifAEITrainSendRequest_Node0{"The system needs to determine the
request type"}:::decision N_CheckifAEITrainSendRequest_Node0_action["The request is classified as AEI if
the request type equals the AEI
request type constant"]:::main N_CheckifAEITrainSendRequest_Node0 -- Yes --> N_CheckifAEITrainSendRequest_Node0_action N_CheckifAEITrainSendRequest_Node0_action --> E_CheckifAEITrainSendRequest S_CheckifAEITrainSendRequest --> N_CheckifAEITrainSendRequest_Node0 N_CheckifAEITrainSendRequest_Node1{"The request type equals the AEI
request type constant"}:::decision N_CheckifAEITrainSendRequest_Node1_action["Set AEI train send flag to YES,
otherwise set to NO"]:::main N_CheckifAEITrainSendRequest_Node1 -- Yes --> N_CheckifAEITrainSendRequest_Node1_action N_CheckifAEITrainSendRequest_Node1_action --> E_CheckifAEITrainSendRequest N_CheckifAEITrainSendRequest_Node0 -- No --> N_CheckifAEITrainSendRequest_Node1 N_CheckifAEITrainSendRequest_Node1 -- No --> E_CheckifAEITrainSendRequest
request type"}:::decision N_CheckifAEITrainSendRequest_Node0_action["The request is classified as AEI if
the request type equals the AEI
request type constant"]:::main N_CheckifAEITrainSendRequest_Node0 -- Yes --> N_CheckifAEITrainSendRequest_Node0_action N_CheckifAEITrainSendRequest_Node0_action --> E_CheckifAEITrainSendRequest S_CheckifAEITrainSendRequest --> N_CheckifAEITrainSendRequest_Node0 N_CheckifAEITrainSendRequest_Node1{"The request type equals the AEI
request type constant"}:::decision N_CheckifAEITrainSendRequest_Node1_action["Set AEI train send flag to YES,
otherwise set to NO"]:::main N_CheckifAEITrainSendRequest_Node1 -- Yes --> N_CheckifAEITrainSendRequest_Node1_action N_CheckifAEITrainSendRequest_Node1_action --> E_CheckifAEITrainSendRequest N_CheckifAEITrainSendRequest_Node0 -- No --> N_CheckifAEITrainSendRequest_Node1 N_CheckifAEITrainSendRequest_Node1 -- No --> E_CheckifAEITrainSendRequest
File: GCX003.cbl
GIVEN:
A train processing request is being validated
WHEN:
The system needs to determine the request type
THEN:
The request is classified as AEI if the request type equals the AEI request type constant
File: GCX003.cbl
GIVEN:
A train processing request is received
WHEN:
The request type equals the AEI request type constant
THEN:
Set AEI train send flag to YES, otherwise set to NO
β Consolidated Acceptance Criteria
- The request is an AEI train send request → access validation continues without setting access denied flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsAEIRequest(["Start Step"])
E_IsAEIRequest(["End Step"])
N_IsAEIRequest_Node0{"The request is an AEI train send
request"}:::decision N_IsAEIRequest_Node0_action["Access validation continues without
setting access denied flag"]:::main N_IsAEIRequest_Node0 -- Yes --> N_IsAEIRequest_Node0_action N_IsAEIRequest_Node0_action --> E_IsAEIRequest S_IsAEIRequest --> N_IsAEIRequest_Node0 N_IsAEIRequest_Node0 -- No --> E_IsAEIRequest
request"}:::decision N_IsAEIRequest_Node0_action["Access validation continues without
setting access denied flag"]:::main N_IsAEIRequest_Node0 -- Yes --> N_IsAEIRequest_Node0_action N_IsAEIRequest_Node0_action --> E_IsAEIRequest S_IsAEIRequest --> N_IsAEIRequest_Node0 N_IsAEIRequest_Node0 -- No --> E_IsAEIRequest
File: GCX003.cbl
GIVEN:
SCAC access validation has failed
WHEN:
The request is an AEI train send request
THEN:
Access validation continues without setting access denied flag
β Consolidated Acceptance Criteria
- The system processes the access validation result → the no user access flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetAccessDeniedFlag(["Start Step"])
E_SetAccessDeniedFlag(["End Step"])
N_SetAccessDeniedFlag_Node0{"The system processes the access
validation result"}:::decision N_SetAccessDeniedFlag_Node0_action["The no user access flag is set to
true"]:::main N_SetAccessDeniedFlag_Node0 -- Yes --> N_SetAccessDeniedFlag_Node0_action N_SetAccessDeniedFlag_Node0_action --> E_SetAccessDeniedFlag S_SetAccessDeniedFlag --> N_SetAccessDeniedFlag_Node0 N_SetAccessDeniedFlag_Node0 -- No --> E_SetAccessDeniedFlag
validation result"}:::decision N_SetAccessDeniedFlag_Node0_action["The no user access flag is set to
true"]:::main N_SetAccessDeniedFlag_Node0 -- Yes --> N_SetAccessDeniedFlag_Node0_action N_SetAccessDeniedFlag_Node0_action --> E_SetAccessDeniedFlag S_SetAccessDeniedFlag --> N_SetAccessDeniedFlag_Node0 N_SetAccessDeniedFlag_Node0 -- No --> E_SetAccessDeniedFlag
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
SCAC access validation has failed AND the request is not an AEI request
WHEN:
The system processes the access validation result
THEN:
The no user access flag is set to true
β Consolidated Acceptance Criteria
- The system generates validation error messages → message 14 is set to true and the report index is incremented
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateSecurityErrorMessage(["Start Step"])
E_GenerateSecurityErrorMessage(["End Step"])
N_GenerateSecurityErrorMessage_Node0{"The system generates validation
error messages"}:::decision N_GenerateSecurityErrorMessage_Node0_action["Message 14 is set to true and the
report index is incremented"]:::exclusion N_GenerateSecurityErrorMessage_Node0 -- Yes -->|Alternative| N_GenerateSecurityErrorMessage_Node0_action N_GenerateSecurityErrorMessage_Node0_action --> E_GenerateSecurityErrorMessage S_GenerateSecurityErrorMessage --> N_GenerateSecurityErrorMessage_Node0 N_GenerateSecurityErrorMessage_Node0 -- No --> E_GenerateSecurityErrorMessage
error messages"}:::decision N_GenerateSecurityErrorMessage_Node0_action["Message 14 is set to true and the
report index is incremented"]:::exclusion N_GenerateSecurityErrorMessage_Node0 -- Yes -->|Alternative| N_GenerateSecurityErrorMessage_Node0_action N_GenerateSecurityErrorMessage_Node0_action --> E_GenerateSecurityErrorMessage S_GenerateSecurityErrorMessage --> N_GenerateSecurityErrorMessage_Node0 N_GenerateSecurityErrorMessage_Node0 -- No --> E_GenerateSecurityErrorMessage
File: GCX003.cbl
GIVEN:
User access has been denied due to invalid SCAC permissions
WHEN:
The system generates validation error messages
THEN:
- Message 14 is set to true
- The report index is incremented
β Consolidated Acceptance Criteria
- The system needs to retrieve detailed user permissions → the GCSTBRT user security table is queried using the ACF2 user ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QueryUserSecurityTableGCSTBRTUS(["Start Step"])
E_QueryUserSecurityTableGCSTBRTUS(["End Step"])
N_QueryUserSecurityTableGCSTBRTUS_Node0{"The system needs to retrieve
detailed user permissions"}:::decision N_QueryUserSecurityTableGCSTBRTUS_Node0_action["The GCSTBRT user security table is
queried using the ACF2 user ID"]:::main N_QueryUserSecurityTableGCSTBRTUS_Node0 -- Yes --> N_QueryUserSecurityTableGCSTBRTUS_Node0_action N_QueryUserSecurityTableGCSTBRTUS_Node0_action --> E_QueryUserSecurityTableGCSTBRTUS S_QueryUserSecurityTableGCSTBRTUS --> N_QueryUserSecurityTableGCSTBRTUS_Node0 N_QueryUserSecurityTableGCSTBRTUS_Node0 -- No --> E_QueryUserSecurityTableGCSTBRTUS
detailed user permissions"}:::decision N_QueryUserSecurityTableGCSTBRTUS_Node0_action["The GCSTBRT user security table is
queried using the ACF2 user ID"]:::main N_QueryUserSecurityTableGCSTBRTUS_Node0 -- Yes --> N_QueryUserSecurityTableGCSTBRTUS_Node0_action N_QueryUserSecurityTableGCSTBRTUS_Node0_action --> E_QueryUserSecurityTableGCSTBRTUS S_QueryUserSecurityTableGCSTBRTUS --> N_QueryUserSecurityTableGCSTBRTUS_Node0 N_QueryUserSecurityTableGCSTBRTUS_Node0 -- No --> E_QueryUserSecurityTableGCSTBRTUS
File: GCX003.cbl
GIVEN:
User ID is available for security lookup
WHEN:
The system needs to retrieve detailed user permissions
THEN:
The GCSTBRT user security table is queried using the ACF2 user ID
β Consolidated Acceptance Criteria
- If the query result → the user is considered found if the database operation was successful
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UserFoundinSecurityTable(["Start Step"])
E_UserFoundinSecurityTable(["End Step"])
N_UserFoundinSecurityTable_Node0{"The system evaluates the query
result"}:::decision N_UserFoundinSecurityTable_Node0_action["The user is considered found if the
database operation was successful"]:::main N_UserFoundinSecurityTable_Node0 -- Yes --> N_UserFoundinSecurityTable_Node0_action N_UserFoundinSecurityTable_Node0_action --> E_UserFoundinSecurityTable S_UserFoundinSecurityTable --> N_UserFoundinSecurityTable_Node0 N_UserFoundinSecurityTable_Node0 -- No --> E_UserFoundinSecurityTable
result"}:::decision N_UserFoundinSecurityTable_Node0_action["The user is considered found if the
database operation was successful"]:::main N_UserFoundinSecurityTable_Node0 -- Yes --> N_UserFoundinSecurityTable_Node0_action N_UserFoundinSecurityTable_Node0_action --> E_UserFoundinSecurityTable S_UserFoundinSecurityTable --> N_UserFoundinSecurityTable_Node0 N_UserFoundinSecurityTable_Node0 -- No --> E_UserFoundinSecurityTable
File: GCX003.cbl
GIVEN:
The user security table has been queried
WHEN:
The system evaluates the query result
THEN:
The user is considered found if the database operation was successful
β Consolidated Acceptance Criteria
- The system loads user permission data → the security segment data is moved to the user security segment structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LoadUserSecuritySegment(["Start Step"])
E_LoadUserSecuritySegment(["End Step"])
N_LoadUserSecuritySegment_Node0{"The system loads user permission
data"}:::decision N_LoadUserSecuritySegment_Node0_action["The security segment data is moved
to the user security segment
structure"]:::main N_LoadUserSecuritySegment_Node0 -- Yes --> N_LoadUserSecuritySegment_Node0_action N_LoadUserSecuritySegment_Node0_action --> E_LoadUserSecuritySegment S_LoadUserSecuritySegment --> N_LoadUserSecuritySegment_Node0 N_LoadUserSecuritySegment_Node0 -- No --> E_LoadUserSecuritySegment
data"}:::decision N_LoadUserSecuritySegment_Node0_action["The security segment data is moved
to the user security segment
structure"]:::main N_LoadUserSecuritySegment_Node0 -- Yes --> N_LoadUserSecuritySegment_Node0_action N_LoadUserSecuritySegment_Node0_action --> E_LoadUserSecuritySegment S_LoadUserSecuritySegment --> N_LoadUserSecuritySegment_Node0 N_LoadUserSecuritySegment_Node0 -- No --> E_LoadUserSecuritySegment
File: GCX003.cbl
GIVEN:
The user exists in the security table
WHEN:
The system loads user permission data
THEN:
The security segment data is moved to the user security segment structure
β Consolidated Acceptance Criteria
- The system initializes user permission data → the user security segment is set to spaces
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeEmptySecuritySegment(["Start Step"])
E_InitializeEmptySecuritySegment(["End Step"])
N_InitializeEmptySecuritySegment_Node0{"The system initializes user
permission data"}:::decision N_InitializeEmptySecuritySegment_Node0_action["The user security segment is set to
spaces"]:::main N_InitializeEmptySecuritySegment_Node0 -- Yes --> N_InitializeEmptySecuritySegment_Node0_action N_InitializeEmptySecuritySegment_Node0_action --> E_InitializeEmptySecuritySegment S_InitializeEmptySecuritySegment --> N_InitializeEmptySecuritySegment_Node0 N_InitializeEmptySecuritySegment_Node0 -- No --> E_InitializeEmptySecuritySegment
permission data"}:::decision N_InitializeEmptySecuritySegment_Node0_action["The user security segment is set to
spaces"]:::main N_InitializeEmptySecuritySegment_Node0 -- Yes --> N_InitializeEmptySecuritySegment_Node0_action N_InitializeEmptySecuritySegment_Node0_action --> E_InitializeEmptySecuritySegment S_InitializeEmptySecuritySegment --> N_InitializeEmptySecuritySegment_Node0 N_InitializeEmptySecuritySegment_Node0 -- No --> E_InitializeEmptySecuritySegment
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
The user does not exist in the security table
WHEN:
The system initializes user permission data
THEN:
The user security segment is set to spaces
β Consolidated Acceptance Criteria
- The request action is SEND → authorization is checked based on UTF-ADD permission level and AEI request status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckSendActionAuthorization(["Start Step"])
E_CheckSendActionAuthorization(["End Step"])
N_CheckSendActionAuthorization_Node0{"The request action is SEND"}:::decision
N_CheckSendActionAuthorization_Node0_action["Authorization is checked based on
UTF-ADD permission level and AEI
request status"]:::main N_CheckSendActionAuthorization_Node0 -- Yes --> N_CheckSendActionAuthorization_Node0_action N_CheckSendActionAuthorization_Node0_action --> E_CheckSendActionAuthorization S_CheckSendActionAuthorization --> N_CheckSendActionAuthorization_Node0 N_CheckSendActionAuthorization_Node0 -- No --> E_CheckSendActionAuthorization
UTF-ADD permission level and AEI
request status"]:::main N_CheckSendActionAuthorization_Node0 -- Yes --> N_CheckSendActionAuthorization_Node0_action N_CheckSendActionAuthorization_Node0_action --> E_CheckSendActionAuthorization S_CheckSendActionAuthorization --> N_CheckSendActionAuthorization_Node0 N_CheckSendActionAuthorization_Node0 -- No --> E_CheckSendActionAuthorization
File: GCX003.cbl
GIVEN:
User security permissions have been loaded
WHEN:
The request action is SEND
THEN:
- Authorization is checked based on utf-add permission level
- Aei request status
β Consolidated Acceptance Criteria
- The system checks user permission levels → access is granted if UTF-ADD equals 'U' or 'S' OR the request is an AEI train send request
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PermissionLevelUorS(["Start Step"])
E_PermissionLevelUorS(["End Step"])
N_PermissionLevelUorS_Node0{"The system checks user permission
levels"}:::decision N_PermissionLevelUorS_Node0_action["Access is granted if UTF-ADD equals
U or S OR the request is an AEI
train send request"]:::main N_PermissionLevelUorS_Node0 -- Yes --> N_PermissionLevelUorS_Node0_action N_PermissionLevelUorS_Node0_action --> E_PermissionLevelUorS S_PermissionLevelUorS --> N_PermissionLevelUorS_Node0 N_PermissionLevelUorS_Node0 -- No --> E_PermissionLevelUorS
levels"}:::decision N_PermissionLevelUorS_Node0_action["Access is granted if UTF-ADD equals
U or S OR the request is an AEI
train send request"]:::main N_PermissionLevelUorS_Node0 -- Yes --> N_PermissionLevelUorS_Node0_action N_PermissionLevelUorS_Node0_action --> E_PermissionLevelUorS S_PermissionLevelUorS --> N_PermissionLevelUorS_Node0 N_PermissionLevelUorS_Node0 -- No --> E_PermissionLevelUorS
File: GCX003.cbl
GIVEN:
A send action is being authorized
WHEN:
The system checks user permission levels
THEN:
Access is granted if UTF-ADD equals 'U' or 'S' OR the request is an AEI train send request
β Consolidated Acceptance Criteria
- If send action authorization → the no user access flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetNoUserAccessFlag(["Start Step"])
E_SetNoUserAccessFlag(["End Step"])
N_SetNoUserAccessFlag_Node0{"The system evaluates send action
authorization"}:::decision N_SetNoUserAccessFlag_Node0_action["The no user access flag is set to
true"]:::main N_SetNoUserAccessFlag_Node0 -- Yes --> N_SetNoUserAccessFlag_Node0_action N_SetNoUserAccessFlag_Node0_action --> E_SetNoUserAccessFlag S_SetNoUserAccessFlag --> N_SetNoUserAccessFlag_Node0 N_SetNoUserAccessFlag_Node0 -- No --> E_SetNoUserAccessFlag
authorization"}:::decision N_SetNoUserAccessFlag_Node0_action["The no user access flag is set to
true"]:::main N_SetNoUserAccessFlag_Node0 -- Yes --> N_SetNoUserAccessFlag_Node0_action N_SetNoUserAccessFlag_Node0_action --> E_SetNoUserAccessFlag S_SetNoUserAccessFlag --> N_SetNoUserAccessFlag_Node0 N_SetNoUserAccessFlag_Node0 -- No --> E_SetNoUserAccessFlag
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
User does not have 'U' or 'S' permission level AND the request is not an AEI request
WHEN:
The system evaluates send action authorization
THEN:
The no user access flag is set to true
β Consolidated Acceptance Criteria
- The system generates authorization error messages → message 13 is set to true and the report index is incremented
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateAuthorizationError(["Start Step"])
E_GenerateAuthorizationError(["End Step"])
N_GenerateAuthorizationError_Node0{"The system generates authorization
error messages"}:::decision N_GenerateAuthorizationError_Node0_action["Message 13 is set to true and the
report index is incremented"]:::exclusion N_GenerateAuthorizationError_Node0 -- Yes -->|Alternative| N_GenerateAuthorizationError_Node0_action N_GenerateAuthorizationError_Node0_action --> E_GenerateAuthorizationError S_GenerateAuthorizationError --> N_GenerateAuthorizationError_Node0 N_GenerateAuthorizationError_Node0 -- No --> E_GenerateAuthorizationError
error messages"}:::decision N_GenerateAuthorizationError_Node0_action["Message 13 is set to true and the
report index is incremented"]:::exclusion N_GenerateAuthorizationError_Node0 -- Yes -->|Alternative| N_GenerateAuthorizationError_Node0_action N_GenerateAuthorizationError_Node0_action --> E_GenerateAuthorizationError S_GenerateAuthorizationError --> N_GenerateAuthorizationError_Node0 N_GenerateAuthorizationError_Node0 -- No --> E_GenerateAuthorizationError
File: GCX003.cbl
GIVEN:
User access has been denied due to insufficient permissions
WHEN:
The system generates authorization error messages
THEN:
- Message 13 is set to true
- The report index is incremented
β Consolidated Acceptance Criteria
- The system sets special manifest authorization → the user is authorized for special manifest operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSpecialManifestAuthFlag(["Start Step"])
E_SetSpecialManifestAuthFlag(["End Step"])
N_SetSpecialManifestAuthFlag_Node0{"The system sets special manifest
authorization"}:::decision N_SetSpecialManifestAuthFlag_Node0_action["The user is authorized for special
manifest operations"]:::main N_SetSpecialManifestAuthFlag_Node0 -- Yes --> N_SetSpecialManifestAuthFlag_Node0_action N_SetSpecialManifestAuthFlag_Node0_action --> E_SetSpecialManifestAuthFlag S_SetSpecialManifestAuthFlag --> N_SetSpecialManifestAuthFlag_Node0 N_SetSpecialManifestAuthFlag_Node0 -- No --> E_SetSpecialManifestAuthFlag
authorization"}:::decision N_SetSpecialManifestAuthFlag_Node0_action["The user is authorized for special
manifest operations"]:::main N_SetSpecialManifestAuthFlag_Node0 -- Yes --> N_SetSpecialManifestAuthFlag_Node0_action N_SetSpecialManifestAuthFlag_Node0_action --> E_SetSpecialManifestAuthFlag S_SetSpecialManifestAuthFlag --> N_SetSpecialManifestAuthFlag_Node0 N_SetSpecialManifestAuthFlag_Node0 -- No --> E_SetSpecialManifestAuthFlag
File: GCX003.cbl
GIVEN:
User has 'S' level special manifest permissions OR the request is an AEI request
WHEN:
The system sets special manifest authorization
THEN:
The user is authorized for special manifest operations
β Consolidated Acceptance Criteria
- If special manifest authorization → the user not authorized for special manifest flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetNoSpecialManifestAuthFlag(["Start Step"])
E_SetNoSpecialManifestAuthFlag(["End Step"])
N_SetNoSpecialManifestAuthFlag_Node0{"The system evaluates special
manifest authorization"}:::decision N_SetNoSpecialManifestAuthFlag_Node0_action["The user not authorized for special
manifest flag is set to true"]:::main N_SetNoSpecialManifestAuthFlag_Node0 -- Yes --> N_SetNoSpecialManifestAuthFlag_Node0_action N_SetNoSpecialManifestAuthFlag_Node0_action --> E_SetNoSpecialManifestAuthFlag S_SetNoSpecialManifestAuthFlag --> N_SetNoSpecialManifestAuthFlag_Node0 N_SetNoSpecialManifestAuthFlag_Node0 -- No --> E_SetNoSpecialManifestAuthFlag
manifest authorization"}:::decision N_SetNoSpecialManifestAuthFlag_Node0_action["The user not authorized for special
manifest flag is set to true"]:::main N_SetNoSpecialManifestAuthFlag_Node0 -- Yes --> N_SetNoSpecialManifestAuthFlag_Node0_action N_SetNoSpecialManifestAuthFlag_Node0_action --> E_SetNoSpecialManifestAuthFlag S_SetNoSpecialManifestAuthFlag --> N_SetNoSpecialManifestAuthFlag_Node0 N_SetNoSpecialManifestAuthFlag_Node0 -- No --> E_SetNoSpecialManifestAuthFlag
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
User does not have 'S' level special manifest permissions AND the request is not an AEI request
WHEN:
The system evaluates special manifest authorization
THEN:
The user not authorized for special manifest flag is set to true
β Consolidated Acceptance Criteria
- The system checks user's UTF-ADD field for send authority → allow operation if user has 'U' or 'S' authority OR if request is AEI type, otherwise deny access and generate unauthorized message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UserHasSendAuthorityUorS(["Start Step"])
E_UserHasSendAuthorityUorS(["End Step"])
N_UserHasSendAuthorityUorS_Node0{"The system checks user s UTF-ADD
field for send authority"}:::decision N_UserHasSendAuthorityUorS_Node0_action["Allow operation if user has U or S
authority OR if request is AEI type,
otherwise deny access and generate
unauthorized message"]:::main N_UserHasSendAuthorityUorS_Node0 -- Yes --> N_UserHasSendAuthorityUorS_Node0_action N_UserHasSendAuthorityUorS_Node0_action --> E_UserHasSendAuthorityUorS S_UserHasSendAuthorityUorS --> N_UserHasSendAuthorityUorS_Node0 N_UserHasSendAuthorityUorS_Node0 -- No --> E_UserHasSendAuthorityUorS
field for send authority"}:::decision N_UserHasSendAuthorityUorS_Node0_action["Allow operation if user has U or S
authority OR if request is AEI type,
otherwise deny access and generate
unauthorized message"]:::main N_UserHasSendAuthorityUorS_Node0 -- Yes --> N_UserHasSendAuthorityUorS_Node0_action N_UserHasSendAuthorityUorS_Node0_action --> E_UserHasSendAuthorityUorS S_UserHasSendAuthorityUorS --> N_UserHasSendAuthorityUorS_Node0 N_UserHasSendAuthorityUorS_Node0 -- No --> E_UserHasSendAuthorityUorS
File: GCX003.cbl
GIVEN:
A user requests to send train information AND the request action is SEND
WHEN:
The system checks user's UTF-ADD field for send authority
THEN:
- Allow operation if user has 'u' or 's' authority or if request is aei type, otherwise deny access
- Generate unauthorized message
β Consolidated Acceptance Criteria
- The system checks user's UTF-SPEC-MANI field for special manifest authority → set special manifest authorization flag based on whether user has 'S' authority
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UserHasSpecialManifestAuthorityS(["Start Step"])
E_UserHasSpecialManifestAuthorityS(["End Step"])
N_UserHasSpecialManifestAuthorityS_Node0{"The system checks user s
UTF-SPEC-MANI field for special
manifest authority"}:::decision N_UserHasSpecialManifestAuthorityS_Node0_action["Set special manifest authorization
flag based on whether user has S
authority"]:::main N_UserHasSpecialManifestAuthorityS_Node0 -- Yes --> N_UserHasSpecialManifestAuthorityS_Node0_action N_UserHasSpecialManifestAuthorityS_Node0_action --> E_UserHasSpecialManifestAuthorityS S_UserHasSpecialManifestAuthorityS --> N_UserHasSpecialManifestAuthorityS_Node0 N_UserHasSpecialManifestAuthorityS_Node0 -- No --> E_UserHasSpecialManifestAuthorityS
UTF-SPEC-MANI field for special
manifest authority"}:::decision N_UserHasSpecialManifestAuthorityS_Node0_action["Set special manifest authorization
flag based on whether user has S
authority"]:::main N_UserHasSpecialManifestAuthorityS_Node0 -- Yes --> N_UserHasSpecialManifestAuthorityS_Node0_action N_UserHasSpecialManifestAuthorityS_Node0_action --> E_UserHasSpecialManifestAuthorityS S_UserHasSpecialManifestAuthorityS --> N_UserHasSpecialManifestAuthorityS_Node0 N_UserHasSpecialManifestAuthorityS_Node0 -- No --> E_UserHasSpecialManifestAuthorityS
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A user has valid send authority AND the request is not an AEI type
WHEN:
The system checks user's UTF-SPEC-MANI field for special manifest authority
THEN:
Set special manifest authorization flag based on whether user has 'S' authority
β Consolidated Acceptance Criteria
- The request type is identified as AEI request type → allow the request to proceed despite invalid SCAC access
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AEIRequestOverride(["Start Step"])
E_AEIRequestOverride(["End Step"])
N_AEIRequestOverride_Node0{"The request type is identified as
AEI request type"}:::decision N_AEIRequestOverride_Node0_action["Allow the request to proceed
despite invalid SCAC access"]:::main N_AEIRequestOverride_Node0 -- Yes --> N_AEIRequestOverride_Node0_action N_AEIRequestOverride_Node0_action --> E_AEIRequestOverride S_AEIRequestOverride --> N_AEIRequestOverride_Node0 N_AEIRequestOverride_Node0 -- No --> E_AEIRequestOverride
AEI request type"}:::decision N_AEIRequestOverride_Node0_action["Allow the request to proceed
despite invalid SCAC access"]:::main N_AEIRequestOverride_Node0 -- Yes --> N_AEIRequestOverride_Node0_action N_AEIRequestOverride_Node0_action --> E_AEIRequestOverride S_AEIRequestOverride --> N_AEIRequestOverride_Node0 N_AEIRequestOverride_Node0 -- No --> E_AEIRequestOverride
File: GCX003.cbl
GIVEN:
A request has invalid SCAC access permissions
WHEN:
The request type is identified as AEI request type
THEN:
Allow the request to proceed despite invalid SCAC access
β Consolidated Acceptance Criteria
- The train origin field is empty or contains only spaces → the system should set error message 2 indicating origin is required and mark validation as failed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsTrainOriginEmpty(["Start Step"])
E_IsTrainOriginEmpty(["End Step"])
N_IsTrainOriginEmpty_Node0{"The train origin field is empty or
contains only spaces"}:::decision N_IsTrainOriginEmpty_Node0_action["The system should set error message
2 indicating origin is required and
mark validation as failed"]:::main N_IsTrainOriginEmpty_Node0 -- Yes --> N_IsTrainOriginEmpty_Node0_action N_IsTrainOriginEmpty_Node0_action --> E_IsTrainOriginEmpty S_IsTrainOriginEmpty --> N_IsTrainOriginEmpty_Node0 N_IsTrainOriginEmpty_Node0 -- No --> E_IsTrainOriginEmpty
contains only spaces"}:::decision N_IsTrainOriginEmpty_Node0_action["The system should set error message
2 indicating origin is required and
mark validation as failed"]:::main N_IsTrainOriginEmpty_Node0 -- Yes --> N_IsTrainOriginEmpty_Node0_action N_IsTrainOriginEmpty_Node0_action --> E_IsTrainOriginEmpty S_IsTrainOriginEmpty --> N_IsTrainOriginEmpty_Node0 N_IsTrainOriginEmpty_Node0 -- No --> E_IsTrainOriginEmpty
File: GCX003.cbl
GIVEN:
A train manifest request is being processed
WHEN:
The train origin field is empty or contains only spaces
THEN:
- The system should set error message 2 indicating origin is required
- Mark validation as failed
β Consolidated Acceptance Criteria
- The system needs to validate the origin station → the system should query the GCSTBRT station code reference table using the train origin as the search key
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookUpStationinReferenceTable(["Start Step"])
E_LookUpStationinReferenceTable(["End Step"])
N_LookUpStationinReferenceTable_Node0{"The system needs to validate the
origin station"}:::decision N_LookUpStationinReferenceTable_Node0_action["The system should query the GCSTBRT
station code reference table using
the train origin as the search key"]:::main N_LookUpStationinReferenceTable_Node0 -- Yes --> N_LookUpStationinReferenceTable_Node0_action N_LookUpStationinReferenceTable_Node0_action --> E_LookUpStationinReferenceTable S_LookUpStationinReferenceTable --> N_LookUpStationinReferenceTable_Node0 N_LookUpStationinReferenceTable_Node0 -- No --> E_LookUpStationinReferenceTable
origin station"}:::decision N_LookUpStationinReferenceTable_Node0_action["The system should query the GCSTBRT
station code reference table using
the train origin as the search key"]:::main N_LookUpStationinReferenceTable_Node0 -- Yes --> N_LookUpStationinReferenceTable_Node0_action N_LookUpStationinReferenceTable_Node0_action --> E_LookUpStationinReferenceTable S_LookUpStationinReferenceTable --> N_LookUpStationinReferenceTable_Node0 N_LookUpStationinReferenceTable_Node0 -- No --> E_LookUpStationinReferenceTable
File: GCX003.cbl
GIVEN:
A train origin value has been provided
WHEN:
The system needs to validate the origin station
THEN:
The system should query the GCSTBRT station code reference table using the train origin as the search key
β Consolidated Acceptance Criteria
- The station lookup operation completes → if the station is not found in the reference table, the system should set error message 2 for invalid origin station
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StationFoundinTable(["Start Step"])
E_StationFoundinTable(["End Step"])
N_StationFoundinTable_Node0{"The station lookup operation
completes"}:::decision N_StationFoundinTable_Node0_action["If the station is not found in the
reference table, the system should
set error message 2 for invalid
origin station"]:::main N_StationFoundinTable_Node0 -- Yes --> N_StationFoundinTable_Node0_action N_StationFoundinTable_Node0_action --> E_StationFoundinTable S_StationFoundinTable --> N_StationFoundinTable_Node0 N_StationFoundinTable_Node0 -- No --> E_StationFoundinTable
completes"}:::decision N_StationFoundinTable_Node0_action["If the station is not found in the
reference table, the system should
set error message 2 for invalid
origin station"]:::main N_StationFoundinTable_Node0 -- Yes --> N_StationFoundinTable_Node0_action N_StationFoundinTable_Node0_action --> E_StationFoundinTable S_StationFoundinTable --> N_StationFoundinTable_Node0 N_StationFoundinTable_Node0 -- No --> E_StationFoundinTable
File: GCX003.cbl
GIVEN:
A train origin has been looked up in the station code reference table
WHEN:
The station lookup operation completes
THEN:
If the station is not found in the reference table, the system should set error message 2 for invalid origin station
β Consolidated Acceptance Criteria
- The system processes the station data → the system should extract the US station code from the station record and store it for crossing port determination
- The system extracts station identification information → the US station code is extracted from the station record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractUSStationCode(["Start Step"])
E_ExtractUSStationCode(["End Step"])
N_ExtractUSStationCode_Node0{"The system processes the station
data"}:::decision N_ExtractUSStationCode_Node0_action["The system should extract the US
station code from the station record
and store it for crossing port
determination"]:::main N_ExtractUSStationCode_Node0 -- Yes --> N_ExtractUSStationCode_Node0_action N_ExtractUSStationCode_Node0_action --> E_ExtractUSStationCode S_ExtractUSStationCode --> N_ExtractUSStationCode_Node0 N_ExtractUSStationCode_Node1{"The system extracts station
identification information"}:::decision N_ExtractUSStationCode_Node1_action["The US station code is extracted
from the station record"]:::main N_ExtractUSStationCode_Node1 -- Yes --> N_ExtractUSStationCode_Node1_action N_ExtractUSStationCode_Node1_action --> E_ExtractUSStationCode N_ExtractUSStationCode_Node0 -- No --> N_ExtractUSStationCode_Node1 N_ExtractUSStationCode_Node1 -- No --> E_ExtractUSStationCode
data"}:::decision N_ExtractUSStationCode_Node0_action["The system should extract the US
station code from the station record
and store it for crossing port
determination"]:::main N_ExtractUSStationCode_Node0 -- Yes --> N_ExtractUSStationCode_Node0_action N_ExtractUSStationCode_Node0_action --> E_ExtractUSStationCode S_ExtractUSStationCode --> N_ExtractUSStationCode_Node0 N_ExtractUSStationCode_Node1{"The system extracts station
identification information"}:::decision N_ExtractUSStationCode_Node1_action["The US station code is extracted
from the station record"]:::main N_ExtractUSStationCode_Node1 -- Yes --> N_ExtractUSStationCode_Node1_action N_ExtractUSStationCode_Node1_action --> E_ExtractUSStationCode N_ExtractUSStationCode_Node0 -- No --> N_ExtractUSStationCode_Node1 N_ExtractUSStationCode_Node1 -- No --> E_ExtractUSStationCode
File: GCX003.cbl
GIVEN:
A valid station record has been found in the reference table
WHEN:
The system processes the station data
THEN:
- The system should extract the us station code from the station record
- Store it for crossing port determination
File: GCX003.cbl
GIVEN:
Station segment data is available in working storage
WHEN:
The system extracts station identification information
THEN:
The US station code is extracted from the station record
β Consolidated Acceptance Criteria
- The system validates the US station code → if the US station code is empty or contains only spaces, the system should set error message 2 for invalid origin station
- The system validates the station code content → the US station code must not be spaces or empty to be considered valid
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_USStationCodeValid(["Start Step"])
E_USStationCodeValid(["End Step"])
N_USStationCodeValid_Node0{"The system validates the US station
code"}:::decision N_USStationCodeValid_Node0_action["If the US station code is empty or
contains only spaces, the system
should set error message 2 for
invalid origin station"]:::main N_USStationCodeValid_Node0 -- Yes --> N_USStationCodeValid_Node0_action N_USStationCodeValid_Node0_action --> E_USStationCodeValid S_USStationCodeValid --> N_USStationCodeValid_Node0 N_USStationCodeValid_Node1{"The system validates the station
code content"}:::decision N_USStationCodeValid_Node1_action["The US station code must not be
spaces or empty to be considered
valid"]:::main N_USStationCodeValid_Node1 -- Yes --> N_USStationCodeValid_Node1_action N_USStationCodeValid_Node1_action --> E_USStationCodeValid N_USStationCodeValid_Node0 -- No --> N_USStationCodeValid_Node1 N_USStationCodeValid_Node1 -- No --> E_USStationCodeValid
code"}:::decision N_USStationCodeValid_Node0_action["If the US station code is empty or
contains only spaces, the system
should set error message 2 for
invalid origin station"]:::main N_USStationCodeValid_Node0 -- Yes --> N_USStationCodeValid_Node0_action N_USStationCodeValid_Node0_action --> E_USStationCodeValid S_USStationCodeValid --> N_USStationCodeValid_Node0 N_USStationCodeValid_Node1{"The system validates the station
code content"}:::decision N_USStationCodeValid_Node1_action["The US station code must not be
spaces or empty to be considered
valid"]:::main N_USStationCodeValid_Node1 -- Yes --> N_USStationCodeValid_Node1_action N_USStationCodeValid_Node1_action --> E_USStationCodeValid N_USStationCodeValid_Node0 -- No --> N_USStationCodeValid_Node1 N_USStationCodeValid_Node1 -- No --> E_USStationCodeValid
File: GCX003.cbl
GIVEN:
A US station code has been extracted from the station reference data
WHEN:
The system validates the US station code
THEN:
If the US station code is empty or contains only spaces, the system should set error message 2 for invalid origin station
File: GCX003.cbl
GIVEN:
A US station code has been extracted from the station record
WHEN:
The system validates the station code content
THEN:
The US station code must not be spaces or empty to be considered valid
β Consolidated Acceptance Criteria
- The ETA date field equals '000000' → set error message indicating ETA date is required and exit validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ETADate000000(["Start Step"])
E_ETADate000000(["End Step"])
N_ETADate000000_Node0{"The ETA date field equals 000000"}:::decision
N_ETADate000000_Node0_action["Set error message indicating ETA
date is required and exit validation"]:::main N_ETADate000000_Node0 -- Yes --> N_ETADate000000_Node0_action N_ETADate000000_Node0_action --> E_ETADate000000 S_ETADate000000 --> N_ETADate000000_Node0 N_ETADate000000_Node0 -- No --> E_ETADate000000
date is required and exit validation"]:::main N_ETADate000000_Node0 -- Yes --> N_ETADate000000_Node0_action N_ETADate000000_Node0_action --> E_ETADate000000 S_ETADate000000 --> N_ETADate000000_Node0 N_ETADate000000_Node0 -- No --> E_ETADate000000
File: GCX003.cbl
GIVEN:
A train export request is being processed
WHEN:
The ETA date field equals '000000'
THEN:
- Set error message indicating eta date is required
- Exit validation
β Consolidated Acceptance Criteria
- The year portion is greater than 80 → set the century to '19' for years 81-99, otherwise set century to '20' for years 00-80
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Year80(["Start Step"])
E_Year80(["End Step"])
N_Year80_Node0{"The year portion is greater than 80"}:::decision
N_Year80_Node0_action["Set the century to 19 for years
81-99, otherwise set century to 20
for years 00-80"]:::main N_Year80_Node0 -- Yes --> N_Year80_Node0_action N_Year80_Node0_action --> E_Year80 S_Year80 --> N_Year80_Node0 N_Year80_Node0 -- No --> E_Year80
81-99, otherwise set century to 20
for years 00-80"]:::main N_Year80_Node0 -- Yes --> N_Year80_Node0_action N_Year80_Node0_action --> E_Year80 S_Year80 --> N_Year80_Node0 N_Year80_Node0 -- No --> E_Year80
File: GCX003.cbl
GIVEN:
An ETA date with 2-digit year is being processed
WHEN:
The year portion is greater than 80
THEN:
Set the century to '19' for years 81-99, otherwise set century to '20' for years 00-80
β Consolidated Acceptance Criteria
- Time zone conversion is requested → convert the local date and time to Eastern Standard Time using the border crossing station's time zone
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConvertLocalTimetoEasternTime(["Start Step"])
E_ConvertLocalTimetoEasternTime(["End Step"])
N_ConvertLocalTimetoEasternTime_Node0{"Time zone conversion is requested"}:::decision
N_ConvertLocalTimetoEasternTime_Node0_action["Convert the local date and time to
Eastern Standard Time using the
border crossing station s time zone"]:::main N_ConvertLocalTimetoEasternTime_Node0 -- Yes --> N_ConvertLocalTimetoEasternTime_Node0_action N_ConvertLocalTimetoEasternTime_Node0_action --> E_ConvertLocalTimetoEasternTime S_ConvertLocalTimetoEasternTime --> N_ConvertLocalTimetoEasternTime_Node0 N_ConvertLocalTimetoEasternTime_Node0 -- No --> E_ConvertLocalTimetoEasternTime
Eastern Standard Time using the
border crossing station s time zone"]:::main N_ConvertLocalTimetoEasternTime_Node0 -- Yes --> N_ConvertLocalTimetoEasternTime_Node0_action N_ConvertLocalTimetoEasternTime_Node0_action --> E_ConvertLocalTimetoEasternTime S_ConvertLocalTimetoEasternTime --> N_ConvertLocalTimetoEasternTime_Node0 N_ConvertLocalTimetoEasternTime_Node0 -- No --> E_ConvertLocalTimetoEasternTime
File: GCX003.cbl
GIVEN:
A valid ETA date and time in local border crossing time zone
WHEN:
Time zone conversion is requested
THEN:
- Convert the local date
- Time to eastern standard time using the border crossing station's time zone
β Consolidated Acceptance Criteria
- Date conversion service validates the format:
- time is not numeric
- hour is not between 00-23
- minute is not between 00-59
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DateTimeFormatValid(["Start Step"])
E_DateTimeFormatValid(["End Step"])
N_DateTimeFormatValid_Node0{"Date conversion service validates
the format OR time is not numeric OR
hour is not between 00-23 OR minute
is not between 00-59"}:::decision N_DateTimeFormatValid_Node0_action["Set error message indicating
invalid ETA format"]:::main N_DateTimeFormatValid_Node0 -- Yes --> N_DateTimeFormatValid_Node0_action N_DateTimeFormatValid_Node0_action --> E_DateTimeFormatValid S_DateTimeFormatValid --> N_DateTimeFormatValid_Node0 N_DateTimeFormatValid_Node0 -- No --> E_DateTimeFormatValid
the format OR time is not numeric OR
hour is not between 00-23 OR minute
is not between 00-59"}:::decision N_DateTimeFormatValid_Node0_action["Set error message indicating
invalid ETA format"]:::main N_DateTimeFormatValid_Node0 -- Yes --> N_DateTimeFormatValid_Node0_action N_DateTimeFormatValid_Node0_action --> E_DateTimeFormatValid S_DateTimeFormatValid --> N_DateTimeFormatValid_Node0 N_DateTimeFormatValid_Node0 -- No --> E_DateTimeFormatValid
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
An ETA date and time are provided
WHEN:
Date conversion service validates the format OR time is not numeric OR hour is not between 00-23 OR minute is not between 00-59
THEN:
Set error message indicating invalid ETA format
β Consolidated Acceptance Criteria
- The user has supervisor authorization level ('S') → set acceptable date range to 30 days before current date to 5 days after current date, otherwise set range to 2 days before current date to 2 days after current date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UserTypeSupervisor(["Start Step"])
E_UserTypeSupervisor(["End Step"])
N_UserTypeSupervisor_Node0{"The user has supervisor
authorization level S"}:::decision N_UserTypeSupervisor_Node0_action["Set acceptable date range to 30
days before current date to 5 days
after current date, otherwise set
range to 2 days before current date
to 2 days after current date"]:::main N_UserTypeSupervisor_Node0 -- Yes --> N_UserTypeSupervisor_Node0_action N_UserTypeSupervisor_Node0_action --> E_UserTypeSupervisor S_UserTypeSupervisor --> N_UserTypeSupervisor_Node0 N_UserTypeSupervisor_Node0 -- No --> E_UserTypeSupervisor
authorization level S"}:::decision N_UserTypeSupervisor_Node0_action["Set acceptable date range to 30
days before current date to 5 days
after current date, otherwise set
range to 2 days before current date
to 2 days after current date"]:::main N_UserTypeSupervisor_Node0 -- Yes --> N_UserTypeSupervisor_Node0_action N_UserTypeSupervisor_Node0_action --> E_UserTypeSupervisor S_UserTypeSupervisor --> N_UserTypeSupervisor_Node0 N_UserTypeSupervisor_Node0 -- No --> E_UserTypeSupervisor
File: GCX003.cbl
GIVEN:
A user is processing an ETA validation
WHEN:
The user has supervisor authorization level ('S')
THEN:
Set acceptable date range to 30 days before current date to 5 days after current date, otherwise set range to 2 days before current date to 2 days after current date
β Consolidated Acceptance Criteria
- The ETA date is less than the low date OR greater than the high date of the acceptable range → set appropriate error message based on user type - message 4 for supervisor users or message 21 for regular users
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ETAWithinAcceptableRange(["Start Step"])
E_ETAWithinAcceptableRange(["End Step"])
N_ETAWithinAcceptableRange_Node0{"The ETA date is less than the low
date OR greater than the high date
of the acceptable range"}:::decision N_ETAWithinAcceptableRange_Node0_action["Set appropriate error message based
on user type - message 4 for
supervisor users or message 21 for
regular users"]:::main N_ETAWithinAcceptableRange_Node0 -- Yes --> N_ETAWithinAcceptableRange_Node0_action N_ETAWithinAcceptableRange_Node0_action --> E_ETAWithinAcceptableRange S_ETAWithinAcceptableRange --> N_ETAWithinAcceptableRange_Node0 N_ETAWithinAcceptableRange_Node0 -- No --> E_ETAWithinAcceptableRange
date OR greater than the high date
of the acceptable range"}:::decision N_ETAWithinAcceptableRange_Node0_action["Set appropriate error message based
on user type - message 4 for
supervisor users or message 21 for
regular users"]:::main N_ETAWithinAcceptableRange_Node0 -- Yes --> N_ETAWithinAcceptableRange_Node0_action N_ETAWithinAcceptableRange_Node0_action --> E_ETAWithinAcceptableRange S_ETAWithinAcceptableRange --> N_ETAWithinAcceptableRange_Node0 N_ETAWithinAcceptableRange_Node0 -- No --> E_ETAWithinAcceptableRange
File: GCX003.cbl
GIVEN:
An ETA date and calculated acceptable date range
WHEN:
The ETA date is less than the low date OR greater than the high date of the acceptable range
THEN:
Set appropriate error message based on user type - message 4 for supervisor users or message 21 for regular users
β Consolidated Acceptance Criteria
- The system needs to generate a unique US Customs train identifier → the system extracts the Canadian Pacific SCAC code from constants and assigns it to the train SCAC field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractSCACCodefromConstants(["Start Step"])
E_ExtractSCACCodefromConstants(["End Step"])
N_ExtractSCACCodefromConstants_Node0{"The system needs to generate a
unique US Customs train identifier"}:::decision N_ExtractSCACCodefromConstants_Node0_action["The system extracts the Canadian
Pacific SCAC code from constants and
assigns it to the train SCAC field"]:::main N_ExtractSCACCodefromConstants_Node0 -- Yes --> N_ExtractSCACCodefromConstants_Node0_action N_ExtractSCACCodefromConstants_Node0_action --> E_ExtractSCACCodefromConstants S_ExtractSCACCodefromConstants --> N_ExtractSCACCodefromConstants_Node0 N_ExtractSCACCodefromConstants_Node0 -- No --> E_ExtractSCACCodefromConstants
unique US Customs train identifier"}:::decision N_ExtractSCACCodefromConstants_Node0_action["The system extracts the Canadian
Pacific SCAC code from constants and
assigns it to the train SCAC field"]:::main N_ExtractSCACCodefromConstants_Node0 -- Yes --> N_ExtractSCACCodefromConstants_Node0_action N_ExtractSCACCodefromConstants_Node0_action --> E_ExtractSCACCodefromConstants S_ExtractSCACCodefromConstants --> N_ExtractSCACCodefromConstants_Node0 N_ExtractSCACCodefromConstants_Node0 -- No --> E_ExtractSCACCodefromConstants
File: GCX003.cbl
GIVEN:
A train manifest processing request is being prepared
WHEN:
The system needs to generate a unique US Customs train identifier
THEN:
- The system extracts the canadian pacific scac code from constants
- Assigns it to the train scac field
β Consolidated Acceptance Criteria
- The system processes the request for US Customs train ID generation → the system extracts the train ID from the request and assigns it to the train identifier field
- The system processes the request for customs train ID creation → the train ID from the request is extracted and used as a component in the unique identifier
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetTrainIDfromRequest(["Start Step"])
E_GetTrainIDfromRequest(["End Step"])
N_GetTrainIDfromRequest_Node0{"The system processes the request
for US Customs train ID generation"}:::decision N_GetTrainIDfromRequest_Node0_action["The system extracts the train ID
from the request and assigns it to
the train identifier field"]:::main N_GetTrainIDfromRequest_Node0 -- Yes --> N_GetTrainIDfromRequest_Node0_action N_GetTrainIDfromRequest_Node0_action --> E_GetTrainIDfromRequest S_GetTrainIDfromRequest --> N_GetTrainIDfromRequest_Node0 N_GetTrainIDfromRequest_Node1{"The system processes the request
for customs train ID creation"}:::decision N_GetTrainIDfromRequest_Node1_action["The train ID from the request is
extracted and used as a component in
the unique identifier"]:::main N_GetTrainIDfromRequest_Node1 -- Yes --> N_GetTrainIDfromRequest_Node1_action N_GetTrainIDfromRequest_Node1_action --> E_GetTrainIDfromRequest N_GetTrainIDfromRequest_Node0 -- No --> N_GetTrainIDfromRequest_Node1 N_GetTrainIDfromRequest_Node1 -- No --> E_GetTrainIDfromRequest
for US Customs train ID generation"}:::decision N_GetTrainIDfromRequest_Node0_action["The system extracts the train ID
from the request and assigns it to
the train identifier field"]:::main N_GetTrainIDfromRequest_Node0 -- Yes --> N_GetTrainIDfromRequest_Node0_action N_GetTrainIDfromRequest_Node0_action --> E_GetTrainIDfromRequest S_GetTrainIDfromRequest --> N_GetTrainIDfromRequest_Node0 N_GetTrainIDfromRequest_Node1{"The system processes the request
for customs train ID creation"}:::decision N_GetTrainIDfromRequest_Node1_action["The train ID from the request is
extracted and used as a component in
the unique identifier"]:::main N_GetTrainIDfromRequest_Node1 -- Yes --> N_GetTrainIDfromRequest_Node1_action N_GetTrainIDfromRequest_Node1_action --> E_GetTrainIDfromRequest N_GetTrainIDfromRequest_Node0 -- No --> N_GetTrainIDfromRequest_Node1 N_GetTrainIDfromRequest_Node1 -- No --> E_GetTrainIDfromRequest
File: GCX003.cbl
GIVEN:
A train manifest request contains train identification information
WHEN:
The system processes the request for US Customs train ID generation
THEN:
- The system extracts the train id from the request
- Assigns it to the train identifier field
File: GCX003.cbl
GIVEN:
A train manifest request is received
WHEN:
The system processes the request for customs train ID creation
THEN:
- The train id from the request is extracted
- Used as a component in the unique identifier
β Consolidated Acceptance Criteria
- The system builds the US Customs train identifier → the system extracts the train origin from the request and assigns it to the train origin field
- The system builds the unique customs train identifier → the train origin station code is extracted from the request and included as a component
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetTrainOriginfromRequest(["Start Step"])
E_GetTrainOriginfromRequest(["End Step"])
N_GetTrainOriginfromRequest_Node0{"The system builds the US Customs
train identifier"}:::decision N_GetTrainOriginfromRequest_Node0_action["The system extracts the train
origin from the request and assigns
it to the train origin field"]:::main N_GetTrainOriginfromRequest_Node0 -- Yes --> N_GetTrainOriginfromRequest_Node0_action N_GetTrainOriginfromRequest_Node0_action --> E_GetTrainOriginfromRequest S_GetTrainOriginfromRequest --> N_GetTrainOriginfromRequest_Node0 N_GetTrainOriginfromRequest_Node1{"The system builds the unique
customs train identifier"}:::decision N_GetTrainOriginfromRequest_Node1_action["The train origin station code is
extracted from the request and
included as a component"]:::main N_GetTrainOriginfromRequest_Node1 -- Yes --> N_GetTrainOriginfromRequest_Node1_action N_GetTrainOriginfromRequest_Node1_action --> E_GetTrainOriginfromRequest N_GetTrainOriginfromRequest_Node0 -- No --> N_GetTrainOriginfromRequest_Node1 N_GetTrainOriginfromRequest_Node1 -- No --> E_GetTrainOriginfromRequest
train identifier"}:::decision N_GetTrainOriginfromRequest_Node0_action["The system extracts the train
origin from the request and assigns
it to the train origin field"]:::main N_GetTrainOriginfromRequest_Node0 -- Yes --> N_GetTrainOriginfromRequest_Node0_action N_GetTrainOriginfromRequest_Node0_action --> E_GetTrainOriginfromRequest S_GetTrainOriginfromRequest --> N_GetTrainOriginfromRequest_Node0 N_GetTrainOriginfromRequest_Node1{"The system builds the unique
customs train identifier"}:::decision N_GetTrainOriginfromRequest_Node1_action["The train origin station code is
extracted from the request and
included as a component"]:::main N_GetTrainOriginfromRequest_Node1 -- Yes --> N_GetTrainOriginfromRequest_Node1_action N_GetTrainOriginfromRequest_Node1_action --> E_GetTrainOriginfromRequest N_GetTrainOriginfromRequest_Node0 -- No --> N_GetTrainOriginfromRequest_Node1 N_GetTrainOriginfromRequest_Node1 -- No --> E_GetTrainOriginfromRequest
File: GCX003.cbl
GIVEN:
A train manifest request specifies an origin location
WHEN:
The system builds the US Customs train identifier
THEN:
- The system extracts the train origin from the request
- Assigns it to the train origin field
File: GCX003.cbl
GIVEN:
A train manifest request contains origin station information
WHEN:
The system builds the unique customs train identifier
THEN:
- The train origin station code is extracted from the request
- Included as a component
β Consolidated Acceptance Criteria
- The system generates the US Customs train identifier → the system extracts the consist number from the request and assigns it to the train consist number field
- The system creates the customs train identifier → the consist number is extracted from the request and used as an identifier component
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetConsistNumberfromRequest(["Start Step"])
E_GetConsistNumberfromRequest(["End Step"])
N_GetConsistNumberfromRequest_Node0{"The system generates the US Customs
train identifier"}:::decision N_GetConsistNumberfromRequest_Node0_action["The system extracts the consist
number from the request and assigns
it to the train consist number field"]:::main N_GetConsistNumberfromRequest_Node0 -- Yes --> N_GetConsistNumberfromRequest_Node0_action N_GetConsistNumberfromRequest_Node0_action --> E_GetConsistNumberfromRequest S_GetConsistNumberfromRequest --> N_GetConsistNumberfromRequest_Node0 N_GetConsistNumberfromRequest_Node1{"The system creates the customs
train identifier"}:::decision N_GetConsistNumberfromRequest_Node1_action["The consist number is extracted
from the request and used as an
identifier component"]:::main N_GetConsistNumberfromRequest_Node1 -- Yes --> N_GetConsistNumberfromRequest_Node1_action N_GetConsistNumberfromRequest_Node1_action --> E_GetConsistNumberfromRequest N_GetConsistNumberfromRequest_Node0 -- No --> N_GetConsistNumberfromRequest_Node1 N_GetConsistNumberfromRequest_Node1 -- No --> E_GetConsistNumberfromRequest
train identifier"}:::decision N_GetConsistNumberfromRequest_Node0_action["The system extracts the consist
number from the request and assigns
it to the train consist number field"]:::main N_GetConsistNumberfromRequest_Node0 -- Yes --> N_GetConsistNumberfromRequest_Node0_action N_GetConsistNumberfromRequest_Node0_action --> E_GetConsistNumberfromRequest S_GetConsistNumberfromRequest --> N_GetConsistNumberfromRequest_Node0 N_GetConsistNumberfromRequest_Node1{"The system creates the customs
train identifier"}:::decision N_GetConsistNumberfromRequest_Node1_action["The consist number is extracted
from the request and used as an
identifier component"]:::main N_GetConsistNumberfromRequest_Node1 -- Yes --> N_GetConsistNumberfromRequest_Node1_action N_GetConsistNumberfromRequest_Node1_action --> E_GetConsistNumberfromRequest N_GetConsistNumberfromRequest_Node0 -- No --> N_GetConsistNumberfromRequest_Node1 N_GetConsistNumberfromRequest_Node1 -- No --> E_GetConsistNumberfromRequest
File: GCX003.cbl
GIVEN:
A train manifest request includes a consist number
WHEN:
The system generates the US Customs train identifier
THEN:
- The system extracts the consist number from the request
- Assigns it to the train consist number field
File: GCX003.cbl
GIVEN:
A train manifest request includes a consist number
WHEN:
The system creates the customs train identifier
THEN:
- The consist number is extracted from the request
- Used as an identifier component
β Consolidated Acceptance Criteria
- A unique train identifier needs to be generated → the system captures the current machine date and century from the system
- The system needs to create a time-stamped unique identifier → the current machine date is captured from the system for inclusion in the train ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetCurrentMachineDate(["Start Step"])
E_GetCurrentMachineDate(["End Step"])
N_GetCurrentMachineDate_Node0{"A unique train identifier needs to
be generated"}:::decision N_GetCurrentMachineDate_Node0_action["The system captures the current
machine date and century from the
system"]:::main N_GetCurrentMachineDate_Node0 -- Yes --> N_GetCurrentMachineDate_Node0_action N_GetCurrentMachineDate_Node0_action --> E_GetCurrentMachineDate S_GetCurrentMachineDate --> N_GetCurrentMachineDate_Node0 N_GetCurrentMachineDate_Node1{"The system needs to create a
time-stamped unique identifier"}:::decision N_GetCurrentMachineDate_Node1_action["The current machine date is
captured from the system for
inclusion in the train ID"]:::main N_GetCurrentMachineDate_Node1 -- Yes --> N_GetCurrentMachineDate_Node1_action N_GetCurrentMachineDate_Node1_action --> E_GetCurrentMachineDate N_GetCurrentMachineDate_Node0 -- No --> N_GetCurrentMachineDate_Node1 N_GetCurrentMachineDate_Node1 -- No --> E_GetCurrentMachineDate
be generated"}:::decision N_GetCurrentMachineDate_Node0_action["The system captures the current
machine date and century from the
system"]:::main N_GetCurrentMachineDate_Node0 -- Yes --> N_GetCurrentMachineDate_Node0_action N_GetCurrentMachineDate_Node0_action --> E_GetCurrentMachineDate S_GetCurrentMachineDate --> N_GetCurrentMachineDate_Node0 N_GetCurrentMachineDate_Node1{"The system needs to create a
time-stamped unique identifier"}:::decision N_GetCurrentMachineDate_Node1_action["The current machine date is
captured from the system for
inclusion in the train ID"]:::main N_GetCurrentMachineDate_Node1 -- Yes --> N_GetCurrentMachineDate_Node1_action N_GetCurrentMachineDate_Node1_action --> E_GetCurrentMachineDate N_GetCurrentMachineDate_Node0 -- No --> N_GetCurrentMachineDate_Node1 N_GetCurrentMachineDate_Node1 -- No --> E_GetCurrentMachineDate
File: GCX003.cbl
GIVEN:
The system is processing a train manifest request
WHEN:
A unique train identifier needs to be generated
THEN:
- The system captures the current machine date
- Century from the system
File: GCX003.cbl
GIVEN:
A train manifest is being processed
WHEN:
The system needs to create a time-stamped unique identifier
THEN:
The current machine date is captured from the system for inclusion in the train ID
β Consolidated Acceptance Criteria
- The date needs to be formatted for train identifier generation → the system converts the date to Julian format using date conversion services and stores it as a 5-digit Julian date
- The date needs to be formatted for the customs train identifier → the date is converted to Julian format (5-digit format) for consistent date representation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConvertDatetoJulianFormat(["Start Step"])
E_ConvertDatetoJulianFormat(["End Step"])
N_ConvertDatetoJulianFormat_Node0{"The date needs to be formatted for
train identifier generation"}:::decision N_ConvertDatetoJulianFormat_Node0_action["The system converts the date to
Julian format using date conversion
services and stores it as a 5-digit
Julian date"]:::main N_ConvertDatetoJulianFormat_Node0 -- Yes --> N_ConvertDatetoJulianFormat_Node0_action N_ConvertDatetoJulianFormat_Node0_action --> E_ConvertDatetoJulianFormat S_ConvertDatetoJulianFormat --> N_ConvertDatetoJulianFormat_Node0 N_ConvertDatetoJulianFormat_Node1{"The date needs to be formatted for
the customs train identifier"}:::decision N_ConvertDatetoJulianFormat_Node1_action["The date is converted to Julian
format 5-digit format for consistent
date representation"]:::main N_ConvertDatetoJulianFormat_Node1 -- Yes --> N_ConvertDatetoJulianFormat_Node1_action N_ConvertDatetoJulianFormat_Node1_action --> E_ConvertDatetoJulianFormat N_ConvertDatetoJulianFormat_Node0 -- No --> N_ConvertDatetoJulianFormat_Node1 N_ConvertDatetoJulianFormat_Node1 -- No --> E_ConvertDatetoJulianFormat
train identifier generation"}:::decision N_ConvertDatetoJulianFormat_Node0_action["The system converts the date to
Julian format using date conversion
services and stores it as a 5-digit
Julian date"]:::main N_ConvertDatetoJulianFormat_Node0 -- Yes --> N_ConvertDatetoJulianFormat_Node0_action N_ConvertDatetoJulianFormat_Node0_action --> E_ConvertDatetoJulianFormat S_ConvertDatetoJulianFormat --> N_ConvertDatetoJulianFormat_Node0 N_ConvertDatetoJulianFormat_Node1{"The date needs to be formatted for
the customs train identifier"}:::decision N_ConvertDatetoJulianFormat_Node1_action["The date is converted to Julian
format 5-digit format for consistent
date representation"]:::main N_ConvertDatetoJulianFormat_Node1 -- Yes --> N_ConvertDatetoJulianFormat_Node1_action N_ConvertDatetoJulianFormat_Node1_action --> E_ConvertDatetoJulianFormat N_ConvertDatetoJulianFormat_Node0 -- No --> N_ConvertDatetoJulianFormat_Node1 N_ConvertDatetoJulianFormat_Node1 -- No --> E_ConvertDatetoJulianFormat
File: GCX003.cbl
GIVEN:
The system has captured the current machine date and century
WHEN:
The date needs to be formatted for train identifier generation
THEN:
- The system converts the date to julian format using date conversion services
- Stores it as a 5-digit julian date
File: GCX003.cbl
GIVEN:
The current machine date has been captured
WHEN:
The date needs to be formatted for the customs train identifier
THEN:
The date is converted to Julian format (5-digit format) for consistent date representation
β Consolidated Acceptance Criteria
- The system builds the US Customs train identifier → the system sets the export indicator to 'T' to designate this as an export train
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildTrainExportIndicatorT(["Start Step"])
E_BuildTrainExportIndicatorT(["End Step"])
N_BuildTrainExportIndicatorT_Node0{"The system builds the US Customs
train identifier"}:::decision N_BuildTrainExportIndicatorT_Node0_action["The system sets the export
indicator to T to designate this as
an export train"]:::main N_BuildTrainExportIndicatorT_Node0 -- Yes --> N_BuildTrainExportIndicatorT_Node0_action N_BuildTrainExportIndicatorT_Node0_action --> E_BuildTrainExportIndicatorT S_BuildTrainExportIndicatorT --> N_BuildTrainExportIndicatorT_Node0 N_BuildTrainExportIndicatorT_Node0 -- No --> E_BuildTrainExportIndicatorT
train identifier"}:::decision N_BuildTrainExportIndicatorT_Node0_action["The system sets the export
indicator to T to designate this as
an export train"]:::main N_BuildTrainExportIndicatorT_Node0 -- Yes --> N_BuildTrainExportIndicatorT_Node0_action N_BuildTrainExportIndicatorT_Node0_action --> E_BuildTrainExportIndicatorT S_BuildTrainExportIndicatorT --> N_BuildTrainExportIndicatorT_Node0 N_BuildTrainExportIndicatorT_Node0 -- No --> E_BuildTrainExportIndicatorT
File: GCX003.cbl
GIVEN:
A train manifest is being processed for export purposes
WHEN:
The system builds the US Customs train identifier
THEN:
The system sets the export indicator to 'T' to designate this as an export train
β Consolidated Acceptance Criteria
- The system needs to create the final US Customs train identifier → the system concatenates all components into a single unique identifier and stores it as the US Customer Train ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConcatenateAllComponentsintoUSCustomsTrainID(["Start Step"])
E_ConcatenateAllComponentsintoUSCustomsTrainID(["End Step"])
N_ConcatenateAllComponentsintoUSCustomsTrainID_Node0{"The system needs to create the
final US Customs train identifier"}:::decision N_ConcatenateAllComponentsintoUSCustomsTrainID_Node0_action["The system concatenates all
components into a single unique
identifier and stores it as the US
Customer Train ID"]:::main N_ConcatenateAllComponentsintoUSCustomsTrainID_Node0 -- Yes --> N_ConcatenateAllComponentsintoUSCustomsTrainID_Node0_action N_ConcatenateAllComponentsintoUSCustomsTrainID_Node0_action --> E_ConcatenateAllComponentsintoUSCustomsTrainID S_ConcatenateAllComponentsintoUSCustomsTrainID --> N_ConcatenateAllComponentsintoUSCustomsTrainID_Node0 N_ConcatenateAllComponentsintoUSCustomsTrainID_Node0 -- No --> E_ConcatenateAllComponentsintoUSCustomsTrainID
final US Customs train identifier"}:::decision N_ConcatenateAllComponentsintoUSCustomsTrainID_Node0_action["The system concatenates all
components into a single unique
identifier and stores it as the US
Customer Train ID"]:::main N_ConcatenateAllComponentsintoUSCustomsTrainID_Node0 -- Yes --> N_ConcatenateAllComponentsintoUSCustomsTrainID_Node0_action N_ConcatenateAllComponentsintoUSCustomsTrainID_Node0_action --> E_ConcatenateAllComponentsintoUSCustomsTrainID S_ConcatenateAllComponentsintoUSCustomsTrainID --> N_ConcatenateAllComponentsintoUSCustomsTrainID_Node0 N_ConcatenateAllComponentsintoUSCustomsTrainID_Node0 -- No --> E_ConcatenateAllComponentsintoUSCustomsTrainID
File: GCX003.cbl
GIVEN:
All train identifier components have been extracted and formatted (SCAC code, train ID, origin, consist number, Julian date, export indicator)
WHEN:
The system needs to create the final US Customs train identifier
THEN:
- The system concatenates all components into a single unique identifier
- Stores it as the us customer train id
β Consolidated Acceptance Criteria
- The system needs to preserve the identifier for processing → the system stores the generated train ID in the train header record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreGeneratedIDinTrainHeader(["Start Step"])
E_StoreGeneratedIDinTrainHeader(["End Step"])
N_StoreGeneratedIDinTrainHeader_Node0{"The system needs to preserve the
identifier for processing"}:::decision N_StoreGeneratedIDinTrainHeader_Node0_action["The system stores the generated
train ID in the train header record"]:::main N_StoreGeneratedIDinTrainHeader_Node0 -- Yes --> N_StoreGeneratedIDinTrainHeader_Node0_action N_StoreGeneratedIDinTrainHeader_Node0_action --> E_StoreGeneratedIDinTrainHeader S_StoreGeneratedIDinTrainHeader --> N_StoreGeneratedIDinTrainHeader_Node0 N_StoreGeneratedIDinTrainHeader_Node0 -- No --> E_StoreGeneratedIDinTrainHeader
identifier for processing"}:::decision N_StoreGeneratedIDinTrainHeader_Node0_action["The system stores the generated
train ID in the train header record"]:::main N_StoreGeneratedIDinTrainHeader_Node0 -- Yes --> N_StoreGeneratedIDinTrainHeader_Node0_action N_StoreGeneratedIDinTrainHeader_Node0_action --> E_StoreGeneratedIDinTrainHeader S_StoreGeneratedIDinTrainHeader --> N_StoreGeneratedIDinTrainHeader_Node0 N_StoreGeneratedIDinTrainHeader_Node0 -- No --> E_StoreGeneratedIDinTrainHeader
File: GCX003.cbl
GIVEN:
A complete US Customs train identifier has been generated
WHEN:
The system needs to preserve the identifier for processing
THEN:
The system stores the generated train ID in the train header record
β Consolidated Acceptance Criteria
- The system needs to ensure uniqueness of the train record → the system queries the train database to check if a record with the same train identifier already exists
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifTrainIDAlreadyExistsinDatabase(["Start Step"])
E_CheckifTrainIDAlreadyExistsinDatabase(["End Step"])
N_CheckifTrainIDAlreadyExistsinDatabase_Node0{"The system needs to ensure
uniqueness of the train record"}:::decision N_CheckifTrainIDAlreadyExistsinDatabase_Node0_action["The system queries the train
database to check if a record with
the same train identifier already
exists"]:::main N_CheckifTrainIDAlreadyExistsinDatabase_Node0 -- Yes --> N_CheckifTrainIDAlreadyExistsinDatabase_Node0_action N_CheckifTrainIDAlreadyExistsinDatabase_Node0_action --> E_CheckifTrainIDAlreadyExistsinDatabase S_CheckifTrainIDAlreadyExistsinDatabase --> N_CheckifTrainIDAlreadyExistsinDatabase_Node0 N_CheckifTrainIDAlreadyExistsinDatabase_Node0 -- No --> E_CheckifTrainIDAlreadyExistsinDatabase
uniqueness of the train record"}:::decision N_CheckifTrainIDAlreadyExistsinDatabase_Node0_action["The system queries the train
database to check if a record with
the same train identifier already
exists"]:::main N_CheckifTrainIDAlreadyExistsinDatabase_Node0 -- Yes --> N_CheckifTrainIDAlreadyExistsinDatabase_Node0_action N_CheckifTrainIDAlreadyExistsinDatabase_Node0_action --> E_CheckifTrainIDAlreadyExistsinDatabase S_CheckifTrainIDAlreadyExistsinDatabase --> N_CheckifTrainIDAlreadyExistsinDatabase_Node0 N_CheckifTrainIDAlreadyExistsinDatabase_Node0 -- No --> E_CheckifTrainIDAlreadyExistsinDatabase
File: GCX003.cbl
GIVEN:
A US Customs train identifier has been generated
WHEN:
The system needs to ensure uniqueness of the train record
THEN:
The system queries the train database to check if a record with the same train identifier already exists
β Consolidated Acceptance Criteria
- The system needs to determine the status of the existing record → the system reads the existing train record to examine its current status and deletion flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReadExistingTrainRecord(["Start Step"])
E_ReadExistingTrainRecord(["End Step"])
N_ReadExistingTrainRecord_Node0{"The system needs to determine the
status of the existing record"}:::decision N_ReadExistingTrainRecord_Node0_action["The system reads the existing train
record to examine its current status
and deletion flag"]:::main N_ReadExistingTrainRecord_Node0 -- Yes --> N_ReadExistingTrainRecord_Node0_action N_ReadExistingTrainRecord_Node0_action --> E_ReadExistingTrainRecord S_ReadExistingTrainRecord --> N_ReadExistingTrainRecord_Node0 N_ReadExistingTrainRecord_Node0 -- No --> E_ReadExistingTrainRecord
status of the existing record"}:::decision N_ReadExistingTrainRecord_Node0_action["The system reads the existing train
record to examine its current status
and deletion flag"]:::main N_ReadExistingTrainRecord_Node0 -- Yes --> N_ReadExistingTrainRecord_Node0_action N_ReadExistingTrainRecord_Node0_action --> E_ReadExistingTrainRecord S_ReadExistingTrainRecord --> N_ReadExistingTrainRecord_Node0 N_ReadExistingTrainRecord_Node0 -- No --> E_ReadExistingTrainRecord
File: GCX003.cbl
GIVEN:
A train record with the same identifier exists in the database
WHEN:
The system needs to determine the status of the existing record
THEN:
- The system reads the existing train record to examine its current status
- Deletion flag
β Consolidated Acceptance Criteria
- The system needs to determine if the new record can proceed → the system checks if the existing record has a deletion confirmation flag set to determine next action
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsExistingRecordMarkedforDeletion(["Start Step"])
E_IsExistingRecordMarkedforDeletion(["End Step"])
N_IsExistingRecordMarkedforDeletion_Node0{"The system needs to determine if
the new record can proceed"}:::decision N_IsExistingRecordMarkedforDeletion_Node0_action["The system checks if the existing
record has a deletion confirmation
flag set to determine next action"]:::main N_IsExistingRecordMarkedforDeletion_Node0 -- Yes --> N_IsExistingRecordMarkedforDeletion_Node0_action N_IsExistingRecordMarkedforDeletion_Node0_action --> E_IsExistingRecordMarkedforDeletion S_IsExistingRecordMarkedforDeletion --> N_IsExistingRecordMarkedforDeletion_Node0 N_IsExistingRecordMarkedforDeletion_Node0 -- No --> E_IsExistingRecordMarkedforDeletion
the new record can proceed"}:::decision N_IsExistingRecordMarkedforDeletion_Node0_action["The system checks if the existing
record has a deletion confirmation
flag set to determine next action"]:::main N_IsExistingRecordMarkedforDeletion_Node0 -- Yes --> N_IsExistingRecordMarkedforDeletion_Node0_action N_IsExistingRecordMarkedforDeletion_Node0_action --> E_IsExistingRecordMarkedforDeletion S_IsExistingRecordMarkedforDeletion --> N_IsExistingRecordMarkedforDeletion_Node0 N_IsExistingRecordMarkedforDeletion_Node0 -- No --> E_IsExistingRecordMarkedforDeletion
File: GCX003.cbl
GIVEN:
An existing train record has been found with the same identifier
WHEN:
The system needs to determine if the new record can proceed
THEN:
The system checks if the existing record has a deletion confirmation flag set to determine next action
β Consolidated Acceptance Criteria
- The system needs to create a new record with the same identifier → the system deletes the existing train record from the database
- The system processes the deletion request → the system removes the existing train record from the GCSUTRT database and allows the train ID to be reused
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DeleteExistingTrainRecord(["Start Step"])
E_DeleteExistingTrainRecord(["End Step"])
N_DeleteExistingTrainRecord_Node0{"The system needs to create a new
record with the same identifier"}:::decision N_DeleteExistingTrainRecord_Node0_action["The system deletes the existing
train record from the database"]:::main N_DeleteExistingTrainRecord_Node0 -- Yes --> N_DeleteExistingTrainRecord_Node0_action N_DeleteExistingTrainRecord_Node0_action --> E_DeleteExistingTrainRecord S_DeleteExistingTrainRecord --> N_DeleteExistingTrainRecord_Node0 N_DeleteExistingTrainRecord_Node1{"The system processes the deletion
request"}:::decision N_DeleteExistingTrainRecord_Node1_action["The system removes the existing
train record from the GCSUTRT
database and allows the train ID to
be reused"]:::main N_DeleteExistingTrainRecord_Node1 -- Yes --> N_DeleteExistingTrainRecord_Node1_action N_DeleteExistingTrainRecord_Node1_action --> E_DeleteExistingTrainRecord N_DeleteExistingTrainRecord_Node0 -- No --> N_DeleteExistingTrainRecord_Node1 N_DeleteExistingTrainRecord_Node1 -- No --> E_DeleteExistingTrainRecord
record with the same identifier"}:::decision N_DeleteExistingTrainRecord_Node0_action["The system deletes the existing
train record from the database"]:::main N_DeleteExistingTrainRecord_Node0 -- Yes --> N_DeleteExistingTrainRecord_Node0_action N_DeleteExistingTrainRecord_Node0_action --> E_DeleteExistingTrainRecord S_DeleteExistingTrainRecord --> N_DeleteExistingTrainRecord_Node0 N_DeleteExistingTrainRecord_Node1{"The system processes the deletion
request"}:::decision N_DeleteExistingTrainRecord_Node1_action["The system removes the existing
train record from the GCSUTRT
database and allows the train ID to
be reused"]:::main N_DeleteExistingTrainRecord_Node1 -- Yes --> N_DeleteExistingTrainRecord_Node1_action N_DeleteExistingTrainRecord_Node1_action --> E_DeleteExistingTrainRecord N_DeleteExistingTrainRecord_Node0 -- No --> N_DeleteExistingTrainRecord_Node1 N_DeleteExistingTrainRecord_Node1 -- No --> E_DeleteExistingTrainRecord
File: GCX003.cbl
GIVEN:
An existing train record is found and is marked for deletion
WHEN:
The system needs to create a new record with the same identifier
THEN:
The system deletes the existing train record from the database
File: GCX003.cbl
GIVEN:
An existing train record marked for deletion
WHEN:
The system processes the deletion request
THEN:
- The system removes the existing train record from the gcsutrt database
- Allows the train id to be reused
β Consolidated Acceptance Criteria
- The system attempts to create a new train record → the system generates error message 6 indicating a duplicate train identifier and prevents record creation
- An attempt is made to create a new train with the same identifier → an error message (MSG-SIX) is generated indicating the train ID already exists
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateErrorDuplicateTrainID(["Start Step"])
E_GenerateErrorDuplicateTrainID(["End Step"])
N_GenerateErrorDuplicateTrainID_Node0{"The system attempts to create a new
train record"}:::decision N_GenerateErrorDuplicateTrainID_Node0_action["The system generates error message
6 indicating a duplicate train
identifier and prevents record
creation"]:::main N_GenerateErrorDuplicateTrainID_Node0 -- Yes --> N_GenerateErrorDuplicateTrainID_Node0_action N_GenerateErrorDuplicateTrainID_Node0_action --> E_GenerateErrorDuplicateTrainID S_GenerateErrorDuplicateTrainID --> N_GenerateErrorDuplicateTrainID_Node0 N_GenerateErrorDuplicateTrainID_Node1{"An attempt is made to create a new
train with the same identifier"}:::decision N_GenerateErrorDuplicateTrainID_Node1_action["An error message MSG-SIX is
generated indicating the train ID
already exists"]:::main N_GenerateErrorDuplicateTrainID_Node1 -- Yes --> N_GenerateErrorDuplicateTrainID_Node1_action N_GenerateErrorDuplicateTrainID_Node1_action --> E_GenerateErrorDuplicateTrainID N_GenerateErrorDuplicateTrainID_Node0 -- No --> N_GenerateErrorDuplicateTrainID_Node1 N_GenerateErrorDuplicateTrainID_Node1 -- No --> E_GenerateErrorDuplicateTrainID
train record"}:::decision N_GenerateErrorDuplicateTrainID_Node0_action["The system generates error message
6 indicating a duplicate train
identifier and prevents record
creation"]:::main N_GenerateErrorDuplicateTrainID_Node0 -- Yes --> N_GenerateErrorDuplicateTrainID_Node0_action N_GenerateErrorDuplicateTrainID_Node0_action --> E_GenerateErrorDuplicateTrainID S_GenerateErrorDuplicateTrainID --> N_GenerateErrorDuplicateTrainID_Node0 N_GenerateErrorDuplicateTrainID_Node1{"An attempt is made to create a new
train with the same identifier"}:::decision N_GenerateErrorDuplicateTrainID_Node1_action["An error message MSG-SIX is
generated indicating the train ID
already exists"]:::main N_GenerateErrorDuplicateTrainID_Node1 -- Yes --> N_GenerateErrorDuplicateTrainID_Node1_action N_GenerateErrorDuplicateTrainID_Node1_action --> E_GenerateErrorDuplicateTrainID N_GenerateErrorDuplicateTrainID_Node0 -- No --> N_GenerateErrorDuplicateTrainID_Node1 N_GenerateErrorDuplicateTrainID_Node1 -- No --> E_GenerateErrorDuplicateTrainID
File: GCX003.cbl
GIVEN:
An existing active train record is found with the same identifier
WHEN:
The system attempts to create a new train record
THEN:
- The system generates error message 6 indicating a duplicate train identifier
- Prevents record creation
File: GCX003.cbl
GIVEN:
A train ID already exists in the database as an active record
WHEN:
An attempt is made to create a new train with the same identifier
THEN:
An error message (MSG-SIX) is generated indicating the train ID already exists
β Consolidated Acceptance Criteria
- The system needs to create a new train record → the system initializes a new train header record structure with default values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeNewTrainHeaderRecord(["Start Step"])
E_InitializeNewTrainHeaderRecord(["End Step"])
N_InitializeNewTrainHeaderRecord_Node0{"The system needs to create a new
train record"}:::decision N_InitializeNewTrainHeaderRecord_Node0_action["The system initializes a new train
header record structure with default
values"]:::main N_InitializeNewTrainHeaderRecord_Node0 -- Yes --> N_InitializeNewTrainHeaderRecord_Node0_action N_InitializeNewTrainHeaderRecord_Node0_action --> E_InitializeNewTrainHeaderRecord S_InitializeNewTrainHeaderRecord --> N_InitializeNewTrainHeaderRecord_Node0 N_InitializeNewTrainHeaderRecord_Node0 -- No --> E_InitializeNewTrainHeaderRecord
train record"}:::decision N_InitializeNewTrainHeaderRecord_Node0_action["The system initializes a new train
header record structure with default
values"]:::main N_InitializeNewTrainHeaderRecord_Node0 -- Yes --> N_InitializeNewTrainHeaderRecord_Node0_action N_InitializeNewTrainHeaderRecord_Node0_action --> E_InitializeNewTrainHeaderRecord S_InitializeNewTrainHeaderRecord --> N_InitializeNewTrainHeaderRecord_Node0 N_InitializeNewTrainHeaderRecord_Node0 -- No --> E_InitializeNewTrainHeaderRecord
File: GCX003.cbl
GIVEN:
No active train record exists with the same identifier or existing record has been deleted
WHEN:
The system needs to create a new train record
THEN:
The system initializes a new train header record structure with default values
β Consolidated Acceptance Criteria
- The system needs to populate the train record with identifier information → the system assigns the generated train ID to both the train header US Customer Train ID field and the added train field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetGeneratedTrainIDinMultipleFields(["Start Step"])
E_SetGeneratedTrainIDinMultipleFields(["End Step"])
N_SetGeneratedTrainIDinMultipleFields_Node0{"The system needs to populate the
train record with identifier
information"}:::decision N_SetGeneratedTrainIDinMultipleFields_Node0_action["The system assigns the generated
train ID to both the train header US
Customer Train ID field and the
added train field"]:::main N_SetGeneratedTrainIDinMultipleFields_Node0 -- Yes --> N_SetGeneratedTrainIDinMultipleFields_Node0_action N_SetGeneratedTrainIDinMultipleFields_Node0_action --> E_SetGeneratedTrainIDinMultipleFields S_SetGeneratedTrainIDinMultipleFields --> N_SetGeneratedTrainIDinMultipleFields_Node0 N_SetGeneratedTrainIDinMultipleFields_Node0 -- No --> E_SetGeneratedTrainIDinMultipleFields
train record with identifier
information"}:::decision N_SetGeneratedTrainIDinMultipleFields_Node0_action["The system assigns the generated
train ID to both the train header US
Customer Train ID field and the
added train field"]:::main N_SetGeneratedTrainIDinMultipleFields_Node0 -- Yes --> N_SetGeneratedTrainIDinMultipleFields_Node0_action N_SetGeneratedTrainIDinMultipleFields_Node0_action --> E_SetGeneratedTrainIDinMultipleFields S_SetGeneratedTrainIDinMultipleFields --> N_SetGeneratedTrainIDinMultipleFields_Node0 N_SetGeneratedTrainIDinMultipleFields_Node0 -- No --> E_SetGeneratedTrainIDinMultipleFields
File: GCX003.cbl
GIVEN:
A new train header record has been initialized and a US Customs train ID has been generated
WHEN:
The system needs to populate the train record with identifier information
THEN:
- The system assigns the generated train id to both the train header us customer train id field
- The added train field
β Consolidated Acceptance Criteria
- The system completes the train ID generation process → the system marks the train identifier as added to the system in the tracking records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkTrainIDasAddedtoSystem(["Start Step"])
E_MarkTrainIDasAddedtoSystem(["End Step"])
N_MarkTrainIDasAddedtoSystem_Node0{"The system completes the train ID
generation process"}:::decision N_MarkTrainIDasAddedtoSystem_Node0_action["The system marks the train
identifier as added to the system in
the tracking records"]:::main N_MarkTrainIDasAddedtoSystem_Node0 -- Yes --> N_MarkTrainIDasAddedtoSystem_Node0_action N_MarkTrainIDasAddedtoSystem_Node0_action --> E_MarkTrainIDasAddedtoSystem S_MarkTrainIDasAddedtoSystem --> N_MarkTrainIDasAddedtoSystem_Node0 N_MarkTrainIDasAddedtoSystem_Node0 -- No --> E_MarkTrainIDasAddedtoSystem
generation process"}:::decision N_MarkTrainIDasAddedtoSystem_Node0_action["The system marks the train
identifier as added to the system in
the tracking records"]:::main N_MarkTrainIDasAddedtoSystem_Node0 -- Yes --> N_MarkTrainIDasAddedtoSystem_Node0_action N_MarkTrainIDasAddedtoSystem_Node0_action --> E_MarkTrainIDasAddedtoSystem S_MarkTrainIDasAddedtoSystem --> N_MarkTrainIDasAddedtoSystem_Node0 N_MarkTrainIDasAddedtoSystem_Node0 -- No --> E_MarkTrainIDasAddedtoSystem
File: GCX003.cbl
GIVEN:
A new train record has been created with the generated US Customs train identifier
WHEN:
The system completes the train ID generation process
THEN:
The system marks the train identifier as added to the system in the tracking records
β Consolidated Acceptance Criteria
- The system needs to create a unique customs train identifier → the SCAC code 'CPRS' (Canadian Pacific Railway) is assigned as the carrier identifier component
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetSCACCodefromConstants(["Start Step"])
E_GetSCACCodefromConstants(["End Step"])
N_GetSCACCodefromConstants_Node0{"The system needs to create a unique
customs train identifier"}:::decision N_GetSCACCodefromConstants_Node0_action["The SCAC code CPRS Canadian Pacific
Railway is assigned as the carrier
identifier component"]:::main N_GetSCACCodefromConstants_Node0 -- Yes --> N_GetSCACCodefromConstants_Node0_action N_GetSCACCodefromConstants_Node0_action --> E_GetSCACCodefromConstants S_GetSCACCodefromConstants --> N_GetSCACCodefromConstants_Node0 N_GetSCACCodefromConstants_Node0 -- No --> E_GetSCACCodefromConstants
customs train identifier"}:::decision N_GetSCACCodefromConstants_Node0_action["The SCAC code CPRS Canadian Pacific
Railway is assigned as the carrier
identifier component"]:::main N_GetSCACCodefromConstants_Node0 -- Yes --> N_GetSCACCodefromConstants_Node0_action N_GetSCACCodefromConstants_Node0_action --> E_GetSCACCodefromConstants S_GetSCACCodefromConstants --> N_GetSCACCodefromConstants_Node0 N_GetSCACCodefromConstants_Node0 -- No --> E_GetSCACCodefromConstants
File: GCX003.cbl
GIVEN:
A train manifest is being processed
WHEN:
The system needs to create a unique customs train identifier
THEN:
The SCAC code 'CPRS' (Canadian Pacific Railway) is assigned as the carrier identifier component
β Consolidated Acceptance Criteria
- The system creates the final customs identifier → all components are combined with export indicator 'T' to form the complete US customs train ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CombineComponentsintoUSCustomsTrainID(["Start Step"])
E_CombineComponentsintoUSCustomsTrainID(["End Step"])
N_CombineComponentsintoUSCustomsTrainID_Node0{"The system creates the final
customs identifier"}:::decision N_CombineComponentsintoUSCustomsTrainID_Node0_action["All components are combined with
export indicator T to form the
complete US customs train ID"]:::main N_CombineComponentsintoUSCustomsTrainID_Node0 -- Yes --> N_CombineComponentsintoUSCustomsTrainID_Node0_action N_CombineComponentsintoUSCustomsTrainID_Node0_action --> E_CombineComponentsintoUSCustomsTrainID S_CombineComponentsintoUSCustomsTrainID --> N_CombineComponentsintoUSCustomsTrainID_Node0 N_CombineComponentsintoUSCustomsTrainID_Node0 -- No --> E_CombineComponentsintoUSCustomsTrainID
customs identifier"}:::decision N_CombineComponentsintoUSCustomsTrainID_Node0_action["All components are combined with
export indicator T to form the
complete US customs train ID"]:::main N_CombineComponentsintoUSCustomsTrainID_Node0 -- Yes --> N_CombineComponentsintoUSCustomsTrainID_Node0_action N_CombineComponentsintoUSCustomsTrainID_Node0_action --> E_CombineComponentsintoUSCustomsTrainID S_CombineComponentsintoUSCustomsTrainID --> N_CombineComponentsintoUSCustomsTrainID_Node0 N_CombineComponentsintoUSCustomsTrainID_Node0 -- No --> E_CombineComponentsintoUSCustomsTrainID
File: GCX003.cbl
GIVEN:
SCAC code, train ID, origin, consist number, and Julian date are available
WHEN:
The system creates the final customs identifier
THEN:
All components are combined with export indicator 'T' to form the complete US customs train ID
β Consolidated Acceptance Criteria
- The final identifier format is applied → the export indicator 'T' is appended to signify this is an export train manifest
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatSCACTrainIDOriginConsistJulianDateExportIndicator(["Start Step"])
E_FormatSCACTrainIDOriginConsistJulianDateExportIndicator(["End Step"])
N_FormatSCACTrainIDOriginConsistJulianDateExportIndicator_Node0{"The final identifier format is
applied"}:::decision N_FormatSCACTrainIDOriginConsistJulianDateExportIndicator_Node0_action["The export indicator T is appended
to signify this is an export train
manifest"]:::main N_FormatSCACTrainIDOriginConsistJulianDateExportIndicator_Node0 -- Yes --> N_FormatSCACTrainIDOriginConsistJulianDateExportIndicator_Node0_action N_FormatSCACTrainIDOriginConsistJulianDateExportIndicator_Node0_action --> E_FormatSCACTrainIDOriginConsistJulianDateExportIndicator S_FormatSCACTrainIDOriginConsistJulianDateExportIndicator --> N_FormatSCACTrainIDOriginConsistJulianDateExportIndicator_Node0 N_FormatSCACTrainIDOriginConsistJulianDateExportIndicator_Node0 -- No --> E_FormatSCACTrainIDOriginConsistJulianDateExportIndicator
applied"}:::decision N_FormatSCACTrainIDOriginConsistJulianDateExportIndicator_Node0_action["The export indicator T is appended
to signify this is an export train
manifest"]:::main N_FormatSCACTrainIDOriginConsistJulianDateExportIndicator_Node0 -- Yes --> N_FormatSCACTrainIDOriginConsistJulianDateExportIndicator_Node0_action N_FormatSCACTrainIDOriginConsistJulianDateExportIndicator_Node0_action --> E_FormatSCACTrainIDOriginConsistJulianDateExportIndicator S_FormatSCACTrainIDOriginConsistJulianDateExportIndicator --> N_FormatSCACTrainIDOriginConsistJulianDateExportIndicator_Node0 N_FormatSCACTrainIDOriginConsistJulianDateExportIndicator_Node0 -- No --> E_FormatSCACTrainIDOriginConsistJulianDateExportIndicator
File: GCX003.cbl
GIVEN:
A train identifier is being formatted for customs
WHEN:
The final identifier format is applied
THEN:
The export indicator 'T' is appended to signify this is an export train manifest
β Consolidated Acceptance Criteria
- The identifier needs to be persisted for processing → the assembled train ID is stored in the train header structure for further use
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreAssembledTrainID(["Start Step"])
E_StoreAssembledTrainID(["End Step"])
N_StoreAssembledTrainID_Node0{"The identifier needs to be
persisted for processing"}:::decision N_StoreAssembledTrainID_Node0_action["The assembled train ID is stored in
the train header structure for
further use"]:::main N_StoreAssembledTrainID_Node0 -- Yes --> N_StoreAssembledTrainID_Node0_action N_StoreAssembledTrainID_Node0_action --> E_StoreAssembledTrainID S_StoreAssembledTrainID --> N_StoreAssembledTrainID_Node0 N_StoreAssembledTrainID_Node0 -- No --> E_StoreAssembledTrainID
persisted for processing"}:::decision N_StoreAssembledTrainID_Node0_action["The assembled train ID is stored in
the train header structure for
further use"]:::main N_StoreAssembledTrainID_Node0 -- Yes --> N_StoreAssembledTrainID_Node0_action N_StoreAssembledTrainID_Node0_action --> E_StoreAssembledTrainID S_StoreAssembledTrainID --> N_StoreAssembledTrainID_Node0 N_StoreAssembledTrainID_Node0 -- No --> E_StoreAssembledTrainID
File: GCX003.cbl
GIVEN:
The US customs train ID has been successfully assembled
WHEN:
The identifier needs to be persisted for processing
THEN:
The assembled train ID is stored in the train header structure for further use
β Consolidated Acceptance Criteria
- The system needs to ensure uniqueness → the database is queried to check if the train ID already exists
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckforExistingTrainIDinDatabase(["Start Step"])
E_CheckforExistingTrainIDinDatabase(["End Step"])
N_CheckforExistingTrainIDinDatabase_Node0{"The system needs to ensure
uniqueness"}:::decision N_CheckforExistingTrainIDinDatabase_Node0_action["The database is queried to check if
the train ID already exists"]:::main N_CheckforExistingTrainIDinDatabase_Node0 -- Yes --> N_CheckforExistingTrainIDinDatabase_Node0_action N_CheckforExistingTrainIDinDatabase_Node0_action --> E_CheckforExistingTrainIDinDatabase S_CheckforExistingTrainIDinDatabase --> N_CheckforExistingTrainIDinDatabase_Node0 N_CheckforExistingTrainIDinDatabase_Node0 -- No --> E_CheckforExistingTrainIDinDatabase
uniqueness"}:::decision N_CheckforExistingTrainIDinDatabase_Node0_action["The database is queried to check if
the train ID already exists"]:::main N_CheckforExistingTrainIDinDatabase_Node0 -- Yes --> N_CheckforExistingTrainIDinDatabase_Node0_action N_CheckforExistingTrainIDinDatabase_Node0_action --> E_CheckforExistingTrainIDinDatabase S_CheckforExistingTrainIDinDatabase --> N_CheckforExistingTrainIDinDatabase_Node0 N_CheckforExistingTrainIDinDatabase_Node0 -- No --> E_CheckforExistingTrainIDinDatabase
File: GCX003.cbl
GIVEN:
A unique customs train ID has been assembled
WHEN:
The system needs to ensure uniqueness
THEN:
The database is queried to check if the train ID already exists
β Consolidated Acceptance Criteria
- The same train ID is being created again → the existing deleted record is removed from the database to allow the new train creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DeleteExistingRecordifMarkedforDeletion(["Start Step"])
E_DeleteExistingRecordifMarkedforDeletion(["End Step"])
N_DeleteExistingRecordifMarkedforDeletion_Node0{"The same train ID is being created
again"}:::decision N_DeleteExistingRecordifMarkedforDeletion_Node0_action["The existing deleted record is
removed from the database to allow
the new train creation"]:::main N_DeleteExistingRecordifMarkedforDeletion_Node0 -- Yes --> N_DeleteExistingRecordifMarkedforDeletion_Node0_action N_DeleteExistingRecordifMarkedforDeletion_Node0_action --> E_DeleteExistingRecordifMarkedforDeletion S_DeleteExistingRecordifMarkedforDeletion --> N_DeleteExistingRecordifMarkedforDeletion_Node0 N_DeleteExistingRecordifMarkedforDeletion_Node0 -- No --> E_DeleteExistingRecordifMarkedforDeletion
again"}:::decision N_DeleteExistingRecordifMarkedforDeletion_Node0_action["The existing deleted record is
removed from the database to allow
the new train creation"]:::main N_DeleteExistingRecordifMarkedforDeletion_Node0 -- Yes --> N_DeleteExistingRecordifMarkedforDeletion_Node0_action N_DeleteExistingRecordifMarkedforDeletion_Node0_action --> E_DeleteExistingRecordifMarkedforDeletion S_DeleteExistingRecordifMarkedforDeletion --> N_DeleteExistingRecordifMarkedforDeletion_Node0 N_DeleteExistingRecordifMarkedforDeletion_Node0 -- No --> E_DeleteExistingRecordifMarkedforDeletion
File: GCX003.cbl
GIVEN:
A train ID exists in the database and is marked as deleted
WHEN:
The same train ID is being created again
THEN:
The existing deleted record is removed from the database to allow the new train creation
β Consolidated Acceptance Criteria
- A new train record needs to be created → the train header structure is initialized with the new customs train identifier
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeTrainHeaderwithNewID(["Start Step"])
E_InitializeTrainHeaderwithNewID(["End Step"])
N_InitializeTrainHeaderwithNewID_Node0{"A new train record needs to be
created"}:::decision N_InitializeTrainHeaderwithNewID_Node0_action["The train header structure is
initialized with the new customs
train identifier"]:::main N_InitializeTrainHeaderwithNewID_Node0 -- Yes --> N_InitializeTrainHeaderwithNewID_Node0_action N_InitializeTrainHeaderwithNewID_Node0_action --> E_InitializeTrainHeaderwithNewID S_InitializeTrainHeaderwithNewID --> N_InitializeTrainHeaderwithNewID_Node0 N_InitializeTrainHeaderwithNewID_Node0 -- No --> E_InitializeTrainHeaderwithNewID
created"}:::decision N_InitializeTrainHeaderwithNewID_Node0_action["The train header structure is
initialized with the new customs
train identifier"]:::main N_InitializeTrainHeaderwithNewID_Node0 -- Yes --> N_InitializeTrainHeaderwithNewID_Node0_action N_InitializeTrainHeaderwithNewID_Node0_action --> E_InitializeTrainHeaderwithNewID S_InitializeTrainHeaderwithNewID --> N_InitializeTrainHeaderwithNewID_Node0 N_InitializeTrainHeaderwithNewID_Node0 -- No --> E_InitializeTrainHeaderwithNewID
File: GCX003.cbl
GIVEN:
A unique train ID has been validated and confirmed as available
WHEN:
A new train record needs to be created
THEN:
The train header structure is initialized with the new customs train identifier
β Consolidated Acceptance Criteria
- The train creation process is completed → the train is marked as added to the system for status tracking purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkTrainasAddedtoSystem(["Start Step"])
E_MarkTrainasAddedtoSystem(["End Step"])
N_MarkTrainasAddedtoSystem_Node0{"The train creation process is
completed"}:::decision N_MarkTrainasAddedtoSystem_Node0_action["The train is marked as added to the
system for status tracking purposes"]:::main N_MarkTrainasAddedtoSystem_Node0 -- Yes --> N_MarkTrainasAddedtoSystem_Node0_action N_MarkTrainasAddedtoSystem_Node0_action --> E_MarkTrainasAddedtoSystem S_MarkTrainasAddedtoSystem --> N_MarkTrainasAddedtoSystem_Node0 N_MarkTrainasAddedtoSystem_Node0 -- No --> E_MarkTrainasAddedtoSystem
completed"}:::decision N_MarkTrainasAddedtoSystem_Node0_action["The train is marked as added to the
system for status tracking purposes"]:::main N_MarkTrainasAddedtoSystem_Node0 -- Yes --> N_MarkTrainasAddedtoSystem_Node0_action N_MarkTrainasAddedtoSystem_Node0_action --> E_MarkTrainasAddedtoSystem S_MarkTrainasAddedtoSystem --> N_MarkTrainasAddedtoSystem_Node0 N_MarkTrainasAddedtoSystem_Node0 -- No --> E_MarkTrainasAddedtoSystem
File: GCX003.cbl
GIVEN:
A new train header has been successfully initialized
WHEN:
The train creation process is completed
THEN:
The train is marked as added to the system for status tracking purposes
β Consolidated Acceptance Criteria
- The system processes the train identification request → the system creates a US customs train ID by concatenating carrier SCAC, train ID, origin station, consist number, creation date in Julian format, and export indicator 'T'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildUSCustomsTrainID(["Start Step"])
E_BuildUSCustomsTrainID(["End Step"])
N_BuildUSCustomsTrainID_Node0{"The system processes the train
identification request"}:::decision N_BuildUSCustomsTrainID_Node0_action["The system creates a US customs
train ID by concatenating carrier
SCAC, train ID, origin station,
consist number, creation date in
Julian format, and export indicator
T"]:::main N_BuildUSCustomsTrainID_Node0 -- Yes --> N_BuildUSCustomsTrainID_Node0_action N_BuildUSCustomsTrainID_Node0_action --> E_BuildUSCustomsTrainID S_BuildUSCustomsTrainID --> N_BuildUSCustomsTrainID_Node0 N_BuildUSCustomsTrainID_Node0 -- No --> E_BuildUSCustomsTrainID
identification request"}:::decision N_BuildUSCustomsTrainID_Node0_action["The system creates a US customs
train ID by concatenating carrier
SCAC, train ID, origin station,
consist number, creation date in
Julian format, and export indicator
T"]:::main N_BuildUSCustomsTrainID_Node0 -- Yes --> N_BuildUSCustomsTrainID_Node0_action N_BuildUSCustomsTrainID_Node0_action --> E_BuildUSCustomsTrainID S_BuildUSCustomsTrainID --> N_BuildUSCustomsTrainID_Node0 N_BuildUSCustomsTrainID_Node0 -- No --> E_BuildUSCustomsTrainID
File: GCX003.cbl
GIVEN:
A train request with carrier SCAC code, train ID, origin station, consist number, and current system date
WHEN:
The system processes the train identification request
THEN:
The system creates a US customs train ID by concatenating carrier SCAC, train ID, origin station, consist number, creation date in Julian format, and export indicator 'T'
β Consolidated Acceptance Criteria
- The system needs to create a train creation timestamp → the system converts the date to 8-digit format, then to Julian date format, and extracts 5-digit Julian date for train ID construction
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateTrainCreationDate(["Start Step"])
E_GenerateTrainCreationDate(["End Step"])
N_GenerateTrainCreationDate_Node0{"The system needs to create a train
creation timestamp"}:::decision N_GenerateTrainCreationDate_Node0_action["The system converts the date to
8-digit format, then to Julian date
format, and extracts 5-digit Julian
date for train ID construction"]:::main N_GenerateTrainCreationDate_Node0 -- Yes --> N_GenerateTrainCreationDate_Node0_action N_GenerateTrainCreationDate_Node0_action --> E_GenerateTrainCreationDate S_GenerateTrainCreationDate --> N_GenerateTrainCreationDate_Node0 N_GenerateTrainCreationDate_Node0 -- No --> E_GenerateTrainCreationDate
creation timestamp"}:::decision N_GenerateTrainCreationDate_Node0_action["The system converts the date to
8-digit format, then to Julian date
format, and extracts 5-digit Julian
date for train ID construction"]:::main N_GenerateTrainCreationDate_Node0 -- Yes --> N_GenerateTrainCreationDate_Node0_action N_GenerateTrainCreationDate_Node0_action --> E_GenerateTrainCreationDate S_GenerateTrainCreationDate --> N_GenerateTrainCreationDate_Node0 N_GenerateTrainCreationDate_Node0 -- No --> E_GenerateTrainCreationDate
File: GCX003.cbl
GIVEN:
Current system date in YYMMDD format and century indicator
WHEN:
The system needs to create a train creation timestamp
THEN:
The system converts the date to 8-digit format, then to Julian date format, and extracts 5-digit Julian date for train ID construction
β Consolidated Acceptance Criteria
- The system initializes the train export indicator → the system sets the export indicator to 'T' to designate this as an export train
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetExportIndicatortoT(["Start Step"])
E_SetExportIndicatortoT(["End Step"])
N_SetExportIndicatortoT_Node0{"The system initializes the train
export indicator"}:::decision N_SetExportIndicatortoT_Node0_action["The system sets the export
indicator to T to designate this as
an export train"]:::main N_SetExportIndicatortoT_Node0 -- Yes --> N_SetExportIndicatortoT_Node0_action N_SetExportIndicatortoT_Node0_action --> E_SetExportIndicatortoT S_SetExportIndicatortoT --> N_SetExportIndicatortoT_Node0 N_SetExportIndicatortoT_Node0 -- No --> E_SetExportIndicatortoT
export indicator"}:::decision N_SetExportIndicatortoT_Node0_action["The system sets the export
indicator to T to designate this as
an export train"]:::main N_SetExportIndicatortoT_Node0 -- Yes --> N_SetExportIndicatortoT_Node0_action N_SetExportIndicatortoT_Node0_action --> E_SetExportIndicatortoT S_SetExportIndicatortoT --> N_SetExportIndicatortoT_Node0 N_SetExportIndicatortoT_Node0 -- No --> E_SetExportIndicatortoT
File: GCX003.cbl
GIVEN:
A new train record being created for US customs processing
WHEN:
The system initializes the train export indicator
THEN:
The system sets the export indicator to 'T' to designate this as an export train
β Consolidated Acceptance Criteria
- The system searches the GCSUTRT database for existing train records → the system performs a database lookup using the train ID as the search key and returns the record status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchDatabaseforExistingTrainRecord(["Start Step"])
E_SearchDatabaseforExistingTrainRecord(["End Step"])
N_SearchDatabaseforExistingTrainRecord_Node0{"The system searches the GCSUTRT
database for existing train records"}:::decision N_SearchDatabaseforExistingTrainRecord_Node0_action["The system performs a database
lookup using the train ID as the
search key and returns the record
status"]:::main N_SearchDatabaseforExistingTrainRecord_Node0 -- Yes --> N_SearchDatabaseforExistingTrainRecord_Node0_action N_SearchDatabaseforExistingTrainRecord_Node0_action --> E_SearchDatabaseforExistingTrainRecord S_SearchDatabaseforExistingTrainRecord --> N_SearchDatabaseforExistingTrainRecord_Node0 N_SearchDatabaseforExistingTrainRecord_Node0 -- No --> E_SearchDatabaseforExistingTrainRecord
database for existing train records"}:::decision N_SearchDatabaseforExistingTrainRecord_Node0_action["The system performs a database
lookup using the train ID as the
search key and returns the record
status"]:::main N_SearchDatabaseforExistingTrainRecord_Node0 -- Yes --> N_SearchDatabaseforExistingTrainRecord_Node0_action N_SearchDatabaseforExistingTrainRecord_Node0_action --> E_SearchDatabaseforExistingTrainRecord S_SearchDatabaseforExistingTrainRecord --> N_SearchDatabaseforExistingTrainRecord_Node0 N_SearchDatabaseforExistingTrainRecord_Node0 -- No --> E_SearchDatabaseforExistingTrainRecord
File: GCX003.cbl
GIVEN:
A constructed US customs train ID
WHEN:
The system searches the GCSUTRT database for existing train records
THEN:
- The system performs a database lookup using the train id as the search key
- Returns the record status
β Consolidated Acceptance Criteria
- If the search outcome → if a matching train record is found in the database, the system proceeds to deletion status check, otherwise it continues to create a new train record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TrainRecordFound(["Start Step"])
E_TrainRecordFound(["End Step"])
N_TrainRecordFound_Node0{"The system evaluates the search
outcome"}:::decision N_TrainRecordFound_Node0_action["If a matching train record is found
in the database, the system proceeds
to deletion status check, otherwise
it continues to create a new train
record"]:::main N_TrainRecordFound_Node0 -- Yes --> N_TrainRecordFound_Node0_action N_TrainRecordFound_Node0_action --> E_TrainRecordFound S_TrainRecordFound --> N_TrainRecordFound_Node0 N_TrainRecordFound_Node0 -- No --> E_TrainRecordFound
outcome"}:::decision N_TrainRecordFound_Node0_action["If a matching train record is found
in the database, the system proceeds
to deletion status check, otherwise
it continues to create a new train
record"]:::main N_TrainRecordFound_Node0 -- Yes --> N_TrainRecordFound_Node0_action N_TrainRecordFound_Node0_action --> E_TrainRecordFound S_TrainRecordFound --> N_TrainRecordFound_Node0 N_TrainRecordFound_Node0 -- No --> E_TrainRecordFound
File: GCX003.cbl
GIVEN:
A database search result for a specific train ID
WHEN:
The system evaluates the search outcome
THEN:
If a matching train record is found in the database, the system proceeds to deletion status check, otherwise it continues to create a new train record
β Consolidated Acceptance Criteria
- The system checks the deletion confirmation status of the record → if the record is marked for deletion, the system proceeds to remove it, otherwise it generates a duplicate train ID error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RecordMarkedforDeletion(["Start Step"])
E_RecordMarkedforDeletion(["End Step"])
N_RecordMarkedforDeletion_Node0{"The system checks the deletion
confirmation status of the record"}:::decision N_RecordMarkedforDeletion_Node0_action["If the record is marked for
deletion, the system proceeds to
remove it, otherwise it generates a
duplicate train ID error"]:::main N_RecordMarkedforDeletion_Node0 -- Yes --> N_RecordMarkedforDeletion_Node0_action N_RecordMarkedforDeletion_Node0_action --> E_RecordMarkedforDeletion S_RecordMarkedforDeletion --> N_RecordMarkedforDeletion_Node0 N_RecordMarkedforDeletion_Node0 -- No --> E_RecordMarkedforDeletion
confirmation status of the record"}:::decision N_RecordMarkedforDeletion_Node0_action["If the record is marked for
deletion, the system proceeds to
remove it, otherwise it generates a
duplicate train ID error"]:::main N_RecordMarkedforDeletion_Node0 -- Yes --> N_RecordMarkedforDeletion_Node0_action N_RecordMarkedforDeletion_Node0_action --> E_RecordMarkedforDeletion S_RecordMarkedforDeletion --> N_RecordMarkedforDeletion_Node0 N_RecordMarkedforDeletion_Node0 -- No --> E_RecordMarkedforDeletion
File: GCX003.cbl
GIVEN:
An existing train record found in the database
WHEN:
The system checks the deletion confirmation status of the record
THEN:
If the record is marked for deletion, the system proceeds to remove it, otherwise it generates a duplicate train ID error
β Consolidated Acceptance Criteria
- The system attempts to create a new train with the same identifier → the system generates error message 6 indicating a duplicate train ID conflict and prevents the creation of the new record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateDuplicateTrainIDError(["Start Step"])
E_GenerateDuplicateTrainIDError(["End Step"])
N_GenerateDuplicateTrainIDError_Node0{"The system attempts to create a new
train with the same identifier"}:::decision N_GenerateDuplicateTrainIDError_Node0_action["The system generates error message
6 indicating a duplicate train ID
conflict and prevents the creation
of the new record"]:::main N_GenerateDuplicateTrainIDError_Node0 -- Yes --> N_GenerateDuplicateTrainIDError_Node0_action N_GenerateDuplicateTrainIDError_Node0_action --> E_GenerateDuplicateTrainIDError S_GenerateDuplicateTrainIDError --> N_GenerateDuplicateTrainIDError_Node0 N_GenerateDuplicateTrainIDError_Node0 -- No --> E_GenerateDuplicateTrainIDError
train with the same identifier"}:::decision N_GenerateDuplicateTrainIDError_Node0_action["The system generates error message
6 indicating a duplicate train ID
conflict and prevents the creation
of the new record"]:::main N_GenerateDuplicateTrainIDError_Node0 -- Yes --> N_GenerateDuplicateTrainIDError_Node0_action N_GenerateDuplicateTrainIDError_Node0_action --> E_GenerateDuplicateTrainIDError S_GenerateDuplicateTrainIDError --> N_GenerateDuplicateTrainIDError_Node0 N_GenerateDuplicateTrainIDError_Node0 -- No --> E_GenerateDuplicateTrainIDError
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
An existing train record that is not marked for deletion
WHEN:
The system attempts to create a new train with the same identifier
THEN:
- The system generates error message 6 indicating a duplicate train id conflict
- Prevents the creation of the new record
β Consolidated Acceptance Criteria
- The system prepares to create a new train record → the system initializes a new train header structure with default values and clears any previous data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeNewTrainHeader(["Start Step"])
E_InitializeNewTrainHeader(["End Step"])
N_InitializeNewTrainHeader_Node0{"The system prepares to create a new
train record"}:::decision N_InitializeNewTrainHeader_Node0_action["The system initializes a new train
header structure with default values
and clears any previous data"]:::main N_InitializeNewTrainHeader_Node0 -- Yes --> N_InitializeNewTrainHeader_Node0_action N_InitializeNewTrainHeader_Node0_action --> E_InitializeNewTrainHeader S_InitializeNewTrainHeader --> N_InitializeNewTrainHeader_Node0 N_InitializeNewTrainHeader_Node0 -- No --> E_InitializeNewTrainHeader
train record"}:::decision N_InitializeNewTrainHeader_Node0_action["The system initializes a new train
header structure with default values
and clears any previous data"]:::main N_InitializeNewTrainHeader_Node0 -- Yes --> N_InitializeNewTrainHeader_Node0_action N_InitializeNewTrainHeader_Node0_action --> E_InitializeNewTrainHeader S_InitializeNewTrainHeader --> N_InitializeNewTrainHeader_Node0 N_InitializeNewTrainHeader_Node0 -- No --> E_InitializeNewTrainHeader
File: GCX003.cbl
GIVEN:
Validation that no conflicting train record exists or existing record has been removed
WHEN:
The system prepares to create a new train record
THEN:
- The system initializes a new train header structure with default values
- Clears any previous data
β Consolidated Acceptance Criteria
- The system prepares the train record for further processing → the system assigns the constructed US customs train ID to both the train header and the added train tracking table for continued processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainIDforProcessing(["Start Step"])
E_SetTrainIDforProcessing(["End Step"])
N_SetTrainIDforProcessing_Node0{"The system prepares the train
record for further processing"}:::decision N_SetTrainIDforProcessing_Node0_action["The system assigns the constructed
US customs train ID to both the
train header and the added train
tracking table for continued
processing"]:::main N_SetTrainIDforProcessing_Node0 -- Yes --> N_SetTrainIDforProcessing_Node0_action N_SetTrainIDforProcessing_Node0_action --> E_SetTrainIDforProcessing S_SetTrainIDforProcessing --> N_SetTrainIDforProcessing_Node0 N_SetTrainIDforProcessing_Node0 -- No --> E_SetTrainIDforProcessing
record for further processing"}:::decision N_SetTrainIDforProcessing_Node0_action["The system assigns the constructed
US customs train ID to both the
train header and the added train
tracking table for continued
processing"]:::main N_SetTrainIDforProcessing_Node0 -- Yes --> N_SetTrainIDforProcessing_Node0_action N_SetTrainIDforProcessing_Node0_action --> E_SetTrainIDforProcessing S_SetTrainIDforProcessing --> N_SetTrainIDforProcessing_Node0 N_SetTrainIDforProcessing_Node0 -- No --> E_SetTrainIDforProcessing
File: GCX003.cbl
GIVEN:
A successfully initialized train header and validated train ID
WHEN:
The system prepares the train record for further processing
THEN:
- The system assigns the constructed us customs train id to both the train header
- The added train tracking table for continued processing
β Consolidated Acceptance Criteria
- The system attempts to retrieve administration table with AD key configuration → the administration table segment is retrieved for MERLIN ID extraction
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveAdministrationTableforMERLINConfiguration(["Start Step"])
E_RetrieveAdministrationTableforMERLINConfiguration(["End Step"])
N_RetrieveAdministrationTableforMERLINConfiguration_Node0{"The system attempts to retrieve
administration table with AD key
configuration"}:::decision N_RetrieveAdministrationTableforMERLINConfiguration_Node0_action["The administration table segment is
retrieved for MERLIN ID extraction"]:::main N_RetrieveAdministrationTableforMERLINConfiguration_Node0 -- Yes --> N_RetrieveAdministrationTableforMERLINConfiguration_Node0_action N_RetrieveAdministrationTableforMERLINConfiguration_Node0_action --> E_RetrieveAdministrationTableforMERLINConfiguration S_RetrieveAdministrationTableforMERLINConfiguration --> N_RetrieveAdministrationTableforMERLINConfiguration_Node0 N_RetrieveAdministrationTableforMERLINConfiguration_Node0 -- No --> E_RetrieveAdministrationTableforMERLINConfiguration
administration table with AD key
configuration"}:::decision N_RetrieveAdministrationTableforMERLINConfiguration_Node0_action["The administration table segment is
retrieved for MERLIN ID extraction"]:::main N_RetrieveAdministrationTableforMERLINConfiguration_Node0 -- Yes --> N_RetrieveAdministrationTableforMERLINConfiguration_Node0_action N_RetrieveAdministrationTableforMERLINConfiguration_Node0_action --> E_RetrieveAdministrationTableforMERLINConfiguration S_RetrieveAdministrationTableforMERLINConfiguration --> N_RetrieveAdministrationTableforMERLINConfiguration_Node0 N_RetrieveAdministrationTableforMERLINConfiguration_Node0 -- No --> E_RetrieveAdministrationTableforMERLINConfiguration
File: GCX003.cbl
GIVEN:
A request requires MERLIN customs ID validation
WHEN:
The system attempts to retrieve administration table with AD key configuration
THEN:
The administration table segment is retrieved for MERLIN ID extraction
β Consolidated Acceptance Criteria
- The system checks if the administration table was successfully retrieved → if table not found, generate error message 7 indicating MERLIN configuration unavailable, otherwise proceed to extract MERLIN ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AdministrationTableFound(["Start Step"])
E_AdministrationTableFound(["End Step"])
N_AdministrationTableFound_Node0{"The system checks if the
administration table was
successfully retrieved"}:::decision N_AdministrationTableFound_Node0_action["If table not found, generate error
message 7 indicating MERLIN
configuration unavailable, otherwise
proceed to extract MERLIN ID"]:::main N_AdministrationTableFound_Node0 -- Yes --> N_AdministrationTableFound_Node0_action N_AdministrationTableFound_Node0_action --> E_AdministrationTableFound S_AdministrationTableFound --> N_AdministrationTableFound_Node0 N_AdministrationTableFound_Node0 -- No --> E_AdministrationTableFound
administration table was
successfully retrieved"}:::decision N_AdministrationTableFound_Node0_action["If table not found, generate error
message 7 indicating MERLIN
configuration unavailable, otherwise
proceed to extract MERLIN ID"]:::main N_AdministrationTableFound_Node0 -- Yes --> N_AdministrationTableFound_Node0_action N_AdministrationTableFound_Node0_action --> E_AdministrationTableFound S_AdministrationTableFound --> N_AdministrationTableFound_Node0 N_AdministrationTableFound_Node0 -- No --> E_AdministrationTableFound
File: GCX003.cbl
GIVEN:
Administration table retrieval has been attempted
WHEN:
The system checks if the administration table was successfully retrieved
THEN:
If table not found, generate error message 7 indicating MERLIN configuration unavailable, otherwise proceed to extract MERLIN ID
β Consolidated Acceptance Criteria
- The system extracts the public MERLIN ID from the administration segment → the public MERLIN ID value is obtained from the configuration for validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractPublicMERLINIDfromConfiguration(["Start Step"])
E_ExtractPublicMERLINIDfromConfiguration(["End Step"])
N_ExtractPublicMERLINIDfromConfiguration_Node0{"The system extracts the public
MERLIN ID from the administration
segment"}:::decision N_ExtractPublicMERLINIDfromConfiguration_Node0_action["The public MERLIN ID value is
obtained from the configuration for
validation"]:::main N_ExtractPublicMERLINIDfromConfiguration_Node0 -- Yes --> N_ExtractPublicMERLINIDfromConfiguration_Node0_action N_ExtractPublicMERLINIDfromConfiguration_Node0_action --> E_ExtractPublicMERLINIDfromConfiguration S_ExtractPublicMERLINIDfromConfiguration --> N_ExtractPublicMERLINIDfromConfiguration_Node0 N_ExtractPublicMERLINIDfromConfiguration_Node0 -- No --> E_ExtractPublicMERLINIDfromConfiguration
MERLIN ID from the administration
segment"}:::decision N_ExtractPublicMERLINIDfromConfiguration_Node0_action["The public MERLIN ID value is
obtained from the configuration for
validation"]:::main N_ExtractPublicMERLINIDfromConfiguration_Node0 -- Yes --> N_ExtractPublicMERLINIDfromConfiguration_Node0_action N_ExtractPublicMERLINIDfromConfiguration_Node0_action --> E_ExtractPublicMERLINIDfromConfiguration S_ExtractPublicMERLINIDfromConfiguration --> N_ExtractPublicMERLINIDfromConfiguration_Node0 N_ExtractPublicMERLINIDfromConfiguration_Node0 -- No --> E_ExtractPublicMERLINIDfromConfiguration
File: GCX003.cbl
GIVEN:
Administration table has been successfully retrieved
WHEN:
The system extracts the public MERLIN ID from the administration segment
THEN:
The public MERLIN ID value is obtained from the configuration for validation
β Consolidated Acceptance Criteria
- The system checks if the MERLIN ID field contains spaces or is empty → if MERLIN ID is spaces, generate error message 7 indicating missing MERLIN configuration, otherwise proceed to database validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MERLINIDPresent(["Start Step"])
E_MERLINIDPresent(["End Step"])
N_MERLINIDPresent_Node0{"The system checks if the MERLIN ID
field contains spaces or is empty"}:::decision N_MERLINIDPresent_Node0_action["If MERLIN ID is spaces, generate
error message 7 indicating missing
MERLIN configuration, otherwise
proceed to database validation"]:::main N_MERLINIDPresent_Node0 -- Yes --> N_MERLINIDPresent_Node0_action N_MERLINIDPresent_Node0_action --> E_MERLINIDPresent S_MERLINIDPresent --> N_MERLINIDPresent_Node0 N_MERLINIDPresent_Node0 -- No --> E_MERLINIDPresent
field contains spaces or is empty"}:::decision N_MERLINIDPresent_Node0_action["If MERLIN ID is spaces, generate
error message 7 indicating missing
MERLIN configuration, otherwise
proceed to database validation"]:::main N_MERLINIDPresent_Node0 -- Yes --> N_MERLINIDPresent_Node0_action N_MERLINIDPresent_Node0_action --> E_MERLINIDPresent S_MERLINIDPresent --> N_MERLINIDPresent_Node0 N_MERLINIDPresent_Node0 -- No --> E_MERLINIDPresent
File: GCX003.cbl
GIVEN:
Public MERLIN ID has been extracted from administration table
WHEN:
The system checks if the MERLIN ID field contains spaces or is empty
THEN:
If MERLIN ID is spaces, generate error message 7 indicating missing MERLIN configuration, otherwise proceed to database validation
β Consolidated Acceptance Criteria
- The system queries the MERLIN database using the extracted MERLIN ID → the MERLIN database is accessed to verify ID validity and availability
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateMERLINIDinMERLINDatabase(["Start Step"])
E_ValidateMERLINIDinMERLINDatabase(["End Step"])
N_ValidateMERLINIDinMERLINDatabase_Node0{"The system queries the MERLIN
database using the extracted MERLIN
ID"}:::decision N_ValidateMERLINIDinMERLINDatabase_Node0_action["The MERLIN database is accessed to
verify ID validity and availability"]:::main N_ValidateMERLINIDinMERLINDatabase_Node0 -- Yes --> N_ValidateMERLINIDinMERLINDatabase_Node0_action N_ValidateMERLINIDinMERLINDatabase_Node0_action --> E_ValidateMERLINIDinMERLINDatabase S_ValidateMERLINIDinMERLINDatabase --> N_ValidateMERLINIDinMERLINDatabase_Node0 N_ValidateMERLINIDinMERLINDatabase_Node0 -- No --> E_ValidateMERLINIDinMERLINDatabase
database using the extracted MERLIN
ID"}:::decision N_ValidateMERLINIDinMERLINDatabase_Node0_action["The MERLIN database is accessed to
verify ID validity and availability"]:::main N_ValidateMERLINIDinMERLINDatabase_Node0 -- Yes --> N_ValidateMERLINIDinMERLINDatabase_Node0_action N_ValidateMERLINIDinMERLINDatabase_Node0_action --> E_ValidateMERLINIDinMERLINDatabase S_ValidateMERLINIDinMERLINDatabase --> N_ValidateMERLINIDinMERLINDatabase_Node0 N_ValidateMERLINIDinMERLINDatabase_Node0 -- No --> E_ValidateMERLINIDinMERLINDatabase
File: GCX003.cbl
GIVEN:
A valid MERLIN ID has been extracted from administration configuration
WHEN:
The system queries the MERLIN database using the extracted MERLIN ID
THEN:
- The merlin database is accessed to verify id validity
- Availability
β Consolidated Acceptance Criteria
- If the database query results for MERLIN ID existence → if MERLIN ID not found in database, generate error message 8 indicating invalid MERLIN ID, otherwise validation is successful
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MERLINIDValidinDatabase(["Start Step"])
E_MERLINIDValidinDatabase(["End Step"])
N_MERLINIDValidinDatabase_Node0{"The system evaluates the database
query results for MERLIN ID
existence"}:::decision N_MERLINIDValidinDatabase_Node0_action["If MERLIN ID not found in database,
generate error message 8 indicating
invalid MERLIN ID, otherwise
validation is successful"]:::main N_MERLINIDValidinDatabase_Node0 -- Yes --> N_MERLINIDValidinDatabase_Node0_action N_MERLINIDValidinDatabase_Node0_action --> E_MERLINIDValidinDatabase S_MERLINIDValidinDatabase --> N_MERLINIDValidinDatabase_Node0 N_MERLINIDValidinDatabase_Node0 -- No --> E_MERLINIDValidinDatabase
query results for MERLIN ID
existence"}:::decision N_MERLINIDValidinDatabase_Node0_action["If MERLIN ID not found in database,
generate error message 8 indicating
invalid MERLIN ID, otherwise
validation is successful"]:::main N_MERLINIDValidinDatabase_Node0 -- Yes --> N_MERLINIDValidinDatabase_Node0_action N_MERLINIDValidinDatabase_Node0_action --> E_MERLINIDValidinDatabase S_MERLINIDValidinDatabase --> N_MERLINIDValidinDatabase_Node0 N_MERLINIDValidinDatabase_Node0 -- No --> E_MERLINIDValidinDatabase
File: GCX003.cbl
GIVEN:
MERLIN database validation has been performed
WHEN:
The system evaluates the database query results for MERLIN ID existence
THEN:
If MERLIN ID not found in database, generate error message 8 indicating invalid MERLIN ID, otherwise validation is successful
β Consolidated Acceptance Criteria
- The system processes equipment items in sequence → the system must stop processing when the equipment index exceeds 499 items
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentIndex499(["Start Step"])
E_EquipmentIndex499(["End Step"])
N_EquipmentIndex499_Node0{"The system processes equipment
items in sequence"}:::decision N_EquipmentIndex499_Node0_action["The system must stop processing
when the equipment index exceeds 499
items"]:::main N_EquipmentIndex499_Node0 -- Yes --> N_EquipmentIndex499_Node0_action N_EquipmentIndex499_Node0_action --> E_EquipmentIndex499 S_EquipmentIndex499 --> N_EquipmentIndex499_Node0 N_EquipmentIndex499_Node0 -- No --> E_EquipmentIndex499
items in sequence"}:::decision N_EquipmentIndex499_Node0_action["The system must stop processing
when the equipment index exceeds 499
items"]:::main N_EquipmentIndex499_Node0 -- Yes --> N_EquipmentIndex499_Node0_action N_EquipmentIndex499_Node0_action --> E_EquipmentIndex499 S_EquipmentIndex499 --> N_EquipmentIndex499_Node0 N_EquipmentIndex499_Node0 -- No --> E_EquipmentIndex499
File: GCX003.cbl
GIVEN:
A train request is being processed with multiple equipment items
WHEN:
The system processes equipment items in sequence
THEN:
The system must stop processing when the equipment index exceeds 499 items
β Consolidated Acceptance Criteria
- The system checks for the next equipment item to process → the system must verify that REQ-NO-MORE-EQP flag is not set for the current equipment index
- The system checks for more equipment to process → continue processing if report index is within the last line limit and equipment table is not full, otherwise stop processing
- Checking for more equipment items → continue processing if report index is within bounds, equipment table is not full, and current line contains valid equipment data (not message, end report, or blank line)
- Checking for more equipment to process → if report index is less than or equal to report last line AND report index is less than or equal to maximum report line AND equipment quantity is less than equipment maximum, then continue processing, otherwise stop processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreEquipmenttoProcess(["Start Step"])
E_MoreEquipmenttoProcess(["End Step"])
N_MoreEquipmenttoProcess_Node0{"The system checks for the next
equipment item to process"}:::decision N_MoreEquipmenttoProcess_Node0_action["The system must verify that
REQ-NO-MORE-EQP flag is not set for
the current equipment index"]:::main N_MoreEquipmenttoProcess_Node0 -- Yes --> N_MoreEquipmenttoProcess_Node0_action N_MoreEquipmenttoProcess_Node0_action --> E_MoreEquipmenttoProcess S_MoreEquipmenttoProcess --> N_MoreEquipmenttoProcess_Node0 N_MoreEquipmenttoProcess_Node1{"The system checks for more
equipment to process"}:::decision N_MoreEquipmenttoProcess_Node1_action["Continue processing if report index
is within the last line limit and
equipment table is not full,
otherwise stop processing"]:::main N_MoreEquipmenttoProcess_Node1 -- Yes --> N_MoreEquipmenttoProcess_Node1_action N_MoreEquipmenttoProcess_Node1_action --> E_MoreEquipmenttoProcess N_MoreEquipmenttoProcess_Node0 -- No --> N_MoreEquipmenttoProcess_Node1 N_MoreEquipmenttoProcess_Node2{"Checking for more equipment items"}:::decision N_MoreEquipmenttoProcess_Node2_action["Continue processing if report index
is within bounds, equipment table is
not full, and current line contains
valid equipment data not message,
end report, or blank line"]:::main N_MoreEquipmenttoProcess_Node2 -- Yes --> N_MoreEquipmenttoProcess_Node2_action N_MoreEquipmenttoProcess_Node2_action --> E_MoreEquipmenttoProcess N_MoreEquipmenttoProcess_Node1 -- No --> N_MoreEquipmenttoProcess_Node2 N_MoreEquipmenttoProcess_Node3{"Checking for more equipment to
process"}:::decision N_MoreEquipmenttoProcess_Node3_action["If report index is less than or
equal to report last line AND report
index is less than or equal to
maximum report line AND equipment
quantity is less than equipment
maximum, then continue processing,
otherwise stop processing"]:::main N_MoreEquipmenttoProcess_Node3 -- Yes --> N_MoreEquipmenttoProcess_Node3_action N_MoreEquipmenttoProcess_Node3_action --> E_MoreEquipmenttoProcess N_MoreEquipmenttoProcess_Node2 -- No --> N_MoreEquipmenttoProcess_Node3 N_MoreEquipmenttoProcess_Node3 -- No --> E_MoreEquipmenttoProcess
equipment item to process"}:::decision N_MoreEquipmenttoProcess_Node0_action["The system must verify that
REQ-NO-MORE-EQP flag is not set for
the current equipment index"]:::main N_MoreEquipmenttoProcess_Node0 -- Yes --> N_MoreEquipmenttoProcess_Node0_action N_MoreEquipmenttoProcess_Node0_action --> E_MoreEquipmenttoProcess S_MoreEquipmenttoProcess --> N_MoreEquipmenttoProcess_Node0 N_MoreEquipmenttoProcess_Node1{"The system checks for more
equipment to process"}:::decision N_MoreEquipmenttoProcess_Node1_action["Continue processing if report index
is within the last line limit and
equipment table is not full,
otherwise stop processing"]:::main N_MoreEquipmenttoProcess_Node1 -- Yes --> N_MoreEquipmenttoProcess_Node1_action N_MoreEquipmenttoProcess_Node1_action --> E_MoreEquipmenttoProcess N_MoreEquipmenttoProcess_Node0 -- No --> N_MoreEquipmenttoProcess_Node1 N_MoreEquipmenttoProcess_Node2{"Checking for more equipment items"}:::decision N_MoreEquipmenttoProcess_Node2_action["Continue processing if report index
is within bounds, equipment table is
not full, and current line contains
valid equipment data not message,
end report, or blank line"]:::main N_MoreEquipmenttoProcess_Node2 -- Yes --> N_MoreEquipmenttoProcess_Node2_action N_MoreEquipmenttoProcess_Node2_action --> E_MoreEquipmenttoProcess N_MoreEquipmenttoProcess_Node1 -- No --> N_MoreEquipmenttoProcess_Node2 N_MoreEquipmenttoProcess_Node3{"Checking for more equipment to
process"}:::decision N_MoreEquipmenttoProcess_Node3_action["If report index is less than or
equal to report last line AND report
index is less than or equal to
maximum report line AND equipment
quantity is less than equipment
maximum, then continue processing,
otherwise stop processing"]:::main N_MoreEquipmenttoProcess_Node3 -- Yes --> N_MoreEquipmenttoProcess_Node3_action N_MoreEquipmenttoProcess_Node3_action --> E_MoreEquipmenttoProcess N_MoreEquipmenttoProcess_Node2 -- No --> N_MoreEquipmenttoProcess_Node3 N_MoreEquipmenttoProcess_Node3 -- No --> E_MoreEquipmenttoProcess
File: GCX003.cbl
GIVEN:
The system is processing equipment items in a loop
WHEN:
The system checks for the next equipment item to process
THEN:
The system must verify that REQ-NO-MORE-EQP flag is not set for the current equipment index
File: GCX003.cbl
GIVEN:
Equipment processing is in progress with current report index position
WHEN:
The system checks for more equipment to process
THEN:
- Continue processing if report index is within the last line limit
- Equipment table is not full, otherwise stop processing
File: GCX003.cbl
GIVEN:
Equipment processing is in progress
WHEN:
Checking for more equipment items
THEN:
Continue processing if report index is within bounds, equipment table is not full, and current line contains valid equipment data (not message, end report, or blank line)
File: GCX003.cbl
GIVEN:
Equipment counter has been initialized and report processing is in progress
WHEN:
Checking for more equipment to process
THEN:
- If report index is less than or equal to report last line
- Report index is less than or equal to maximum report line
- Equipment quantity is less than equipment maximum, then continue processing, otherwise stop processing
β Consolidated Acceptance Criteria
- The system processes the equipment → the system must perform B000-PROCESS-EQUIPMENT with TEST AFTER until WS-NO-MORE-CONTAINER is true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessEquipmentwithB000PROCESSEQUIPMENT(["Start Step"])
E_ProcessEquipmentwithB000PROCESSEQUIPMENT(["End Step"])
N_ProcessEquipmentwithB000PROCESSEQUIPMENT_Node0{"The system processes the equipment"}:::decision
N_ProcessEquipmentwithB000PROCESSEQUIPMENT_Node0_action["The system must perform
B000-PROCESS-EQUIPMENT with TEST
AFTER until WS-NO-MORE-CONTAINER is
true"]:::main N_ProcessEquipmentwithB000PROCESSEQUIPMENT_Node0 -- Yes --> N_ProcessEquipmentwithB000PROCESSEQUIPMENT_Node0_action N_ProcessEquipmentwithB000PROCESSEQUIPMENT_Node0_action --> E_ProcessEquipmentwithB000PROCESSEQUIPMENT S_ProcessEquipmentwithB000PROCESSEQUIPMENT --> N_ProcessEquipmentwithB000PROCESSEQUIPMENT_Node0 N_ProcessEquipmentwithB000PROCESSEQUIPMENT_Node0 -- No --> E_ProcessEquipmentwithB000PROCESSEQUIPMENT
B000-PROCESS-EQUIPMENT with TEST
AFTER until WS-NO-MORE-CONTAINER is
true"]:::main N_ProcessEquipmentwithB000PROCESSEQUIPMENT_Node0 -- Yes --> N_ProcessEquipmentwithB000PROCESSEQUIPMENT_Node0_action N_ProcessEquipmentwithB000PROCESSEQUIPMENT_Node0_action --> E_ProcessEquipmentwithB000PROCESSEQUIPMENT S_ProcessEquipmentwithB000PROCESSEQUIPMENT --> N_ProcessEquipmentwithB000PROCESSEQUIPMENT_Node0 N_ProcessEquipmentwithB000PROCESSEQUIPMENT_Node0 -- No --> E_ProcessEquipmentwithB000PROCESSEQUIPMENT
File: GCX003.cbl
GIVEN:
An equipment item has passed format validation
WHEN:
The system processes the equipment
THEN:
The system must perform B000-PROCESS-EQUIPMENT with TEST AFTER until WS-NO-MORE-CONTAINER is true
β Consolidated Acceptance Criteria
- The system checks for additional containers on the equipment → the system must continue processing while WS-NO-MORE-CONTAINER is false
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreContainersonEquipment(["Start Step"])
E_MoreContainersonEquipment(["End Step"])
N_MoreContainersonEquipment_Node0{"The system checks for additional
containers on the equipment"}:::decision N_MoreContainersonEquipment_Node0_action["The system must continue processing
while WS-NO-MORE-CONTAINER is false"]:::main N_MoreContainersonEquipment_Node0 -- Yes --> N_MoreContainersonEquipment_Node0_action N_MoreContainersonEquipment_Node0_action --> E_MoreContainersonEquipment S_MoreContainersonEquipment --> N_MoreContainersonEquipment_Node0 N_MoreContainersonEquipment_Node0 -- No --> E_MoreContainersonEquipment
containers on the equipment"}:::decision N_MoreContainersonEquipment_Node0_action["The system must continue processing
while WS-NO-MORE-CONTAINER is false"]:::main N_MoreContainersonEquipment_Node0 -- Yes --> N_MoreContainersonEquipment_Node0_action N_MoreContainersonEquipment_Node0_action --> E_MoreContainersonEquipment S_MoreContainersonEquipment --> N_MoreContainersonEquipment_Node0 N_MoreContainersonEquipment_Node0 -- No --> E_MoreContainersonEquipment
File: GCX003.cbl
GIVEN:
Equipment processing is in progress
WHEN:
The system checks for additional containers on the equipment
THEN:
The system must continue processing while WS-NO-MORE-CONTAINER is false
β Consolidated Acceptance Criteria
- The system handles the format error → the system must move REQ-EQP-ID to RPT-CAR-ID and REQ-LE-IND to RPT-LE-IND at the current report index
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddEquipmentErrorMessage(["Start Step"])
E_AddEquipmentErrorMessage(["End Step"])
N_AddEquipmentErrorMessage_Node0{"The system handles the format error"}:::decision
N_AddEquipmentErrorMessage_Node0_action["The system must move REQ-EQP-ID to
RPT-CAR-ID and REQ-LE-IND to
RPT-LE-IND at the current report
index"]:::exclusion N_AddEquipmentErrorMessage_Node0 -- Yes -->|Alternative| N_AddEquipmentErrorMessage_Node0_action N_AddEquipmentErrorMessage_Node0_action --> E_AddEquipmentErrorMessage S_AddEquipmentErrorMessage --> N_AddEquipmentErrorMessage_Node0 N_AddEquipmentErrorMessage_Node0 -- No --> E_AddEquipmentErrorMessage
RPT-CAR-ID and REQ-LE-IND to
RPT-LE-IND at the current report
index"]:::exclusion N_AddEquipmentErrorMessage_Node0 -- Yes -->|Alternative| N_AddEquipmentErrorMessage_Node0_action N_AddEquipmentErrorMessage_Node0_action --> E_AddEquipmentErrorMessage S_AddEquipmentErrorMessage --> N_AddEquipmentErrorMessage_Node0 N_AddEquipmentErrorMessage_Node0 -- No --> E_AddEquipmentErrorMessage
File: GCX003.cbl
GIVEN:
An equipment item fails format validation
WHEN:
The system handles the format error
THEN:
- The system must move req-eqp-id to rpt-car-id
- Req-le-ind to rpt-le-ind at the current report index
β Consolidated Acceptance Criteria
- The system sets error flags → the system must set MSG-THIRTY-FOUR flag to true at the current report index and increment the report index
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentErrorFlagMSGTHIRTYFOUR(["Start Step"])
E_SetEquipmentErrorFlagMSGTHIRTYFOUR(["End Step"])
N_SetEquipmentErrorFlagMSGTHIRTYFOUR_Node0{"The system sets error flags"}:::decision
N_SetEquipmentErrorFlagMSGTHIRTYFOUR_Node0_action["The system must set MSG-THIRTY-FOUR
flag to true at the current report
index and increment the report index"]:::exclusion N_SetEquipmentErrorFlagMSGTHIRTYFOUR_Node0 -- Yes -->|Alternative| N_SetEquipmentErrorFlagMSGTHIRTYFOUR_Node0_action N_SetEquipmentErrorFlagMSGTHIRTYFOUR_Node0_action --> E_SetEquipmentErrorFlagMSGTHIRTYFOUR S_SetEquipmentErrorFlagMSGTHIRTYFOUR --> N_SetEquipmentErrorFlagMSGTHIRTYFOUR_Node0 N_SetEquipmentErrorFlagMSGTHIRTYFOUR_Node0 -- No --> E_SetEquipmentErrorFlagMSGTHIRTYFOUR
flag to true at the current report
index and increment the report index"]:::exclusion N_SetEquipmentErrorFlagMSGTHIRTYFOUR_Node0 -- Yes -->|Alternative| N_SetEquipmentErrorFlagMSGTHIRTYFOUR_Node0_action N_SetEquipmentErrorFlagMSGTHIRTYFOUR_Node0_action --> E_SetEquipmentErrorFlagMSGTHIRTYFOUR S_SetEquipmentErrorFlagMSGTHIRTYFOUR --> N_SetEquipmentErrorFlagMSGTHIRTYFOUR_Node0 N_SetEquipmentErrorFlagMSGTHIRTYFOUR_Node0 -- No --> E_SetEquipmentErrorFlagMSGTHIRTYFOUR
File: GCX003.cbl
GIVEN:
Equipment format validation has failed and error details have been recorded
WHEN:
The system sets error flags
THEN:
- The system must set msg-thirty-four flag to true at the current report index
- Increment the report index
β Consolidated Acceptance Criteria
- The GCCCARFM service is called to validate the equipment format → the system determines if the equipment format is valid or invalid for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCCARFMServiceforFormatValidation(["Start Step"])
E_CallGCCCARFMServiceforFormatValidation(["End Step"])
N_CallGCCCARFMServiceforFormatValidation_Node0{"The GCCCARFM service is called to
validate the equipment format"}:::decision N_CallGCCCARFMServiceforFormatValidation_Node0_action["The system determines if the
equipment format is valid or invalid
for further processing"]:::main N_CallGCCCARFMServiceforFormatValidation_Node0 -- Yes --> N_CallGCCCARFMServiceforFormatValidation_Node0_action N_CallGCCCARFMServiceforFormatValidation_Node0_action --> E_CallGCCCARFMServiceforFormatValidation S_CallGCCCARFMServiceforFormatValidation --> N_CallGCCCARFMServiceforFormatValidation_Node0 N_CallGCCCARFMServiceforFormatValidation_Node0 -- No --> E_CallGCCCARFMServiceforFormatValidation
validate the equipment format"}:::decision N_CallGCCCARFMServiceforFormatValidation_Node0_action["The system determines if the
equipment format is valid or invalid
for further processing"]:::main N_CallGCCCARFMServiceforFormatValidation_Node0 -- Yes --> N_CallGCCCARFMServiceforFormatValidation_Node0_action N_CallGCCCARFMServiceforFormatValidation_Node0_action --> E_CallGCCCARFMServiceforFormatValidation S_CallGCCCARFMServiceforFormatValidation --> N_CallGCCCARFMServiceforFormatValidation_Node0 N_CallGCCCARFMServiceforFormatValidation_Node0 -- No --> E_CallGCCCARFMServiceforFormatValidation
File: GCX003.cbl
GIVEN:
An equipment ID from the request and equipment ID length set to 12 characters
WHEN:
The GCCCARFM service is called to validate the equipment format
THEN:
The system determines if the equipment format is valid or invalid for further processing
β Consolidated Acceptance Criteria
- GCCCARFM validation returns successful status → the equipment is marked as valid and processing continues to the next step
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentFormatValidContinueProcessing(["Start Step"])
E_EquipmentFormatValidContinueProcessing(["End Step"])
N_EquipmentFormatValidContinueProcessing_Node0{"GCCCARFM validation returns
successful status"}:::decision N_EquipmentFormatValidContinueProcessing_Node0_action["The equipment is marked as valid
and processing continues to the next
step"]:::main N_EquipmentFormatValidContinueProcessing_Node0 -- Yes --> N_EquipmentFormatValidContinueProcessing_Node0_action N_EquipmentFormatValidContinueProcessing_Node0_action --> E_EquipmentFormatValidContinueProcessing S_EquipmentFormatValidContinueProcessing --> N_EquipmentFormatValidContinueProcessing_Node0 N_EquipmentFormatValidContinueProcessing_Node0 -- No --> E_EquipmentFormatValidContinueProcessing
successful status"}:::decision N_EquipmentFormatValidContinueProcessing_Node0_action["The equipment is marked as valid
and processing continues to the next
step"]:::main N_EquipmentFormatValidContinueProcessing_Node0 -- Yes --> N_EquipmentFormatValidContinueProcessing_Node0_action N_EquipmentFormatValidContinueProcessing_Node0_action --> E_EquipmentFormatValidContinueProcessing S_EquipmentFormatValidContinueProcessing --> N_EquipmentFormatValidContinueProcessing_Node0 N_EquipmentFormatValidContinueProcessing_Node0 -- No --> E_EquipmentFormatValidContinueProcessing
File: GCX003.cbl
GIVEN:
Equipment format validation has been performed
WHEN:
GCCCARFM validation returns successful status
THEN:
- The equipment is marked as valid
- Processing continues to the next step
β Consolidated Acceptance Criteria
- GCCCARFM validation returns unsuccessful status → the equipment is marked with format error status and added to report with load/empty indicator
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkasEquipmentFormatError(["Start Step"])
E_MarkasEquipmentFormatError(["End Step"])
N_MarkasEquipmentFormatError_Node0{"GCCCARFM validation returns
unsuccessful status"}:::decision N_MarkasEquipmentFormatError_Node0_action["The equipment is marked with format
error status and added to report
with loadempty indicator"]:::main N_MarkasEquipmentFormatError_Node0 -- Yes --> N_MarkasEquipmentFormatError_Node0_action N_MarkasEquipmentFormatError_Node0_action --> E_MarkasEquipmentFormatError S_MarkasEquipmentFormatError --> N_MarkasEquipmentFormatError_Node0 N_MarkasEquipmentFormatError_Node0 -- No --> E_MarkasEquipmentFormatError
unsuccessful status"}:::decision N_MarkasEquipmentFormatError_Node0_action["The equipment is marked with format
error status and added to report
with loadempty indicator"]:::main N_MarkasEquipmentFormatError_Node0 -- Yes --> N_MarkasEquipmentFormatError_Node0_action N_MarkasEquipmentFormatError_Node0_action --> E_MarkasEquipmentFormatError S_MarkasEquipmentFormatError --> N_MarkasEquipmentFormatError_Node0 N_MarkasEquipmentFormatError_Node0 -- No --> E_MarkasEquipmentFormatError
File: GCX003.cbl
GIVEN:
Equipment format validation has been performed
WHEN:
GCCCARFM validation returns unsuccessful status
THEN:
- The equipment is marked with format error status
- Added to report with load/empty indicator
β Consolidated Acceptance Criteria
- The system determines the equipment is a container type → error message 35 is set for the container format validation failure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetContainerErrorMessage35(["Start Step"])
E_SetContainerErrorMessage35(["End Step"])
N_SetContainerErrorMessage35_Node0{"The system determines the equipment
is a container type"}:::decision N_SetContainerErrorMessage35_Node0_action["Error message 35 is set for the
container format validation failure"]:::main N_SetContainerErrorMessage35_Node0 -- Yes --> N_SetContainerErrorMessage35_Node0_action N_SetContainerErrorMessage35_Node0_action --> E_SetContainerErrorMessage35 S_SetContainerErrorMessage35 --> N_SetContainerErrorMessage35_Node0 N_SetContainerErrorMessage35_Node0 -- No --> E_SetContainerErrorMessage35
is a container type"}:::decision N_SetContainerErrorMessage35_Node0_action["Error message 35 is set for the
container format validation failure"]:::main N_SetContainerErrorMessage35_Node0 -- Yes --> N_SetContainerErrorMessage35_Node0_action N_SetContainerErrorMessage35_Node0_action --> E_SetContainerErrorMessage35 S_SetContainerErrorMessage35 --> N_SetContainerErrorMessage35_Node0 N_SetContainerErrorMessage35_Node0 -- No --> E_SetContainerErrorMessage35
File: GCX003.cbl
GIVEN:
Equipment format validation has failed and equipment type is container
WHEN:
The system determines the equipment is a container type
THEN:
Error message 35 is set for the container format validation failure
β Consolidated Acceptance Criteria
- The system determines the equipment is a car type → error message 36 is set for the car format validation failure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCarErrorMessage36(["Start Step"])
E_SetCarErrorMessage36(["End Step"])
N_SetCarErrorMessage36_Node0{"The system determines the equipment
is a car type"}:::decision N_SetCarErrorMessage36_Node0_action["Error message 36 is set for the car
format validation failure"]:::main N_SetCarErrorMessage36_Node0 -- Yes --> N_SetCarErrorMessage36_Node0_action N_SetCarErrorMessage36_Node0_action --> E_SetCarErrorMessage36 S_SetCarErrorMessage36 --> N_SetCarErrorMessage36_Node0 N_SetCarErrorMessage36_Node0 -- No --> E_SetCarErrorMessage36
is a car type"}:::decision N_SetCarErrorMessage36_Node0_action["Error message 36 is set for the car
format validation failure"]:::main N_SetCarErrorMessage36_Node0 -- Yes --> N_SetCarErrorMessage36_Node0_action N_SetCarErrorMessage36_Node0_action --> E_SetCarErrorMessage36 S_SetCarErrorMessage36 --> N_SetCarErrorMessage36_Node0 N_SetCarErrorMessage36_Node0 -- No --> E_SetCarErrorMessage36
File: GCX003.cbl
GIVEN:
Equipment format validation has failed and equipment type is car
WHEN:
The system determines the equipment is a car type
THEN:
Error message 36 is set for the car format validation failure
β Consolidated Acceptance Criteria
- The error has been added to the report → further processing of this equipment item is skipped and control returns to process the next equipment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipFurtherEquipmentProcessing(["Start Step"])
E_SkipFurtherEquipmentProcessing(["End Step"])
N_SkipFurtherEquipmentProcessing_Node0{"The error has been added to the
report"}:::decision N_SkipFurtherEquipmentProcessing_Node0_action["Further processing of this
equipment item is skipped and
control returns to process the next
equipment"]:::exclusion N_SkipFurtherEquipmentProcessing_Node0 -- Yes -->|Alternative| N_SkipFurtherEquipmentProcessing_Node0_action N_SkipFurtherEquipmentProcessing_Node0_action --> E_SkipFurtherEquipmentProcessing S_SkipFurtherEquipmentProcessing --> N_SkipFurtherEquipmentProcessing_Node0 N_SkipFurtherEquipmentProcessing_Node0 -- No --> E_SkipFurtherEquipmentProcessing
report"}:::decision N_SkipFurtherEquipmentProcessing_Node0_action["Further processing of this
equipment item is skipped and
control returns to process the next
equipment"]:::exclusion N_SkipFurtherEquipmentProcessing_Node0 -- Yes -->|Alternative| N_SkipFurtherEquipmentProcessing_Node0_action N_SkipFurtherEquipmentProcessing_Node0_action --> E_SkipFurtherEquipmentProcessing S_SkipFurtherEquipmentProcessing --> N_SkipFurtherEquipmentProcessing_Node0 N_SkipFurtherEquipmentProcessing_Node0 -- No --> E_SkipFurtherEquipmentProcessing
File: GCX003.cbl
GIVEN:
Equipment format validation has failed and appropriate error message has been generated
WHEN:
The error has been added to the report
THEN:
- Further processing of this equipment item is skipped
- Control returns to process the next equipment
β Consolidated Acceptance Criteria
- The system begins processing equipment → all processing state flags are set to their initial values: TR bond not found, TR not created for IT, TE bond not found, TE not created for TE, special location codes not found, US-MX export not found, and segment indicators reset
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeEquipmentProcessingFlags(["Start Step"])
E_InitializeEquipmentProcessingFlags(["End Step"])
N_InitializeEquipmentProcessingFlags_Node0{"The system begins processing
equipment"}:::decision N_InitializeEquipmentProcessingFlags_Node0_action["All processing state flags are set
to their initial values: TR bond not
found, TR not created for IT, TE
bond not found, TE not created for
TE, special location codes not
found, US-MX export not found, and
segment indicators reset"]:::main N_InitializeEquipmentProcessingFlags_Node0 -- Yes --> N_InitializeEquipmentProcessingFlags_Node0_action N_InitializeEquipmentProcessingFlags_Node0_action --> E_InitializeEquipmentProcessingFlags S_InitializeEquipmentProcessingFlags --> N_InitializeEquipmentProcessingFlags_Node0 N_InitializeEquipmentProcessingFlags_Node0 -- No --> E_InitializeEquipmentProcessingFlags
equipment"}:::decision N_InitializeEquipmentProcessingFlags_Node0_action["All processing state flags are set
to their initial values: TR bond not
found, TR not created for IT, TE
bond not found, TE not created for
TE, special location codes not
found, US-MX export not found, and
segment indicators reset"]:::main N_InitializeEquipmentProcessingFlags_Node0 -- Yes --> N_InitializeEquipmentProcessingFlags_Node0_action N_InitializeEquipmentProcessingFlags_Node0_action --> E_InitializeEquipmentProcessingFlags S_InitializeEquipmentProcessingFlags --> N_InitializeEquipmentProcessingFlags_Node0 N_InitializeEquipmentProcessingFlags_Node0 -- No --> E_InitializeEquipmentProcessingFlags
File: GCX003.cbl
GIVEN:
Equipment processing is starting for a new equipment item
WHEN:
The system begins processing equipment
THEN:
All processing state flags are set to their initial values: TR bond not found, TR not created for IT, TE bond not found, TE not created for TE, special location codes not found, US-MX export not found, and segment indicators reset
β Consolidated Acceptance Criteria
- System processes the waybill information → if equipment is identified as conveying car type, set the load/empty indicator to 'E' (empty)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifConveyingCar(["Start Step"])
E_CheckifConveyingCar(["End Step"])
N_CheckifConveyingCar_Node0{"System processes the waybill
information"}:::decision N_CheckifConveyingCar_Node0_action["If equipment is identified as
conveying car type, set the
loadempty indicator to E empty"]:::main N_CheckifConveyingCar_Node0 -- Yes --> N_CheckifConveyingCar_Node0_action N_CheckifConveyingCar_Node0_action --> E_CheckifConveyingCar S_CheckifConveyingCar --> N_CheckifConveyingCar_Node0 N_CheckifConveyingCar_Node0 -- No --> E_CheckifConveyingCar
information"}:::decision N_CheckifConveyingCar_Node0_action["If equipment is identified as
conveying car type, set the
loadempty indicator to E empty"]:::main N_CheckifConveyingCar_Node0 -- Yes --> N_CheckifConveyingCar_Node0_action N_CheckifConveyingCar_Node0_action --> E_CheckifConveyingCar S_CheckifConveyingCar --> N_CheckifConveyingCar_Node0 N_CheckifConveyingCar_Node0 -- No --> E_CheckifConveyingCar
File: GCX003.cbl
GIVEN:
A waybill has been found for the equipment
WHEN:
System processes the waybill information
THEN:
If equipment is identified as conveying car type, set the load/empty indicator to 'E' (empty)
β Consolidated Acceptance Criteria
- Report generation is performed → system creates detail line with equipment ID, load/empty status, cargo descriptions, bond information, and special handling codes formatted for report output
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildEquipmentDetailReportLine(["Start Step"])
E_BuildEquipmentDetailReportLine(["End Step"])
N_BuildEquipmentDetailReportLine_Node0{"Report generation is performed"}:::decision
N_BuildEquipmentDetailReportLine_Node0_action["System creates detail line with
equipment ID, loadempty status,
cargo descriptions, bond
information, and special handling
codes formatted for report output"]:::main N_BuildEquipmentDetailReportLine_Node0 -- Yes --> N_BuildEquipmentDetailReportLine_Node0_action N_BuildEquipmentDetailReportLine_Node0_action --> E_BuildEquipmentDetailReportLine S_BuildEquipmentDetailReportLine --> N_BuildEquipmentDetailReportLine_Node0 N_BuildEquipmentDetailReportLine_Node0 -- No --> E_BuildEquipmentDetailReportLine
equipment ID, loadempty status,
cargo descriptions, bond
information, and special handling
codes formatted for report output"]:::main N_BuildEquipmentDetailReportLine_Node0 -- Yes --> N_BuildEquipmentDetailReportLine_Node0_action N_BuildEquipmentDetailReportLine_Node0_action --> E_BuildEquipmentDetailReportLine S_BuildEquipmentDetailReportLine --> N_BuildEquipmentDetailReportLine_Node0 N_BuildEquipmentDetailReportLine_Node0 -- No --> E_BuildEquipmentDetailReportLine
File: GCX003.cbl
GIVEN:
Equipment and cargo data has been retrieved
WHEN:
Report generation is performed
THEN:
System creates detail line with equipment ID, load/empty status, cargo descriptions, bond information, and special handling codes formatted for report output
β Consolidated Acceptance Criteria
- System evaluates cargo attachment → if request action is SEND and no errors exist and no spawn conditions are met and cargo is not empty residue, proceed with cargo attachment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendActionandNoErrors(["Start Step"])
E_SendActionandNoErrors(["End Step"])
N_SendActionandNoErrors_Node0{"System evaluates cargo attachment"}:::decision
N_SendActionandNoErrors_Node0_action["If request action is SEND and no
errors exist and no spawn conditions
are met and cargo is not empty
residue, proceed with cargo
attachment"]:::main N_SendActionandNoErrors_Node0 -- Yes --> N_SendActionandNoErrors_Node0_action N_SendActionandNoErrors_Node0_action --> E_SendActionandNoErrors S_SendActionandNoErrors --> N_SendActionandNoErrors_Node0 N_SendActionandNoErrors_Node0 -- No --> E_SendActionandNoErrors
errors exist and no spawn conditions
are met and cargo is not empty
residue, proceed with cargo
attachment"]:::main N_SendActionandNoErrors_Node0 -- Yes --> N_SendActionandNoErrors_Node0_action N_SendActionandNoErrors_Node0_action --> E_SendActionandNoErrors S_SendActionandNoErrors --> N_SendActionandNoErrors_Node0 N_SendActionandNoErrors_Node0 -- No --> E_SendActionandNoErrors
File: GCX003.cbl
GIVEN:
Equipment processing is complete and cargo exists
WHEN:
System evaluates cargo attachment
THEN:
- If request action is send
- No errors exist
- No spawn conditions are met
- Cargo is not empty residue, proceed with cargo attachment
β Consolidated Acceptance Criteria
- Cargo attachment processing occurs → skip attachment for immediate transport cargo, cargo already created for IT, US-Canada-US cargo with release status, default cargo with release status, empty equipment cargo, special manifest cargo at specific stations, or export cargo at non-Laredo stations
- None of the special manifest, bond type, or routing skip conditions are met → the system proceeds with standard cargo attachment to the train manifest
- The cargo does not meet any of the skip conditions for special processing → attach the cargo to the train for standard manifest processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AttachCargotoTrain(["Start Step"])
E_AttachCargotoTrain(["End Step"])
N_AttachCargotoTrain_Node0{"Cargo attachment processing occurs"}:::decision
N_AttachCargotoTrain_Node0_action["Skip attachment for immediate
transport cargo, cargo already
created for IT, US-Canada-US cargo
with release status, default cargo
with release status, empty equipment
cargo, special manifest cargo at
specific stations, or export cargo
at non-Laredo stations"]:::main N_AttachCargotoTrain_Node0 -- Yes --> N_AttachCargotoTrain_Node0_action N_AttachCargotoTrain_Node0_action --> E_AttachCargotoTrain S_AttachCargotoTrain --> N_AttachCargotoTrain_Node0 N_AttachCargotoTrain_Node1{"None of the special manifest, bond
type, or routing skip conditions are
met"}:::decision N_AttachCargotoTrain_Node1_action["The system proceeds with standard
cargo attachment to the train
manifest"]:::main N_AttachCargotoTrain_Node1 -- Yes --> N_AttachCargotoTrain_Node1_action N_AttachCargotoTrain_Node1_action --> E_AttachCargotoTrain N_AttachCargotoTrain_Node0 -- No --> N_AttachCargotoTrain_Node1 N_AttachCargotoTrain_Node2{"The cargo does not meet any of the
skip conditions for special
processing"}:::decision N_AttachCargotoTrain_Node2_action["Attach the cargo to the train for
standard manifest processing"]:::main N_AttachCargotoTrain_Node2 -- Yes --> N_AttachCargotoTrain_Node2_action N_AttachCargotoTrain_Node2_action --> E_AttachCargotoTrain N_AttachCargotoTrain_Node1 -- No --> N_AttachCargotoTrain_Node2 N_AttachCargotoTrain_Node2 -- No --> E_AttachCargotoTrain
transport cargo, cargo already
created for IT, US-Canada-US cargo
with release status, default cargo
with release status, empty equipment
cargo, special manifest cargo at
specific stations, or export cargo
at non-Laredo stations"]:::main N_AttachCargotoTrain_Node0 -- Yes --> N_AttachCargotoTrain_Node0_action N_AttachCargotoTrain_Node0_action --> E_AttachCargotoTrain S_AttachCargotoTrain --> N_AttachCargotoTrain_Node0 N_AttachCargotoTrain_Node1{"None of the special manifest, bond
type, or routing skip conditions are
met"}:::decision N_AttachCargotoTrain_Node1_action["The system proceeds with standard
cargo attachment to the train
manifest"]:::main N_AttachCargotoTrain_Node1 -- Yes --> N_AttachCargotoTrain_Node1_action N_AttachCargotoTrain_Node1_action --> E_AttachCargotoTrain N_AttachCargotoTrain_Node0 -- No --> N_AttachCargotoTrain_Node1 N_AttachCargotoTrain_Node2{"The cargo does not meet any of the
skip conditions for special
processing"}:::decision N_AttachCargotoTrain_Node2_action["Attach the cargo to the train for
standard manifest processing"]:::main N_AttachCargotoTrain_Node2 -- Yes --> N_AttachCargotoTrain_Node2_action N_AttachCargotoTrain_Node2_action --> E_AttachCargotoTrain N_AttachCargotoTrain_Node1 -- No --> N_AttachCargotoTrain_Node2 N_AttachCargotoTrain_Node2 -- No --> E_AttachCargotoTrain
File: GCX003.cbl
GIVEN:
Cargo is eligible for attachment to train
WHEN:
Cargo attachment processing occurs
THEN:
Skip attachment for immediate transport cargo, cargo already created for IT, US-Canada-US cargo with release status, default cargo with release status, empty equipment cargo, special manifest cargo at specific stations, or export cargo at non-Laredo stations
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record that does not meet any skip attachment conditions
WHEN:
None of the special manifest, bond type, or routing skip conditions are met
THEN:
The system proceeds with standard cargo attachment to the train manifest
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record that has been evaluated against all skip criteria
WHEN:
The cargo does not meet any of the skip conditions for special processing
THEN:
Attach the cargo to the train for standard manifest processing
β Consolidated Acceptance Criteria
- Special bond processing evaluation occurs → check for TR bond creation for IT cargo, TE bond creation for TE cargo, special IT manifest requirements, and US-MX export conditions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckforSpecialBondProcessing(["Start Step"])
E_CheckforSpecialBondProcessing(["End Step"])
N_CheckforSpecialBondProcessing_Node0{"Special bond processing evaluation
occurs"}:::decision N_CheckforSpecialBondProcessing_Node0_action["Check for TR bond creation for IT
cargo, TE bond creation for TE
cargo, special IT manifest
requirements, and US-MX export
conditions"]:::main N_CheckforSpecialBondProcessing_Node0 -- Yes --> N_CheckforSpecialBondProcessing_Node0_action N_CheckforSpecialBondProcessing_Node0_action --> E_CheckforSpecialBondProcessing S_CheckforSpecialBondProcessing --> N_CheckforSpecialBondProcessing_Node0 N_CheckforSpecialBondProcessing_Node0 -- No --> E_CheckforSpecialBondProcessing
occurs"}:::decision N_CheckforSpecialBondProcessing_Node0_action["Check for TR bond creation for IT
cargo, TE bond creation for TE
cargo, special IT manifest
requirements, and US-MX export
conditions"]:::main N_CheckforSpecialBondProcessing_Node0 -- Yes --> N_CheckforSpecialBondProcessing_Node0_action N_CheckforSpecialBondProcessing_Node0_action --> E_CheckforSpecialBondProcessing S_CheckforSpecialBondProcessing --> N_CheckforSpecialBondProcessing_Node0 N_CheckforSpecialBondProcessing_Node0 -- No --> E_CheckforSpecialBondProcessing
File: GCX003.cbl
GIVEN:
All cargo records for equipment have been processed
WHEN:
Special bond processing evaluation occurs
THEN:
Check for TR bond creation for IT cargo, TE bond creation for TE cargo, special IT manifest requirements, and US-MX export conditions
β Consolidated Acceptance Criteria
- TR bond validation occurs → if TR bond was created for IT cargo but TR bond not found during processing, generate message 22 warning and add to report
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TRBondCreatedforIT(["Start Step"])
E_TRBondCreatedforIT(["End Step"])
N_TRBondCreatedforIT_Node0{"TR bond validation occurs"}:::decision
N_TRBondCreatedforIT_Node0_action["If TR bond was created for IT cargo
but TR bond not found during
processing, generate message 22
warning and add to report"]:::main N_TRBondCreatedforIT_Node0 -- Yes --> N_TRBondCreatedforIT_Node0_action N_TRBondCreatedforIT_Node0_action --> E_TRBondCreatedforIT S_TRBondCreatedforIT --> N_TRBondCreatedforIT_Node0 N_TRBondCreatedforIT_Node0 -- No --> E_TRBondCreatedforIT
but TR bond not found during
processing, generate message 22
warning and add to report"]:::main N_TRBondCreatedforIT_Node0 -- Yes --> N_TRBondCreatedforIT_Node0_action N_TRBondCreatedforIT_Node0_action --> E_TRBondCreatedforIT S_TRBondCreatedforIT --> N_TRBondCreatedforIT_Node0 N_TRBondCreatedforIT_Node0 -- No --> E_TRBondCreatedforIT
File: GCX003.cbl
GIVEN:
Equipment processing found IT cargo that should have TR bond
WHEN:
TR bond validation occurs
THEN:
- If tr bond was created for it cargo but tr bond not found during processing, generate message 22 warning
- Add to report
β Consolidated Acceptance Criteria
- Warning message generation occurs → add message 22 to report with equipment details and increment total equipment count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddTRBondWarningMessage(["Start Step"])
E_AddTRBondWarningMessage(["End Step"])
N_AddTRBondWarningMessage_Node0{"Warning message generation occurs"}:::decision
N_AddTRBondWarningMessage_Node0_action["Add message 22 to report with
equipment details and increment
total equipment count"]:::main N_AddTRBondWarningMessage_Node0 -- Yes --> N_AddTRBondWarningMessage_Node0_action N_AddTRBondWarningMessage_Node0_action --> E_AddTRBondWarningMessage S_AddTRBondWarningMessage --> N_AddTRBondWarningMessage_Node0 N_AddTRBondWarningMessage_Node0 -- No --> E_AddTRBondWarningMessage
equipment details and increment
total equipment count"]:::main N_AddTRBondWarningMessage_Node0 -- Yes --> N_AddTRBondWarningMessage_Node0_action N_AddTRBondWarningMessage_Node0_action --> E_AddTRBondWarningMessage S_AddTRBondWarningMessage --> N_AddTRBondWarningMessage_Node0 N_AddTRBondWarningMessage_Node0 -- No --> E_AddTRBondWarningMessage
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
TR bond is required but not found for IT cargo
WHEN:
Warning message generation occurs
THEN:
- Add message 22 to report with equipment details
- Increment total equipment count
β Consolidated Acceptance Criteria
- TE bond validation occurs → if TE bond was created for TE cargo but TE bond not found during processing, generate message 32 warning and add to report
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TEBondCreatedforTE(["Start Step"])
E_TEBondCreatedforTE(["End Step"])
N_TEBondCreatedforTE_Node0{"TE bond validation occurs"}:::decision
N_TEBondCreatedforTE_Node0_action["If TE bond was created for TE cargo
but TE bond not found during
processing, generate message 32
warning and add to report"]:::main N_TEBondCreatedforTE_Node0 -- Yes --> N_TEBondCreatedforTE_Node0_action N_TEBondCreatedforTE_Node0_action --> E_TEBondCreatedforTE S_TEBondCreatedforTE --> N_TEBondCreatedforTE_Node0 N_TEBondCreatedforTE_Node0 -- No --> E_TEBondCreatedforTE
but TE bond not found during
processing, generate message 32
warning and add to report"]:::main N_TEBondCreatedforTE_Node0 -- Yes --> N_TEBondCreatedforTE_Node0_action N_TEBondCreatedforTE_Node0_action --> E_TEBondCreatedforTE S_TEBondCreatedforTE --> N_TEBondCreatedforTE_Node0 N_TEBondCreatedforTE_Node0 -- No --> E_TEBondCreatedforTE
File: GCX003.cbl
GIVEN:
Equipment processing found TE cargo that should have TE bond
WHEN:
TE bond validation occurs
THEN:
- If te bond was created for te cargo but te bond not found during processing, generate message 32 warning
- Add to report
β Consolidated Acceptance Criteria
- Warning message generation occurs → add message 32 to report with equipment details and increment total equipment count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddTEBondWarningMessage(["Start Step"])
E_AddTEBondWarningMessage(["End Step"])
N_AddTEBondWarningMessage_Node0{"Warning message generation occurs"}:::decision
N_AddTEBondWarningMessage_Node0_action["Add message 32 to report with
equipment details and increment
total equipment count"]:::main N_AddTEBondWarningMessage_Node0 -- Yes --> N_AddTEBondWarningMessage_Node0_action N_AddTEBondWarningMessage_Node0_action --> E_AddTEBondWarningMessage S_AddTEBondWarningMessage --> N_AddTEBondWarningMessage_Node0 N_AddTEBondWarningMessage_Node0 -- No --> E_AddTEBondWarningMessage
equipment details and increment
total equipment count"]:::main N_AddTEBondWarningMessage_Node0 -- Yes --> N_AddTEBondWarningMessage_Node0_action N_AddTEBondWarningMessage_Node0_action --> E_AddTEBondWarningMessage S_AddTEBondWarningMessage --> N_AddTEBondWarningMessage_Node0 N_AddTEBondWarningMessage_Node0 -- No --> E_AddTEBondWarningMessage
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
TE bond is required but not found for TE cargo
WHEN:
Warning message generation occurs
THEN:
- Add message 32 to report with equipment details
- Increment total equipment count
β Consolidated Acceptance Criteria
- Special manifest validation occurs → if special IT manifest found but corresponding TE manifest location not found, generate message 45 warning and add to report
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpecialITManifestFound(["Start Step"])
E_SpecialITManifestFound(["End Step"])
N_SpecialITManifestFound_Node0{"Special manifest validation occurs"}:::decision
N_SpecialITManifestFound_Node0_action["If special IT manifest found but
corresponding TE manifest location
not found, generate message 45
warning and add to report"]:::main N_SpecialITManifestFound_Node0 -- Yes --> N_SpecialITManifestFound_Node0_action N_SpecialITManifestFound_Node0_action --> E_SpecialITManifestFound S_SpecialITManifestFound --> N_SpecialITManifestFound_Node0 N_SpecialITManifestFound_Node0 -- No --> E_SpecialITManifestFound
corresponding TE manifest location
not found, generate message 45
warning and add to report"]:::main N_SpecialITManifestFound_Node0 -- Yes --> N_SpecialITManifestFound_Node0_action N_SpecialITManifestFound_Node0_action --> E_SpecialITManifestFound S_SpecialITManifestFound --> N_SpecialITManifestFound_Node0 N_SpecialITManifestFound_Node0 -- No --> E_SpecialITManifestFound
File: GCX003.cbl
GIVEN:
Equipment processing found special IT manifest location code
WHEN:
Special manifest validation occurs
THEN:
- If special it manifest found but corresponding te manifest location not found, generate message 45 warning
- Add to report
β Consolidated Acceptance Criteria
- Special manifest warning generation occurs → add message 45 to report with equipment details and increment total equipment count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddSpecialManifestMessage(["Start Step"])
E_AddSpecialManifestMessage(["End Step"])
N_AddSpecialManifestMessage_Node0{"Special manifest warning generation
occurs"}:::decision N_AddSpecialManifestMessage_Node0_action["Add message 45 to report with
equipment details and increment
total equipment count"]:::main N_AddSpecialManifestMessage_Node0 -- Yes --> N_AddSpecialManifestMessage_Node0_action N_AddSpecialManifestMessage_Node0_action --> E_AddSpecialManifestMessage S_AddSpecialManifestMessage --> N_AddSpecialManifestMessage_Node0 N_AddSpecialManifestMessage_Node0 -- No --> E_AddSpecialManifestMessage
occurs"}:::decision N_AddSpecialManifestMessage_Node0_action["Add message 45 to report with
equipment details and increment
total equipment count"]:::main N_AddSpecialManifestMessage_Node0 -- Yes --> N_AddSpecialManifestMessage_Node0_action N_AddSpecialManifestMessage_Node0_action --> E_AddSpecialManifestMessage S_AddSpecialManifestMessage --> N_AddSpecialManifestMessage_Node0 N_AddSpecialManifestMessage_Node0 -- No --> E_AddSpecialManifestMessage
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Special IT manifest found but TE manifest requirements not met
WHEN:
Special manifest warning generation occurs
THEN:
- Add message 45 to report with equipment details
- Increment total equipment count
β Consolidated Acceptance Criteria
- Export manifest validation occurs → if US-MX export type 88 found but TR manifest location not found, generate message 51 warning and add to report
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_USMXExportFound(["Start Step"])
E_USMXExportFound(["End Step"])
N_USMXExportFound_Node0{"Export manifest validation occurs"}:::decision
N_USMXExportFound_Node0_action["If US-MX export type 88 found but
TR manifest location not found,
generate message 51 warning and add
to report"]:::main N_USMXExportFound_Node0 -- Yes --> N_USMXExportFound_Node0_action N_USMXExportFound_Node0_action --> E_USMXExportFound S_USMXExportFound --> N_USMXExportFound_Node0 N_USMXExportFound_Node0 -- No --> E_USMXExportFound
TR manifest location not found,
generate message 51 warning and add
to report"]:::main N_USMXExportFound_Node0 -- Yes --> N_USMXExportFound_Node0_action N_USMXExportFound_Node0_action --> E_USMXExportFound S_USMXExportFound --> N_USMXExportFound_Node0 N_USMXExportFound_Node0 -- No --> E_USMXExportFound
File: GCX003.cbl
GIVEN:
Equipment processing found US-MX export type 88 cargo
WHEN:
Export manifest validation occurs
THEN:
- If us-mx export type 88 found but tr manifest location not found, generate message 51 warning
- Add to report
β Consolidated Acceptance Criteria
- Export warning generation occurs → add message 51 to report with equipment details and increment total equipment count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddExportMessage(["Start Step"])
E_AddExportMessage(["End Step"])
N_AddExportMessage_Node0{"Export warning generation occurs"}:::decision
N_AddExportMessage_Node0_action["Add message 51 to report with
equipment details and increment
total equipment count"]:::main N_AddExportMessage_Node0 -- Yes --> N_AddExportMessage_Node0_action N_AddExportMessage_Node0_action --> E_AddExportMessage S_AddExportMessage --> N_AddExportMessage_Node0 N_AddExportMessage_Node0 -- No --> E_AddExportMessage
equipment details and increment
total equipment count"]:::main N_AddExportMessage_Node0 -- Yes --> N_AddExportMessage_Node0_action N_AddExportMessage_Node0_action --> E_AddExportMessage S_AddExportMessage --> N_AddExportMessage_Node0 N_AddExportMessage_Node0 -- No --> E_AddExportMessage
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
US-MX export type 88 found but TR manifest requirements not met
WHEN:
Export warning generation occurs
THEN:
- Add message 51 to report with equipment details
- Increment total equipment count
β Consolidated Acceptance Criteria
- Equipment status evaluation occurs → if equipment is loaded and not SBU van type, or if container not found, generate appropriate error messages and build report line
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WaybillNotFoundandLoadedEquipment(["Start Step"])
E_WaybillNotFoundandLoadedEquipment(["End Step"])
N_WaybillNotFoundandLoadedEquipment_Node0{"Equipment status evaluation occurs"}:::decision
N_WaybillNotFoundandLoadedEquipment_Node0_action["If equipment is loaded and not SBU
van type, or if container not found,
generate appropriate error messages
and build report line"]:::main N_WaybillNotFoundandLoadedEquipment_Node0 -- Yes --> N_WaybillNotFoundandLoadedEquipment_Node0_action N_WaybillNotFoundandLoadedEquipment_Node0_action --> E_WaybillNotFoundandLoadedEquipment S_WaybillNotFoundandLoadedEquipment --> N_WaybillNotFoundandLoadedEquipment_Node0 N_WaybillNotFoundandLoadedEquipment_Node0 -- No --> E_WaybillNotFoundandLoadedEquipment
van type, or if container not found,
generate appropriate error messages
and build report line"]:::main N_WaybillNotFoundandLoadedEquipment_Node0 -- Yes --> N_WaybillNotFoundandLoadedEquipment_Node0_action N_WaybillNotFoundandLoadedEquipment_Node0_action --> E_WaybillNotFoundandLoadedEquipment S_WaybillNotFoundandLoadedEquipment --> N_WaybillNotFoundandLoadedEquipment_Node0 N_WaybillNotFoundandLoadedEquipment_Node0 -- No --> E_WaybillNotFoundandLoadedEquipment
File: GCX003.cbl
GIVEN:
No waybill was found for equipment
WHEN:
Equipment status evaluation occurs
THEN:
- If equipment is loaded
- Not sbu van type, or if container not found, generate appropriate error messages
- Build report line
β Consolidated Acceptance Criteria
- Error message generation occurs → add message 10 (waybill not found) or message 11 (container not found) to report based on equipment type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddEquipmentNotFoundError(["Start Step"])
E_AddEquipmentNotFoundError(["End Step"])
N_AddEquipmentNotFoundError_Node0{"Error message generation occurs"}:::decision
N_AddEquipmentNotFoundError_Node0_action["Add message 10 waybill not found or
message 11 container not found to
report based on equipment type"]:::exclusion N_AddEquipmentNotFoundError_Node0 -- Yes -->|Alternative| N_AddEquipmentNotFoundError_Node0_action N_AddEquipmentNotFoundError_Node0_action --> E_AddEquipmentNotFoundError S_AddEquipmentNotFoundError --> N_AddEquipmentNotFoundError_Node0 N_AddEquipmentNotFoundError_Node0 -- No --> E_AddEquipmentNotFoundError
message 11 container not found to
report based on equipment type"]:::exclusion N_AddEquipmentNotFoundError_Node0 -- Yes -->|Alternative| N_AddEquipmentNotFoundError_Node0_action N_AddEquipmentNotFoundError_Node0_action --> E_AddEquipmentNotFoundError S_AddEquipmentNotFoundError --> N_AddEquipmentNotFoundError_Node0 N_AddEquipmentNotFoundError_Node0 -- No --> E_AddEquipmentNotFoundError
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Loaded equipment has no waybill and is not container or SBU van
WHEN:
Error message generation occurs
THEN:
Add message 10 (waybill not found) or message 11 (container not found) to report based on equipment type
β Consolidated Acceptance Criteria
- Container processing occurs → if container found or waybill indicates conveying car with loaded status, retrieve and process container information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessContaineronFlatCar(["Start Step"])
E_ProcessContaineronFlatCar(["End Step"])
N_ProcessContaineronFlatCar_Node0{"Container processing occurs"}:::decision
N_ProcessContaineronFlatCar_Node0_action["If container found or waybill
indicates conveying car with loaded
status, retrieve and process
container information"]:::main N_ProcessContaineronFlatCar_Node0 -- Yes --> N_ProcessContaineronFlatCar_Node0_action N_ProcessContaineronFlatCar_Node0_action --> E_ProcessContaineronFlatCar S_ProcessContaineronFlatCar --> N_ProcessContaineronFlatCar_Node0 N_ProcessContaineronFlatCar_Node0 -- No --> E_ProcessContaineronFlatCar
indicates conveying car with loaded
status, retrieve and process
container information"]:::main N_ProcessContaineronFlatCar_Node0 -- Yes --> N_ProcessContaineronFlatCar_Node0_action N_ProcessContaineronFlatCar_Node0_action --> E_ProcessContaineronFlatCar S_ProcessContaineronFlatCar --> N_ProcessContaineronFlatCar_Node0 N_ProcessContaineronFlatCar_Node0 -- No --> E_ProcessContaineronFlatCar
File: GCX003.cbl
GIVEN:
Equipment processing is complete or container found on flat car
WHEN:
Container processing occurs
THEN:
- If container found or waybill indicates conveying car with loaded status, retrieve
- Process container information
β Consolidated Acceptance Criteria
- The cargo bond type code is 'IT' or 'IE' → set IT bond found flag to true for subsequent special manifest evaluation
- The bond type code equals 'IT' or 'IE' → process as IT/IE bond, validate entry number or in-bond control number, extract bond number, and format as 'AMS [bond_type] [bond_number]' display
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BondTypeITorIE(["Start Step"])
E_BondTypeITorIE(["End Step"])
N_BondTypeITorIE_Node0{"The cargo bond type code is IT or
IE"}:::decision N_BondTypeITorIE_Node0_action["Set IT bond found flag to true for
subsequent special manifest
evaluation"]:::main N_BondTypeITorIE_Node0 -- Yes --> N_BondTypeITorIE_Node0_action N_BondTypeITorIE_Node0_action --> E_BondTypeITorIE S_BondTypeITorIE --> N_BondTypeITorIE_Node0 N_BondTypeITorIE_Node1{"The bond type code equals IT or IE"}:::decision N_BondTypeITorIE_Node1_action["Process as ITIE bond, validate
entry number or in-bond control
number, extract bond number, and
format as AMS bondtype bondnumber
display"]:::main N_BondTypeITorIE_Node1 -- Yes --> N_BondTypeITorIE_Node1_action N_BondTypeITorIE_Node1_action --> E_BondTypeITorIE N_BondTypeITorIE_Node0 -- No --> N_BondTypeITorIE_Node1 N_BondTypeITorIE_Node1 -- No --> E_BondTypeITorIE
IE"}:::decision N_BondTypeITorIE_Node0_action["Set IT bond found flag to true for
subsequent special manifest
evaluation"]:::main N_BondTypeITorIE_Node0 -- Yes --> N_BondTypeITorIE_Node0_action N_BondTypeITorIE_Node0_action --> E_BondTypeITorIE S_BondTypeITorIE --> N_BondTypeITorIE_Node0 N_BondTypeITorIE_Node1{"The bond type code equals IT or IE"}:::decision N_BondTypeITorIE_Node1_action["Process as ITIE bond, validate
entry number or in-bond control
number, extract bond number, and
format as AMS bondtype bondnumber
display"]:::main N_BondTypeITorIE_Node1 -- Yes --> N_BondTypeITorIE_Node1_action N_BondTypeITorIE_Node1_action --> E_BondTypeITorIE N_BondTypeITorIE_Node0 -- No --> N_BondTypeITorIE_Node1 N_BondTypeITorIE_Node1 -- No --> E_BondTypeITorIE
File: GCX003.cbl
GIVEN:
Cargo exists for the equipment
WHEN:
The cargo bond type code is 'IT' or 'IE'
THEN:
Set IT bond found flag to true for subsequent special manifest evaluation
File: GCX003.cbl
GIVEN:
Cargo is found and bond type code is available
WHEN:
The bond type code equals 'IT' or 'IE'
THEN:
Process as IT/IE bond, validate entry number or in-bond control number, extract bond number, and format as 'AMS [bond_type] [bond_number]' display
β Consolidated Acceptance Criteria
- The cargo bond type code is 'TE' → set TE bond found flag to true for subsequent port change evaluation
- The cargo has transportation export bond type code AND the cargo was not created for IT processing → set the TE bond found flag to true
- The bond type code equals 'TE' → process as TE bond, validate transport export requirements, check if port change is required, and format as 'AMS 7512 TE [bond_number]' display
- The cargo bond type is TE and the special manifest special flag is set → the system should set TE special manifest found flag to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BondTypeTE(["Start Step"])
E_BondTypeTE(["End Step"])
N_BondTypeTE_Node0{"The cargo bond type code is TE"}:::decision
N_BondTypeTE_Node0_action["Set TE bond found flag to true for
subsequent port change evaluation"]:::main N_BondTypeTE_Node0 -- Yes --> N_BondTypeTE_Node0_action N_BondTypeTE_Node0_action --> E_BondTypeTE S_BondTypeTE --> N_BondTypeTE_Node0 N_BondTypeTE_Node1{"The cargo has transportation export
bond type code AND the cargo was not
created for IT processing"}:::decision N_BondTypeTE_Node1_action["Set the TE bond found flag to true"]:::main N_BondTypeTE_Node1 -- Yes --> N_BondTypeTE_Node1_action N_BondTypeTE_Node1_action --> E_BondTypeTE N_BondTypeTE_Node0 -- No --> N_BondTypeTE_Node1 N_BondTypeTE_Node2{"The bond type code equals TE"}:::decision N_BondTypeTE_Node2_action["Process as TE bond, validate
transport export requirements, check
if port change is required, and
format as AMS 7512 TE bondnumber
display"]:::main N_BondTypeTE_Node2 -- Yes --> N_BondTypeTE_Node2_action N_BondTypeTE_Node2_action --> E_BondTypeTE N_BondTypeTE_Node1 -- No --> N_BondTypeTE_Node2 N_BondTypeTE_Node3{"The cargo bond type is TE and the
special manifest special flag is set"}:::decision N_BondTypeTE_Node3_action["The system should set TE special
manifest found flag to true"]:::main N_BondTypeTE_Node3 -- Yes --> N_BondTypeTE_Node3_action N_BondTypeTE_Node3_action --> E_BondTypeTE N_BondTypeTE_Node2 -- No --> N_BondTypeTE_Node3 N_BondTypeTE_Node3 -- No --> E_BondTypeTE
subsequent port change evaluation"]:::main N_BondTypeTE_Node0 -- Yes --> N_BondTypeTE_Node0_action N_BondTypeTE_Node0_action --> E_BondTypeTE S_BondTypeTE --> N_BondTypeTE_Node0 N_BondTypeTE_Node1{"The cargo has transportation export
bond type code AND the cargo was not
created for IT processing"}:::decision N_BondTypeTE_Node1_action["Set the TE bond found flag to true"]:::main N_BondTypeTE_Node1 -- Yes --> N_BondTypeTE_Node1_action N_BondTypeTE_Node1_action --> E_BondTypeTE N_BondTypeTE_Node0 -- No --> N_BondTypeTE_Node1 N_BondTypeTE_Node2{"The bond type code equals TE"}:::decision N_BondTypeTE_Node2_action["Process as TE bond, validate
transport export requirements, check
if port change is required, and
format as AMS 7512 TE bondnumber
display"]:::main N_BondTypeTE_Node2 -- Yes --> N_BondTypeTE_Node2_action N_BondTypeTE_Node2_action --> E_BondTypeTE N_BondTypeTE_Node1 -- No --> N_BondTypeTE_Node2 N_BondTypeTE_Node3{"The cargo bond type is TE and the
special manifest special flag is set"}:::decision N_BondTypeTE_Node3_action["The system should set TE special
manifest found flag to true"]:::main N_BondTypeTE_Node3 -- Yes --> N_BondTypeTE_Node3_action N_BondTypeTE_Node3_action --> E_BondTypeTE N_BondTypeTE_Node2 -- No --> N_BondTypeTE_Node3 N_BondTypeTE_Node3 -- No --> E_BondTypeTE
File: GCX003.cbl
GIVEN:
Cargo exists for the equipment
WHEN:
The cargo bond type code is 'TE'
THEN:
Set TE bond found flag to true for subsequent port change evaluation
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record with bond type classification criteria
WHEN:
- The cargo has transportation export bond type code
- The cargo was not created for it processing
THEN:
Set the TE bond found flag to true
File: GCX003.cbl
GIVEN:
Cargo is found and bond type code is available
WHEN:
The bond type code equals 'TE'
THEN:
Process as TE bond, validate transport export requirements, check if port change is required, and format as 'AMS 7512 TE [bond_number]' display
File: GCX003.cbl
GIVEN:
A cargo record exists with bond type and special manifest flags
WHEN:
- The cargo bond type is te
- The special manifest special flag is set
THEN:
The system should set TE special manifest found flag to true
β Consolidated Acceptance Criteria
- The cargo bond type code is 'TR' → set TR bond found flag to true for subsequent diversion evaluation
- The cargo has US-Canada-US bond type code AND the cargo was not created for IT processing AND the cargo is not designated as special USMX TR cargo → set the TR bond found flag to true
- The bond type code equals 'TR' → process as TR bond, validate transit bond requirements, check if diversion is required, and format as 'AMS 7512 TR [bond_number]' display
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BondTypeTR(["Start Step"])
E_BondTypeTR(["End Step"])
N_BondTypeTR_Node0{"The cargo bond type code is TR"}:::decision
N_BondTypeTR_Node0_action["Set TR bond found flag to true for
subsequent diversion evaluation"]:::main N_BondTypeTR_Node0 -- Yes --> N_BondTypeTR_Node0_action N_BondTypeTR_Node0_action --> E_BondTypeTR S_BondTypeTR --> N_BondTypeTR_Node0 N_BondTypeTR_Node1{"The cargo has US-Canada-US bond
type code AND the cargo was not
created for IT processing AND the
cargo is not designated as special
USMX TR cargo"}:::decision N_BondTypeTR_Node1_action["Set the TR bond found flag to true"]:::main N_BondTypeTR_Node1 -- Yes --> N_BondTypeTR_Node1_action N_BondTypeTR_Node1_action --> E_BondTypeTR N_BondTypeTR_Node0 -- No --> N_BondTypeTR_Node1 N_BondTypeTR_Node2{"The bond type code equals TR"}:::decision N_BondTypeTR_Node2_action["Process as TR bond, validate
transit bond requirements, check if
diversion is required, and format as
AMS 7512 TR bondnumber display"]:::main N_BondTypeTR_Node2 -- Yes --> N_BondTypeTR_Node2_action N_BondTypeTR_Node2_action --> E_BondTypeTR N_BondTypeTR_Node1 -- No --> N_BondTypeTR_Node2 N_BondTypeTR_Node2 -- No --> E_BondTypeTR
subsequent diversion evaluation"]:::main N_BondTypeTR_Node0 -- Yes --> N_BondTypeTR_Node0_action N_BondTypeTR_Node0_action --> E_BondTypeTR S_BondTypeTR --> N_BondTypeTR_Node0 N_BondTypeTR_Node1{"The cargo has US-Canada-US bond
type code AND the cargo was not
created for IT processing AND the
cargo is not designated as special
USMX TR cargo"}:::decision N_BondTypeTR_Node1_action["Set the TR bond found flag to true"]:::main N_BondTypeTR_Node1 -- Yes --> N_BondTypeTR_Node1_action N_BondTypeTR_Node1_action --> E_BondTypeTR N_BondTypeTR_Node0 -- No --> N_BondTypeTR_Node1 N_BondTypeTR_Node2{"The bond type code equals TR"}:::decision N_BondTypeTR_Node2_action["Process as TR bond, validate
transit bond requirements, check if
diversion is required, and format as
AMS 7512 TR bondnumber display"]:::main N_BondTypeTR_Node2 -- Yes --> N_BondTypeTR_Node2_action N_BondTypeTR_Node2_action --> E_BondTypeTR N_BondTypeTR_Node1 -- No --> N_BondTypeTR_Node2 N_BondTypeTR_Node2 -- No --> E_BondTypeTR
File: GCX003.cbl
GIVEN:
Cargo exists for the equipment
WHEN:
The cargo bond type code is 'TR'
THEN:
Set TR bond found flag to true for subsequent diversion evaluation
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record with bond type classification criteria
WHEN:
- The cargo has us-canada-us bond type code
- The cargo was not created for it processing
- The cargo is not designated as special usmx tr cargo
THEN:
Set the TR bond found flag to true
File: GCX003.cbl
GIVEN:
Cargo is found and bond type code is available
WHEN:
The bond type code equals 'TR'
THEN:
Process as TR bond, validate transit bond requirements, check if diversion is required, and format as 'AMS 7512 TR [bond_number]' display
β Consolidated Acceptance Criteria
- Action is SEND and user is authorized for special manifests → generate message 23, add report line, set IT export spawn flag, and perform special manifest creation
- The system processes IT export requirements → generate message 23, set IT export spawn flag, and invoke special manifest creation process
- The request action is SEND → set IT export spawn flag to TRUE, generate message 23, and perform special manifest creation process
- Special manifest original flag is set (GCUSRT-SPECIAL-MFST-ORIG is true) and user is authorized for special manifests → create IT export special manifest, generate message 23, and spawn GCX101 process with IT export flag
- The request action is SEND → the system should generate message 23, create report line, and set IT export spawn flag for GCX101 processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateITExportSpecialManifest(["Start Step"])
E_CreateITExportSpecialManifest(["End Step"])
N_CreateITExportSpecialManifest_Node0{"Action is SEND and user is
authorized for special manifests"}:::decision N_CreateITExportSpecialManifest_Node0_action["Generate message 23, add report
line, set IT export spawn flag, and
perform special manifest creation"]:::main N_CreateITExportSpecialManifest_Node0 -- Yes --> N_CreateITExportSpecialManifest_Node0_action N_CreateITExportSpecialManifest_Node0_action --> E_CreateITExportSpecialManifest S_CreateITExportSpecialManifest --> N_CreateITExportSpecialManifest_Node0 N_CreateITExportSpecialManifest_Node1{"The system processes IT export
requirements"}:::decision N_CreateITExportSpecialManifest_Node1_action["Generate message 23, set IT export
spawn flag, and invoke special
manifest creation process"]:::main N_CreateITExportSpecialManifest_Node1 -- Yes --> N_CreateITExportSpecialManifest_Node1_action N_CreateITExportSpecialManifest_Node1_action --> E_CreateITExportSpecialManifest N_CreateITExportSpecialManifest_Node0 -- No --> N_CreateITExportSpecialManifest_Node1 N_CreateITExportSpecialManifest_Node2{"The request action is SEND"}:::decision N_CreateITExportSpecialManifest_Node2_action["Set IT export spawn flag to TRUE,
generate message 23, and perform
special manifest creation process"]:::main N_CreateITExportSpecialManifest_Node2 -- Yes --> N_CreateITExportSpecialManifest_Node2_action N_CreateITExportSpecialManifest_Node2_action --> E_CreateITExportSpecialManifest N_CreateITExportSpecialManifest_Node1 -- No --> N_CreateITExportSpecialManifest_Node2 N_CreateITExportSpecialManifest_Node3{"Special manifest original flag is
set GCUSRT-SPECIAL-MFST-ORIG is true
and user is authorized for special
manifests"}:::decision N_CreateITExportSpecialManifest_Node3_action["Create IT export special manifest,
generate message 23, and spawn
GCX101 process with IT export flag"]:::main N_CreateITExportSpecialManifest_Node3 -- Yes --> N_CreateITExportSpecialManifest_Node3_action N_CreateITExportSpecialManifest_Node3_action --> E_CreateITExportSpecialManifest N_CreateITExportSpecialManifest_Node2 -- No --> N_CreateITExportSpecialManifest_Node3 N_CreateITExportSpecialManifest_Node4{"The request action is SEND"}:::decision N_CreateITExportSpecialManifest_Node4_action["The system should generate message
23, create report line, and set IT
export spawn flag for GCX101
processing"]:::main N_CreateITExportSpecialManifest_Node4 -- Yes --> N_CreateITExportSpecialManifest_Node4_action N_CreateITExportSpecialManifest_Node4_action --> E_CreateITExportSpecialManifest N_CreateITExportSpecialManifest_Node3 -- No --> N_CreateITExportSpecialManifest_Node4 N_CreateITExportSpecialManifest_Node4 -- No --> E_CreateITExportSpecialManifest
authorized for special manifests"}:::decision N_CreateITExportSpecialManifest_Node0_action["Generate message 23, add report
line, set IT export spawn flag, and
perform special manifest creation"]:::main N_CreateITExportSpecialManifest_Node0 -- Yes --> N_CreateITExportSpecialManifest_Node0_action N_CreateITExportSpecialManifest_Node0_action --> E_CreateITExportSpecialManifest S_CreateITExportSpecialManifest --> N_CreateITExportSpecialManifest_Node0 N_CreateITExportSpecialManifest_Node1{"The system processes IT export
requirements"}:::decision N_CreateITExportSpecialManifest_Node1_action["Generate message 23, set IT export
spawn flag, and invoke special
manifest creation process"]:::main N_CreateITExportSpecialManifest_Node1 -- Yes --> N_CreateITExportSpecialManifest_Node1_action N_CreateITExportSpecialManifest_Node1_action --> E_CreateITExportSpecialManifest N_CreateITExportSpecialManifest_Node0 -- No --> N_CreateITExportSpecialManifest_Node1 N_CreateITExportSpecialManifest_Node2{"The request action is SEND"}:::decision N_CreateITExportSpecialManifest_Node2_action["Set IT export spawn flag to TRUE,
generate message 23, and perform
special manifest creation process"]:::main N_CreateITExportSpecialManifest_Node2 -- Yes --> N_CreateITExportSpecialManifest_Node2_action N_CreateITExportSpecialManifest_Node2_action --> E_CreateITExportSpecialManifest N_CreateITExportSpecialManifest_Node1 -- No --> N_CreateITExportSpecialManifest_Node2 N_CreateITExportSpecialManifest_Node3{"Special manifest original flag is
set GCUSRT-SPECIAL-MFST-ORIG is true
and user is authorized for special
manifests"}:::decision N_CreateITExportSpecialManifest_Node3_action["Create IT export special manifest,
generate message 23, and spawn
GCX101 process with IT export flag"]:::main N_CreateITExportSpecialManifest_Node3 -- Yes --> N_CreateITExportSpecialManifest_Node3_action N_CreateITExportSpecialManifest_Node3_action --> E_CreateITExportSpecialManifest N_CreateITExportSpecialManifest_Node2 -- No --> N_CreateITExportSpecialManifest_Node3 N_CreateITExportSpecialManifest_Node4{"The request action is SEND"}:::decision N_CreateITExportSpecialManifest_Node4_action["The system should generate message
23, create report line, and set IT
export spawn flag for GCX101
processing"]:::main N_CreateITExportSpecialManifest_Node4 -- Yes --> N_CreateITExportSpecialManifest_Node4_action N_CreateITExportSpecialManifest_Node4_action --> E_CreateITExportSpecialManifest N_CreateITExportSpecialManifest_Node3 -- No --> N_CreateITExportSpecialManifest_Node4 N_CreateITExportSpecialManifest_Node4 -- No --> E_CreateITExportSpecialManifest
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has IT bond type and TR created for IT flag is not 'Y' and special manifest original is not set
WHEN:
- Action is send
- User is authorized for special manifests
THEN:
Generate message 23, add report line, set IT export spawn flag, and perform special manifest creation
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
IT cargo is not already created and user is authorized for special manifests and action is send
WHEN:
The system processes IT export requirements
THEN:
Generate message 23, set IT export spawn flag, and invoke special manifest creation process
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
IT bond cargo exists with TR-CREATED-FOR-IT not equal to 'Y' AND special manifest original flag is not set AND user is authorized for special manifests
WHEN:
The request action is SEND
THEN:
Set IT export spawn flag to TRUE, generate message 23, and perform special manifest creation process
File: GCX003.cbl
GIVEN:
Cargo is found and has IT bond type (M1201-IN-BOND-TYP-CDE = 'IT')
WHEN:
Special manifest original flag is set (GCUSRT-SPECIAL-MFST-ORIG is true) and user is authorized for special manifests
THEN:
Create IT export special manifest, generate message 23, and spawn GCX101 process with IT export flag
File: GCX003.cbl
GIVEN:
IT cargo requires special manifest processing and user is authorized
WHEN:
The request action is SEND
THEN:
The system should generate message 23, create report line, and set IT export spawn flag for GCX101 processing
β Consolidated Acceptance Criteria
- Action is SEND and user is authorized for special manifests → generate message 20, add report line, set port change spawn flag, and perform special manifest creation
- The system processes TE port change requirements → generate message 20, set port change spawn flag, and invoke special manifest creation process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateTEPortChangeManifest(["Start Step"])
E_CreateTEPortChangeManifest(["End Step"])
N_CreateTEPortChangeManifest_Node0{"Action is SEND and user is
authorized for special manifests"}:::decision N_CreateTEPortChangeManifest_Node0_action["Generate message 20, add report
line, set port change spawn flag,
and perform special manifest
creation"]:::main N_CreateTEPortChangeManifest_Node0 -- Yes --> N_CreateTEPortChangeManifest_Node0_action N_CreateTEPortChangeManifest_Node0_action --> E_CreateTEPortChangeManifest S_CreateTEPortChangeManifest --> N_CreateTEPortChangeManifest_Node0 N_CreateTEPortChangeManifest_Node1{"The system processes TE port change
requirements"}:::decision N_CreateTEPortChangeManifest_Node1_action["Generate message 20, set port
change spawn flag, and invoke
special manifest creation process"]:::main N_CreateTEPortChangeManifest_Node1 -- Yes --> N_CreateTEPortChangeManifest_Node1_action N_CreateTEPortChangeManifest_Node1_action --> E_CreateTEPortChangeManifest N_CreateTEPortChangeManifest_Node0 -- No --> N_CreateTEPortChangeManifest_Node1 N_CreateTEPortChangeManifest_Node1 -- No --> E_CreateTEPortChangeManifest
authorized for special manifests"}:::decision N_CreateTEPortChangeManifest_Node0_action["Generate message 20, add report
line, set port change spawn flag,
and perform special manifest
creation"]:::main N_CreateTEPortChangeManifest_Node0 -- Yes --> N_CreateTEPortChangeManifest_Node0_action N_CreateTEPortChangeManifest_Node0_action --> E_CreateTEPortChangeManifest S_CreateTEPortChangeManifest --> N_CreateTEPortChangeManifest_Node0 N_CreateTEPortChangeManifest_Node1{"The system processes TE port change
requirements"}:::decision N_CreateTEPortChangeManifest_Node1_action["Generate message 20, set port
change spawn flag, and invoke
special manifest creation process"]:::main N_CreateTEPortChangeManifest_Node1 -- Yes --> N_CreateTEPortChangeManifest_Node1_action N_CreateTEPortChangeManifest_Node1_action --> E_CreateTEPortChangeManifest N_CreateTEPortChangeManifest_Node0 -- No --> N_CreateTEPortChangeManifest_Node1 N_CreateTEPortChangeManifest_Node1 -- No --> E_CreateTEPortChangeManifest
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has TE bond type and TR created for IT is spaces and cargo status is not export and cargo is billed as CPRS and location ID does not equal station code
WHEN:
- Action is send
- User is authorized for special manifests
THEN:
Generate message 20, add report line, set port change spawn flag, and perform special manifest creation
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
TE cargo location does not match crossing port and user is authorized and action is send
WHEN:
The system processes TE port change requirements
THEN:
Generate message 20, set port change spawn flag, and invoke special manifest creation process
β Consolidated Acceptance Criteria
- Action is SEND and user is authorized for special manifests → generate message 23, add report line, set detour spawn flag, and perform special manifest creation
- The system processes TR diversion requirements → generate message 23, set detour spawn flag, and invoke special manifest creation process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateTRDiversionManifest(["Start Step"])
E_CreateTRDiversionManifest(["End Step"])
N_CreateTRDiversionManifest_Node0{"Action is SEND and user is
authorized for special manifests"}:::decision N_CreateTRDiversionManifest_Node0_action["Generate message 23, add report
line, set detour spawn flag, and
perform special manifest creation"]:::main N_CreateTRDiversionManifest_Node0 -- Yes --> N_CreateTRDiversionManifest_Node0_action N_CreateTRDiversionManifest_Node0_action --> E_CreateTRDiversionManifest S_CreateTRDiversionManifest --> N_CreateTRDiversionManifest_Node0 N_CreateTRDiversionManifest_Node1{"The system processes TR diversion
requirements"}:::decision N_CreateTRDiversionManifest_Node1_action["Generate message 23, set detour
spawn flag, and invoke special
manifest creation process"]:::main N_CreateTRDiversionManifest_Node1 -- Yes --> N_CreateTRDiversionManifest_Node1_action N_CreateTRDiversionManifest_Node1_action --> E_CreateTRDiversionManifest N_CreateTRDiversionManifest_Node0 -- No --> N_CreateTRDiversionManifest_Node1 N_CreateTRDiversionManifest_Node1 -- No --> E_CreateTRDiversionManifest
authorized for special manifests"}:::decision N_CreateTRDiversionManifest_Node0_action["Generate message 23, add report
line, set detour spawn flag, and
perform special manifest creation"]:::main N_CreateTRDiversionManifest_Node0 -- Yes --> N_CreateTRDiversionManifest_Node0_action N_CreateTRDiversionManifest_Node0_action --> E_CreateTRDiversionManifest S_CreateTRDiversionManifest --> N_CreateTRDiversionManifest_Node0 N_CreateTRDiversionManifest_Node1{"The system processes TR diversion
requirements"}:::decision N_CreateTRDiversionManifest_Node1_action["Generate message 23, set detour
spawn flag, and invoke special
manifest creation process"]:::main N_CreateTRDiversionManifest_Node1 -- Yes --> N_CreateTRDiversionManifest_Node1_action N_CreateTRDiversionManifest_Node1_action --> E_CreateTRDiversionManifest N_CreateTRDiversionManifest_Node0 -- No --> N_CreateTRDiversionManifest_Node1 N_CreateTRDiversionManifest_Node1 -- No --> E_CreateTRDiversionManifest
File: GCX003.cbl
GIVEN:
Cargo has TR bond type and TR created for IT is spaces and cargo status equals release
WHEN:
- Action is send
- User is authorized for special manifests
THEN:
Generate message 23, add report line, set detour spawn flag, and perform special manifest creation
File: GCX003.cbl
GIVEN:
TR cargo requires diversion processing and user is authorized and action is send
WHEN:
The system processes TR diversion requirements
THEN:
Generate message 23, set detour spawn flag, and invoke special manifest creation process
β Consolidated Acceptance Criteria
- Action is SEND and user is authorized for special manifests → generate message 23, add report line, set detour spawn flag, and perform special manifest creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateBorderClearanceManifest(["Start Step"])
E_CreateBorderClearanceManifest(["End Step"])
N_CreateBorderClearanceManifest_Node0{"Action is SEND and user is
authorized for special manifests"}:::decision N_CreateBorderClearanceManifest_Node0_action["Generate message 23, add report
line, set detour spawn flag, and
perform special manifest creation"]:::main N_CreateBorderClearanceManifest_Node0 -- Yes --> N_CreateBorderClearanceManifest_Node0_action N_CreateBorderClearanceManifest_Node0_action --> E_CreateBorderClearanceManifest S_CreateBorderClearanceManifest --> N_CreateBorderClearanceManifest_Node0 N_CreateBorderClearanceManifest_Node0 -- No --> E_CreateBorderClearanceManifest
authorized for special manifests"}:::decision N_CreateBorderClearanceManifest_Node0_action["Generate message 23, add report
line, set detour spawn flag, and
perform special manifest creation"]:::main N_CreateBorderClearanceManifest_Node0 -- Yes --> N_CreateBorderClearanceManifest_Node0_action N_CreateBorderClearanceManifest_Node0_action --> E_CreateBorderClearanceManifest S_CreateBorderClearanceManifest --> N_CreateBorderClearanceManifest_Node0 N_CreateBorderClearanceManifest_Node0 -- No --> E_CreateBorderClearanceManifest
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has default bond type and TR created for IT is spaces and cargo status equals release and special manifest original is not set
WHEN:
- Action is send
- User is authorized for special manifests
THEN:
Generate message 23, add report line, set detour spawn flag, and perform special manifest creation
β Consolidated Acceptance Criteria
- Action is SEND and user is authorized for special manifests → generate message 23, add report line, set 88 TR detour spawn flag, and perform special manifest creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateUSMXExportManifest(["Start Step"])
E_CreateUSMXExportManifest(["End Step"])
N_CreateUSMXExportManifest_Node0{"Action is SEND and user is
authorized for special manifests"}:::decision N_CreateUSMXExportManifest_Node0_action["Generate message 23, add report
line, set 88 TR detour spawn flag,
and perform special manifest
creation"]:::main N_CreateUSMXExportManifest_Node0 -- Yes --> N_CreateUSMXExportManifest_Node0_action N_CreateUSMXExportManifest_Node0_action --> E_CreateUSMXExportManifest S_CreateUSMXExportManifest --> N_CreateUSMXExportManifest_Node0 N_CreateUSMXExportManifest_Node0 -- No --> E_CreateUSMXExportManifest
authorized for special manifests"}:::decision N_CreateUSMXExportManifest_Node0_action["Generate message 23, add report
line, set 88 TR detour spawn flag,
and perform special manifest
creation"]:::main N_CreateUSMXExportManifest_Node0 -- Yes --> N_CreateUSMXExportManifest_Node0_action N_CreateUSMXExportManifest_Node0_action --> E_CreateUSMXExportManifest S_CreateUSMXExportManifest --> N_CreateUSMXExportManifest_Node0 N_CreateUSMXExportManifest_Node0 -- No --> E_CreateUSMXExportManifest
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has export bond type and special manifest is spaces and origin-destination country codes equal 'USMX' and station is not Laredo TX
WHEN:
- Action is send
- User is authorized for special manifests
THEN:
Generate message 23, add report line, set 88 TR detour spawn flag, and perform special manifest creation
β Consolidated Acceptance Criteria
- Action is SEND and user is not authorized for special manifests → generate message 43, add report line to output, and continue normal processing without creating special manifest
- User is not authorized for special manifests (WS-USER-NOT-AUTH-4-SPCL-MANIF is true) → generate message 43 (authorization error) and add equipment line to report without creating special manifest
- The system processes IT bond cargo that requires special manifest creation or processes TE bond cargo requiring port change or processes TR/default bond cargo requiring detour processing → generate error message 43 indicating user is not authorized for special manifest operations and add the message to the report
- The user is not authorized for special manifest creation → generate message forty-three, add the report line to output, and exit port change processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateAuthorizationErrorMessage(["Start Step"])
E_GenerateAuthorizationErrorMessage(["End Step"])
N_GenerateAuthorizationErrorMessage_Node0{"Action is SEND and user is not
authorized for special manifests"}:::decision N_GenerateAuthorizationErrorMessage_Node0_action["Generate message 43, add report
line to output, and continue normal
processing without creating special
manifest"]:::main N_GenerateAuthorizationErrorMessage_Node0 -- Yes --> N_GenerateAuthorizationErrorMessage_Node0_action N_GenerateAuthorizationErrorMessage_Node0_action --> E_GenerateAuthorizationErrorMessage S_GenerateAuthorizationErrorMessage --> N_GenerateAuthorizationErrorMessage_Node0 N_GenerateAuthorizationErrorMessage_Node1{"User is not authorized for special
manifests
WS-USER-NOT-AUTH-4-SPCL-MANIF is
true"}:::decision N_GenerateAuthorizationErrorMessage_Node1_action["Generate message 43 authorization
error and add equipment line to
report without creating special
manifest"]:::main N_GenerateAuthorizationErrorMessage_Node1 -- Yes --> N_GenerateAuthorizationErrorMessage_Node1_action N_GenerateAuthorizationErrorMessage_Node1_action --> E_GenerateAuthorizationErrorMessage N_GenerateAuthorizationErrorMessage_Node0 -- No --> N_GenerateAuthorizationErrorMessage_Node1 N_GenerateAuthorizationErrorMessage_Node2{"The system processes IT bond cargo
that requires special manifest
creation or processes TE bond cargo
requiring port change or processes
TRdefault bond cargo requiring
detour processing"}:::decision N_GenerateAuthorizationErrorMessage_Node2_action["Generate error message 43
indicating user is not authorized
for special manifest operations and
add the message to the report"]:::main N_GenerateAuthorizationErrorMessage_Node2 -- Yes --> N_GenerateAuthorizationErrorMessage_Node2_action N_GenerateAuthorizationErrorMessage_Node2_action --> E_GenerateAuthorizationErrorMessage N_GenerateAuthorizationErrorMessage_Node1 -- No --> N_GenerateAuthorizationErrorMessage_Node2 N_GenerateAuthorizationErrorMessage_Node3{"The user is not authorized for
special manifest creation"}:::decision N_GenerateAuthorizationErrorMessage_Node3_action["Generate message forty-three, add
the report line to output, and exit
port change processing"]:::main N_GenerateAuthorizationErrorMessage_Node3 -- Yes --> N_GenerateAuthorizationErrorMessage_Node3_action N_GenerateAuthorizationErrorMessage_Node3_action --> E_GenerateAuthorizationErrorMessage N_GenerateAuthorizationErrorMessage_Node2 -- No --> N_GenerateAuthorizationErrorMessage_Node3 N_GenerateAuthorizationErrorMessage_Node3 -- No --> E_GenerateAuthorizationErrorMessage
authorized for special manifests"}:::decision N_GenerateAuthorizationErrorMessage_Node0_action["Generate message 43, add report
line to output, and continue normal
processing without creating special
manifest"]:::main N_GenerateAuthorizationErrorMessage_Node0 -- Yes --> N_GenerateAuthorizationErrorMessage_Node0_action N_GenerateAuthorizationErrorMessage_Node0_action --> E_GenerateAuthorizationErrorMessage S_GenerateAuthorizationErrorMessage --> N_GenerateAuthorizationErrorMessage_Node0 N_GenerateAuthorizationErrorMessage_Node1{"User is not authorized for special
manifests
WS-USER-NOT-AUTH-4-SPCL-MANIF is
true"}:::decision N_GenerateAuthorizationErrorMessage_Node1_action["Generate message 43 authorization
error and add equipment line to
report without creating special
manifest"]:::main N_GenerateAuthorizationErrorMessage_Node1 -- Yes --> N_GenerateAuthorizationErrorMessage_Node1_action N_GenerateAuthorizationErrorMessage_Node1_action --> E_GenerateAuthorizationErrorMessage N_GenerateAuthorizationErrorMessage_Node0 -- No --> N_GenerateAuthorizationErrorMessage_Node1 N_GenerateAuthorizationErrorMessage_Node2{"The system processes IT bond cargo
that requires special manifest
creation or processes TE bond cargo
requiring port change or processes
TRdefault bond cargo requiring
detour processing"}:::decision N_GenerateAuthorizationErrorMessage_Node2_action["Generate error message 43
indicating user is not authorized
for special manifest operations and
add the message to the report"]:::main N_GenerateAuthorizationErrorMessage_Node2 -- Yes --> N_GenerateAuthorizationErrorMessage_Node2_action N_GenerateAuthorizationErrorMessage_Node2_action --> E_GenerateAuthorizationErrorMessage N_GenerateAuthorizationErrorMessage_Node1 -- No --> N_GenerateAuthorizationErrorMessage_Node2 N_GenerateAuthorizationErrorMessage_Node3{"The user is not authorized for
special manifest creation"}:::decision N_GenerateAuthorizationErrorMessage_Node3_action["Generate message forty-three, add
the report line to output, and exit
port change processing"]:::main N_GenerateAuthorizationErrorMessage_Node3 -- Yes --> N_GenerateAuthorizationErrorMessage_Node3_action N_GenerateAuthorizationErrorMessage_Node3_action --> E_GenerateAuthorizationErrorMessage N_GenerateAuthorizationErrorMessage_Node2 -- No --> N_GenerateAuthorizationErrorMessage_Node3 N_GenerateAuthorizationErrorMessage_Node3 -- No --> E_GenerateAuthorizationErrorMessage
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Special manifest processing is required for any bond type
WHEN:
- Action is send
- User is not authorized for special manifests
THEN:
Generate message 43, add report line to output, and continue normal processing without creating special manifest
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A SEND action is requested for IT bond processing
WHEN:
User is not authorized for special manifests (WS-USER-NOT-AUTH-4-SPCL-MANIF is true)
THEN:
Generate message 43 (authorization error) and add equipment line to report without creating special manifest
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A user is not authorized for special manifests and the action type is SEND and there are no existing errors
WHEN:
The system processes IT bond cargo that requires special manifest creation or processes TE bond cargo requiring port change or processes TR/default bond cargo requiring detour processing
THEN:
- Generate error message 43 indicating user is not authorized for special manifest operations
- Add the message to the report
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A user attempts to process a port change with send action
WHEN:
The user is not authorized for special manifest creation
THEN:
Generate message forty-three, add the report line to output, and exit port change processing
β Consolidated Acceptance Criteria
- Processing cargo information → set TR bond found flag to true
- The system processes TR bond type → the TR bond found flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTRBondFoundFlag(["Start Step"])
E_SetTRBondFoundFlag(["End Step"])
N_SetTRBondFoundFlag_Node0{"Processing cargo information"}:::decision
N_SetTRBondFoundFlag_Node0_action["Set TR bond found flag to true"]:::main
N_SetTRBondFoundFlag_Node0 -- Yes --> N_SetTRBondFoundFlag_Node0_action
N_SetTRBondFoundFlag_Node0_action --> E_SetTRBondFoundFlag
S_SetTRBondFoundFlag --> N_SetTRBondFoundFlag_Node0
N_SetTRBondFoundFlag_Node1{"The system processes TR bond type"}:::decision
N_SetTRBondFoundFlag_Node1_action["The TR bond found flag is set to
true"]:::main N_SetTRBondFoundFlag_Node1 -- Yes --> N_SetTRBondFoundFlag_Node1_action N_SetTRBondFoundFlag_Node1_action --> E_SetTRBondFoundFlag N_SetTRBondFoundFlag_Node0 -- No --> N_SetTRBondFoundFlag_Node1 N_SetTRBondFoundFlag_Node1 -- No --> E_SetTRBondFoundFlag
true"]:::main N_SetTRBondFoundFlag_Node1 -- Yes --> N_SetTRBondFoundFlag_Node1_action N_SetTRBondFoundFlag_Node1_action --> E_SetTRBondFoundFlag N_SetTRBondFoundFlag_Node0 -- No --> N_SetTRBondFoundFlag_Node1 N_SetTRBondFoundFlag_Node1 -- No --> E_SetTRBondFoundFlag
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo exists with US-Canada-US bond type and TR created for IT is not 'Y' and cargo is not USMX special TR
WHEN:
Processing cargo information
THEN:
Set TR bond found flag to true
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has US-Canada-US bond type and TR is not already created and does not have special TR processing
WHEN:
The system processes TR bond type
THEN:
The TR bond found flag is set to true
β Consolidated Acceptance Criteria
- Processing cargo information → set TE bond found flag to true
- Cargo special manifest special flag is set → set special manifest TE found flag to true
- The system processes TE bond type → the TE bond found flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTEBondFoundFlag(["Start Step"])
E_SetTEBondFoundFlag(["End Step"])
N_SetTEBondFoundFlag_Node0{"Processing cargo information"}:::decision
N_SetTEBondFoundFlag_Node0_action["Set TE bond found flag to true"]:::main
N_SetTEBondFoundFlag_Node0 -- Yes --> N_SetTEBondFoundFlag_Node0_action
N_SetTEBondFoundFlag_Node0_action --> E_SetTEBondFoundFlag
S_SetTEBondFoundFlag --> N_SetTEBondFoundFlag_Node0
N_SetTEBondFoundFlag_Node1{"Cargo special manifest special flag
is set"}:::decision N_SetTEBondFoundFlag_Node1_action["Set special manifest TE found flag
to true"]:::main N_SetTEBondFoundFlag_Node1 -- Yes --> N_SetTEBondFoundFlag_Node1_action N_SetTEBondFoundFlag_Node1_action --> E_SetTEBondFoundFlag N_SetTEBondFoundFlag_Node0 -- No --> N_SetTEBondFoundFlag_Node1 N_SetTEBondFoundFlag_Node2{"The system processes TE bond type"}:::decision N_SetTEBondFoundFlag_Node2_action["The TE bond found flag is set to
true"]:::main N_SetTEBondFoundFlag_Node2 -- Yes --> N_SetTEBondFoundFlag_Node2_action N_SetTEBondFoundFlag_Node2_action --> E_SetTEBondFoundFlag N_SetTEBondFoundFlag_Node1 -- No --> N_SetTEBondFoundFlag_Node2 N_SetTEBondFoundFlag_Node2 -- No --> E_SetTEBondFoundFlag
is set"}:::decision N_SetTEBondFoundFlag_Node1_action["Set special manifest TE found flag
to true"]:::main N_SetTEBondFoundFlag_Node1 -- Yes --> N_SetTEBondFoundFlag_Node1_action N_SetTEBondFoundFlag_Node1_action --> E_SetTEBondFoundFlag N_SetTEBondFoundFlag_Node0 -- No --> N_SetTEBondFoundFlag_Node1 N_SetTEBondFoundFlag_Node2{"The system processes TE bond type"}:::decision N_SetTEBondFoundFlag_Node2_action["The TE bond found flag is set to
true"]:::main N_SetTEBondFoundFlag_Node2 -- Yes --> N_SetTEBondFoundFlag_Node2_action N_SetTEBondFoundFlag_Node2_action --> E_SetTEBondFoundFlag N_SetTEBondFoundFlag_Node1 -- No --> N_SetTEBondFoundFlag_Node2 N_SetTEBondFoundFlag_Node2 -- No --> E_SetTEBondFoundFlag
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo exists with transport export bond type and TR created for IT is not 'Y'
WHEN:
Processing cargo information
THEN:
Set TE bond found flag to true
File: GCX003.cbl
GIVEN:
Cargo exists with transport export bond type
WHEN:
Cargo special manifest special flag is set
THEN:
Set special manifest TE found flag to true
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has transport export bond type and TE is not already created
WHEN:
The system processes TE bond type
THEN:
The TE bond found flag is set to true
β Consolidated Acceptance Criteria
- Cargo special manifest original flag is set → set special manifest IT found flag to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetITBondFoundFlag(["Start Step"])
E_SetITBondFoundFlag(["End Step"])
N_SetITBondFoundFlag_Node0{"Cargo special manifest original
flag is set"}:::decision N_SetITBondFoundFlag_Node0_action["Set special manifest IT found flag
to true"]:::main N_SetITBondFoundFlag_Node0 -- Yes --> N_SetITBondFoundFlag_Node0_action N_SetITBondFoundFlag_Node0_action --> E_SetITBondFoundFlag S_SetITBondFoundFlag --> N_SetITBondFoundFlag_Node0 N_SetITBondFoundFlag_Node0 -- No --> E_SetITBondFoundFlag
flag is set"}:::decision N_SetITBondFoundFlag_Node0_action["Set special manifest IT found flag
to true"]:::main N_SetITBondFoundFlag_Node0 -- Yes --> N_SetITBondFoundFlag_Node0_action N_SetITBondFoundFlag_Node0_action --> E_SetITBondFoundFlag S_SetITBondFoundFlag --> N_SetITBondFoundFlag_Node0 N_SetITBondFoundFlag_Node0 -- No --> E_SetITBondFoundFlag
File: GCX003.cbl
GIVEN:
Cargo exists
WHEN:
Cargo special manifest original flag is set
THEN:
Set special manifest IT found flag to true
β Consolidated Acceptance Criteria
- Cargo USMX special 88 flag is set → set USMX 88 found flag to true
- Cargo USMX special TR flag is set → set special TR found flag to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSpecialManifestSpawnFlag(["Start Step"])
E_SetSpecialManifestSpawnFlag(["End Step"])
N_SetSpecialManifestSpawnFlag_Node0{"Cargo USMX special 88 flag is set"}:::decision
N_SetSpecialManifestSpawnFlag_Node0_action["Set USMX 88 found flag to true"]:::main
N_SetSpecialManifestSpawnFlag_Node0 -- Yes --> N_SetSpecialManifestSpawnFlag_Node0_action
N_SetSpecialManifestSpawnFlag_Node0_action --> E_SetSpecialManifestSpawnFlag
S_SetSpecialManifestSpawnFlag --> N_SetSpecialManifestSpawnFlag_Node0
N_SetSpecialManifestSpawnFlag_Node1{"Cargo USMX special TR flag is set"}:::decision
N_SetSpecialManifestSpawnFlag_Node1_action["Set special TR found flag to true"]:::main
N_SetSpecialManifestSpawnFlag_Node1 -- Yes --> N_SetSpecialManifestSpawnFlag_Node1_action
N_SetSpecialManifestSpawnFlag_Node1_action --> E_SetSpecialManifestSpawnFlag
N_SetSpecialManifestSpawnFlag_Node0 -- No --> N_SetSpecialManifestSpawnFlag_Node1
N_SetSpecialManifestSpawnFlag_Node1 -- No --> E_SetSpecialManifestSpawnFlag
File: GCX003.cbl
GIVEN:
Cargo exists with export bond type
WHEN:
Cargo USMX special 88 flag is set
THEN:
Set USMX 88 found flag to true
File: GCX003.cbl
GIVEN:
Cargo exists with US-Canada-US bond type
WHEN:
Cargo USMX special TR flag is set
THEN:
Set special TR found flag to true
β Consolidated Acceptance Criteria
- The cargo is classified as immediate transport bond (M1201 movement type) → the system skips cargo attachment and exits the attachment process
- The cargo bond type is classified as immediate transport (M1201) → skip cargo attachment and mark for special processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCargoImmediateTransportBond(["Start Step"])
E_IsCargoImmediateTransportBond(["End Step"])
N_IsCargoImmediateTransportBond_Node0{"The cargo is classified as
immediate transport bond M1201
movement type"}:::decision N_IsCargoImmediateTransportBond_Node0_action["The system skips cargo attachment
and exits the attachment process"]:::main N_IsCargoImmediateTransportBond_Node0 -- Yes --> N_IsCargoImmediateTransportBond_Node0_action N_IsCargoImmediateTransportBond_Node0_action --> E_IsCargoImmediateTransportBond S_IsCargoImmediateTransportBond --> N_IsCargoImmediateTransportBond_Node0 N_IsCargoImmediateTransportBond_Node1{"The cargo bond type is classified
as immediate transport M1201"}:::decision N_IsCargoImmediateTransportBond_Node1_action["Skip cargo attachment and mark for
special processing"]:::main N_IsCargoImmediateTransportBond_Node1 -- Yes --> N_IsCargoImmediateTransportBond_Node1_action N_IsCargoImmediateTransportBond_Node1_action --> E_IsCargoImmediateTransportBond N_IsCargoImmediateTransportBond_Node0 -- No --> N_IsCargoImmediateTransportBond_Node1 N_IsCargoImmediateTransportBond_Node1 -- No --> E_IsCargoImmediateTransportBond
immediate transport bond M1201
movement type"}:::decision N_IsCargoImmediateTransportBond_Node0_action["The system skips cargo attachment
and exits the attachment process"]:::main N_IsCargoImmediateTransportBond_Node0 -- Yes --> N_IsCargoImmediateTransportBond_Node0_action N_IsCargoImmediateTransportBond_Node0_action --> E_IsCargoImmediateTransportBond S_IsCargoImmediateTransportBond --> N_IsCargoImmediateTransportBond_Node0 N_IsCargoImmediateTransportBond_Node1{"The cargo bond type is classified
as immediate transport M1201"}:::decision N_IsCargoImmediateTransportBond_Node1_action["Skip cargo attachment and mark for
special processing"]:::main N_IsCargoImmediateTransportBond_Node1 -- Yes --> N_IsCargoImmediateTransportBond_Node1_action N_IsCargoImmediateTransportBond_Node1_action --> E_IsCargoImmediateTransportBond N_IsCargoImmediateTransportBond_Node0 -- No --> N_IsCargoImmediateTransportBond_Node1 N_IsCargoImmediateTransportBond_Node1 -- No --> E_IsCargoImmediateTransportBond
File: GCX003.cbl
GIVEN:
A cargo record exists with bond type classification
WHEN:
The cargo is classified as immediate transport bond (M1201 movement type)
THEN:
- The system skips cargo attachment
- Exits the attachment process
File: GCX003.cbl
GIVEN:
A cargo record exists with bond type classification
WHEN:
The cargo bond type is classified as immediate transport (M1201)
THEN:
- Skip cargo attachment
- Mark for special processing
β Consolidated Acceptance Criteria
- The TR created for IT flag equals 'Y' → the system skips cargo attachment and exits the attachment process
- If cargo attachment eligibility for immediate transport processing → the cargo is marked for TR created for IT processing if the TR created for IT flag equals 'Y', otherwise cargo attachment is skipped
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsTRCreatedforITY(["Start Step"])
E_IsTRCreatedforITY(["End Step"])
N_IsTRCreatedforITY_Node0{"The TR created for IT flag equals Y"}:::decision
N_IsTRCreatedforITY_Node0_action["The system skips cargo attachment
and exits the attachment process"]:::main N_IsTRCreatedforITY_Node0 -- Yes --> N_IsTRCreatedforITY_Node0_action N_IsTRCreatedforITY_Node0_action --> E_IsTRCreatedforITY S_IsTRCreatedforITY --> N_IsTRCreatedforITY_Node0 N_IsTRCreatedforITY_Node1{"The system evaluates cargo
attachment eligibility for immediate
transport processing"}:::decision N_IsTRCreatedforITY_Node1_action["The cargo is marked for TR created
for IT processing if the TR created
for IT flag equals Y , otherwise
cargo attachment is skipped"]:::main N_IsTRCreatedforITY_Node1 -- Yes --> N_IsTRCreatedforITY_Node1_action N_IsTRCreatedforITY_Node1_action --> E_IsTRCreatedforITY N_IsTRCreatedforITY_Node0 -- No --> N_IsTRCreatedforITY_Node1 N_IsTRCreatedforITY_Node1 -- No --> E_IsTRCreatedforITY
and exits the attachment process"]:::main N_IsTRCreatedforITY_Node0 -- Yes --> N_IsTRCreatedforITY_Node0_action N_IsTRCreatedforITY_Node0_action --> E_IsTRCreatedforITY S_IsTRCreatedforITY --> N_IsTRCreatedforITY_Node0 N_IsTRCreatedforITY_Node1{"The system evaluates cargo
attachment eligibility for immediate
transport processing"}:::decision N_IsTRCreatedforITY_Node1_action["The cargo is marked for TR created
for IT processing if the TR created
for IT flag equals Y , otherwise
cargo attachment is skipped"]:::main N_IsTRCreatedforITY_Node1 -- Yes --> N_IsTRCreatedforITY_Node1_action N_IsTRCreatedforITY_Node1_action --> E_IsTRCreatedforITY N_IsTRCreatedforITY_Node0 -- No --> N_IsTRCreatedforITY_Node1 N_IsTRCreatedforITY_Node1 -- No --> E_IsTRCreatedforITY
File: GCX003.cbl
GIVEN:
A cargo record with TR created for IT indicator
WHEN:
The TR created for IT flag equals 'Y'
THEN:
- The system skips cargo attachment
- Exits the attachment process
File: GCX003.cbl
GIVEN:
A cargo record with immediate transport bond type and TR created for IT indicator
WHEN:
The system evaluates cargo attachment eligibility for immediate transport processing
THEN:
The cargo is marked for TR created for IT processing if the TR created for IT flag equals 'Y', otherwise cargo attachment is skipped
β Consolidated Acceptance Criteria
- The cargo is US-Canada-US movement AND TR created for IT is empty AND cargo short description equals release status → the system skips cargo attachment and exits the attachment process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCargoUSCanadaUSMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease(["Start Step"])
E_IsCargoUSCanadaUSMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease(["End Step"])
N_IsCargoUSCanadaUSMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0{"The cargo is US-Canada-US movement
AND TR created for IT is empty AND
cargo short description equals
release status"}:::decision N_IsCargoUSCanadaUSMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0_action["The system skips cargo attachment
and exits the attachment process"]:::main N_IsCargoUSCanadaUSMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0 -- Yes --> N_IsCargoUSCanadaUSMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0_action N_IsCargoUSCanadaUSMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0_action --> E_IsCargoUSCanadaUSMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease S_IsCargoUSCanadaUSMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease --> N_IsCargoUSCanadaUSMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0 N_IsCargoUSCanadaUSMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0 -- No --> E_IsCargoUSCanadaUSMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease
AND TR created for IT is empty AND
cargo short description equals
release status"}:::decision N_IsCargoUSCanadaUSMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0_action["The system skips cargo attachment
and exits the attachment process"]:::main N_IsCargoUSCanadaUSMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0 -- Yes --> N_IsCargoUSCanadaUSMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0_action N_IsCargoUSCanadaUSMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0_action --> E_IsCargoUSCanadaUSMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease S_IsCargoUSCanadaUSMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease --> N_IsCargoUSCanadaUSMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0 N_IsCargoUSCanadaUSMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0 -- No --> E_IsCargoUSCanadaUSMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease
File: GCX003.cbl
GIVEN:
A cargo record with US-Canada-US movement type, empty TR created for IT indicator, and cargo short description
WHEN:
- The cargo is us-canada-us movement
- Tr created for it is empty
- Cargo short description equals release status
THEN:
- The system skips cargo attachment
- Exits the attachment process
β Consolidated Acceptance Criteria
- The cargo is default movement AND TR created for IT is empty AND cargo short description equals release status → the system skips cargo attachment and exits the attachment process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCargoDefaultMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease(["Start Step"])
E_IsCargoDefaultMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease(["End Step"])
N_IsCargoDefaultMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0{"The cargo is default movement AND
TR created for IT is empty AND cargo
short description equals release
status"}:::decision N_IsCargoDefaultMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0_action["The system skips cargo attachment
and exits the attachment process"]:::main N_IsCargoDefaultMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0 -- Yes --> N_IsCargoDefaultMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0_action N_IsCargoDefaultMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0_action --> E_IsCargoDefaultMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease S_IsCargoDefaultMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease --> N_IsCargoDefaultMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0 N_IsCargoDefaultMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0 -- No --> E_IsCargoDefaultMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease
TR created for IT is empty AND cargo
short description equals release
status"}:::decision N_IsCargoDefaultMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0_action["The system skips cargo attachment
and exits the attachment process"]:::main N_IsCargoDefaultMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0 -- Yes --> N_IsCargoDefaultMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0_action N_IsCargoDefaultMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0_action --> E_IsCargoDefaultMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease S_IsCargoDefaultMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease --> N_IsCargoDefaultMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0 N_IsCargoDefaultMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease_Node0 -- No --> E_IsCargoDefaultMovementANDIsTRCreatedforITEmptyANDIsCargoShortDescriptionRelease
File: GCX003.cbl
GIVEN:
A cargo record with default movement type, empty TR created for IT indicator, and cargo short description
WHEN:
- The cargo is default movement
- Tr created for it is empty
- Cargo short description equals release status
THEN:
- The system skips cargo attachment
- Exits the attachment process
β Consolidated Acceptance Criteria
- The cargo is classified as empty equipment → the system skips cargo attachment and exits the attachment process
- The cargo is classified as empty equipment type → skip all cargo status validations and proceed to completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCargoEmptyEquipment(["Start Step"])
E_IsCargoEmptyEquipment(["End Step"])
N_IsCargoEmptyEquipment_Node0{"The cargo is classified as empty
equipment"}:::decision N_IsCargoEmptyEquipment_Node0_action["The system skips cargo attachment
and exits the attachment process"]:::main N_IsCargoEmptyEquipment_Node0 -- Yes --> N_IsCargoEmptyEquipment_Node0_action N_IsCargoEmptyEquipment_Node0_action --> E_IsCargoEmptyEquipment S_IsCargoEmptyEquipment --> N_IsCargoEmptyEquipment_Node0 N_IsCargoEmptyEquipment_Node1{"The cargo is classified as empty
equipment type"}:::decision N_IsCargoEmptyEquipment_Node1_action["Skip all cargo status validations
and proceed to completion"]:::main N_IsCargoEmptyEquipment_Node1 -- Yes --> N_IsCargoEmptyEquipment_Node1_action N_IsCargoEmptyEquipment_Node1_action --> E_IsCargoEmptyEquipment N_IsCargoEmptyEquipment_Node0 -- No --> N_IsCargoEmptyEquipment_Node1 N_IsCargoEmptyEquipment_Node1 -- No --> E_IsCargoEmptyEquipment
equipment"}:::decision N_IsCargoEmptyEquipment_Node0_action["The system skips cargo attachment
and exits the attachment process"]:::main N_IsCargoEmptyEquipment_Node0 -- Yes --> N_IsCargoEmptyEquipment_Node0_action N_IsCargoEmptyEquipment_Node0_action --> E_IsCargoEmptyEquipment S_IsCargoEmptyEquipment --> N_IsCargoEmptyEquipment_Node0 N_IsCargoEmptyEquipment_Node1{"The cargo is classified as empty
equipment type"}:::decision N_IsCargoEmptyEquipment_Node1_action["Skip all cargo status validations
and proceed to completion"]:::main N_IsCargoEmptyEquipment_Node1 -- Yes --> N_IsCargoEmptyEquipment_Node1_action N_IsCargoEmptyEquipment_Node1_action --> E_IsCargoEmptyEquipment N_IsCargoEmptyEquipment_Node0 -- No --> N_IsCargoEmptyEquipment_Node1 N_IsCargoEmptyEquipment_Node1 -- No --> E_IsCargoEmptyEquipment
File: GCX003.cbl
GIVEN:
A cargo record with equipment load status classification
WHEN:
The cargo is classified as empty equipment
THEN:
- The system skips cargo attachment
- Exits the attachment process
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record exists and is not empty residue type
WHEN:
The cargo is classified as empty equipment type
THEN:
- Skip all cargo status validations
- Proceed to completion
β Consolidated Acceptance Criteria
- The cargo has special manifest original status AND the current station is Woburn PQ → the system skips cargo attachment and exits the attachment process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsSpecialManifestOriginalANDIsWoburnPQStation(["Start Step"])
E_IsSpecialManifestOriginalANDIsWoburnPQStation(["End Step"])
N_IsSpecialManifestOriginalANDIsWoburnPQStation_Node0{"The cargo has special manifest
original status AND the current
station is Woburn PQ"}:::decision N_IsSpecialManifestOriginalANDIsWoburnPQStation_Node0_action["The system skips cargo attachment
and exits the attachment process"]:::main N_IsSpecialManifestOriginalANDIsWoburnPQStation_Node0 -- Yes --> N_IsSpecialManifestOriginalANDIsWoburnPQStation_Node0_action N_IsSpecialManifestOriginalANDIsWoburnPQStation_Node0_action --> E_IsSpecialManifestOriginalANDIsWoburnPQStation S_IsSpecialManifestOriginalANDIsWoburnPQStation --> N_IsSpecialManifestOriginalANDIsWoburnPQStation_Node0 N_IsSpecialManifestOriginalANDIsWoburnPQStation_Node0 -- No --> E_IsSpecialManifestOriginalANDIsWoburnPQStation
original status AND the current
station is Woburn PQ"}:::decision N_IsSpecialManifestOriginalANDIsWoburnPQStation_Node0_action["The system skips cargo attachment
and exits the attachment process"]:::main N_IsSpecialManifestOriginalANDIsWoburnPQStation_Node0 -- Yes --> N_IsSpecialManifestOriginalANDIsWoburnPQStation_Node0_action N_IsSpecialManifestOriginalANDIsWoburnPQStation_Node0_action --> E_IsSpecialManifestOriginalANDIsWoburnPQStation S_IsSpecialManifestOriginalANDIsWoburnPQStation --> N_IsSpecialManifestOriginalANDIsWoburnPQStation_Node0 N_IsSpecialManifestOriginalANDIsWoburnPQStation_Node0 -- No --> E_IsSpecialManifestOriginalANDIsWoburnPQStation
File: GCX003.cbl
GIVEN:
A cargo record with special manifest classification and current station location
WHEN:
- The cargo has special manifest original status
- The current station is woburn pq
THEN:
- The system skips cargo attachment
- Exits the attachment process
β Consolidated Acceptance Criteria
- The cargo has special manifest special status AND the current station is not Woburn PQ → the system skips cargo attachment and exits the attachment process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsSpecialManifestSpecialANDIsNOTWoburnPQStation(["Start Step"])
E_IsSpecialManifestSpecialANDIsNOTWoburnPQStation(["End Step"])
N_IsSpecialManifestSpecialANDIsNOTWoburnPQStation_Node0{"The cargo has special manifest
special status AND the current
station is not Woburn PQ"}:::decision N_IsSpecialManifestSpecialANDIsNOTWoburnPQStation_Node0_action["The system skips cargo attachment
and exits the attachment process"]:::main N_IsSpecialManifestSpecialANDIsNOTWoburnPQStation_Node0 -- Yes --> N_IsSpecialManifestSpecialANDIsNOTWoburnPQStation_Node0_action N_IsSpecialManifestSpecialANDIsNOTWoburnPQStation_Node0_action --> E_IsSpecialManifestSpecialANDIsNOTWoburnPQStation S_IsSpecialManifestSpecialANDIsNOTWoburnPQStation --> N_IsSpecialManifestSpecialANDIsNOTWoburnPQStation_Node0 N_IsSpecialManifestSpecialANDIsNOTWoburnPQStation_Node0 -- No --> E_IsSpecialManifestSpecialANDIsNOTWoburnPQStation
special status AND the current
station is not Woburn PQ"}:::decision N_IsSpecialManifestSpecialANDIsNOTWoburnPQStation_Node0_action["The system skips cargo attachment
and exits the attachment process"]:::main N_IsSpecialManifestSpecialANDIsNOTWoburnPQStation_Node0 -- Yes --> N_IsSpecialManifestSpecialANDIsNOTWoburnPQStation_Node0_action N_IsSpecialManifestSpecialANDIsNOTWoburnPQStation_Node0_action --> E_IsSpecialManifestSpecialANDIsNOTWoburnPQStation S_IsSpecialManifestSpecialANDIsNOTWoburnPQStation --> N_IsSpecialManifestSpecialANDIsNOTWoburnPQStation_Node0 N_IsSpecialManifestSpecialANDIsNOTWoburnPQStation_Node0 -- No --> E_IsSpecialManifestSpecialANDIsNOTWoburnPQStation
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record with special manifest classification and current station location
WHEN:
- The cargo has special manifest special status
- The current station is not woburn pq
THEN:
- The system skips cargo attachment
- Exits the attachment process
β Consolidated Acceptance Criteria
- The cargo is export movement AND origin-destination is US-Mexico AND the current station is not Laredo TX → the system skips cargo attachment and exits the attachment process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsExportMovementANDIsOriginDestinationUSMexicoANDIsNOTLaredoTXStation(["Start Step"])
E_IsExportMovementANDIsOriginDestinationUSMexicoANDIsNOTLaredoTXStation(["End Step"])
N_IsExportMovementANDIsOriginDestinationUSMexicoANDIsNOTLaredoTXStation_Node0{"The cargo is export movement AND
origin-destination is US-Mexico AND
the current station is not Laredo TX"}:::decision N_IsExportMovementANDIsOriginDestinationUSMexicoANDIsNOTLaredoTXStation_Node0_action["The system skips cargo attachment
and exits the attachment process"]:::main N_IsExportMovementANDIsOriginDestinationUSMexicoANDIsNOTLaredoTXStation_Node0 -- Yes --> N_IsExportMovementANDIsOriginDestinationUSMexicoANDIsNOTLaredoTXStation_Node0_action N_IsExportMovementANDIsOriginDestinationUSMexicoANDIsNOTLaredoTXStation_Node0_action --> E_IsExportMovementANDIsOriginDestinationUSMexicoANDIsNOTLaredoTXStation S_IsExportMovementANDIsOriginDestinationUSMexicoANDIsNOTLaredoTXStation --> N_IsExportMovementANDIsOriginDestinationUSMexicoANDIsNOTLaredoTXStation_Node0 N_IsExportMovementANDIsOriginDestinationUSMexicoANDIsNOTLaredoTXStation_Node0 -- No --> E_IsExportMovementANDIsOriginDestinationUSMexicoANDIsNOTLaredoTXStation
origin-destination is US-Mexico AND
the current station is not Laredo TX"}:::decision N_IsExportMovementANDIsOriginDestinationUSMexicoANDIsNOTLaredoTXStation_Node0_action["The system skips cargo attachment
and exits the attachment process"]:::main N_IsExportMovementANDIsOriginDestinationUSMexicoANDIsNOTLaredoTXStation_Node0 -- Yes --> N_IsExportMovementANDIsOriginDestinationUSMexicoANDIsNOTLaredoTXStation_Node0_action N_IsExportMovementANDIsOriginDestinationUSMexicoANDIsNOTLaredoTXStation_Node0_action --> E_IsExportMovementANDIsOriginDestinationUSMexicoANDIsNOTLaredoTXStation S_IsExportMovementANDIsOriginDestinationUSMexicoANDIsNOTLaredoTXStation --> N_IsExportMovementANDIsOriginDestinationUSMexicoANDIsNOTLaredoTXStation_Node0 N_IsExportMovementANDIsOriginDestinationUSMexicoANDIsNOTLaredoTXStation_Node0 -- No --> E_IsExportMovementANDIsOriginDestinationUSMexicoANDIsNOTLaredoTXStation
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record with export movement type, origin-destination country codes, and current station location
WHEN:
- The cargo is export movement
- Origin-destination is us-mexico
- The current station is not laredo tx
THEN:
- The system skips cargo attachment
- Exits the attachment process
β Consolidated Acceptance Criteria
- If the bond type for immediate transport classification → the cargo is classified as immediate transport bond if M1201 in-bond type code equals 'IT' or 'IE'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsM1201InBondTypeCodeIT(["Start Step"])
E_IsM1201InBondTypeCodeIT(["End Step"])
N_IsM1201InBondTypeCodeIT_Node0{"The system evaluates the bond type
for immediate transport
classification"}:::decision N_IsM1201InBondTypeCodeIT_Node0_action["The cargo is classified as
immediate transport bond if M1201
in-bond type code equals IT or IE"]:::main N_IsM1201InBondTypeCodeIT_Node0 -- Yes --> N_IsM1201InBondTypeCodeIT_Node0_action N_IsM1201InBondTypeCodeIT_Node0_action --> E_IsM1201InBondTypeCodeIT S_IsM1201InBondTypeCodeIT --> N_IsM1201InBondTypeCodeIT_Node0 N_IsM1201InBondTypeCodeIT_Node0 -- No --> E_IsM1201InBondTypeCodeIT
for immediate transport
classification"}:::decision N_IsM1201InBondTypeCodeIT_Node0_action["The cargo is classified as
immediate transport bond if M1201
in-bond type code equals IT or IE"]:::main N_IsM1201InBondTypeCodeIT_Node0 -- Yes --> N_IsM1201InBondTypeCodeIT_Node0_action N_IsM1201InBondTypeCodeIT_Node0_action --> E_IsM1201InBondTypeCodeIT S_IsM1201InBondTypeCodeIT --> N_IsM1201InBondTypeCodeIT_Node0 N_IsM1201InBondTypeCodeIT_Node0 -- No --> E_IsM1201InBondTypeCodeIT
File: GCX003.cbl
GIVEN:
A cargo record with M1201 in-bond type code
WHEN:
The system evaluates the bond type for immediate transport classification
THEN:
The cargo is classified as immediate transport bond if M1201 in-bond type code equals 'IT' or 'IE'
β Consolidated Acceptance Criteria
- If cargo attachment eligibility for US-Canada-US processing → the cargo attachment is skipped if the cargo short description equals the release status value
- If cargo attachment eligibility for default bond processing → the cargo attachment is skipped if the cargo short description equals the release status value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCargoStatusValidforITBond(["Start Step"])
E_IsCargoStatusValidforITBond(["End Step"])
N_IsCargoStatusValidforITBond_Node0{"The system evaluates cargo
attachment eligibility for
US-Canada-US processing"}:::decision N_IsCargoStatusValidforITBond_Node0_action["The cargo attachment is skipped if
the cargo short description equals
the release status value"]:::main N_IsCargoStatusValidforITBond_Node0 -- Yes --> N_IsCargoStatusValidforITBond_Node0_action N_IsCargoStatusValidforITBond_Node0_action --> E_IsCargoStatusValidforITBond S_IsCargoStatusValidforITBond --> N_IsCargoStatusValidforITBond_Node0 N_IsCargoStatusValidforITBond_Node1{"The system evaluates cargo
attachment eligibility for default
bond processing"}:::decision N_IsCargoStatusValidforITBond_Node1_action["The cargo attachment is skipped if
the cargo short description equals
the release status value"]:::main N_IsCargoStatusValidforITBond_Node1 -- Yes --> N_IsCargoStatusValidforITBond_Node1_action N_IsCargoStatusValidforITBond_Node1_action --> E_IsCargoStatusValidforITBond N_IsCargoStatusValidforITBond_Node0 -- No --> N_IsCargoStatusValidforITBond_Node1 N_IsCargoStatusValidforITBond_Node1 -- No --> E_IsCargoStatusValidforITBond
attachment eligibility for
US-Canada-US processing"}:::decision N_IsCargoStatusValidforITBond_Node0_action["The cargo attachment is skipped if
the cargo short description equals
the release status value"]:::main N_IsCargoStatusValidforITBond_Node0 -- Yes --> N_IsCargoStatusValidforITBond_Node0_action N_IsCargoStatusValidforITBond_Node0_action --> E_IsCargoStatusValidforITBond S_IsCargoStatusValidforITBond --> N_IsCargoStatusValidforITBond_Node0 N_IsCargoStatusValidforITBond_Node1{"The system evaluates cargo
attachment eligibility for default
bond processing"}:::decision N_IsCargoStatusValidforITBond_Node1_action["The cargo attachment is skipped if
the cargo short description equals
the release status value"]:::main N_IsCargoStatusValidforITBond_Node1 -- Yes --> N_IsCargoStatusValidforITBond_Node1_action N_IsCargoStatusValidforITBond_Node1_action --> E_IsCargoStatusValidforITBond N_IsCargoStatusValidforITBond_Node0 -- No --> N_IsCargoStatusValidforITBond_Node1 N_IsCargoStatusValidforITBond_Node1 -- No --> E_IsCargoStatusValidforITBond
File: GCX003.cbl
GIVEN:
A cargo record with US-Canada-US bond type and TR created for IT status as spaces and cargo short description
WHEN:
The system evaluates cargo attachment eligibility for US-Canada-US processing
THEN:
The cargo attachment is skipped if the cargo short description equals the release status value
File: GCX003.cbl
GIVEN:
A cargo record with default bond type and TR created for IT status as spaces and cargo short description
WHEN:
The system evaluates cargo attachment eligibility for default bond processing
THEN:
The cargo attachment is skipped if the cargo short description equals the release status value
β Consolidated Acceptance Criteria
- If cargo attachment eligibility → the cargo attachment processing is skipped for empty equipment bonds
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipCargoAttachmentITBond(["Start Step"])
E_SkipCargoAttachmentITBond(["End Step"])
N_SkipCargoAttachmentITBond_Node0{"The system evaluates cargo
attachment eligibility"}:::decision N_SkipCargoAttachmentITBond_Node0_action["The cargo attachment processing is
skipped for empty equipment bonds"]:::main N_SkipCargoAttachmentITBond_Node0 -- Yes --> N_SkipCargoAttachmentITBond_Node0_action N_SkipCargoAttachmentITBond_Node0_action --> E_SkipCargoAttachmentITBond S_SkipCargoAttachmentITBond --> N_SkipCargoAttachmentITBond_Node0 N_SkipCargoAttachmentITBond_Node0 -- No --> E_SkipCargoAttachmentITBond
attachment eligibility"}:::decision N_SkipCargoAttachmentITBond_Node0_action["The cargo attachment processing is
skipped for empty equipment bonds"]:::main N_SkipCargoAttachmentITBond_Node0 -- Yes --> N_SkipCargoAttachmentITBond_Node0_action N_SkipCargoAttachmentITBond_Node0_action --> E_SkipCargoAttachmentITBond S_SkipCargoAttachmentITBond --> N_SkipCargoAttachmentITBond_Node0 N_SkipCargoAttachmentITBond_Node0 -- No --> E_SkipCargoAttachmentITBond
File: GCX003.cbl
GIVEN:
A cargo record with empty equipment bond type classification
WHEN:
The system evaluates cargo attachment eligibility
THEN:
The cargo attachment processing is skipped for empty equipment bonds
β Consolidated Acceptance Criteria
- If cargo attachment eligibility for special manifest processing → the cargo attachment is skipped if special manifest origin is true and the crossing station is Woburn PQ station
- If cargo attachment eligibility for special manifest processing → the cargo attachment is skipped if special manifest special is true and the crossing station is not Woburn PQ station
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsSpecialManifestRequired(["Start Step"])
E_IsSpecialManifestRequired(["End Step"])
N_IsSpecialManifestRequired_Node0{"The system evaluates cargo
attachment eligibility for special
manifest processing"}:::decision N_IsSpecialManifestRequired_Node0_action["The cargo attachment is skipped if
special manifest origin is true and
the crossing station is Woburn PQ
station"]:::main N_IsSpecialManifestRequired_Node0 -- Yes --> N_IsSpecialManifestRequired_Node0_action N_IsSpecialManifestRequired_Node0_action --> E_IsSpecialManifestRequired S_IsSpecialManifestRequired --> N_IsSpecialManifestRequired_Node0 N_IsSpecialManifestRequired_Node1{"The system evaluates cargo
attachment eligibility for special
manifest processing"}:::decision N_IsSpecialManifestRequired_Node1_action["The cargo attachment is skipped if
special manifest special is true and
the crossing station is not Woburn
PQ station"]:::main N_IsSpecialManifestRequired_Node1 -- Yes --> N_IsSpecialManifestRequired_Node1_action N_IsSpecialManifestRequired_Node1_action --> E_IsSpecialManifestRequired N_IsSpecialManifestRequired_Node0 -- No --> N_IsSpecialManifestRequired_Node1 N_IsSpecialManifestRequired_Node1 -- No --> E_IsSpecialManifestRequired
attachment eligibility for special
manifest processing"}:::decision N_IsSpecialManifestRequired_Node0_action["The cargo attachment is skipped if
special manifest origin is true and
the crossing station is Woburn PQ
station"]:::main N_IsSpecialManifestRequired_Node0 -- Yes --> N_IsSpecialManifestRequired_Node0_action N_IsSpecialManifestRequired_Node0_action --> E_IsSpecialManifestRequired S_IsSpecialManifestRequired --> N_IsSpecialManifestRequired_Node0 N_IsSpecialManifestRequired_Node1{"The system evaluates cargo
attachment eligibility for special
manifest processing"}:::decision N_IsSpecialManifestRequired_Node1_action["The cargo attachment is skipped if
special manifest special is true and
the crossing station is not Woburn
PQ station"]:::main N_IsSpecialManifestRequired_Node1 -- Yes --> N_IsSpecialManifestRequired_Node1_action N_IsSpecialManifestRequired_Node1_action --> E_IsSpecialManifestRequired N_IsSpecialManifestRequired_Node0 -- No --> N_IsSpecialManifestRequired_Node1 N_IsSpecialManifestRequired_Node1 -- No --> E_IsSpecialManifestRequired
File: GCX003.cbl
GIVEN:
A cargo record with special manifest origin indicator and crossing station information
WHEN:
The system evaluates cargo attachment eligibility for special manifest processing
THEN:
- The cargo attachment is skipped if special manifest origin is true
- The crossing station is woburn pq station
File: GCX003.cbl
GIVEN:
A cargo record with special manifest special indicator and crossing station information
WHEN:
The system evaluates cargo attachment eligibility for special manifest processing
THEN:
- The cargo attachment is skipped if special manifest special is true
- The crossing station is not woburn pq station
β Consolidated Acceptance Criteria
- If cargo attachment eligibility for export processing → the cargo attachment is skipped if the bond type is export and country codes are 'USMX' and the station is not Laredo TX station
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessITBondforAttachment(["Start Step"])
E_ProcessITBondforAttachment(["End Step"])
N_ProcessITBondforAttachment_Node0{"The system evaluates cargo
attachment eligibility for export
processing"}:::decision N_ProcessITBondforAttachment_Node0_action["The cargo attachment is skipped if
the bond type is export and country
codes are USMX and the station is
not Laredo TX station"]:::main N_ProcessITBondforAttachment_Node0 -- Yes --> N_ProcessITBondforAttachment_Node0_action N_ProcessITBondforAttachment_Node0_action --> E_ProcessITBondforAttachment S_ProcessITBondforAttachment --> N_ProcessITBondforAttachment_Node0 N_ProcessITBondforAttachment_Node0 -- No --> E_ProcessITBondforAttachment
attachment eligibility for export
processing"}:::decision N_ProcessITBondforAttachment_Node0_action["The cargo attachment is skipped if
the bond type is export and country
codes are USMX and the station is
not Laredo TX station"]:::main N_ProcessITBondforAttachment_Node0 -- Yes --> N_ProcessITBondforAttachment_Node0_action N_ProcessITBondforAttachment_Node0_action --> E_ProcessITBondforAttachment S_ProcessITBondforAttachment --> N_ProcessITBondforAttachment_Node0 N_ProcessITBondforAttachment_Node0 -- No --> E_ProcessITBondforAttachment
File: GCX003.cbl
GIVEN:
A cargo record with export bond type, US-Mexico country codes, and station information
WHEN:
The system evaluates cargo attachment eligibility for export processing
THEN:
- The cargo attachment is skipped if the bond type is export
- Country codes are 'usmx' and the station is not laredo tx station
β Consolidated Acceptance Criteria
- The system formats the cargo information for reporting → the bond information is formatted as 'AMS 7512' followed by the bond type code and bond number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessasAMS7512BondType(["Start Step"])
E_ProcessasAMS7512BondType(["End Step"])
N_ProcessasAMS7512BondType_Node0{"The system formats the cargo
information for reporting"}:::decision N_ProcessasAMS7512BondType_Node0_action["The bond information is formatted
as AMS 7512 followed by the bond
type code and bond number"]:::main N_ProcessasAMS7512BondType_Node0 -- Yes --> N_ProcessasAMS7512BondType_Node0_action N_ProcessasAMS7512BondType_Node0_action --> E_ProcessasAMS7512BondType S_ProcessasAMS7512BondType --> N_ProcessasAMS7512BondType_Node0 N_ProcessasAMS7512BondType_Node0 -- No --> E_ProcessasAMS7512BondType
information for reporting"}:::decision N_ProcessasAMS7512BondType_Node0_action["The bond information is formatted
as AMS 7512 followed by the bond
type code and bond number"]:::main N_ProcessasAMS7512BondType_Node0 -- Yes --> N_ProcessasAMS7512BondType_Node0_action N_ProcessasAMS7512BondType_Node0_action --> E_ProcessasAMS7512BondType S_ProcessasAMS7512BondType --> N_ProcessasAMS7512BondType_Node0 N_ProcessasAMS7512BondType_Node0 -- No --> E_ProcessasAMS7512BondType
File: GCX003.cbl
GIVEN:
A cargo record with bond type of 'TE', 'TR', or 'MT' and bond number information
WHEN:
The system formats the cargo information for reporting
THEN:
- The bond information is formatted as 'ams 7512' followed by the bond type code
- Bond number
β Consolidated Acceptance Criteria
- The system formats the cargo information for reporting → the bond information is formatted as 'AMS' followed by the bond type code and bond number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessasStandardAMSBondType(["Start Step"])
E_ProcessasStandardAMSBondType(["End Step"])
N_ProcessasStandardAMSBondType_Node0{"The system formats the cargo
information for reporting"}:::decision N_ProcessasStandardAMSBondType_Node0_action["The bond information is formatted
as AMS followed by the bond type
code and bond number"]:::main N_ProcessasStandardAMSBondType_Node0 -- Yes --> N_ProcessasStandardAMSBondType_Node0_action N_ProcessasStandardAMSBondType_Node0_action --> E_ProcessasStandardAMSBondType S_ProcessasStandardAMSBondType --> N_ProcessasStandardAMSBondType_Node0 N_ProcessasStandardAMSBondType_Node0 -- No --> E_ProcessasStandardAMSBondType
information for reporting"}:::decision N_ProcessasStandardAMSBondType_Node0_action["The bond information is formatted
as AMS followed by the bond type
code and bond number"]:::main N_ProcessasStandardAMSBondType_Node0 -- Yes --> N_ProcessasStandardAMSBondType_Node0_action N_ProcessasStandardAMSBondType_Node0_action --> E_ProcessasStandardAMSBondType S_ProcessasStandardAMSBondType --> N_ProcessasStandardAMSBondType_Node0 N_ProcessasStandardAMSBondType_Node0 -- No --> E_ProcessasStandardAMSBondType
File: GCX003.cbl
GIVEN:
A cargo record with bond type of 'IT' or 'IE' and bond number information
WHEN:
The system formats the cargo information for reporting
THEN:
- The bond information is formatted as 'ams' followed by the bond type code
- Bond number
β Consolidated Acceptance Criteria
- The system checks for container existence in inquiry system → if container is found in inquiry system, proceed to retrieve from inquiry database, otherwise check primary system
- The system checks if container is found in inquiry system → if container inquiry is found, retrieve from inquiry container database, otherwise check primary system
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContainerFoundinInquirySystem(["Start Step"])
E_ContainerFoundinInquirySystem(["End Step"])
N_ContainerFoundinInquirySystem_Node0{"The system checks for container
existence in inquiry system"}:::decision N_ContainerFoundinInquirySystem_Node0_action["If container is found in inquiry
system, proceed to retrieve from
inquiry database, otherwise check
primary system"]:::main N_ContainerFoundinInquirySystem_Node0 -- Yes --> N_ContainerFoundinInquirySystem_Node0_action N_ContainerFoundinInquirySystem_Node0_action --> E_ContainerFoundinInquirySystem S_ContainerFoundinInquirySystem --> N_ContainerFoundinInquirySystem_Node0 N_ContainerFoundinInquirySystem_Node1{"The system checks if container is
found in inquiry system"}:::decision N_ContainerFoundinInquirySystem_Node1_action["If container inquiry is found,
retrieve from inquiry container
database, otherwise check primary
system"]:::main N_ContainerFoundinInquirySystem_Node1 -- Yes --> N_ContainerFoundinInquirySystem_Node1_action N_ContainerFoundinInquirySystem_Node1_action --> E_ContainerFoundinInquirySystem N_ContainerFoundinInquirySystem_Node0 -- No --> N_ContainerFoundinInquirySystem_Node1 N_ContainerFoundinInquirySystem_Node1 -- No --> E_ContainerFoundinInquirySystem
existence in inquiry system"}:::decision N_ContainerFoundinInquirySystem_Node0_action["If container is found in inquiry
system, proceed to retrieve from
inquiry database, otherwise check
primary system"]:::main N_ContainerFoundinInquirySystem_Node0 -- Yes --> N_ContainerFoundinInquirySystem_Node0_action N_ContainerFoundinInquirySystem_Node0_action --> E_ContainerFoundinInquirySystem S_ContainerFoundinInquirySystem --> N_ContainerFoundinInquirySystem_Node0 N_ContainerFoundinInquirySystem_Node1{"The system checks if container is
found in inquiry system"}:::decision N_ContainerFoundinInquirySystem_Node1_action["If container inquiry is found,
retrieve from inquiry container
database, otherwise check primary
system"]:::main N_ContainerFoundinInquirySystem_Node1 -- Yes --> N_ContainerFoundinInquirySystem_Node1_action N_ContainerFoundinInquirySystem_Node1_action --> E_ContainerFoundinInquirySystem N_ContainerFoundinInquirySystem_Node0 -- No --> N_ContainerFoundinInquirySystem_Node1 N_ContainerFoundinInquirySystem_Node1 -- No --> E_ContainerFoundinInquirySystem
File: GCX003.cbl
GIVEN:
A container processing request is being handled
WHEN:
The system checks for container existence in inquiry system
THEN:
If container is found in inquiry system, proceed to retrieve from inquiry database, otherwise check primary system
File: GCX003.cbl
GIVEN:
A container waybill retrieval process is initiated
WHEN:
The system checks if container is found in inquiry system
THEN:
If container inquiry is found, retrieve from inquiry container database, otherwise check primary system
β Consolidated Acceptance Criteria
- System attempts to retrieve container from inquiry database → container information is fetched from FWIQROOT and FWIQBOTL databases using container cross-reference
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveContainerfromInquiryDatabase(["Start Step"])
E_RetrieveContainerfromInquiryDatabase(["End Step"])
N_RetrieveContainerfromInquiryDatabase_Node0{"System attempts to retrieve
container from inquiry database"}:::decision N_RetrieveContainerfromInquiryDatabase_Node0_action["Container information is fetched
from FWIQROOT and FWIQBOTL databases
using container cross-reference"]:::main N_RetrieveContainerfromInquiryDatabase_Node0 -- Yes --> N_RetrieveContainerfromInquiryDatabase_Node0_action N_RetrieveContainerfromInquiryDatabase_Node0_action --> E_RetrieveContainerfromInquiryDatabase S_RetrieveContainerfromInquiryDatabase --> N_RetrieveContainerfromInquiryDatabase_Node0 N_RetrieveContainerfromInquiryDatabase_Node0 -- No --> E_RetrieveContainerfromInquiryDatabase
container from inquiry database"}:::decision N_RetrieveContainerfromInquiryDatabase_Node0_action["Container information is fetched
from FWIQROOT and FWIQBOTL databases
using container cross-reference"]:::main N_RetrieveContainerfromInquiryDatabase_Node0 -- Yes --> N_RetrieveContainerfromInquiryDatabase_Node0_action N_RetrieveContainerfromInquiryDatabase_Node0_action --> E_RetrieveContainerfromInquiryDatabase S_RetrieveContainerfromInquiryDatabase --> N_RetrieveContainerfromInquiryDatabase_Node0 N_RetrieveContainerfromInquiryDatabase_Node0 -- No --> E_RetrieveContainerfromInquiryDatabase
File: GCX003.cbl
GIVEN:
Container is confirmed to exist in inquiry system
WHEN:
System attempts to retrieve container from inquiry database
THEN:
- Container information is fetched from fwiqroot
- Fwiqbotl databases using container cross-reference
β Consolidated Acceptance Criteria
- System checks primary waybill system for container → if container exists in primary system, proceed to retrieve container information, otherwise mark as not found
- The system checks if container exists in primary waybill system → container found status is determined based on primary system availability
- The system checks if container exists in primary system → if container is found in primary system, retrieve from primary container database, otherwise search freight waybill inquiry system
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContainerFoundinPrimarySystem(["Start Step"])
E_ContainerFoundinPrimarySystem(["End Step"])
N_ContainerFoundinPrimarySystem_Node0{"System checks primary waybill
system for container"}:::decision N_ContainerFoundinPrimarySystem_Node0_action["If container exists in primary
system, proceed to retrieve
container information, otherwise
mark as not found"]:::main N_ContainerFoundinPrimarySystem_Node0 -- Yes --> N_ContainerFoundinPrimarySystem_Node0_action N_ContainerFoundinPrimarySystem_Node0_action --> E_ContainerFoundinPrimarySystem S_ContainerFoundinPrimarySystem --> N_ContainerFoundinPrimarySystem_Node0 N_ContainerFoundinPrimarySystem_Node1{"The system checks if container
exists in primary waybill system"}:::decision N_ContainerFoundinPrimarySystem_Node1_action["Container found status is
determined based on primary system
availability"]:::main N_ContainerFoundinPrimarySystem_Node1 -- Yes --> N_ContainerFoundinPrimarySystem_Node1_action N_ContainerFoundinPrimarySystem_Node1_action --> E_ContainerFoundinPrimarySystem N_ContainerFoundinPrimarySystem_Node0 -- No --> N_ContainerFoundinPrimarySystem_Node1 N_ContainerFoundinPrimarySystem_Node2{"The system checks if container
exists in primary system"}:::decision N_ContainerFoundinPrimarySystem_Node2_action["If container is found in primary
system, retrieve from primary
container database, otherwise search
freight waybill inquiry system"]:::main N_ContainerFoundinPrimarySystem_Node2 -- Yes --> N_ContainerFoundinPrimarySystem_Node2_action N_ContainerFoundinPrimarySystem_Node2_action --> E_ContainerFoundinPrimarySystem N_ContainerFoundinPrimarySystem_Node1 -- No --> N_ContainerFoundinPrimarySystem_Node2 N_ContainerFoundinPrimarySystem_Node2 -- No --> E_ContainerFoundinPrimarySystem
system for container"}:::decision N_ContainerFoundinPrimarySystem_Node0_action["If container exists in primary
system, proceed to retrieve
container information, otherwise
mark as not found"]:::main N_ContainerFoundinPrimarySystem_Node0 -- Yes --> N_ContainerFoundinPrimarySystem_Node0_action N_ContainerFoundinPrimarySystem_Node0_action --> E_ContainerFoundinPrimarySystem S_ContainerFoundinPrimarySystem --> N_ContainerFoundinPrimarySystem_Node0 N_ContainerFoundinPrimarySystem_Node1{"The system checks if container
exists in primary waybill system"}:::decision N_ContainerFoundinPrimarySystem_Node1_action["Container found status is
determined based on primary system
availability"]:::main N_ContainerFoundinPrimarySystem_Node1 -- Yes --> N_ContainerFoundinPrimarySystem_Node1_action N_ContainerFoundinPrimarySystem_Node1_action --> E_ContainerFoundinPrimarySystem N_ContainerFoundinPrimarySystem_Node0 -- No --> N_ContainerFoundinPrimarySystem_Node1 N_ContainerFoundinPrimarySystem_Node2{"The system checks if container
exists in primary system"}:::decision N_ContainerFoundinPrimarySystem_Node2_action["If container is found in primary
system, retrieve from primary
container database, otherwise search
freight waybill inquiry system"]:::main N_ContainerFoundinPrimarySystem_Node2 -- Yes --> N_ContainerFoundinPrimarySystem_Node2_action N_ContainerFoundinPrimarySystem_Node2_action --> E_ContainerFoundinPrimarySystem N_ContainerFoundinPrimarySystem_Node1 -- No --> N_ContainerFoundinPrimarySystem_Node2 N_ContainerFoundinPrimarySystem_Node2 -- No --> E_ContainerFoundinPrimarySystem
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Container was not found in inquiry system
WHEN:
System checks primary waybill system for container
THEN:
If container exists in primary system, proceed to retrieve container information, otherwise mark as not found
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A container retrieval process is initiated and container was not previously found
WHEN:
The system checks if container exists in primary waybill system
THEN:
Container found status is determined based on primary system availability
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Container is not found in inquiry system
WHEN:
The system checks if container exists in primary system
THEN:
If container is found in primary system, retrieve from primary container database, otherwise search freight waybill inquiry system
β Consolidated Acceptance Criteria
- System retrieves container information using container ID → container details are fetched from SHIPROOT database and waybill information is populated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveContainerInformationUsingContainerID(["Start Step"])
E_RetrieveContainerInformationUsingContainerID(["End Step"])
N_RetrieveContainerInformationUsingContainerID_Node0{"System retrieves container
information using container ID"}:::decision N_RetrieveContainerInformationUsingContainerID_Node0_action["Container details are fetched from
SHIPROOT database and waybill
information is populated"]:::main N_RetrieveContainerInformationUsingContainerID_Node0 -- Yes --> N_RetrieveContainerInformationUsingContainerID_Node0_action N_RetrieveContainerInformationUsingContainerID_Node0_action --> E_RetrieveContainerInformationUsingContainerID S_RetrieveContainerInformationUsingContainerID --> N_RetrieveContainerInformationUsingContainerID_Node0 N_RetrieveContainerInformationUsingContainerID_Node0 -- No --> E_RetrieveContainerInformationUsingContainerID
information using container ID"}:::decision N_RetrieveContainerInformationUsingContainerID_Node0_action["Container details are fetched from
SHIPROOT database and waybill
information is populated"]:::main N_RetrieveContainerInformationUsingContainerID_Node0 -- Yes --> N_RetrieveContainerInformationUsingContainerID_Node0_action N_RetrieveContainerInformationUsingContainerID_Node0_action --> E_RetrieveContainerInformationUsingContainerID S_RetrieveContainerInformationUsingContainerID --> N_RetrieveContainerInformationUsingContainerID_Node0 N_RetrieveContainerInformationUsingContainerID_Node0 -- No --> E_RetrieveContainerInformationUsingContainerID
File: GCX003.cbl
GIVEN:
Container exists in either inquiry or primary system
WHEN:
System retrieves container information using container ID
THEN:
- Container details are fetched from shiproot database
- Waybill information is populated
β Consolidated Acceptance Criteria
- System validates the retrieval operation result → if waybill data is successfully retrieved, proceed to extract container details, otherwise mark waybill as not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WaybillDataRetrievedSuccessfully(["Start Step"])
E_WaybillDataRetrievedSuccessfully(["End Step"])
N_WaybillDataRetrievedSuccessfully_Node0{"System validates the retrieval
operation result"}:::decision N_WaybillDataRetrievedSuccessfully_Node0_action["If waybill data is successfully
retrieved, proceed to extract
container details, otherwise mark
waybill as not found"]:::main N_WaybillDataRetrievedSuccessfully_Node0 -- Yes --> N_WaybillDataRetrievedSuccessfully_Node0_action N_WaybillDataRetrievedSuccessfully_Node0_action --> E_WaybillDataRetrievedSuccessfully S_WaybillDataRetrievedSuccessfully --> N_WaybillDataRetrievedSuccessfully_Node0 N_WaybillDataRetrievedSuccessfully_Node0 -- No --> E_WaybillDataRetrievedSuccessfully
operation result"}:::decision N_WaybillDataRetrievedSuccessfully_Node0_action["If waybill data is successfully
retrieved, proceed to extract
container details, otherwise mark
waybill as not found"]:::main N_WaybillDataRetrievedSuccessfully_Node0 -- Yes --> N_WaybillDataRetrievedSuccessfully_Node0_action N_WaybillDataRetrievedSuccessfully_Node0_action --> E_WaybillDataRetrievedSuccessfully S_WaybillDataRetrievedSuccessfully --> N_WaybillDataRetrievedSuccessfully_Node0 N_WaybillDataRetrievedSuccessfully_Node0 -- No --> E_WaybillDataRetrievedSuccessfully
File: GCX003.cbl
GIVEN:
Container information retrieval has been attempted
WHEN:
System validates the retrieval operation result
THEN:
If waybill data is successfully retrieved, proceed to extract container details, otherwise mark waybill as not found
β Consolidated Acceptance Criteria
- System extracts container details from waybill → container ID, load/empty status, and other relevant details are extracted and populated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractContainerDetailsfromWaybill(["Start Step"])
E_ExtractContainerDetailsfromWaybill(["End Step"])
N_ExtractContainerDetailsfromWaybill_Node0{"System extracts container details
from waybill"}:::decision N_ExtractContainerDetailsfromWaybill_Node0_action["Container ID, loadempty status, and
other relevant details are extracted
and populated"]:::main N_ExtractContainerDetailsfromWaybill_Node0 -- Yes --> N_ExtractContainerDetailsfromWaybill_Node0_action N_ExtractContainerDetailsfromWaybill_Node0_action --> E_ExtractContainerDetailsfromWaybill S_ExtractContainerDetailsfromWaybill --> N_ExtractContainerDetailsfromWaybill_Node0 N_ExtractContainerDetailsfromWaybill_Node0 -- No --> E_ExtractContainerDetailsfromWaybill
from waybill"}:::decision N_ExtractContainerDetailsfromWaybill_Node0_action["Container ID, loadempty status, and
other relevant details are extracted
and populated"]:::main N_ExtractContainerDetailsfromWaybill_Node0 -- Yes --> N_ExtractContainerDetailsfromWaybill_Node0_action N_ExtractContainerDetailsfromWaybill_Node0_action --> E_ExtractContainerDetailsfromWaybill S_ExtractContainerDetailsfromWaybill --> N_ExtractContainerDetailsfromWaybill_Node0 N_ExtractContainerDetailsfromWaybill_Node0 -- No --> E_ExtractContainerDetailsfromWaybill
File: GCX003.cbl
GIVEN:
Waybill data has been successfully retrieved
WHEN:
System extracts container details from waybill
THEN:
- Container id, load/empty status, and other relevant details are extracted
- Populated
β Consolidated Acceptance Criteria
- System validates container load/empty status → container status is verified against waybill information for consistency
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateContainerLoadEmptyStatus(["Start Step"])
E_ValidateContainerLoadEmptyStatus(["End Step"])
N_ValidateContainerLoadEmptyStatus_Node0{"System validates container
loadempty status"}:::decision N_ValidateContainerLoadEmptyStatus_Node0_action["Container status is verified
against waybill information for
consistency"]:::main N_ValidateContainerLoadEmptyStatus_Node0 -- Yes --> N_ValidateContainerLoadEmptyStatus_Node0_action N_ValidateContainerLoadEmptyStatus_Node0_action --> E_ValidateContainerLoadEmptyStatus S_ValidateContainerLoadEmptyStatus --> N_ValidateContainerLoadEmptyStatus_Node0 N_ValidateContainerLoadEmptyStatus_Node0 -- No --> E_ValidateContainerLoadEmptyStatus
loadempty status"}:::decision N_ValidateContainerLoadEmptyStatus_Node0_action["Container status is verified
against waybill information for
consistency"]:::main N_ValidateContainerLoadEmptyStatus_Node0 -- Yes --> N_ValidateContainerLoadEmptyStatus_Node0_action N_ValidateContainerLoadEmptyStatus_Node0_action --> E_ValidateContainerLoadEmptyStatus S_ValidateContainerLoadEmptyStatus --> N_ValidateContainerLoadEmptyStatus_Node0 N_ValidateContainerLoadEmptyStatus_Node0 -- No --> E_ValidateContainerLoadEmptyStatus
File: GCX003.cbl
GIVEN:
Container details have been extracted from waybill
WHEN:
System validates container load/empty status
THEN:
Container status is verified against waybill information for consistency
β Consolidated Acceptance Criteria
- Container is expected to be loaded but waybill indicates empty status → if mismatch exists, mark waybill as not found, otherwise proceed with successful retrieval
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContainerisLoadedbutWaybillShowsEmpty(["Start Step"])
E_ContainerisLoadedbutWaybillShowsEmpty(["End Step"])
N_ContainerisLoadedbutWaybillShowsEmpty_Node0{"Container is expected to be loaded
but waybill indicates empty status"}:::decision N_ContainerisLoadedbutWaybillShowsEmpty_Node0_action["If mismatch exists, mark waybill as
not found, otherwise proceed with
successful retrieval"]:::main N_ContainerisLoadedbutWaybillShowsEmpty_Node0 -- Yes --> N_ContainerisLoadedbutWaybillShowsEmpty_Node0_action N_ContainerisLoadedbutWaybillShowsEmpty_Node0_action --> E_ContainerisLoadedbutWaybillShowsEmpty S_ContainerisLoadedbutWaybillShowsEmpty --> N_ContainerisLoadedbutWaybillShowsEmpty_Node0 N_ContainerisLoadedbutWaybillShowsEmpty_Node0 -- No --> E_ContainerisLoadedbutWaybillShowsEmpty
but waybill indicates empty status"}:::decision N_ContainerisLoadedbutWaybillShowsEmpty_Node0_action["If mismatch exists, mark waybill as
not found, otherwise proceed with
successful retrieval"]:::main N_ContainerisLoadedbutWaybillShowsEmpty_Node0 -- Yes --> N_ContainerisLoadedbutWaybillShowsEmpty_Node0_action N_ContainerisLoadedbutWaybillShowsEmpty_Node0_action --> E_ContainerisLoadedbutWaybillShowsEmpty S_ContainerisLoadedbutWaybillShowsEmpty --> N_ContainerisLoadedbutWaybillShowsEmpty_Node0 N_ContainerisLoadedbutWaybillShowsEmpty_Node0 -- No --> E_ContainerisLoadedbutWaybillShowsEmpty
File: GCX003.cbl
GIVEN:
Container load/empty status has been validated
WHEN:
Container is expected to be loaded but waybill indicates empty status
THEN:
If mismatch exists, mark waybill as not found, otherwise proceed with successful retrieval
β Consolidated Acceptance Criteria
- System processes the status mismatch → waybill is marked as not found and container processing continues with not found status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkWaybillasNotFound(["Start Step"])
E_MarkWaybillasNotFound(["End Step"])
N_MarkWaybillasNotFound_Node0{"System processes the status
mismatch"}:::decision N_MarkWaybillasNotFound_Node0_action["Waybill is marked as not found and
container processing continues with
not found status"]:::main N_MarkWaybillasNotFound_Node0 -- Yes --> N_MarkWaybillasNotFound_Node0_action N_MarkWaybillasNotFound_Node0_action --> E_MarkWaybillasNotFound S_MarkWaybillasNotFound --> N_MarkWaybillasNotFound_Node0 N_MarkWaybillasNotFound_Node0 -- No --> E_MarkWaybillasNotFound
mismatch"}:::decision N_MarkWaybillasNotFound_Node0_action["Waybill is marked as not found and
container processing continues with
not found status"]:::main N_MarkWaybillasNotFound_Node0 -- Yes --> N_MarkWaybillasNotFound_Node0_action N_MarkWaybillasNotFound_Node0_action --> E_MarkWaybillasNotFound S_MarkWaybillasNotFound --> N_MarkWaybillasNotFound_Node0 N_MarkWaybillasNotFound_Node0 -- No --> E_MarkWaybillasNotFound
File: GCX003.cbl
GIVEN:
Container load status mismatch has been detected
WHEN:
System processes the status mismatch
THEN:
- Waybill is marked as not found
- Container processing continues with not found status
β Consolidated Acceptance Criteria
- System completes container waybill retrieval → container waybill is marked as successfully retrieved and available for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContainerWaybillRetrievedSuccessfully(["Start Step"])
E_ContainerWaybillRetrievedSuccessfully(["End Step"])
N_ContainerWaybillRetrievedSuccessfully_Node0{"System completes container waybill
retrieval"}:::decision N_ContainerWaybillRetrievedSuccessfully_Node0_action["Container waybill is marked as
successfully retrieved and available
for further processing"]:::main N_ContainerWaybillRetrievedSuccessfully_Node0 -- Yes --> N_ContainerWaybillRetrievedSuccessfully_Node0_action N_ContainerWaybillRetrievedSuccessfully_Node0_action --> E_ContainerWaybillRetrievedSuccessfully S_ContainerWaybillRetrievedSuccessfully --> N_ContainerWaybillRetrievedSuccessfully_Node0 N_ContainerWaybillRetrievedSuccessfully_Node0 -- No --> E_ContainerWaybillRetrievedSuccessfully
retrieval"}:::decision N_ContainerWaybillRetrievedSuccessfully_Node0_action["Container waybill is marked as
successfully retrieved and available
for further processing"]:::main N_ContainerWaybillRetrievedSuccessfully_Node0 -- Yes --> N_ContainerWaybillRetrievedSuccessfully_Node0_action N_ContainerWaybillRetrievedSuccessfully_Node0_action --> E_ContainerWaybillRetrievedSuccessfully S_ContainerWaybillRetrievedSuccessfully --> N_ContainerWaybillRetrievedSuccessfully_Node0 N_ContainerWaybillRetrievedSuccessfully_Node0 -- No --> E_ContainerWaybillRetrievedSuccessfully
File: GCX003.cbl
GIVEN:
Container information has been processed without status mismatch
WHEN:
System completes container waybill retrieval
THEN:
- Container waybill is marked as successfully retrieved
- Available for further processing
β Consolidated Acceptance Criteria
- System processes the not found condition → container is marked as having no waybill found and appropriate error handling is initiated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContainerWaybillNotFound(["Start Step"])
E_ContainerWaybillNotFound(["End Step"])
N_ContainerWaybillNotFound_Node0{"System processes the not found
condition"}:::decision N_ContainerWaybillNotFound_Node0_action["Container is marked as having no
waybill found and appropriate error
handling is initiated"]:::main N_ContainerWaybillNotFound_Node0 -- Yes --> N_ContainerWaybillNotFound_Node0_action N_ContainerWaybillNotFound_Node0_action --> E_ContainerWaybillNotFound S_ContainerWaybillNotFound --> N_ContainerWaybillNotFound_Node0 N_ContainerWaybillNotFound_Node0 -- No --> E_ContainerWaybillNotFound
condition"}:::decision N_ContainerWaybillNotFound_Node0_action["Container is marked as having no
waybill found and appropriate error
handling is initiated"]:::main N_ContainerWaybillNotFound_Node0 -- Yes --> N_ContainerWaybillNotFound_Node0_action N_ContainerWaybillNotFound_Node0_action --> E_ContainerWaybillNotFound S_ContainerWaybillNotFound --> N_ContainerWaybillNotFound_Node0 N_ContainerWaybillNotFound_Node0 -- No --> E_ContainerWaybillNotFound
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Container waybill retrieval has failed from all available systems
WHEN:
System processes the not found condition
THEN:
- Container is marked as having no waybill found
- Appropriate error handling is initiated
β Consolidated Acceptance Criteria
- The system accesses the inquiry root database FWCIROOT → the system retrieves container information from the inquiry root database for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessInquiryRootDatabaseFWCIROOT(["Start Step"])
E_AccessInquiryRootDatabaseFWCIROOT(["End Step"])
N_AccessInquiryRootDatabaseFWCIROOT_Node0{"The system accesses the inquiry
root database FWCIROOT"}:::decision N_AccessInquiryRootDatabaseFWCIROOT_Node0_action["The system retrieves container
information from the inquiry root
database for further processing"]:::main N_AccessInquiryRootDatabaseFWCIROOT_Node0 -- Yes --> N_AccessInquiryRootDatabaseFWCIROOT_Node0_action N_AccessInquiryRootDatabaseFWCIROOT_Node0_action --> E_AccessInquiryRootDatabaseFWCIROOT S_AccessInquiryRootDatabaseFWCIROOT --> N_AccessInquiryRootDatabaseFWCIROOT_Node0 N_AccessInquiryRootDatabaseFWCIROOT_Node0 -- No --> E_AccessInquiryRootDatabaseFWCIROOT
root database FWCIROOT"}:::decision N_AccessInquiryRootDatabaseFWCIROOT_Node0_action["The system retrieves container
information from the inquiry root
database for further processing"]:::main N_AccessInquiryRootDatabaseFWCIROOT_Node0 -- Yes --> N_AccessInquiryRootDatabaseFWCIROOT_Node0_action N_AccessInquiryRootDatabaseFWCIROOT_Node0_action --> E_AccessInquiryRootDatabaseFWCIROOT S_AccessInquiryRootDatabaseFWCIROOT --> N_AccessInquiryRootDatabaseFWCIROOT_Node0 N_AccessInquiryRootDatabaseFWCIROOT_Node0 -- No --> E_AccessInquiryRootDatabaseFWCIROOT
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A container is not found in the primary system and container inquiry root data exists with original railroad number, station number, and waybill number
WHEN:
The system accesses the inquiry root database FWCIROOT
THEN:
The system retrieves container information from the inquiry root database for further processing
β Consolidated Acceptance Criteria
- The database access returns a status code → if status code is not spaces, container is not found and processing stops, otherwise container is found and processing continues to waybill inquiry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContainerFoundinInquiryRoot(["Start Step"])
E_ContainerFoundinInquiryRoot(["End Step"])
N_ContainerFoundinInquiryRoot_Node0{"The database access returns a
status code"}:::decision N_ContainerFoundinInquiryRoot_Node0_action["If status code is not spaces,
container is not found and
processing stops, otherwise
container is found and processing
continues to waybill inquiry"]:::main N_ContainerFoundinInquiryRoot_Node0 -- Yes --> N_ContainerFoundinInquiryRoot_Node0_action N_ContainerFoundinInquiryRoot_Node0_action --> E_ContainerFoundinInquiryRoot S_ContainerFoundinInquiryRoot --> N_ContainerFoundinInquiryRoot_Node0 N_ContainerFoundinInquiryRoot_Node0 -- No --> E_ContainerFoundinInquiryRoot
status code"}:::decision N_ContainerFoundinInquiryRoot_Node0_action["If status code is not spaces,
container is not found and
processing stops, otherwise
container is found and processing
continues to waybill inquiry"]:::main N_ContainerFoundinInquiryRoot_Node0 -- Yes --> N_ContainerFoundinInquiryRoot_Node0_action N_ContainerFoundinInquiryRoot_Node0_action --> E_ContainerFoundinInquiryRoot S_ContainerFoundinInquiryRoot --> N_ContainerFoundinInquiryRoot_Node0 N_ContainerFoundinInquiryRoot_Node0 -- No --> E_ContainerFoundinInquiryRoot
File: GCX003.cbl
GIVEN:
The system has attempted to access the inquiry root database FWCIROOT
WHEN:
The database access returns a status code
THEN:
- If status code is not spaces, container is not found
- Processing stops, otherwise container is found
- Processing continues to waybill inquiry
β Consolidated Acceptance Criteria
- The system accesses the waybill inquiry database FWIQROOT using the extracted identifiers → the system retrieves waybill information from the inquiry database for validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessInquiryDetailDatabaseFWIQROOT(["Start Step"])
E_AccessInquiryDetailDatabaseFWIQROOT(["End Step"])
N_AccessInquiryDetailDatabaseFWIQROOT_Node0{"The system accesses the waybill
inquiry database FWIQROOT using the
extracted identifiers"}:::decision N_AccessInquiryDetailDatabaseFWIQROOT_Node0_action["The system retrieves waybill
information from the inquiry
database for validation"]:::main N_AccessInquiryDetailDatabaseFWIQROOT_Node0 -- Yes --> N_AccessInquiryDetailDatabaseFWIQROOT_Node0_action N_AccessInquiryDetailDatabaseFWIQROOT_Node0_action --> E_AccessInquiryDetailDatabaseFWIQROOT S_AccessInquiryDetailDatabaseFWIQROOT --> N_AccessInquiryDetailDatabaseFWIQROOT_Node0 N_AccessInquiryDetailDatabaseFWIQROOT_Node0 -- No --> E_AccessInquiryDetailDatabaseFWIQROOT
inquiry database FWIQROOT using the
extracted identifiers"}:::decision N_AccessInquiryDetailDatabaseFWIQROOT_Node0_action["The system retrieves waybill
information from the inquiry
database for validation"]:::main N_AccessInquiryDetailDatabaseFWIQROOT_Node0 -- Yes --> N_AccessInquiryDetailDatabaseFWIQROOT_Node0_action N_AccessInquiryDetailDatabaseFWIQROOT_Node0_action --> E_AccessInquiryDetailDatabaseFWIQROOT S_AccessInquiryDetailDatabaseFWIQROOT --> N_AccessInquiryDetailDatabaseFWIQROOT_Node0 N_AccessInquiryDetailDatabaseFWIQROOT_Node0 -- No --> E_AccessInquiryDetailDatabaseFWIQROOT
File: GCX003.cbl
GIVEN:
Container is found in inquiry root database with valid railroad number, station number, and waybill number
WHEN:
The system accesses the waybill inquiry database FWIQROOT using the extracted identifiers
THEN:
The system retrieves waybill information from the inquiry database for validation
β Consolidated Acceptance Criteria
- The database access returns a status code → if status code is not spaces, waybill is not found and container is marked as not found, otherwise waybill is found and processing continues to cross-reference scanning
- System checks for valid waybill inquiry record → continue processing if found, otherwise return waybill not found
- The system checks the search results → if waybill is found, proceed to get waybill root information, otherwise set container not found status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WaybillFoundinInquiry(["Start Step"])
E_WaybillFoundinInquiry(["End Step"])
N_WaybillFoundinInquiry_Node0{"The database access returns a
status code"}:::decision N_WaybillFoundinInquiry_Node0_action["If status code is not spaces,
waybill is not found and container
is marked as not found, otherwise
waybill is found and processing
continues to cross-reference
scanning"]:::main N_WaybillFoundinInquiry_Node0 -- Yes --> N_WaybillFoundinInquiry_Node0_action N_WaybillFoundinInquiry_Node0_action --> E_WaybillFoundinInquiry S_WaybillFoundinInquiry --> N_WaybillFoundinInquiry_Node0 N_WaybillFoundinInquiry_Node1{"System checks for valid waybill
inquiry record"}:::decision N_WaybillFoundinInquiry_Node1_action["Continue processing if found,
otherwise return waybill not found"]:::main N_WaybillFoundinInquiry_Node1 -- Yes --> N_WaybillFoundinInquiry_Node1_action N_WaybillFoundinInquiry_Node1_action --> E_WaybillFoundinInquiry N_WaybillFoundinInquiry_Node0 -- No --> N_WaybillFoundinInquiry_Node1 N_WaybillFoundinInquiry_Node2{"The system checks the search
results"}:::decision N_WaybillFoundinInquiry_Node2_action["If waybill is found, proceed to get
waybill root information, otherwise
set container not found status"]:::main N_WaybillFoundinInquiry_Node2 -- Yes --> N_WaybillFoundinInquiry_Node2_action N_WaybillFoundinInquiry_Node2_action --> E_WaybillFoundinInquiry N_WaybillFoundinInquiry_Node1 -- No --> N_WaybillFoundinInquiry_Node2 N_WaybillFoundinInquiry_Node2 -- No --> E_WaybillFoundinInquiry
status code"}:::decision N_WaybillFoundinInquiry_Node0_action["If status code is not spaces,
waybill is not found and container
is marked as not found, otherwise
waybill is found and processing
continues to cross-reference
scanning"]:::main N_WaybillFoundinInquiry_Node0 -- Yes --> N_WaybillFoundinInquiry_Node0_action N_WaybillFoundinInquiry_Node0_action --> E_WaybillFoundinInquiry S_WaybillFoundinInquiry --> N_WaybillFoundinInquiry_Node0 N_WaybillFoundinInquiry_Node1{"System checks for valid waybill
inquiry record"}:::decision N_WaybillFoundinInquiry_Node1_action["Continue processing if found,
otherwise return waybill not found"]:::main N_WaybillFoundinInquiry_Node1 -- Yes --> N_WaybillFoundinInquiry_Node1_action N_WaybillFoundinInquiry_Node1_action --> E_WaybillFoundinInquiry N_WaybillFoundinInquiry_Node0 -- No --> N_WaybillFoundinInquiry_Node1 N_WaybillFoundinInquiry_Node2{"The system checks the search
results"}:::decision N_WaybillFoundinInquiry_Node2_action["If waybill is found, proceed to get
waybill root information, otherwise
set container not found status"]:::main N_WaybillFoundinInquiry_Node2 -- Yes --> N_WaybillFoundinInquiry_Node2_action N_WaybillFoundinInquiry_Node2_action --> E_WaybillFoundinInquiry N_WaybillFoundinInquiry_Node1 -- No --> N_WaybillFoundinInquiry_Node2 N_WaybillFoundinInquiry_Node2 -- No --> E_WaybillFoundinInquiry
File: GCX003.cbl
GIVEN:
The system has attempted to access the waybill inquiry database FWIQROOT
WHEN:
The database access returns a status code
THEN:
- If status code is not spaces, waybill is not found
- Container is marked as not found, otherwise waybill is found
- Processing continues to cross-reference scanning
File: GCX003.cbl
GIVEN:
Waybill inquiry system has been accessed
WHEN:
System checks for valid waybill inquiry record
THEN:
Continue processing if found, otherwise return waybill not found
File: GCX003.cbl
GIVEN:
A search has been performed in freight waybill inquiry system
WHEN:
The system checks the search results
THEN:
If waybill is found, proceed to get waybill root information, otherwise set container not found status
β Consolidated Acceptance Criteria
- The system scans the inquiry bottom line database FWIQBOTL for cross-reference entries → the system retrieves cross-reference data for evaluation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ScanforContainerCrossReferencesFWIQBOTL(["Start Step"])
E_ScanforContainerCrossReferencesFWIQBOTL(["End Step"])
N_ScanforContainerCrossReferencesFWIQBOTL_Node0{"The system scans the inquiry bottom
line database FWIQBOTL for
cross-reference entries"}:::decision N_ScanforContainerCrossReferencesFWIQBOTL_Node0_action["The system retrieves
cross-reference data for evaluation"]:::main N_ScanforContainerCrossReferencesFWIQBOTL_Node0 -- Yes --> N_ScanforContainerCrossReferencesFWIQBOTL_Node0_action N_ScanforContainerCrossReferencesFWIQBOTL_Node0_action --> E_ScanforContainerCrossReferencesFWIQBOTL S_ScanforContainerCrossReferencesFWIQBOTL --> N_ScanforContainerCrossReferencesFWIQBOTL_Node0 N_ScanforContainerCrossReferencesFWIQBOTL_Node0 -- No --> E_ScanforContainerCrossReferencesFWIQBOTL
line database FWIQBOTL for
cross-reference entries"}:::decision N_ScanforContainerCrossReferencesFWIQBOTL_Node0_action["The system retrieves
cross-reference data for evaluation"]:::main N_ScanforContainerCrossReferencesFWIQBOTL_Node0 -- Yes --> N_ScanforContainerCrossReferencesFWIQBOTL_Node0_action N_ScanforContainerCrossReferencesFWIQBOTL_Node0_action --> E_ScanforContainerCrossReferencesFWIQBOTL S_ScanforContainerCrossReferencesFWIQBOTL --> N_ScanforContainerCrossReferencesFWIQBOTL_Node0 N_ScanforContainerCrossReferencesFWIQBOTL_Node0 -- No --> E_ScanforContainerCrossReferencesFWIQBOTL
File: GCX003.cbl
GIVEN:
Waybill is found in inquiry database
WHEN:
The system scans the inquiry bottom line database FWIQBOTL for cross-reference entries
THEN:
The system retrieves cross-reference data for evaluation
β Consolidated Acceptance Criteria
- The first 8 characters of the inquiry bottom line are evaluated → if the first 8 characters equal 'T/C XREF', a cross-reference entry is found and container data is extracted, otherwise continue scanning for more entries
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CrossReferenceEntryFound(["Start Step"])
E_CrossReferenceEntryFound(["End Step"])
N_CrossReferenceEntryFound_Node0{"The first 8 characters of the
inquiry bottom line are evaluated"}:::decision N_CrossReferenceEntryFound_Node0_action["If the first 8 characters equal TC
XREF , a cross-reference entry is
found and container data is
extracted, otherwise continue
scanning for more entries"]:::main N_CrossReferenceEntryFound_Node0 -- Yes --> N_CrossReferenceEntryFound_Node0_action N_CrossReferenceEntryFound_Node0_action --> E_CrossReferenceEntryFound S_CrossReferenceEntryFound --> N_CrossReferenceEntryFound_Node0 N_CrossReferenceEntryFound_Node0 -- No --> E_CrossReferenceEntryFound
inquiry bottom line are evaluated"}:::decision N_CrossReferenceEntryFound_Node0_action["If the first 8 characters equal TC
XREF , a cross-reference entry is
found and container data is
extracted, otherwise continue
scanning for more entries"]:::main N_CrossReferenceEntryFound_Node0 -- Yes --> N_CrossReferenceEntryFound_Node0_action N_CrossReferenceEntryFound_Node0_action --> E_CrossReferenceEntryFound S_CrossReferenceEntryFound --> N_CrossReferenceEntryFound_Node0 N_CrossReferenceEntryFound_Node0 -- No --> E_CrossReferenceEntryFound
File: GCX003.cbl
GIVEN:
The system has retrieved data from inquiry bottom line database
WHEN:
The first 8 characters of the inquiry bottom line are evaluated
THEN:
- If the first 8 characters equal 't/c xref', a cross-reference entry is found
- Container data is extracted, otherwise continue scanning for more entries
β Consolidated Acceptance Criteria
- The system extracts container information from the cross-reference entry → the container ID is extracted from positions 28-39 of the inquiry bottom line
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractContainerIDfromCrossReference(["Start Step"])
E_ExtractContainerIDfromCrossReference(["End Step"])
N_ExtractContainerIDfromCrossReference_Node0{"The system extracts container
information from the cross-reference
entry"}:::decision N_ExtractContainerIDfromCrossReference_Node0_action["The container ID is extracted from
positions 28-39 of the inquiry
bottom line"]:::main N_ExtractContainerIDfromCrossReference_Node0 -- Yes --> N_ExtractContainerIDfromCrossReference_Node0_action N_ExtractContainerIDfromCrossReference_Node0_action --> E_ExtractContainerIDfromCrossReference S_ExtractContainerIDfromCrossReference --> N_ExtractContainerIDfromCrossReference_Node0 N_ExtractContainerIDfromCrossReference_Node0 -- No --> E_ExtractContainerIDfromCrossReference
information from the cross-reference
entry"}:::decision N_ExtractContainerIDfromCrossReference_Node0_action["The container ID is extracted from
positions 28-39 of the inquiry
bottom line"]:::main N_ExtractContainerIDfromCrossReference_Node0 -- Yes --> N_ExtractContainerIDfromCrossReference_Node0_action N_ExtractContainerIDfromCrossReference_Node0_action --> E_ExtractContainerIDfromCrossReference S_ExtractContainerIDfromCrossReference --> N_ExtractContainerIDfromCrossReference_Node0 N_ExtractContainerIDfromCrossReference_Node0 -- No --> E_ExtractContainerIDfromCrossReference
File: GCX003.cbl
GIVEN:
A valid cross-reference entry with 'T/C XREF' identifier is found
WHEN:
The system extracts container information from the cross-reference entry
THEN:
The container ID is extracted from positions 28-39 of the inquiry bottom line
β Consolidated Acceptance Criteria
- The system extracts waybill information from the cross-reference entry → railroad number is extracted from positions 10-12, station number from positions 14-19, waybill number from positions 21-26, and all spaces in the waybill information are replaced with zeros
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractWaybillInformation(["Start Step"])
E_ExtractWaybillInformation(["End Step"])
N_ExtractWaybillInformation_Node0{"The system extracts waybill
information from the cross-reference
entry"}:::decision N_ExtractWaybillInformation_Node0_action["Railroad number is extracted from
positions 10-12, station number from
positions 14-19, waybill number from
positions 21-26, and all spaces in
the waybill information are replaced
with zeros"]:::main N_ExtractWaybillInformation_Node0 -- Yes --> N_ExtractWaybillInformation_Node0_action N_ExtractWaybillInformation_Node0_action --> E_ExtractWaybillInformation S_ExtractWaybillInformation --> N_ExtractWaybillInformation_Node0 N_ExtractWaybillInformation_Node0 -- No --> E_ExtractWaybillInformation
information from the cross-reference
entry"}:::decision N_ExtractWaybillInformation_Node0_action["Railroad number is extracted from
positions 10-12, station number from
positions 14-19, waybill number from
positions 21-26, and all spaces in
the waybill information are replaced
with zeros"]:::main N_ExtractWaybillInformation_Node0 -- Yes --> N_ExtractWaybillInformation_Node0_action N_ExtractWaybillInformation_Node0_action --> E_ExtractWaybillInformation S_ExtractWaybillInformation --> N_ExtractWaybillInformation_Node0 N_ExtractWaybillInformation_Node0 -- No --> E_ExtractWaybillInformation
File: GCX003.cbl
GIVEN:
A valid cross-reference entry with 'T/C XREF' identifier is found
WHEN:
The system extracts waybill information from the cross-reference entry
THEN:
Railroad number is extracted from positions 10-12, station number from positions 14-19, waybill number from positions 21-26, and all spaces in the waybill information are replaced with zeros
β Consolidated Acceptance Criteria
- The system stores the cross-reference data → the container ID and waybill information are stored in the cross-reference table at the current index position
- System stores the cross-reference information → container ID and waybill reference are stored in the container cross-reference table at the current counter position
- The system stores the cross-reference information → the system should save the container ID and associated waybill reference in the container table at the current index position
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreContainerCrossReferenceData(["Start Step"])
E_StoreContainerCrossReferenceData(["End Step"])
N_StoreContainerCrossReferenceData_Node0{"The system stores the
cross-reference data"}:::decision N_StoreContainerCrossReferenceData_Node0_action["The container ID and waybill
information are stored in the
cross-reference table at the current
index position"]:::main N_StoreContainerCrossReferenceData_Node0 -- Yes --> N_StoreContainerCrossReferenceData_Node0_action N_StoreContainerCrossReferenceData_Node0_action --> E_StoreContainerCrossReferenceData S_StoreContainerCrossReferenceData --> N_StoreContainerCrossReferenceData_Node0 N_StoreContainerCrossReferenceData_Node1{"System stores the cross-reference
information"}:::decision N_StoreContainerCrossReferenceData_Node1_action["Container ID and waybill reference
are stored in the container
cross-reference table at the current
counter position"]:::main N_StoreContainerCrossReferenceData_Node1 -- Yes --> N_StoreContainerCrossReferenceData_Node1_action N_StoreContainerCrossReferenceData_Node1_action --> E_StoreContainerCrossReferenceData N_StoreContainerCrossReferenceData_Node0 -- No --> N_StoreContainerCrossReferenceData_Node1 N_StoreContainerCrossReferenceData_Node2{"The system stores the
cross-reference information"}:::decision N_StoreContainerCrossReferenceData_Node2_action["The system should save the
container ID and associated waybill
reference in the container table at
the current index position"]:::main N_StoreContainerCrossReferenceData_Node2 -- Yes --> N_StoreContainerCrossReferenceData_Node2_action N_StoreContainerCrossReferenceData_Node2_action --> E_StoreContainerCrossReferenceData N_StoreContainerCrossReferenceData_Node1 -- No --> N_StoreContainerCrossReferenceData_Node2 N_StoreContainerCrossReferenceData_Node2 -- No --> E_StoreContainerCrossReferenceData
cross-reference data"}:::decision N_StoreContainerCrossReferenceData_Node0_action["The container ID and waybill
information are stored in the
cross-reference table at the current
index position"]:::main N_StoreContainerCrossReferenceData_Node0 -- Yes --> N_StoreContainerCrossReferenceData_Node0_action N_StoreContainerCrossReferenceData_Node0_action --> E_StoreContainerCrossReferenceData S_StoreContainerCrossReferenceData --> N_StoreContainerCrossReferenceData_Node0 N_StoreContainerCrossReferenceData_Node1{"System stores the cross-reference
information"}:::decision N_StoreContainerCrossReferenceData_Node1_action["Container ID and waybill reference
are stored in the container
cross-reference table at the current
counter position"]:::main N_StoreContainerCrossReferenceData_Node1 -- Yes --> N_StoreContainerCrossReferenceData_Node1_action N_StoreContainerCrossReferenceData_Node1_action --> E_StoreContainerCrossReferenceData N_StoreContainerCrossReferenceData_Node0 -- No --> N_StoreContainerCrossReferenceData_Node1 N_StoreContainerCrossReferenceData_Node2{"The system stores the
cross-reference information"}:::decision N_StoreContainerCrossReferenceData_Node2_action["The system should save the
container ID and associated waybill
reference in the container table at
the current index position"]:::main N_StoreContainerCrossReferenceData_Node2 -- Yes --> N_StoreContainerCrossReferenceData_Node2_action N_StoreContainerCrossReferenceData_Node2_action --> E_StoreContainerCrossReferenceData N_StoreContainerCrossReferenceData_Node1 -- No --> N_StoreContainerCrossReferenceData_Node2 N_StoreContainerCrossReferenceData_Node2 -- No --> E_StoreContainerCrossReferenceData
File: GCX003.cbl
GIVEN:
Container ID and waybill information have been extracted from a cross-reference entry
WHEN:
The system stores the cross-reference data
THEN:
- The container id
- Waybill information are stored in the cross-reference table at the current index position
File: GCX003.cbl
GIVEN:
Container ID and standardized waybill reference have been extracted
WHEN:
System stores the cross-reference information
THEN:
- Container id
- Waybill reference are stored in the container cross-reference table at the current counter position
File: GCX003.cbl
GIVEN:
Container ID and waybill reference data have been successfully extracted and standardized
WHEN:
The system stores the cross-reference information
THEN:
- The system should save the container id
- Associated waybill reference in the container table at the current index position
β Consolidated Acceptance Criteria
- The system updates the container status → the container status is set to found and the container is marked as an inquiry container for subsequent processing
- Container information is available in primary system → container found status is set to true
- The system completes the retrieval process → set container found status to true and container inquiry found status based on the source system used
- System updates container processing status → container found flag is set to true and container ID is stored for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetContainerFoundStatus(["Start Step"])
E_SetContainerFoundStatus(["End Step"])
N_SetContainerFoundStatus_Node0{"The system updates the container
status"}:::decision N_SetContainerFoundStatus_Node0_action["The container status is set to
found and the container is marked as
an inquiry container for subsequent
processing"]:::main N_SetContainerFoundStatus_Node0 -- Yes --> N_SetContainerFoundStatus_Node0_action N_SetContainerFoundStatus_Node0_action --> E_SetContainerFoundStatus S_SetContainerFoundStatus --> N_SetContainerFoundStatus_Node0 N_SetContainerFoundStatus_Node1{"Container information is available
in primary system"}:::decision N_SetContainerFoundStatus_Node1_action["Container found status is set to
true"]:::main N_SetContainerFoundStatus_Node1 -- Yes --> N_SetContainerFoundStatus_Node1_action N_SetContainerFoundStatus_Node1_action --> E_SetContainerFoundStatus N_SetContainerFoundStatus_Node0 -- No --> N_SetContainerFoundStatus_Node1 N_SetContainerFoundStatus_Node2{"The system completes the retrieval
process"}:::decision N_SetContainerFoundStatus_Node2_action["Set container found status to true
and container inquiry found status
based on the source system used"]:::main N_SetContainerFoundStatus_Node2 -- Yes --> N_SetContainerFoundStatus_Node2_action N_SetContainerFoundStatus_Node2_action --> E_SetContainerFoundStatus N_SetContainerFoundStatus_Node1 -- No --> N_SetContainerFoundStatus_Node2 N_SetContainerFoundStatus_Node3{"System updates container processing
status"}:::decision N_SetContainerFoundStatus_Node3_action["Container found flag is set to true
and container ID is stored for
processing"]:::main N_SetContainerFoundStatus_Node3 -- Yes --> N_SetContainerFoundStatus_Node3_action N_SetContainerFoundStatus_Node3_action --> E_SetContainerFoundStatus N_SetContainerFoundStatus_Node2 -- No --> N_SetContainerFoundStatus_Node3 N_SetContainerFoundStatus_Node3 -- No --> E_SetContainerFoundStatus
status"}:::decision N_SetContainerFoundStatus_Node0_action["The container status is set to
found and the container is marked as
an inquiry container for subsequent
processing"]:::main N_SetContainerFoundStatus_Node0 -- Yes --> N_SetContainerFoundStatus_Node0_action N_SetContainerFoundStatus_Node0_action --> E_SetContainerFoundStatus S_SetContainerFoundStatus --> N_SetContainerFoundStatus_Node0 N_SetContainerFoundStatus_Node1{"Container information is available
in primary system"}:::decision N_SetContainerFoundStatus_Node1_action["Container found status is set to
true"]:::main N_SetContainerFoundStatus_Node1 -- Yes --> N_SetContainerFoundStatus_Node1_action N_SetContainerFoundStatus_Node1_action --> E_SetContainerFoundStatus N_SetContainerFoundStatus_Node0 -- No --> N_SetContainerFoundStatus_Node1 N_SetContainerFoundStatus_Node2{"The system completes the retrieval
process"}:::decision N_SetContainerFoundStatus_Node2_action["Set container found status to true
and container inquiry found status
based on the source system used"]:::main N_SetContainerFoundStatus_Node2 -- Yes --> N_SetContainerFoundStatus_Node2_action N_SetContainerFoundStatus_Node2_action --> E_SetContainerFoundStatus N_SetContainerFoundStatus_Node1 -- No --> N_SetContainerFoundStatus_Node2 N_SetContainerFoundStatus_Node3{"System updates container processing
status"}:::decision N_SetContainerFoundStatus_Node3_action["Container found flag is set to true
and container ID is stored for
processing"]:::main N_SetContainerFoundStatus_Node3 -- Yes --> N_SetContainerFoundStatus_Node3_action N_SetContainerFoundStatus_Node3_action --> E_SetContainerFoundStatus N_SetContainerFoundStatus_Node2 -- No --> N_SetContainerFoundStatus_Node3 N_SetContainerFoundStatus_Node3 -- No --> E_SetContainerFoundStatus
File: GCX003.cbl
GIVEN:
Container cross-reference data has been successfully stored
WHEN:
The system updates the container status
THEN:
- The container status is set to found
- The container is marked as an inquiry container for subsequent processing
File: GCX003.cbl
GIVEN:
Container data is successfully retrieved from SHIPROOT database
WHEN:
Container information is available in primary system
THEN:
Container found status is set to true
File: GCX003.cbl
GIVEN:
Container and waybill information has been successfully retrieved and processed
WHEN:
The system completes the retrieval process
THEN:
- Set container found status to true
- Container inquiry found status based on the source system used
File: GCX003.cbl
GIVEN:
Container information has been successfully extracted or retrieved
WHEN:
System updates container processing status
THEN:
- Container found flag is set to true
- Container id is stored for processing
β Consolidated Acceptance Criteria
- The system prepares to process the next entry → the cross-reference index counter is incremented by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinuewithNextCrossReference(["Start Step"])
E_ContinuewithNextCrossReference(["End Step"])
N_ContinuewithNextCrossReference_Node0{"The system prepares to process the
next entry"}:::decision N_ContinuewithNextCrossReference_Node0_action["The cross-reference index counter
is incremented by 1"]:::main N_ContinuewithNextCrossReference_Node0 -- Yes --> N_ContinuewithNextCrossReference_Node0_action N_ContinuewithNextCrossReference_Node0_action --> E_ContinuewithNextCrossReference S_ContinuewithNextCrossReference --> N_ContinuewithNextCrossReference_Node0 N_ContinuewithNextCrossReference_Node0 -- No --> E_ContinuewithNextCrossReference
next entry"}:::decision N_ContinuewithNextCrossReference_Node0_action["The cross-reference index counter
is incremented by 1"]:::main N_ContinuewithNextCrossReference_Node0 -- Yes --> N_ContinuewithNextCrossReference_Node0_action N_ContinuewithNextCrossReference_Node0_action --> E_ContinuewithNextCrossReference S_ContinuewithNextCrossReference --> N_ContinuewithNextCrossReference_Node0 N_ContinuewithNextCrossReference_Node0 -- No --> E_ContinuewithNextCrossReference
File: GCX003.cbl
GIVEN:
A cross-reference entry has been processed
WHEN:
The system prepares to process the next entry
THEN:
The cross-reference index counter is incremented by 1
β Consolidated Acceptance Criteria
- The system checks for more cross-reference entries → if database status code is spaces and index is 30 or less, more cross-references are available and scanning continues, otherwise cross-reference resolution is complete
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreCrossReferences(["Start Step"])
E_MoreCrossReferences(["End Step"])
N_MoreCrossReferences_Node0{"The system checks for more
cross-reference entries"}:::decision N_MoreCrossReferences_Node0_action["If database status code is spaces
and index is 30 or less, more
cross-references are available and
scanning continues, otherwise
cross-reference resolution is
complete"]:::main N_MoreCrossReferences_Node0 -- Yes --> N_MoreCrossReferences_Node0_action N_MoreCrossReferences_Node0_action --> E_MoreCrossReferences S_MoreCrossReferences --> N_MoreCrossReferences_Node0 N_MoreCrossReferences_Node0 -- No --> E_MoreCrossReferences
cross-reference entries"}:::decision N_MoreCrossReferences_Node0_action["If database status code is spaces
and index is 30 or less, more
cross-references are available and
scanning continues, otherwise
cross-reference resolution is
complete"]:::main N_MoreCrossReferences_Node0 -- Yes --> N_MoreCrossReferences_Node0_action N_MoreCrossReferences_Node0_action --> E_MoreCrossReferences S_MoreCrossReferences --> N_MoreCrossReferences_Node0 N_MoreCrossReferences_Node0 -- No --> E_MoreCrossReferences
File: GCX003.cbl
GIVEN:
The system has processed a cross-reference entry
WHEN:
The system checks for more cross-reference entries
THEN:
- If database status code is spaces
- Index is 30 or less, more cross-references are available
- Scanning continues, otherwise cross-reference resolution is complete
β Consolidated Acceptance Criteria
- The cross-reference resolution process completes → the system finalizes the container cross-reference data and makes it available for subsequent waybill processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContainerCrossReferenceResolutionComplete(["Start Step"])
E_ContainerCrossReferenceResolutionComplete(["End Step"])
N_ContainerCrossReferenceResolutionComplete_Node0{"The cross-reference resolution
process completes"}:::decision N_ContainerCrossReferenceResolutionComplete_Node0_action["The system finalizes the container
cross-reference data and makes it
available for subsequent waybill
processing"]:::main N_ContainerCrossReferenceResolutionComplete_Node0 -- Yes --> N_ContainerCrossReferenceResolutionComplete_Node0_action N_ContainerCrossReferenceResolutionComplete_Node0_action --> E_ContainerCrossReferenceResolutionComplete S_ContainerCrossReferenceResolutionComplete --> N_ContainerCrossReferenceResolutionComplete_Node0 N_ContainerCrossReferenceResolutionComplete_Node0 -- No --> E_ContainerCrossReferenceResolutionComplete
process completes"}:::decision N_ContainerCrossReferenceResolutionComplete_Node0_action["The system finalizes the container
cross-reference data and makes it
available for subsequent waybill
processing"]:::main N_ContainerCrossReferenceResolutionComplete_Node0 -- Yes --> N_ContainerCrossReferenceResolutionComplete_Node0_action N_ContainerCrossReferenceResolutionComplete_Node0_action --> E_ContainerCrossReferenceResolutionComplete S_ContainerCrossReferenceResolutionComplete --> N_ContainerCrossReferenceResolutionComplete_Node0 N_ContainerCrossReferenceResolutionComplete_Node0 -- No --> E_ContainerCrossReferenceResolutionComplete
File: GCX003.cbl
GIVEN:
No more cross-reference entries are available for processing or the maximum index limit of 30 is reached
WHEN:
The cross-reference resolution process completes
THEN:
- The system finalizes the container cross-reference data
- Makes it available for subsequent waybill processing
β Consolidated Acceptance Criteria
- The system determines container cannot be resolved → the container status is set to not found and inquiry container status is set to not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContainerNotFoundSetNotFoundStatus(["Start Step"])
E_ContainerNotFoundSetNotFoundStatus(["End Step"])
N_ContainerNotFoundSetNotFoundStatus_Node0{"The system determines container
cannot be resolved"}:::decision N_ContainerNotFoundSetNotFoundStatus_Node0_action["The container status is set to not
found and inquiry container status
is set to not found"]:::main N_ContainerNotFoundSetNotFoundStatus_Node0 -- Yes --> N_ContainerNotFoundSetNotFoundStatus_Node0_action N_ContainerNotFoundSetNotFoundStatus_Node0_action --> E_ContainerNotFoundSetNotFoundStatus S_ContainerNotFoundSetNotFoundStatus --> N_ContainerNotFoundSetNotFoundStatus_Node0 N_ContainerNotFoundSetNotFoundStatus_Node0 -- No --> E_ContainerNotFoundSetNotFoundStatus
cannot be resolved"}:::decision N_ContainerNotFoundSetNotFoundStatus_Node0_action["The container status is set to not
found and inquiry container status
is set to not found"]:::main N_ContainerNotFoundSetNotFoundStatus_Node0 -- Yes --> N_ContainerNotFoundSetNotFoundStatus_Node0_action N_ContainerNotFoundSetNotFoundStatus_Node0_action --> E_ContainerNotFoundSetNotFoundStatus S_ContainerNotFoundSetNotFoundStatus --> N_ContainerNotFoundSetNotFoundStatus_Node0 N_ContainerNotFoundSetNotFoundStatus_Node0 -- No --> E_ContainerNotFoundSetNotFoundStatus
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Container is not found in inquiry root database or waybill is not found in inquiry database
WHEN:
The system determines container cannot be resolved
THEN:
- The container status is set to not found
- Inquiry container status is set to not found
β Consolidated Acceptance Criteria
- System begins processing inquiry bottom line records → container table is cleared, container counter is set to 1, and container cross-reference table is initialized to spaces
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeContainerTableandCounters(["Start Step"])
E_InitializeContainerTableandCounters(["End Step"])
N_InitializeContainerTableandCounters_Node0{"System begins processing inquiry
bottom line records"}:::decision N_InitializeContainerTableandCounters_Node0_action["Container table is cleared,
container counter is set to 1, and
container cross-reference table is
initialized to spaces"]:::main N_InitializeContainerTableandCounters_Node0 -- Yes --> N_InitializeContainerTableandCounters_Node0_action N_InitializeContainerTableandCounters_Node0_action --> E_InitializeContainerTableandCounters S_InitializeContainerTableandCounters --> N_InitializeContainerTableandCounters_Node0 N_InitializeContainerTableandCounters_Node0 -- No --> E_InitializeContainerTableandCounters
bottom line records"}:::decision N_InitializeContainerTableandCounters_Node0_action["Container table is cleared,
container counter is set to 1, and
container cross-reference table is
initialized to spaces"]:::main N_InitializeContainerTableandCounters_Node0 -- Yes --> N_InitializeContainerTableandCounters_Node0_action N_InitializeContainerTableandCounters_Node0_action --> E_InitializeContainerTableandCounters S_InitializeContainerTableandCounters --> N_InitializeContainerTableandCounters_Node0 N_InitializeContainerTableandCounters_Node0 -- No --> E_InitializeContainerTableandCounters
File: GCX003.cbl
GIVEN:
Container cross-reference scanning process is starting
WHEN:
System begins processing inquiry bottom line records
THEN:
Container table is cleared, container counter is set to 1, and container cross-reference table is initialized to spaces
β Consolidated Acceptance Criteria
- System needs to start reading inquiry bottom line records → system positions to first FWIQBOTL record with segment type 'FWIQBOTL', clears key field, and sets function to GNP
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PositiontoFirstFWIQBOTLRecord(["Start Step"])
E_PositiontoFirstFWIQBOTLRecord(["End Step"])
N_PositiontoFirstFWIQBOTLRecord_Node0{"System needs to start reading
inquiry bottom line records"}:::decision N_PositiontoFirstFWIQBOTLRecord_Node0_action["System positions to first FWIQBOTL
record with segment type FWIQBOTL ,
clears key field, and sets function
to GNP"]:::main N_PositiontoFirstFWIQBOTLRecord_Node0 -- Yes --> N_PositiontoFirstFWIQBOTLRecord_Node0_action N_PositiontoFirstFWIQBOTLRecord_Node0_action --> E_PositiontoFirstFWIQBOTLRecord S_PositiontoFirstFWIQBOTLRecord --> N_PositiontoFirstFWIQBOTLRecord_Node0 N_PositiontoFirstFWIQBOTLRecord_Node0 -- No --> E_PositiontoFirstFWIQBOTLRecord
inquiry bottom line records"}:::decision N_PositiontoFirstFWIQBOTLRecord_Node0_action["System positions to first FWIQBOTL
record with segment type FWIQBOTL ,
clears key field, and sets function
to GNP"]:::main N_PositiontoFirstFWIQBOTLRecord_Node0 -- Yes --> N_PositiontoFirstFWIQBOTLRecord_Node0_action N_PositiontoFirstFWIQBOTLRecord_Node0_action --> E_PositiontoFirstFWIQBOTLRecord S_PositiontoFirstFWIQBOTLRecord --> N_PositiontoFirstFWIQBOTLRecord_Node0 N_PositiontoFirstFWIQBOTLRecord_Node0 -- No --> E_PositiontoFirstFWIQBOTLRecord
File: GCX003.cbl
GIVEN:
Container processing has been initialized
WHEN:
System needs to start reading inquiry bottom line records
THEN:
System positions to first FWIQBOTL record with segment type 'FWIQBOTL', clears key field, and sets function to GNP
β Consolidated Acceptance Criteria
- System checks for additional records to process → processing continues if status code is spaces AND container counter is 30 or less, otherwise processing stops
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreFWIQBOTLRecordsAvailable(["Start Step"])
E_MoreFWIQBOTLRecordsAvailable(["End Step"])
N_MoreFWIQBOTLRecordsAvailable_Node0{"System checks for additional
records to process"}:::decision N_MoreFWIQBOTLRecordsAvailable_Node0_action["Processing continues if status code
is spaces AND container counter is
30 or less, otherwise processing
stops"]:::main N_MoreFWIQBOTLRecordsAvailable_Node0 -- Yes --> N_MoreFWIQBOTLRecordsAvailable_Node0_action N_MoreFWIQBOTLRecordsAvailable_Node0_action --> E_MoreFWIQBOTLRecordsAvailable S_MoreFWIQBOTLRecordsAvailable --> N_MoreFWIQBOTLRecordsAvailable_Node0 N_MoreFWIQBOTLRecordsAvailable_Node0 -- No --> E_MoreFWIQBOTLRecordsAvailable
records to process"}:::decision N_MoreFWIQBOTLRecordsAvailable_Node0_action["Processing continues if status code
is spaces AND container counter is
30 or less, otherwise processing
stops"]:::main N_MoreFWIQBOTLRecordsAvailable_Node0 -- Yes --> N_MoreFWIQBOTLRecordsAvailable_Node0_action N_MoreFWIQBOTLRecordsAvailable_Node0_action --> E_MoreFWIQBOTLRecordsAvailable S_MoreFWIQBOTLRecordsAvailable --> N_MoreFWIQBOTLRecordsAvailable_Node0 N_MoreFWIQBOTLRecordsAvailable_Node0 -- No --> E_MoreFWIQBOTLRecordsAvailable
File: GCX003.cbl
GIVEN:
System is processing inquiry bottom line records
WHEN:
System checks for additional records to process
THEN:
- Processing continues if status code is spaces
- Container counter is 30 or less, otherwise processing stops
β Consolidated Acceptance Criteria
- System reads the next FWIQBOTL record → system calls FWIQIO with GNP function to retrieve next inquiry bottom line record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReadNextFWIQBOTLRecord(["Start Step"])
E_ReadNextFWIQBOTLRecord(["End Step"])
N_ReadNextFWIQBOTLRecord_Node0{"System reads the next FWIQBOTL
record"}:::decision N_ReadNextFWIQBOTLRecord_Node0_action["System calls FWIQIO with GNP
function to retrieve next inquiry
bottom line record"]:::main N_ReadNextFWIQBOTLRecord_Node0 -- Yes --> N_ReadNextFWIQBOTLRecord_Node0_action N_ReadNextFWIQBOTLRecord_Node0_action --> E_ReadNextFWIQBOTLRecord S_ReadNextFWIQBOTLRecord --> N_ReadNextFWIQBOTLRecord_Node0 N_ReadNextFWIQBOTLRecord_Node0 -- No --> E_ReadNextFWIQBOTLRecord
record"}:::decision N_ReadNextFWIQBOTLRecord_Node0_action["System calls FWIQIO with GNP
function to retrieve next inquiry
bottom line record"]:::main N_ReadNextFWIQBOTLRecord_Node0 -- Yes --> N_ReadNextFWIQBOTLRecord_Node0_action N_ReadNextFWIQBOTLRecord_Node0_action --> E_ReadNextFWIQBOTLRecord S_ReadNextFWIQBOTLRecord --> N_ReadNextFWIQBOTLRecord_Node0 N_ReadNextFWIQBOTLRecord_Node0 -- No --> E_ReadNextFWIQBOTLRecord
File: GCX003.cbl
GIVEN:
More inquiry records are available for processing
WHEN:
System reads the next FWIQBOTL record
THEN:
System calls FWIQIO with GNP function to retrieve next inquiry bottom line record
β Consolidated Acceptance Criteria
- System examines the record content → record is processed as container cross-reference if positions 1-8 contain 'T/C XREF', otherwise record is skipped
- The system checks the record type in the first 8 positions of the inquiry record → the system should identify if the record contains container cross-reference data by matching 'T/C XREF' pattern
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsRecordTypeTCXREF(["Start Step"])
E_IsRecordTypeTCXREF(["End Step"])
N_IsRecordTypeTCXREF_Node0{"System examines the record content"}:::decision
N_IsRecordTypeTCXREF_Node0_action["Record is processed as container
cross-reference if positions 1-8
contain TC XREF , otherwise record
is skipped"]:::main N_IsRecordTypeTCXREF_Node0 -- Yes --> N_IsRecordTypeTCXREF_Node0_action N_IsRecordTypeTCXREF_Node0_action --> E_IsRecordTypeTCXREF S_IsRecordTypeTCXREF --> N_IsRecordTypeTCXREF_Node0 N_IsRecordTypeTCXREF_Node1{"The system checks the record type
in the first 8 positions of the
inquiry record"}:::decision N_IsRecordTypeTCXREF_Node1_action["The system should identify if the
record contains container
cross-reference data by matching TC
XREF pattern"]:::main N_IsRecordTypeTCXREF_Node1 -- Yes --> N_IsRecordTypeTCXREF_Node1_action N_IsRecordTypeTCXREF_Node1_action --> E_IsRecordTypeTCXREF N_IsRecordTypeTCXREF_Node0 -- No --> N_IsRecordTypeTCXREF_Node1 N_IsRecordTypeTCXREF_Node1 -- No --> E_IsRecordTypeTCXREF
cross-reference if positions 1-8
contain TC XREF , otherwise record
is skipped"]:::main N_IsRecordTypeTCXREF_Node0 -- Yes --> N_IsRecordTypeTCXREF_Node0_action N_IsRecordTypeTCXREF_Node0_action --> E_IsRecordTypeTCXREF S_IsRecordTypeTCXREF --> N_IsRecordTypeTCXREF_Node0 N_IsRecordTypeTCXREF_Node1{"The system checks the record type
in the first 8 positions of the
inquiry record"}:::decision N_IsRecordTypeTCXREF_Node1_action["The system should identify if the
record contains container
cross-reference data by matching TC
XREF pattern"]:::main N_IsRecordTypeTCXREF_Node1 -- Yes --> N_IsRecordTypeTCXREF_Node1_action N_IsRecordTypeTCXREF_Node1_action --> E_IsRecordTypeTCXREF N_IsRecordTypeTCXREF_Node0 -- No --> N_IsRecordTypeTCXREF_Node1 N_IsRecordTypeTCXREF_Node1 -- No --> E_IsRecordTypeTCXREF
File: GCX003.cbl
GIVEN:
An inquiry bottom line record has been retrieved
WHEN:
System examines the record content
THEN:
Record is processed as container cross-reference if positions 1-8 contain 'T/C XREF', otherwise record is skipped
File: GCX003.cbl
GIVEN:
An inquiry bottom line record is being processed
WHEN:
The system checks the record type in the first 8 positions of the inquiry record
THEN:
The system should identify if the record contains container cross-reference data by matching 'T/C XREF' pattern
β Consolidated Acceptance Criteria
- System processes the container information → container ID is extracted from positions 28-39 of the inquiry bottom line record
- The system extracts data from positions 28 through 39 of the inquiry record → the system should capture the 12-character container ID and store it in the container table
- The system processes the record for container information → extract the container ID from positions 28-39 of the record and store it in the container work table
- The system processes the container cross-reference information → the container ID is extracted from positions 28-39 of the inquiry bottom line and stored in the container cross-reference table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractContainerIDfromPosition2839(["Start Step"])
E_ExtractContainerIDfromPosition2839(["End Step"])
N_ExtractContainerIDfromPosition2839_Node0{"System processes the container
information"}:::decision N_ExtractContainerIDfromPosition2839_Node0_action["Container ID is extracted from
positions 28-39 of the inquiry
bottom line record"]:::main N_ExtractContainerIDfromPosition2839_Node0 -- Yes --> N_ExtractContainerIDfromPosition2839_Node0_action N_ExtractContainerIDfromPosition2839_Node0_action --> E_ExtractContainerIDfromPosition2839 S_ExtractContainerIDfromPosition2839 --> N_ExtractContainerIDfromPosition2839_Node0 N_ExtractContainerIDfromPosition2839_Node1{"The system extracts data from
positions 28 through 39 of the
inquiry record"}:::decision N_ExtractContainerIDfromPosition2839_Node1_action["The system should capture the
12-character container ID and store
it in the container table"]:::main N_ExtractContainerIDfromPosition2839_Node1 -- Yes --> N_ExtractContainerIDfromPosition2839_Node1_action N_ExtractContainerIDfromPosition2839_Node1_action --> E_ExtractContainerIDfromPosition2839 N_ExtractContainerIDfromPosition2839_Node0 -- No --> N_ExtractContainerIDfromPosition2839_Node1 N_ExtractContainerIDfromPosition2839_Node2{"The system processes the record for
container information"}:::decision N_ExtractContainerIDfromPosition2839_Node2_action["Extract the container ID from
positions 28-39 of the record and
store it in the container work table"]:::main N_ExtractContainerIDfromPosition2839_Node2 -- Yes --> N_ExtractContainerIDfromPosition2839_Node2_action N_ExtractContainerIDfromPosition2839_Node2_action --> E_ExtractContainerIDfromPosition2839 N_ExtractContainerIDfromPosition2839_Node1 -- No --> N_ExtractContainerIDfromPosition2839_Node2 N_ExtractContainerIDfromPosition2839_Node3{"The system processes the container
cross-reference information"}:::decision N_ExtractContainerIDfromPosition2839_Node3_action["The container ID is extracted from
positions 28-39 of the inquiry
bottom line and stored in the
container cross-reference table"]:::main N_ExtractContainerIDfromPosition2839_Node3 -- Yes --> N_ExtractContainerIDfromPosition2839_Node3_action N_ExtractContainerIDfromPosition2839_Node3_action --> E_ExtractContainerIDfromPosition2839 N_ExtractContainerIDfromPosition2839_Node2 -- No --> N_ExtractContainerIDfromPosition2839_Node3 N_ExtractContainerIDfromPosition2839_Node3 -- No --> E_ExtractContainerIDfromPosition2839
information"}:::decision N_ExtractContainerIDfromPosition2839_Node0_action["Container ID is extracted from
positions 28-39 of the inquiry
bottom line record"]:::main N_ExtractContainerIDfromPosition2839_Node0 -- Yes --> N_ExtractContainerIDfromPosition2839_Node0_action N_ExtractContainerIDfromPosition2839_Node0_action --> E_ExtractContainerIDfromPosition2839 S_ExtractContainerIDfromPosition2839 --> N_ExtractContainerIDfromPosition2839_Node0 N_ExtractContainerIDfromPosition2839_Node1{"The system extracts data from
positions 28 through 39 of the
inquiry record"}:::decision N_ExtractContainerIDfromPosition2839_Node1_action["The system should capture the
12-character container ID and store
it in the container table"]:::main N_ExtractContainerIDfromPosition2839_Node1 -- Yes --> N_ExtractContainerIDfromPosition2839_Node1_action N_ExtractContainerIDfromPosition2839_Node1_action --> E_ExtractContainerIDfromPosition2839 N_ExtractContainerIDfromPosition2839_Node0 -- No --> N_ExtractContainerIDfromPosition2839_Node1 N_ExtractContainerIDfromPosition2839_Node2{"The system processes the record for
container information"}:::decision N_ExtractContainerIDfromPosition2839_Node2_action["Extract the container ID from
positions 28-39 of the record and
store it in the container work table"]:::main N_ExtractContainerIDfromPosition2839_Node2 -- Yes --> N_ExtractContainerIDfromPosition2839_Node2_action N_ExtractContainerIDfromPosition2839_Node2_action --> E_ExtractContainerIDfromPosition2839 N_ExtractContainerIDfromPosition2839_Node1 -- No --> N_ExtractContainerIDfromPosition2839_Node2 N_ExtractContainerIDfromPosition2839_Node3{"The system processes the container
cross-reference information"}:::decision N_ExtractContainerIDfromPosition2839_Node3_action["The container ID is extracted from
positions 28-39 of the inquiry
bottom line and stored in the
container cross-reference table"]:::main N_ExtractContainerIDfromPosition2839_Node3 -- Yes --> N_ExtractContainerIDfromPosition2839_Node3_action N_ExtractContainerIDfromPosition2839_Node3_action --> E_ExtractContainerIDfromPosition2839 N_ExtractContainerIDfromPosition2839_Node2 -- No --> N_ExtractContainerIDfromPosition2839_Node3 N_ExtractContainerIDfromPosition2839_Node3 -- No --> E_ExtractContainerIDfromPosition2839
File: GCX003.cbl
GIVEN:
Record is confirmed as container cross-reference type
WHEN:
System processes the container information
THEN:
Container ID is extracted from positions 28-39 of the inquiry bottom line record
File: GCX003.cbl
GIVEN:
A valid 'T/C XREF' record is being processed
WHEN:
The system extracts data from positions 28 through 39 of the inquiry record
THEN:
- The system should capture the 12-character container id
- Store it in the container table
File: GCX003.cbl
GIVEN:
A valid container cross-reference record has been identified
WHEN:
The system processes the record for container information
THEN:
- Extract the container id from positions 28-39 of the record
- Store it in the container work table
File: GCX003.cbl
GIVEN:
A valid container cross-reference line containing 'T/C XREF'
WHEN:
The system processes the container cross-reference information
THEN:
- The container id is extracted from positions 28-39 of the inquiry bottom line
- Stored in the container cross-reference table
β Consolidated Acceptance Criteria
- System processes waybill reference information → waybill railroad code is extracted from positions 10-12 of the inquiry record
- The system extracts data from positions 10 through 12 of the inquiry record → the system should capture the 3-character railroad code for the waybill reference
- The system processes the waybill information → the waybill railroad code is extracted from positions 10-12 of the inquiry bottom line and stored in the container cross-reference entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractWaybillRailroadfromPosition1012(["Start Step"])
E_ExtractWaybillRailroadfromPosition1012(["End Step"])
N_ExtractWaybillRailroadfromPosition1012_Node0{"System processes waybill reference
information"}:::decision N_ExtractWaybillRailroadfromPosition1012_Node0_action["Waybill railroad code is extracted
from positions 10-12 of the inquiry
record"]:::main N_ExtractWaybillRailroadfromPosition1012_Node0 -- Yes --> N_ExtractWaybillRailroadfromPosition1012_Node0_action N_ExtractWaybillRailroadfromPosition1012_Node0_action --> E_ExtractWaybillRailroadfromPosition1012 S_ExtractWaybillRailroadfromPosition1012 --> N_ExtractWaybillRailroadfromPosition1012_Node0 N_ExtractWaybillRailroadfromPosition1012_Node1{"The system extracts data from
positions 10 through 12 of the
inquiry record"}:::decision N_ExtractWaybillRailroadfromPosition1012_Node1_action["The system should capture the
3-character railroad code for the
waybill reference"]:::main N_ExtractWaybillRailroadfromPosition1012_Node1 -- Yes --> N_ExtractWaybillRailroadfromPosition1012_Node1_action N_ExtractWaybillRailroadfromPosition1012_Node1_action --> E_ExtractWaybillRailroadfromPosition1012 N_ExtractWaybillRailroadfromPosition1012_Node0 -- No --> N_ExtractWaybillRailroadfromPosition1012_Node1 N_ExtractWaybillRailroadfromPosition1012_Node2{"The system processes the waybill
information"}:::decision N_ExtractWaybillRailroadfromPosition1012_Node2_action["The waybill railroad code is
extracted from positions 10-12 of
the inquiry bottom line and stored
in the container cross-reference
entry"]:::main N_ExtractWaybillRailroadfromPosition1012_Node2 -- Yes --> N_ExtractWaybillRailroadfromPosition1012_Node2_action N_ExtractWaybillRailroadfromPosition1012_Node2_action --> E_ExtractWaybillRailroadfromPosition1012 N_ExtractWaybillRailroadfromPosition1012_Node1 -- No --> N_ExtractWaybillRailroadfromPosition1012_Node2 N_ExtractWaybillRailroadfromPosition1012_Node2 -- No --> E_ExtractWaybillRailroadfromPosition1012
information"}:::decision N_ExtractWaybillRailroadfromPosition1012_Node0_action["Waybill railroad code is extracted
from positions 10-12 of the inquiry
record"]:::main N_ExtractWaybillRailroadfromPosition1012_Node0 -- Yes --> N_ExtractWaybillRailroadfromPosition1012_Node0_action N_ExtractWaybillRailroadfromPosition1012_Node0_action --> E_ExtractWaybillRailroadfromPosition1012 S_ExtractWaybillRailroadfromPosition1012 --> N_ExtractWaybillRailroadfromPosition1012_Node0 N_ExtractWaybillRailroadfromPosition1012_Node1{"The system extracts data from
positions 10 through 12 of the
inquiry record"}:::decision N_ExtractWaybillRailroadfromPosition1012_Node1_action["The system should capture the
3-character railroad code for the
waybill reference"]:::main N_ExtractWaybillRailroadfromPosition1012_Node1 -- Yes --> N_ExtractWaybillRailroadfromPosition1012_Node1_action N_ExtractWaybillRailroadfromPosition1012_Node1_action --> E_ExtractWaybillRailroadfromPosition1012 N_ExtractWaybillRailroadfromPosition1012_Node0 -- No --> N_ExtractWaybillRailroadfromPosition1012_Node1 N_ExtractWaybillRailroadfromPosition1012_Node2{"The system processes the waybill
information"}:::decision N_ExtractWaybillRailroadfromPosition1012_Node2_action["The waybill railroad code is
extracted from positions 10-12 of
the inquiry bottom line and stored
in the container cross-reference
entry"]:::main N_ExtractWaybillRailroadfromPosition1012_Node2 -- Yes --> N_ExtractWaybillRailroadfromPosition1012_Node2_action N_ExtractWaybillRailroadfromPosition1012_Node2_action --> E_ExtractWaybillRailroadfromPosition1012 N_ExtractWaybillRailroadfromPosition1012_Node1 -- No --> N_ExtractWaybillRailroadfromPosition1012_Node2 N_ExtractWaybillRailroadfromPosition1012_Node2 -- No --> E_ExtractWaybillRailroadfromPosition1012
File: GCX003.cbl
GIVEN:
Container ID has been extracted from the record
WHEN:
System processes waybill reference information
THEN:
Waybill railroad code is extracted from positions 10-12 of the inquiry record
File: GCX003.cbl
GIVEN:
A valid 'T/C XREF' record is being processed
WHEN:
The system extracts data from positions 10 through 12 of the inquiry record
THEN:
The system should capture the 3-character railroad code for the waybill reference
File: GCX003.cbl
GIVEN:
A valid container cross-reference line containing 'T/C XREF'
WHEN:
The system processes the waybill information
THEN:
- The waybill railroad code is extracted from positions 10-12 of the inquiry bottom line
- Stored in the container cross-reference entry
β Consolidated Acceptance Criteria
- System continues processing waybill reference information → waybill station code is extracted from positions 14-19 of the inquiry record
- The system extracts data from positions 14 through 19 of the inquiry record → the system should capture the 6-character station code for the waybill reference
- The system processes the waybill information → the waybill station code is extracted from positions 14-19 of the inquiry bottom line and stored in the container cross-reference entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractWaybillStationfromPosition1419(["Start Step"])
E_ExtractWaybillStationfromPosition1419(["End Step"])
N_ExtractWaybillStationfromPosition1419_Node0{"System continues processing waybill
reference information"}:::decision N_ExtractWaybillStationfromPosition1419_Node0_action["Waybill station code is extracted
from positions 14-19 of the inquiry
record"]:::main N_ExtractWaybillStationfromPosition1419_Node0 -- Yes --> N_ExtractWaybillStationfromPosition1419_Node0_action N_ExtractWaybillStationfromPosition1419_Node0_action --> E_ExtractWaybillStationfromPosition1419 S_ExtractWaybillStationfromPosition1419 --> N_ExtractWaybillStationfromPosition1419_Node0 N_ExtractWaybillStationfromPosition1419_Node1{"The system extracts data from
positions 14 through 19 of the
inquiry record"}:::decision N_ExtractWaybillStationfromPosition1419_Node1_action["The system should capture the
6-character station code for the
waybill reference"]:::main N_ExtractWaybillStationfromPosition1419_Node1 -- Yes --> N_ExtractWaybillStationfromPosition1419_Node1_action N_ExtractWaybillStationfromPosition1419_Node1_action --> E_ExtractWaybillStationfromPosition1419 N_ExtractWaybillStationfromPosition1419_Node0 -- No --> N_ExtractWaybillStationfromPosition1419_Node1 N_ExtractWaybillStationfromPosition1419_Node2{"The system processes the waybill
information"}:::decision N_ExtractWaybillStationfromPosition1419_Node2_action["The waybill station code is
extracted from positions 14-19 of
the inquiry bottom line and stored
in the container cross-reference
entry"]:::main N_ExtractWaybillStationfromPosition1419_Node2 -- Yes --> N_ExtractWaybillStationfromPosition1419_Node2_action N_ExtractWaybillStationfromPosition1419_Node2_action --> E_ExtractWaybillStationfromPosition1419 N_ExtractWaybillStationfromPosition1419_Node1 -- No --> N_ExtractWaybillStationfromPosition1419_Node2 N_ExtractWaybillStationfromPosition1419_Node2 -- No --> E_ExtractWaybillStationfromPosition1419
reference information"}:::decision N_ExtractWaybillStationfromPosition1419_Node0_action["Waybill station code is extracted
from positions 14-19 of the inquiry
record"]:::main N_ExtractWaybillStationfromPosition1419_Node0 -- Yes --> N_ExtractWaybillStationfromPosition1419_Node0_action N_ExtractWaybillStationfromPosition1419_Node0_action --> E_ExtractWaybillStationfromPosition1419 S_ExtractWaybillStationfromPosition1419 --> N_ExtractWaybillStationfromPosition1419_Node0 N_ExtractWaybillStationfromPosition1419_Node1{"The system extracts data from
positions 14 through 19 of the
inquiry record"}:::decision N_ExtractWaybillStationfromPosition1419_Node1_action["The system should capture the
6-character station code for the
waybill reference"]:::main N_ExtractWaybillStationfromPosition1419_Node1 -- Yes --> N_ExtractWaybillStationfromPosition1419_Node1_action N_ExtractWaybillStationfromPosition1419_Node1_action --> E_ExtractWaybillStationfromPosition1419 N_ExtractWaybillStationfromPosition1419_Node0 -- No --> N_ExtractWaybillStationfromPosition1419_Node1 N_ExtractWaybillStationfromPosition1419_Node2{"The system processes the waybill
information"}:::decision N_ExtractWaybillStationfromPosition1419_Node2_action["The waybill station code is
extracted from positions 14-19 of
the inquiry bottom line and stored
in the container cross-reference
entry"]:::main N_ExtractWaybillStationfromPosition1419_Node2 -- Yes --> N_ExtractWaybillStationfromPosition1419_Node2_action N_ExtractWaybillStationfromPosition1419_Node2_action --> E_ExtractWaybillStationfromPosition1419 N_ExtractWaybillStationfromPosition1419_Node1 -- No --> N_ExtractWaybillStationfromPosition1419_Node2 N_ExtractWaybillStationfromPosition1419_Node2 -- No --> E_ExtractWaybillStationfromPosition1419
File: GCX003.cbl
GIVEN:
Waybill railroad code has been extracted
WHEN:
System continues processing waybill reference information
THEN:
Waybill station code is extracted from positions 14-19 of the inquiry record
File: GCX003.cbl
GIVEN:
A valid 'T/C XREF' record is being processed
WHEN:
The system extracts data from positions 14 through 19 of the inquiry record
THEN:
The system should capture the 6-character station code for the waybill reference
File: GCX003.cbl
GIVEN:
A valid container cross-reference line containing 'T/C XREF'
WHEN:
The system processes the waybill information
THEN:
- The waybill station code is extracted from positions 14-19 of the inquiry bottom line
- Stored in the container cross-reference entry
β Consolidated Acceptance Criteria
- System completes waybill reference extraction → waybill number is extracted from positions 21-26 of the inquiry record
- The system extracts data from positions 21 through 26 of the inquiry record → the system should capture the 6-character waybill number for the waybill reference
- The system processes the waybill information → the waybill number is extracted from positions 21-26 of the inquiry bottom line and stored in the container cross-reference entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractWaybillNumberfromPosition2126(["Start Step"])
E_ExtractWaybillNumberfromPosition2126(["End Step"])
N_ExtractWaybillNumberfromPosition2126_Node0{"System completes waybill reference
extraction"}:::decision N_ExtractWaybillNumberfromPosition2126_Node0_action["Waybill number is extracted from
positions 21-26 of the inquiry
record"]:::main N_ExtractWaybillNumberfromPosition2126_Node0 -- Yes --> N_ExtractWaybillNumberfromPosition2126_Node0_action N_ExtractWaybillNumberfromPosition2126_Node0_action --> E_ExtractWaybillNumberfromPosition2126 S_ExtractWaybillNumberfromPosition2126 --> N_ExtractWaybillNumberfromPosition2126_Node0 N_ExtractWaybillNumberfromPosition2126_Node1{"The system extracts data from
positions 21 through 26 of the
inquiry record"}:::decision N_ExtractWaybillNumberfromPosition2126_Node1_action["The system should capture the
6-character waybill number for the
waybill reference"]:::main N_ExtractWaybillNumberfromPosition2126_Node1 -- Yes --> N_ExtractWaybillNumberfromPosition2126_Node1_action N_ExtractWaybillNumberfromPosition2126_Node1_action --> E_ExtractWaybillNumberfromPosition2126 N_ExtractWaybillNumberfromPosition2126_Node0 -- No --> N_ExtractWaybillNumberfromPosition2126_Node1 N_ExtractWaybillNumberfromPosition2126_Node2{"The system processes the waybill
information"}:::decision N_ExtractWaybillNumberfromPosition2126_Node2_action["The waybill number is extracted
from positions 21-26 of the inquiry
bottom line and stored in the
container cross-reference entry"]:::main N_ExtractWaybillNumberfromPosition2126_Node2 -- Yes --> N_ExtractWaybillNumberfromPosition2126_Node2_action N_ExtractWaybillNumberfromPosition2126_Node2_action --> E_ExtractWaybillNumberfromPosition2126 N_ExtractWaybillNumberfromPosition2126_Node1 -- No --> N_ExtractWaybillNumberfromPosition2126_Node2 N_ExtractWaybillNumberfromPosition2126_Node2 -- No --> E_ExtractWaybillNumberfromPosition2126
extraction"}:::decision N_ExtractWaybillNumberfromPosition2126_Node0_action["Waybill number is extracted from
positions 21-26 of the inquiry
record"]:::main N_ExtractWaybillNumberfromPosition2126_Node0 -- Yes --> N_ExtractWaybillNumberfromPosition2126_Node0_action N_ExtractWaybillNumberfromPosition2126_Node0_action --> E_ExtractWaybillNumberfromPosition2126 S_ExtractWaybillNumberfromPosition2126 --> N_ExtractWaybillNumberfromPosition2126_Node0 N_ExtractWaybillNumberfromPosition2126_Node1{"The system extracts data from
positions 21 through 26 of the
inquiry record"}:::decision N_ExtractWaybillNumberfromPosition2126_Node1_action["The system should capture the
6-character waybill number for the
waybill reference"]:::main N_ExtractWaybillNumberfromPosition2126_Node1 -- Yes --> N_ExtractWaybillNumberfromPosition2126_Node1_action N_ExtractWaybillNumberfromPosition2126_Node1_action --> E_ExtractWaybillNumberfromPosition2126 N_ExtractWaybillNumberfromPosition2126_Node0 -- No --> N_ExtractWaybillNumberfromPosition2126_Node1 N_ExtractWaybillNumberfromPosition2126_Node2{"The system processes the waybill
information"}:::decision N_ExtractWaybillNumberfromPosition2126_Node2_action["The waybill number is extracted
from positions 21-26 of the inquiry
bottom line and stored in the
container cross-reference entry"]:::main N_ExtractWaybillNumberfromPosition2126_Node2 -- Yes --> N_ExtractWaybillNumberfromPosition2126_Node2_action N_ExtractWaybillNumberfromPosition2126_Node2_action --> E_ExtractWaybillNumberfromPosition2126 N_ExtractWaybillNumberfromPosition2126_Node1 -- No --> N_ExtractWaybillNumberfromPosition2126_Node2 N_ExtractWaybillNumberfromPosition2126_Node2 -- No --> E_ExtractWaybillNumberfromPosition2126
File: GCX003.cbl
GIVEN:
Waybill station code has been extracted
WHEN:
System completes waybill reference extraction
THEN:
Waybill number is extracted from positions 21-26 of the inquiry record
File: GCX003.cbl
GIVEN:
A valid 'T/C XREF' record is being processed
WHEN:
The system extracts data from positions 21 through 26 of the inquiry record
THEN:
The system should capture the 6-character waybill number for the waybill reference
File: GCX003.cbl
GIVEN:
A valid container cross-reference line containing 'T/C XREF'
WHEN:
The system processes the waybill information
THEN:
- The waybill number is extracted from positions 21-26 of the inquiry bottom line
- Stored in the container cross-reference entry
β Consolidated Acceptance Criteria
- System standardizes the waybill reference format → all spaces in the combined waybill reference are replaced with zeros
- The system processes the combined waybill railroad, station, and number fields → the system should replace all space characters with zero characters to create a standardized waybill reference
- The system processes the extracted waybill information → all spaces in the waybill identification fields are replaced with zeros to create a standardized waybill key
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReplaceSpaceswithZerosinWaybillFields(["Start Step"])
E_ReplaceSpaceswithZerosinWaybillFields(["End Step"])
N_ReplaceSpaceswithZerosinWaybillFields_Node0{"System standardizes the waybill
reference format"}:::decision N_ReplaceSpaceswithZerosinWaybillFields_Node0_action["All spaces in the combined waybill
reference are replaced with zeros"]:::main N_ReplaceSpaceswithZerosinWaybillFields_Node0 -- Yes --> N_ReplaceSpaceswithZerosinWaybillFields_Node0_action N_ReplaceSpaceswithZerosinWaybillFields_Node0_action --> E_ReplaceSpaceswithZerosinWaybillFields S_ReplaceSpaceswithZerosinWaybillFields --> N_ReplaceSpaceswithZerosinWaybillFields_Node0 N_ReplaceSpaceswithZerosinWaybillFields_Node1{"The system processes the combined
waybill railroad, station, and
number fields"}:::decision N_ReplaceSpaceswithZerosinWaybillFields_Node1_action["The system should replace all space
characters with zero characters to
create a standardized waybill
reference"]:::main N_ReplaceSpaceswithZerosinWaybillFields_Node1 -- Yes --> N_ReplaceSpaceswithZerosinWaybillFields_Node1_action N_ReplaceSpaceswithZerosinWaybillFields_Node1_action --> E_ReplaceSpaceswithZerosinWaybillFields N_ReplaceSpaceswithZerosinWaybillFields_Node0 -- No --> N_ReplaceSpaceswithZerosinWaybillFields_Node1 N_ReplaceSpaceswithZerosinWaybillFields_Node2{"The system processes the extracted
waybill information"}:::decision N_ReplaceSpaceswithZerosinWaybillFields_Node2_action["All spaces in the waybill
identification fields are replaced
with zeros to create a standardized
waybill key"]:::main N_ReplaceSpaceswithZerosinWaybillFields_Node2 -- Yes --> N_ReplaceSpaceswithZerosinWaybillFields_Node2_action N_ReplaceSpaceswithZerosinWaybillFields_Node2_action --> E_ReplaceSpaceswithZerosinWaybillFields N_ReplaceSpaceswithZerosinWaybillFields_Node1 -- No --> N_ReplaceSpaceswithZerosinWaybillFields_Node2 N_ReplaceSpaceswithZerosinWaybillFields_Node2 -- No --> E_ReplaceSpaceswithZerosinWaybillFields
reference format"}:::decision N_ReplaceSpaceswithZerosinWaybillFields_Node0_action["All spaces in the combined waybill
reference are replaced with zeros"]:::main N_ReplaceSpaceswithZerosinWaybillFields_Node0 -- Yes --> N_ReplaceSpaceswithZerosinWaybillFields_Node0_action N_ReplaceSpaceswithZerosinWaybillFields_Node0_action --> E_ReplaceSpaceswithZerosinWaybillFields S_ReplaceSpaceswithZerosinWaybillFields --> N_ReplaceSpaceswithZerosinWaybillFields_Node0 N_ReplaceSpaceswithZerosinWaybillFields_Node1{"The system processes the combined
waybill railroad, station, and
number fields"}:::decision N_ReplaceSpaceswithZerosinWaybillFields_Node1_action["The system should replace all space
characters with zero characters to
create a standardized waybill
reference"]:::main N_ReplaceSpaceswithZerosinWaybillFields_Node1 -- Yes --> N_ReplaceSpaceswithZerosinWaybillFields_Node1_action N_ReplaceSpaceswithZerosinWaybillFields_Node1_action --> E_ReplaceSpaceswithZerosinWaybillFields N_ReplaceSpaceswithZerosinWaybillFields_Node0 -- No --> N_ReplaceSpaceswithZerosinWaybillFields_Node1 N_ReplaceSpaceswithZerosinWaybillFields_Node2{"The system processes the extracted
waybill information"}:::decision N_ReplaceSpaceswithZerosinWaybillFields_Node2_action["All spaces in the waybill
identification fields are replaced
with zeros to create a standardized
waybill key"]:::main N_ReplaceSpaceswithZerosinWaybillFields_Node2 -- Yes --> N_ReplaceSpaceswithZerosinWaybillFields_Node2_action N_ReplaceSpaceswithZerosinWaybillFields_Node2_action --> E_ReplaceSpaceswithZerosinWaybillFields N_ReplaceSpaceswithZerosinWaybillFields_Node1 -- No --> N_ReplaceSpaceswithZerosinWaybillFields_Node2 N_ReplaceSpaceswithZerosinWaybillFields_Node2 -- No --> E_ReplaceSpaceswithZerosinWaybillFields
File: GCX003.cbl
GIVEN:
All waybill reference components have been extracted
WHEN:
System standardizes the waybill reference format
THEN:
All spaces in the combined waybill reference are replaced with zeros
File: GCX003.cbl
GIVEN:
Waybill reference data has been extracted from the container cross-reference record
WHEN:
The system processes the combined waybill railroad, station, and number fields
THEN:
The system should replace all space characters with zero characters to create a standardized waybill reference
File: GCX003.cbl
GIVEN:
Waybill railroad, station, and number have been extracted from the container cross-reference line
WHEN:
The system processes the extracted waybill information
THEN:
All spaces in the waybill identification fields are replaced with zeros to create a standardized waybill key
β Consolidated Acceptance Criteria
- System prepares for next container record → container counter is incremented by 1
- The system completes the storage of container cross-reference data → the system should increment the container counter by one to prepare for processing the next container record
- The system updates the container tracking counter → increment the container counter by 1 and ensure it does not exceed the maximum limit of 30 containers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementContainerCounter(["Start Step"])
E_IncrementContainerCounter(["End Step"])
N_IncrementContainerCounter_Node0{"System prepares for next container
record"}:::decision N_IncrementContainerCounter_Node0_action["Container counter is incremented by
1"]:::main N_IncrementContainerCounter_Node0 -- Yes --> N_IncrementContainerCounter_Node0_action N_IncrementContainerCounter_Node0_action --> E_IncrementContainerCounter S_IncrementContainerCounter --> N_IncrementContainerCounter_Node0 N_IncrementContainerCounter_Node1{"The system completes the storage of
container cross-reference data"}:::decision N_IncrementContainerCounter_Node1_action["The system should increment the
container counter by one to prepare
for processing the next container
record"]:::main N_IncrementContainerCounter_Node1 -- Yes --> N_IncrementContainerCounter_Node1_action N_IncrementContainerCounter_Node1_action --> E_IncrementContainerCounter N_IncrementContainerCounter_Node0 -- No --> N_IncrementContainerCounter_Node1 N_IncrementContainerCounter_Node2{"The system updates the container
tracking counter"}:::decision N_IncrementContainerCounter_Node2_action["Increment the container counter by
1 and ensure it does not exceed the
maximum limit of 30 containers"]:::main N_IncrementContainerCounter_Node2 -- Yes --> N_IncrementContainerCounter_Node2_action N_IncrementContainerCounter_Node2_action --> E_IncrementContainerCounter N_IncrementContainerCounter_Node1 -- No --> N_IncrementContainerCounter_Node2 N_IncrementContainerCounter_Node2 -- No --> E_IncrementContainerCounter
record"}:::decision N_IncrementContainerCounter_Node0_action["Container counter is incremented by
1"]:::main N_IncrementContainerCounter_Node0 -- Yes --> N_IncrementContainerCounter_Node0_action N_IncrementContainerCounter_Node0_action --> E_IncrementContainerCounter S_IncrementContainerCounter --> N_IncrementContainerCounter_Node0 N_IncrementContainerCounter_Node1{"The system completes the storage of
container cross-reference data"}:::decision N_IncrementContainerCounter_Node1_action["The system should increment the
container counter by one to prepare
for processing the next container
record"]:::main N_IncrementContainerCounter_Node1 -- Yes --> N_IncrementContainerCounter_Node1_action N_IncrementContainerCounter_Node1_action --> E_IncrementContainerCounter N_IncrementContainerCounter_Node0 -- No --> N_IncrementContainerCounter_Node1 N_IncrementContainerCounter_Node2{"The system updates the container
tracking counter"}:::decision N_IncrementContainerCounter_Node2_action["Increment the container counter by
1 and ensure it does not exceed the
maximum limit of 30 containers"]:::main N_IncrementContainerCounter_Node2 -- Yes --> N_IncrementContainerCounter_Node2_action N_IncrementContainerCounter_Node2_action --> E_IncrementContainerCounter N_IncrementContainerCounter_Node1 -- No --> N_IncrementContainerCounter_Node2 N_IncrementContainerCounter_Node2 -- No --> E_IncrementContainerCounter
File: GCX003.cbl
GIVEN:
Container cross-reference data has been stored
WHEN:
System prepares for next container record
THEN:
Container counter is incremented by 1
File: GCX003.cbl
GIVEN:
A container cross-reference record has been successfully processed and stored
WHEN:
The system completes the storage of container cross-reference data
THEN:
The system should increment the container counter by one to prepare for processing the next container record
File: GCX003.cbl
GIVEN:
A container has been successfully processed and stored
WHEN:
The system updates the container tracking counter
THEN:
- Increment the container counter by 1
- Ensure it does not exceed the maximum limit of 30 containers
β Consolidated Acceptance Criteria
- System checks processing limits → processing stops if container counter exceeds 30, otherwise processing continues with next record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContainerCounter30(["Start Step"])
E_ContainerCounter30(["End Step"])
N_ContainerCounter30_Node0{"System checks processing limits"}:::decision
N_ContainerCounter30_Node0_action["Processing stops if container
counter exceeds 30, otherwise
processing continues with next
record"]:::main N_ContainerCounter30_Node0 -- Yes --> N_ContainerCounter30_Node0_action N_ContainerCounter30_Node0_action --> E_ContainerCounter30 S_ContainerCounter30 --> N_ContainerCounter30_Node0 N_ContainerCounter30_Node0 -- No --> E_ContainerCounter30
counter exceeds 30, otherwise
processing continues with next
record"]:::main N_ContainerCounter30_Node0 -- Yes --> N_ContainerCounter30_Node0_action N_ContainerCounter30_Node0_action --> E_ContainerCounter30 S_ContainerCounter30 --> N_ContainerCounter30_Node0 N_ContainerCounter30_Node0 -- No --> E_ContainerCounter30
File: GCX003.cbl
GIVEN:
Container counter has been incremented
WHEN:
System checks processing limits
THEN:
Processing stops if container counter exceeds 30, otherwise processing continues with next record
β Consolidated Acceptance Criteria
- System processes the non-container record → record is skipped and system continues to next available record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipNonContainerRecord(["Start Step"])
E_SkipNonContainerRecord(["End Step"])
N_SkipNonContainerRecord_Node0{"System processes the non-container
record"}:::decision N_SkipNonContainerRecord_Node0_action["Record is skipped and system
continues to next available record"]:::main N_SkipNonContainerRecord_Node0 -- Yes --> N_SkipNonContainerRecord_Node0_action N_SkipNonContainerRecord_Node0_action --> E_SkipNonContainerRecord S_SkipNonContainerRecord --> N_SkipNonContainerRecord_Node0 N_SkipNonContainerRecord_Node0 -- No --> E_SkipNonContainerRecord
record"}:::decision N_SkipNonContainerRecord_Node0_action["Record is skipped and system
continues to next available record"]:::main N_SkipNonContainerRecord_Node0 -- Yes --> N_SkipNonContainerRecord_Node0_action N_SkipNonContainerRecord_Node0_action --> E_SkipNonContainerRecord S_SkipNonContainerRecord --> N_SkipNonContainerRecord_Node0 N_SkipNonContainerRecord_Node0 -- No --> E_SkipNonContainerRecord
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Record does not contain 'T/C XREF' in positions 1-8
WHEN:
System processes the non-container record
THEN:
- Record is skipped
- System continues to next available record
β Consolidated Acceptance Criteria
- System evaluates processing results → container processing is successful if first container ID is not spaces or low-values, otherwise no containers are found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnyContainersFound(["Start Step"])
E_AnyContainersFound(["End Step"])
N_AnyContainersFound_Node0{"System evaluates processing results"}:::decision
N_AnyContainersFound_Node0_action["Container processing is successful
if first container ID is not spaces
or low-values, otherwise no
containers are found"]:::main N_AnyContainersFound_Node0 -- Yes --> N_AnyContainersFound_Node0_action N_AnyContainersFound_Node0_action --> E_AnyContainersFound S_AnyContainersFound --> N_AnyContainersFound_Node0 N_AnyContainersFound_Node0 -- No --> E_AnyContainersFound
if first container ID is not spaces
or low-values, otherwise no
containers are found"]:::main N_AnyContainersFound_Node0 -- Yes --> N_AnyContainersFound_Node0_action N_AnyContainersFound_Node0_action --> E_AnyContainersFound S_AnyContainersFound --> N_AnyContainersFound_Node0 N_AnyContainersFound_Node0 -- No --> E_AnyContainersFound
File: GCX003.cbl
GIVEN:
All available inquiry records have been processed
WHEN:
System evaluates processing results
THEN:
Container processing is successful if first container ID is not spaces or low-values, otherwise no containers are found
β Consolidated Acceptance Criteria
- System initializes equipment processing → first container ID from the cross-reference table is set as current equipment ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFirstContainerasCurrentEquipment(["Start Step"])
E_SetFirstContainerasCurrentEquipment(["End Step"])
N_SetFirstContainerasCurrentEquipment_Node0{"System initializes equipment
processing"}:::decision N_SetFirstContainerasCurrentEquipment_Node0_action["First container ID from the
cross-reference table is set as
current equipment ID"]:::main N_SetFirstContainerasCurrentEquipment_Node0 -- Yes --> N_SetFirstContainerasCurrentEquipment_Node0_action N_SetFirstContainerasCurrentEquipment_Node0_action --> E_SetFirstContainerasCurrentEquipment S_SetFirstContainerasCurrentEquipment --> N_SetFirstContainerasCurrentEquipment_Node0 N_SetFirstContainerasCurrentEquipment_Node0 -- No --> E_SetFirstContainerasCurrentEquipment
processing"}:::decision N_SetFirstContainerasCurrentEquipment_Node0_action["First container ID from the
cross-reference table is set as
current equipment ID"]:::main N_SetFirstContainerasCurrentEquipment_Node0 -- Yes --> N_SetFirstContainerasCurrentEquipment_Node0_action N_SetFirstContainerasCurrentEquipment_Node0_action --> E_SetFirstContainerasCurrentEquipment S_SetFirstContainerasCurrentEquipment --> N_SetFirstContainerasCurrentEquipment_Node0 N_SetFirstContainerasCurrentEquipment_Node0 -- No --> E_SetFirstContainerasCurrentEquipment
File: GCX003.cbl
GIVEN:
At least one valid container cross-reference was found
WHEN:
System initializes equipment processing
THEN:
First container ID from the cross-reference table is set as current equipment ID
β Consolidated Acceptance Criteria
- System updates processing status → container found status and container IQ found status are both set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkContainerFoundStatus(["Start Step"])
E_MarkContainerFoundStatus(["End Step"])
N_MarkContainerFoundStatus_Node0{"System updates processing status"}:::decision
N_MarkContainerFoundStatus_Node0_action["Container found status and
container IQ found status are both
set to true"]:::main N_MarkContainerFoundStatus_Node0 -- Yes --> N_MarkContainerFoundStatus_Node0_action N_MarkContainerFoundStatus_Node0_action --> E_MarkContainerFoundStatus S_MarkContainerFoundStatus --> N_MarkContainerFoundStatus_Node0 N_MarkContainerFoundStatus_Node0 -- No --> E_MarkContainerFoundStatus
container IQ found status are both
set to true"]:::main N_MarkContainerFoundStatus_Node0 -- Yes --> N_MarkContainerFoundStatus_Node0_action N_MarkContainerFoundStatus_Node0_action --> E_MarkContainerFoundStatus S_MarkContainerFoundStatus --> N_MarkContainerFoundStatus_Node0 N_MarkContainerFoundStatus_Node0 -- No --> E_MarkContainerFoundStatus
File: GCX003.cbl
GIVEN:
First container has been set as current equipment
WHEN:
System updates processing status
THEN:
- Container found status
- Container iq found status are both set to true
β Consolidated Acceptance Criteria
- System updates processing status → container not found status and container IQ not found status are both set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkNoContainersFoundStatus(["Start Step"])
E_MarkNoContainersFoundStatus(["End Step"])
N_MarkNoContainersFoundStatus_Node0{"System updates processing status"}:::decision
N_MarkNoContainersFoundStatus_Node0_action["Container not found status and
container IQ not found status are
both set to true"]:::main N_MarkNoContainersFoundStatus_Node0 -- Yes --> N_MarkNoContainersFoundStatus_Node0_action N_MarkNoContainersFoundStatus_Node0_action --> E_MarkNoContainersFoundStatus S_MarkNoContainersFoundStatus --> N_MarkNoContainersFoundStatus_Node0 N_MarkNoContainersFoundStatus_Node0 -- No --> E_MarkNoContainersFoundStatus
container IQ not found status are
both set to true"]:::main N_MarkNoContainersFoundStatus_Node0 -- Yes --> N_MarkNoContainersFoundStatus_Node0_action N_MarkNoContainersFoundStatus_Node0_action --> E_MarkNoContainersFoundStatus S_MarkNoContainersFoundStatus --> N_MarkNoContainersFoundStatus_Node0 N_MarkNoContainersFoundStatus_Node0 -- No --> E_MarkNoContainersFoundStatus
File: GCX003.cbl
GIVEN:
No valid container cross-references were found
WHEN:
System updates processing status
THEN:
- Container not found status
- Container iq not found status are both set to true
β Consolidated Acceptance Criteria
- The system reads positions 1-8 of the record → if the record type equals 'T/C XREF' then process as container cross-reference record, otherwise skip to next record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckRecordTypeatPosition18(["Start Step"])
E_CheckRecordTypeatPosition18(["End Step"])
N_CheckRecordTypeatPosition18_Node0{"The system reads positions 1-8 of
the record"}:::decision N_CheckRecordTypeatPosition18_Node0_action["If the record type equals TC XREF
then process as container
cross-reference record, otherwise
skip to next record"]:::main N_CheckRecordTypeatPosition18_Node0 -- Yes --> N_CheckRecordTypeatPosition18_Node0_action N_CheckRecordTypeatPosition18_Node0_action --> E_CheckRecordTypeatPosition18 S_CheckRecordTypeatPosition18 --> N_CheckRecordTypeatPosition18_Node0 N_CheckRecordTypeatPosition18_Node0 -- No --> E_CheckRecordTypeatPosition18
the record"}:::decision N_CheckRecordTypeatPosition18_Node0_action["If the record type equals TC XREF
then process as container
cross-reference record, otherwise
skip to next record"]:::main N_CheckRecordTypeatPosition18_Node0 -- Yes --> N_CheckRecordTypeatPosition18_Node0_action N_CheckRecordTypeatPosition18_Node0_action --> E_CheckRecordTypeatPosition18 S_CheckRecordTypeatPosition18 --> N_CheckRecordTypeatPosition18_Node0 N_CheckRecordTypeatPosition18_Node0 -- No --> E_CheckRecordTypeatPosition18
File: GCX003.cbl
GIVEN:
A database record from the freight inquiry system is being processed
WHEN:
The system reads positions 1-8 of the record
THEN:
If the record type equals 'T/C XREF' then process as container cross-reference record, otherwise skip to next record
β Consolidated Acceptance Criteria
- The system processes waybill reference information → extract railroad number from positions 10-12, station number from positions 14-19, and waybill number from positions 21-26
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractAssociatedWaybillInformation(["Start Step"])
E_ExtractAssociatedWaybillInformation(["End Step"])
N_ExtractAssociatedWaybillInformation_Node0{"The system processes waybill
reference information"}:::decision N_ExtractAssociatedWaybillInformation_Node0_action["Extract railroad number from
positions 10-12, station number from
positions 14-19, and waybill number
from positions 21-26"]:::main N_ExtractAssociatedWaybillInformation_Node0 -- Yes --> N_ExtractAssociatedWaybillInformation_Node0_action N_ExtractAssociatedWaybillInformation_Node0_action --> E_ExtractAssociatedWaybillInformation S_ExtractAssociatedWaybillInformation --> N_ExtractAssociatedWaybillInformation_Node0 N_ExtractAssociatedWaybillInformation_Node0 -- No --> E_ExtractAssociatedWaybillInformation
reference information"}:::decision N_ExtractAssociatedWaybillInformation_Node0_action["Extract railroad number from
positions 10-12, station number from
positions 14-19, and waybill number
from positions 21-26"]:::main N_ExtractAssociatedWaybillInformation_Node0 -- Yes --> N_ExtractAssociatedWaybillInformation_Node0_action N_ExtractAssociatedWaybillInformation_Node0_action --> E_ExtractAssociatedWaybillInformation S_ExtractAssociatedWaybillInformation --> N_ExtractAssociatedWaybillInformation_Node0 N_ExtractAssociatedWaybillInformation_Node0 -- No --> E_ExtractAssociatedWaybillInformation
File: GCX003.cbl
GIVEN:
A container ID has been successfully extracted from the record
WHEN:
The system processes waybill reference information
THEN:
Extract railroad number from positions 10-12, station number from positions 14-19, and waybill number from positions 21-26
β Consolidated Acceptance Criteria
- The waybill number contains space characters → replace all space characters with zeroes in the waybill number to ensure consistent numeric format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReplaceSpaceswithZeroesinWaybill(["Start Step"])
E_ReplaceSpaceswithZeroesinWaybill(["End Step"])
N_ReplaceSpaceswithZeroesinWaybill_Node0{"The waybill number contains space
characters"}:::decision N_ReplaceSpaceswithZeroesinWaybill_Node0_action["Replace all space characters with
zeroes in the waybill number to
ensure consistent numeric format"]:::main N_ReplaceSpaceswithZeroesinWaybill_Node0 -- Yes --> N_ReplaceSpaceswithZeroesinWaybill_Node0_action N_ReplaceSpaceswithZeroesinWaybill_Node0_action --> E_ReplaceSpaceswithZeroesinWaybill S_ReplaceSpaceswithZeroesinWaybill --> N_ReplaceSpaceswithZeroesinWaybill_Node0 N_ReplaceSpaceswithZeroesinWaybill_Node0 -- No --> E_ReplaceSpaceswithZeroesinWaybill
characters"}:::decision N_ReplaceSpaceswithZeroesinWaybill_Node0_action["Replace all space characters with
zeroes in the waybill number to
ensure consistent numeric format"]:::main N_ReplaceSpaceswithZeroesinWaybill_Node0 -- Yes --> N_ReplaceSpaceswithZeroesinWaybill_Node0_action N_ReplaceSpaceswithZeroesinWaybill_Node0_action --> E_ReplaceSpaceswithZeroesinWaybill S_ReplaceSpaceswithZeroesinWaybill --> N_ReplaceSpaceswithZeroesinWaybill_Node0 N_ReplaceSpaceswithZeroesinWaybill_Node0 -- No --> E_ReplaceSpaceswithZeroesinWaybill
File: GCX003.cbl
GIVEN:
Waybill information has been extracted from the database record
WHEN:
The waybill number contains space characters
THEN:
Replace all space characters with zeroes in the waybill number to ensure consistent numeric format
β Consolidated Acceptance Criteria
- If the container processing results → if no valid containers were found or the first container ID is spaces or low-values, then set container status to not found, otherwise set container status to found and mark as IQ container type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkContainerasInvalid(["Start Step"])
E_MarkContainerasInvalid(["End Step"])
N_MarkContainerasInvalid_Node0{"The system evaluates the container
processing results"}:::decision N_MarkContainerasInvalid_Node0_action["If no valid containers were found
or the first container ID is spaces
or low-values, then set container
status to not found, otherwise set
container status to found and mark
as IQ container type"]:::main N_MarkContainerasInvalid_Node0 -- Yes --> N_MarkContainerasInvalid_Node0_action N_MarkContainerasInvalid_Node0_action --> E_MarkContainerasInvalid S_MarkContainerasInvalid --> N_MarkContainerasInvalid_Node0 N_MarkContainerasInvalid_Node0 -- No --> E_MarkContainerasInvalid
processing results"}:::decision N_MarkContainerasInvalid_Node0_action["If no valid containers were found
or the first container ID is spaces
or low-values, then set container
status to not found, otherwise set
container status to found and mark
as IQ container type"]:::main N_MarkContainerasInvalid_Node0 -- Yes --> N_MarkContainerasInvalid_Node0_action N_MarkContainerasInvalid_Node0_action --> E_MarkContainerasInvalid S_MarkContainerasInvalid --> N_MarkContainerasInvalid_Node0 N_MarkContainerasInvalid_Node0 -- No --> E_MarkContainerasInvalid
File: GCX003.cbl
GIVEN:
Container processing has been completed for all available records
WHEN:
The system evaluates the container processing results
THEN:
- If no valid containers were found or the first container id is spaces or low-values, then set container status to not found, otherwise set container status to found
- Mark as iq container type
β Consolidated Acceptance Criteria
- The system checks if this is the first FWCARGET call OR the current equipment ID is different from the previously held equipment ID → if either condition is true, proceed with full waybill retrieval process, otherwise skip to exit
- The system checks if this is the first FWCARGET call OR the current equipment ID is different from the previously held equipment ID → the system proceeds with waybill retrieval if either condition is true, otherwise skips the retrieval process
- The system checks if this is the first FWCARGET call or if the current equipment ID differs from the previously held equipment ID → the system proceeds with parameter initialization if it's a first call or different equipment, otherwise exits the process
- The system checks if this is the first call to the waybill retrieval function OR the current equipment ID is different from the previously held equipment ID → if it is the first call OR the equipment ID has changed, proceed with waybill retrieval processing, otherwise skip the retrieval and exit
- The system processes the equipment ID → store the current equipment ID as the held equipment ID for future comparison AND set the processing flag to indicate this is no longer the first call
- The system checks if this is the first call to FWCARGET or if the current equipment ID differs from the previously held equipment ID → the system proceeds with parameter initialization if it's a first call or new equipment ID, otherwise skips to exit
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FirstCallorDifferentEquipmentID(["Start Step"])
E_FirstCallorDifferentEquipmentID(["End Step"])
N_FirstCallorDifferentEquipmentID_Node0{"The system checks if this is the
first FWCARGET call OR the current
equipment ID is different from the
previously held equipment ID"}:::decision N_FirstCallorDifferentEquipmentID_Node0_action["If either condition is true,
proceed with full waybill retrieval
process, otherwise skip to exit"]:::main N_FirstCallorDifferentEquipmentID_Node0 -- Yes --> N_FirstCallorDifferentEquipmentID_Node0_action N_FirstCallorDifferentEquipmentID_Node0_action --> E_FirstCallorDifferentEquipmentID S_FirstCallorDifferentEquipmentID --> N_FirstCallorDifferentEquipmentID_Node0 N_FirstCallorDifferentEquipmentID_Node1{"The system checks if this is the
first FWCARGET call OR the current
equipment ID is different from the
previously held equipment ID"}:::decision N_FirstCallorDifferentEquipmentID_Node1_action["The system proceeds with waybill
retrieval if either condition is
true, otherwise skips the retrieval
process"]:::main N_FirstCallorDifferentEquipmentID_Node1 -- Yes --> N_FirstCallorDifferentEquipmentID_Node1_action N_FirstCallorDifferentEquipmentID_Node1_action --> E_FirstCallorDifferentEquipmentID N_FirstCallorDifferentEquipmentID_Node0 -- No --> N_FirstCallorDifferentEquipmentID_Node1 N_FirstCallorDifferentEquipmentID_Node2{"The system checks if this is the
first FWCARGET call or if the
current equipment ID differs from
the previously held equipment ID"}:::decision N_FirstCallorDifferentEquipmentID_Node2_action["The system proceeds with parameter
initialization if it s a first call
or different equipment, otherwise
exits the process"]:::main N_FirstCallorDifferentEquipmentID_Node2 -- Yes --> N_FirstCallorDifferentEquipmentID_Node2_action N_FirstCallorDifferentEquipmentID_Node2_action --> E_FirstCallorDifferentEquipmentID N_FirstCallorDifferentEquipmentID_Node1 -- No --> N_FirstCallorDifferentEquipmentID_Node2 N_FirstCallorDifferentEquipmentID_Node3{"The system checks if this is the
first call to the waybill retrieval
function OR the current equipment ID
is different from the previously
held equipment ID"}:::decision N_FirstCallorDifferentEquipmentID_Node3_action["If it is the first call OR the
equipment ID has changed, proceed
with waybill retrieval processing,
otherwise skip the retrieval and
exit"]:::main N_FirstCallorDifferentEquipmentID_Node3 -- Yes --> N_FirstCallorDifferentEquipmentID_Node3_action N_FirstCallorDifferentEquipmentID_Node3_action --> E_FirstCallorDifferentEquipmentID N_FirstCallorDifferentEquipmentID_Node2 -- No --> N_FirstCallorDifferentEquipmentID_Node3 N_FirstCallorDifferentEquipmentID_Node4{"The system processes the equipment
ID"}:::decision N_FirstCallorDifferentEquipmentID_Node4_action["Store the current equipment ID as
the held equipment ID for future
comparison AND set the processing
flag to indicate this is no longer
the first call"]:::main N_FirstCallorDifferentEquipmentID_Node4 -- Yes --> N_FirstCallorDifferentEquipmentID_Node4_action N_FirstCallorDifferentEquipmentID_Node4_action --> E_FirstCallorDifferentEquipmentID N_FirstCallorDifferentEquipmentID_Node3 -- No --> N_FirstCallorDifferentEquipmentID_Node4 N_FirstCallorDifferentEquipmentID_Node5{"The system checks if this is the
first call to FWCARGET or if the
current equipment ID differs from
the previously held equipment ID"}:::decision N_FirstCallorDifferentEquipmentID_Node5_action["The system proceeds with parameter
initialization if it s a first call
or new equipment ID, otherwise skips
to exit"]:::main N_FirstCallorDifferentEquipmentID_Node5 -- Yes --> N_FirstCallorDifferentEquipmentID_Node5_action N_FirstCallorDifferentEquipmentID_Node5_action --> E_FirstCallorDifferentEquipmentID N_FirstCallorDifferentEquipmentID_Node4 -- No --> N_FirstCallorDifferentEquipmentID_Node5 N_FirstCallorDifferentEquipmentID_Node5 -- No --> E_FirstCallorDifferentEquipmentID
first FWCARGET call OR the current
equipment ID is different from the
previously held equipment ID"}:::decision N_FirstCallorDifferentEquipmentID_Node0_action["If either condition is true,
proceed with full waybill retrieval
process, otherwise skip to exit"]:::main N_FirstCallorDifferentEquipmentID_Node0 -- Yes --> N_FirstCallorDifferentEquipmentID_Node0_action N_FirstCallorDifferentEquipmentID_Node0_action --> E_FirstCallorDifferentEquipmentID S_FirstCallorDifferentEquipmentID --> N_FirstCallorDifferentEquipmentID_Node0 N_FirstCallorDifferentEquipmentID_Node1{"The system checks if this is the
first FWCARGET call OR the current
equipment ID is different from the
previously held equipment ID"}:::decision N_FirstCallorDifferentEquipmentID_Node1_action["The system proceeds with waybill
retrieval if either condition is
true, otherwise skips the retrieval
process"]:::main N_FirstCallorDifferentEquipmentID_Node1 -- Yes --> N_FirstCallorDifferentEquipmentID_Node1_action N_FirstCallorDifferentEquipmentID_Node1_action --> E_FirstCallorDifferentEquipmentID N_FirstCallorDifferentEquipmentID_Node0 -- No --> N_FirstCallorDifferentEquipmentID_Node1 N_FirstCallorDifferentEquipmentID_Node2{"The system checks if this is the
first FWCARGET call or if the
current equipment ID differs from
the previously held equipment ID"}:::decision N_FirstCallorDifferentEquipmentID_Node2_action["The system proceeds with parameter
initialization if it s a first call
or different equipment, otherwise
exits the process"]:::main N_FirstCallorDifferentEquipmentID_Node2 -- Yes --> N_FirstCallorDifferentEquipmentID_Node2_action N_FirstCallorDifferentEquipmentID_Node2_action --> E_FirstCallorDifferentEquipmentID N_FirstCallorDifferentEquipmentID_Node1 -- No --> N_FirstCallorDifferentEquipmentID_Node2 N_FirstCallorDifferentEquipmentID_Node3{"The system checks if this is the
first call to the waybill retrieval
function OR the current equipment ID
is different from the previously
held equipment ID"}:::decision N_FirstCallorDifferentEquipmentID_Node3_action["If it is the first call OR the
equipment ID has changed, proceed
with waybill retrieval processing,
otherwise skip the retrieval and
exit"]:::main N_FirstCallorDifferentEquipmentID_Node3 -- Yes --> N_FirstCallorDifferentEquipmentID_Node3_action N_FirstCallorDifferentEquipmentID_Node3_action --> E_FirstCallorDifferentEquipmentID N_FirstCallorDifferentEquipmentID_Node2 -- No --> N_FirstCallorDifferentEquipmentID_Node3 N_FirstCallorDifferentEquipmentID_Node4{"The system processes the equipment
ID"}:::decision N_FirstCallorDifferentEquipmentID_Node4_action["Store the current equipment ID as
the held equipment ID for future
comparison AND set the processing
flag to indicate this is no longer
the first call"]:::main N_FirstCallorDifferentEquipmentID_Node4 -- Yes --> N_FirstCallorDifferentEquipmentID_Node4_action N_FirstCallorDifferentEquipmentID_Node4_action --> E_FirstCallorDifferentEquipmentID N_FirstCallorDifferentEquipmentID_Node3 -- No --> N_FirstCallorDifferentEquipmentID_Node4 N_FirstCallorDifferentEquipmentID_Node5{"The system checks if this is the
first call to FWCARGET or if the
current equipment ID differs from
the previously held equipment ID"}:::decision N_FirstCallorDifferentEquipmentID_Node5_action["The system proceeds with parameter
initialization if it s a first call
or new equipment ID, otherwise skips
to exit"]:::main N_FirstCallorDifferentEquipmentID_Node5 -- Yes --> N_FirstCallorDifferentEquipmentID_Node5_action N_FirstCallorDifferentEquipmentID_Node5_action --> E_FirstCallorDifferentEquipmentID N_FirstCallorDifferentEquipmentID_Node4 -- No --> N_FirstCallorDifferentEquipmentID_Node5 N_FirstCallorDifferentEquipmentID_Node5 -- No --> E_FirstCallorDifferentEquipmentID
File: GCX003.cbl
GIVEN:
A car waybill retrieval request is initiated
WHEN:
The system checks if this is the first FWCARGET call OR the current equipment ID is different from the previously held equipment ID
THEN:
If either condition is true, proceed with full waybill retrieval process, otherwise skip to exit
File: GCX003.cbl
GIVEN:
A waybill retrieval request is initiated for an equipment ID
WHEN:
The system checks if this is the first FWCARGET call OR the current equipment ID is different from the previously held equipment ID
THEN:
The system proceeds with waybill retrieval if either condition is true, otherwise skips the retrieval process
File: GCX003.cbl
GIVEN:
A waybill retrieval request is initiated for an equipment ID
WHEN:
The system checks if this is the first FWCARGET call or if the current equipment ID differs from the previously held equipment ID
THEN:
The system proceeds with parameter initialization if it's a first call or different equipment, otherwise exits the process
File: GCX003.cbl
GIVEN:
A waybill retrieval request is initiated for equipment processing
WHEN:
The system checks if this is the first call to the waybill retrieval function OR the current equipment ID is different from the previously held equipment ID
THEN:
- If it is the first call or the equipment id has changed, proceed with waybill retrieval processing, otherwise skip the retrieval
- Exit
File: GCX003.cbl
GIVEN:
Waybill retrieval is proceeding for an equipment ID
WHEN:
The system processes the equipment ID
THEN:
- Store the current equipment id as the held equipment id for future comparison
- Set the processing flag to indicate this is no longer the first call
File: GCX003.cbl
GIVEN:
A waybill retrieval request is initiated for an equipment ID
WHEN:
The system checks if this is the first call to FWCARGET or if the current equipment ID differs from the previously held equipment ID
THEN:
The system proceeds with parameter initialization if it's a first call or new equipment ID, otherwise skips to exit
β Consolidated Acceptance Criteria
- Setting up the car search criteria → configure to search all car types except types 98 and 99, include all status types, exclude EDI incomplete records, include temporary waybills, exclude corrector waybills, return lead waybill, and use latest waybill date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSearchCriteriaAllTypesExcept9899(["Start Step"])
E_SetSearchCriteriaAllTypesExcept9899(["End Step"])
N_SetSearchCriteriaAllTypesExcept9899_Node0{"Setting up the car search criteria"}:::decision
N_SetSearchCriteriaAllTypesExcept9899_Node0_action["Configure to search all car types
except types 98 and 99, include all
status types, exclude EDI incomplete
records, include temporary waybills,
exclude corrector waybills, return
lead waybill, and use latest waybill
date"]:::main N_SetSearchCriteriaAllTypesExcept9899_Node0 -- Yes --> N_SetSearchCriteriaAllTypesExcept9899_Node0_action N_SetSearchCriteriaAllTypesExcept9899_Node0_action --> E_SetSearchCriteriaAllTypesExcept9899 S_SetSearchCriteriaAllTypesExcept9899 --> N_SetSearchCriteriaAllTypesExcept9899_Node0 N_SetSearchCriteriaAllTypesExcept9899_Node0 -- No --> E_SetSearchCriteriaAllTypesExcept9899
except types 98 and 99, include all
status types, exclude EDI incomplete
records, include temporary waybills,
exclude corrector waybills, return
lead waybill, and use latest waybill
date"]:::main N_SetSearchCriteriaAllTypesExcept9899_Node0 -- Yes --> N_SetSearchCriteriaAllTypesExcept9899_Node0_action N_SetSearchCriteriaAllTypesExcept9899_Node0_action --> E_SetSearchCriteriaAllTypesExcept9899 S_SetSearchCriteriaAllTypesExcept9899 --> N_SetSearchCriteriaAllTypesExcept9899_Node0 N_SetSearchCriteriaAllTypesExcept9899_Node0 -- No --> E_SetSearchCriteriaAllTypesExcept9899
File: GCX003.cbl
GIVEN:
Waybill retrieval parameters need to be initialized
WHEN:
Setting up the car search criteria
THEN:
- Configure to search all car types except types 98
- 99, include all status types, exclude edi incomplete records, include temporary waybills, exclude corrector waybills, return lead waybill, and use latest waybill date
β Consolidated Acceptance Criteria
- The system checks if the haulage right carrier field contains data → if haulage right carrier is spaces, mark as done and proceed to result processing, otherwise continue with EDI completion check
- The system examines the haulage right carrier field in the waybill → if haulage right carrier is spaces, the system continues retrieval loop; otherwise proceeds to EDI completion check
- The system checks if the haulage right carrier field contains data → if haulage right carrier is blank or spaces, accept the waybill as found, otherwise perform additional EDI completion checks
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HasHaulageRightCarrier(["Start Step"])
E_HasHaulageRightCarrier(["End Step"])
N_HasHaulageRightCarrier_Node0{"The system checks if the haulage
right carrier field contains data"}:::decision N_HasHaulageRightCarrier_Node0_action["If haulage right carrier is spaces,
mark as done and proceed to result
processing, otherwise continue with
EDI completion check"]:::main N_HasHaulageRightCarrier_Node0 -- Yes --> N_HasHaulageRightCarrier_Node0_action N_HasHaulageRightCarrier_Node0_action --> E_HasHaulageRightCarrier S_HasHaulageRightCarrier --> N_HasHaulageRightCarrier_Node0 N_HasHaulageRightCarrier_Node1{"The system examines the haulage
right carrier field in the waybill"}:::decision N_HasHaulageRightCarrier_Node1_action["If haulage right carrier is spaces,
the system continues retrieval loop
otherwise proceeds to EDI completion
check"]:::main N_HasHaulageRightCarrier_Node1 -- Yes --> N_HasHaulageRightCarrier_Node1_action N_HasHaulageRightCarrier_Node1_action --> E_HasHaulageRightCarrier N_HasHaulageRightCarrier_Node0 -- No --> N_HasHaulageRightCarrier_Node1 N_HasHaulageRightCarrier_Node2{"The system checks if the haulage
right carrier field contains data"}:::decision N_HasHaulageRightCarrier_Node2_action["If haulage right carrier is blank
or spaces, accept the waybill as
found, otherwise perform additional
EDI completion checks"]:::main N_HasHaulageRightCarrier_Node2 -- Yes --> N_HasHaulageRightCarrier_Node2_action N_HasHaulageRightCarrier_Node2_action --> E_HasHaulageRightCarrier N_HasHaulageRightCarrier_Node1 -- No --> N_HasHaulageRightCarrier_Node2 N_HasHaulageRightCarrier_Node2 -- No --> E_HasHaulageRightCarrier
right carrier field contains data"}:::decision N_HasHaulageRightCarrier_Node0_action["If haulage right carrier is spaces,
mark as done and proceed to result
processing, otherwise continue with
EDI completion check"]:::main N_HasHaulageRightCarrier_Node0 -- Yes --> N_HasHaulageRightCarrier_Node0_action N_HasHaulageRightCarrier_Node0_action --> E_HasHaulageRightCarrier S_HasHaulageRightCarrier --> N_HasHaulageRightCarrier_Node0 N_HasHaulageRightCarrier_Node1{"The system examines the haulage
right carrier field in the waybill"}:::decision N_HasHaulageRightCarrier_Node1_action["If haulage right carrier is spaces,
the system continues retrieval loop
otherwise proceeds to EDI completion
check"]:::main N_HasHaulageRightCarrier_Node1 -- Yes --> N_HasHaulageRightCarrier_Node1_action N_HasHaulageRightCarrier_Node1_action --> E_HasHaulageRightCarrier N_HasHaulageRightCarrier_Node0 -- No --> N_HasHaulageRightCarrier_Node1 N_HasHaulageRightCarrier_Node2{"The system checks if the haulage
right carrier field contains data"}:::decision N_HasHaulageRightCarrier_Node2_action["If haulage right carrier is blank
or spaces, accept the waybill as
found, otherwise perform additional
EDI completion checks"]:::main N_HasHaulageRightCarrier_Node2 -- Yes --> N_HasHaulageRightCarrier_Node2_action N_HasHaulageRightCarrier_Node2_action --> E_HasHaulageRightCarrier N_HasHaulageRightCarrier_Node1 -- No --> N_HasHaulageRightCarrier_Node2 N_HasHaulageRightCarrier_Node2 -- No --> E_HasHaulageRightCarrier
File: GCX003.cbl
GIVEN:
A waybill has been successfully retrieved
WHEN:
The system checks if the haulage right carrier field contains data
THEN:
- If haulage right carrier is spaces, mark as done
- Proceed to result processing, otherwise continue with edi completion check
File: GCX003.cbl
GIVEN:
A waybill has been successfully retrieved
WHEN:
The system examines the haulage right carrier field in the waybill
THEN:
If haulage right carrier is spaces, the system continues retrieval loop; otherwise proceeds to EDI completion check
File: GCX003.cbl
GIVEN:
A waybill record is found in the primary system
WHEN:
The system checks if the haulage right carrier field contains data
THEN:
If haulage right carrier is blank or spaces, accept the waybill as found, otherwise perform additional EDI completion checks
β Consolidated Acceptance Criteria
- The system checks the EDI completion 418 release flag → if EDI completion 418 release equals 'Y', mark as done and proceed to result processing, otherwise check for duplicate waybill key
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EDICompleteRelease(["Start Step"])
E_EDICompleteRelease(["End Step"])
N_EDICompleteRelease_Node0{"The system checks the EDI
completion 418 release flag"}:::decision N_EDICompleteRelease_Node0_action["If EDI completion 418 release
equals Y , mark as done and proceed
to result processing, otherwise
check for duplicate waybill key"]:::main N_EDICompleteRelease_Node0 -- Yes --> N_EDICompleteRelease_Node0_action N_EDICompleteRelease_Node0_action --> E_EDICompleteRelease S_EDICompleteRelease --> N_EDICompleteRelease_Node0 N_EDICompleteRelease_Node0 -- No --> E_EDICompleteRelease
completion 418 release flag"}:::decision N_EDICompleteRelease_Node0_action["If EDI completion 418 release
equals Y , mark as done and proceed
to result processing, otherwise
check for duplicate waybill key"]:::main N_EDICompleteRelease_Node0 -- Yes --> N_EDICompleteRelease_Node0_action N_EDICompleteRelease_Node0_action --> E_EDICompleteRelease S_EDICompleteRelease --> N_EDICompleteRelease_Node0 N_EDICompleteRelease_Node0 -- No --> E_EDICompleteRelease
File: GCX003.cbl
GIVEN:
A waybill with haulage right carrier has been retrieved
WHEN:
The system checks the EDI completion 418 release flag
THEN:
- If edi completion 418 release equals 'y', mark as done
- Proceed to result processing, otherwise check for duplicate waybill key
β Consolidated Acceptance Criteria
- The system compares the current FWBX key feedback with the stored previous FWBX key feedback → if the keys match, set waybill not found status and mark as done, otherwise update the stored key and set previous status waybill date for next iteration
- The system compares the current waybill key with the previously stored feedback key → if keys match, the search is terminated as not found, otherwise the system continues with previous status search
- The system compares the current waybill feedback key with the previously processed waybill feedback key → if the current waybill feedback key matches the previous waybill feedback key, set status to not found and stop processing, otherwise continue with previous waybill date processing
- The system compares the current FWBX key feedback with the previously stored key → if the keys match, the system marks as not found to exit the loop; otherwise updates the stored key and continues
- The system compares the current waybill key feedback with the previously stored waybill key feedback → if the keys are identical, mark waybill as not found and exit, otherwise update the stored key and continue with previous status search
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SameWaybillKeyasPrevious(["Start Step"])
E_SameWaybillKeyasPrevious(["End Step"])
N_SameWaybillKeyasPrevious_Node0{"The system compares the current
FWBX key feedback with the stored
previous FWBX key feedback"}:::decision N_SameWaybillKeyasPrevious_Node0_action["If the keys match, set waybill not
found status and mark as done,
otherwise update the stored key and
set previous status waybill date for
next iteration"]:::main N_SameWaybillKeyasPrevious_Node0 -- Yes --> N_SameWaybillKeyasPrevious_Node0_action N_SameWaybillKeyasPrevious_Node0_action --> E_SameWaybillKeyasPrevious S_SameWaybillKeyasPrevious --> N_SameWaybillKeyasPrevious_Node0 N_SameWaybillKeyasPrevious_Node1{"The system compares the current
waybill key with the previously
stored feedback key"}:::decision N_SameWaybillKeyasPrevious_Node1_action["If keys match, the search is
terminated as not found, otherwise
the system continues with previous
status search"]:::main N_SameWaybillKeyasPrevious_Node1 -- Yes --> N_SameWaybillKeyasPrevious_Node1_action N_SameWaybillKeyasPrevious_Node1_action --> E_SameWaybillKeyasPrevious N_SameWaybillKeyasPrevious_Node0 -- No --> N_SameWaybillKeyasPrevious_Node1 N_SameWaybillKeyasPrevious_Node2{"The system compares the current
waybill feedback key with the
previously processed waybill
feedback key"}:::decision N_SameWaybillKeyasPrevious_Node2_action["If the current waybill feedback key
matches the previous waybill
feedback key, set status to not
found and stop processing, otherwise
continue with previous waybill date
processing"]:::main N_SameWaybillKeyasPrevious_Node2 -- Yes --> N_SameWaybillKeyasPrevious_Node2_action N_SameWaybillKeyasPrevious_Node2_action --> E_SameWaybillKeyasPrevious N_SameWaybillKeyasPrevious_Node1 -- No --> N_SameWaybillKeyasPrevious_Node2 N_SameWaybillKeyasPrevious_Node3{"The system compares the current
FWBX key feedback with the
previously stored key"}:::decision N_SameWaybillKeyasPrevious_Node3_action["If the keys match, the system marks
as not found to exit the loop
otherwise updates the stored key and
continues"]:::main N_SameWaybillKeyasPrevious_Node3 -- Yes --> N_SameWaybillKeyasPrevious_Node3_action N_SameWaybillKeyasPrevious_Node3_action --> E_SameWaybillKeyasPrevious N_SameWaybillKeyasPrevious_Node2 -- No --> N_SameWaybillKeyasPrevious_Node3 N_SameWaybillKeyasPrevious_Node4{"The system compares the current
waybill key feedback with the
previously stored waybill key
feedback"}:::decision N_SameWaybillKeyasPrevious_Node4_action["If the keys are identical, mark
waybill as not found and exit,
otherwise update the stored key and
continue with previous status search"]:::main N_SameWaybillKeyasPrevious_Node4 -- Yes --> N_SameWaybillKeyasPrevious_Node4_action N_SameWaybillKeyasPrevious_Node4_action --> E_SameWaybillKeyasPrevious N_SameWaybillKeyasPrevious_Node3 -- No --> N_SameWaybillKeyasPrevious_Node4 N_SameWaybillKeyasPrevious_Node4 -- No --> E_SameWaybillKeyasPrevious
FWBX key feedback with the stored
previous FWBX key feedback"}:::decision N_SameWaybillKeyasPrevious_Node0_action["If the keys match, set waybill not
found status and mark as done,
otherwise update the stored key and
set previous status waybill date for
next iteration"]:::main N_SameWaybillKeyasPrevious_Node0 -- Yes --> N_SameWaybillKeyasPrevious_Node0_action N_SameWaybillKeyasPrevious_Node0_action --> E_SameWaybillKeyasPrevious S_SameWaybillKeyasPrevious --> N_SameWaybillKeyasPrevious_Node0 N_SameWaybillKeyasPrevious_Node1{"The system compares the current
waybill key with the previously
stored feedback key"}:::decision N_SameWaybillKeyasPrevious_Node1_action["If keys match, the search is
terminated as not found, otherwise
the system continues with previous
status search"]:::main N_SameWaybillKeyasPrevious_Node1 -- Yes --> N_SameWaybillKeyasPrevious_Node1_action N_SameWaybillKeyasPrevious_Node1_action --> E_SameWaybillKeyasPrevious N_SameWaybillKeyasPrevious_Node0 -- No --> N_SameWaybillKeyasPrevious_Node1 N_SameWaybillKeyasPrevious_Node2{"The system compares the current
waybill feedback key with the
previously processed waybill
feedback key"}:::decision N_SameWaybillKeyasPrevious_Node2_action["If the current waybill feedback key
matches the previous waybill
feedback key, set status to not
found and stop processing, otherwise
continue with previous waybill date
processing"]:::main N_SameWaybillKeyasPrevious_Node2 -- Yes --> N_SameWaybillKeyasPrevious_Node2_action N_SameWaybillKeyasPrevious_Node2_action --> E_SameWaybillKeyasPrevious N_SameWaybillKeyasPrevious_Node1 -- No --> N_SameWaybillKeyasPrevious_Node2 N_SameWaybillKeyasPrevious_Node3{"The system compares the current
FWBX key feedback with the
previously stored key"}:::decision N_SameWaybillKeyasPrevious_Node3_action["If the keys match, the system marks
as not found to exit the loop
otherwise updates the stored key and
continues"]:::main N_SameWaybillKeyasPrevious_Node3 -- Yes --> N_SameWaybillKeyasPrevious_Node3_action N_SameWaybillKeyasPrevious_Node3_action --> E_SameWaybillKeyasPrevious N_SameWaybillKeyasPrevious_Node2 -- No --> N_SameWaybillKeyasPrevious_Node3 N_SameWaybillKeyasPrevious_Node4{"The system compares the current
waybill key feedback with the
previously stored waybill key
feedback"}:::decision N_SameWaybillKeyasPrevious_Node4_action["If the keys are identical, mark
waybill as not found and exit,
otherwise update the stored key and
continue with previous status search"]:::main N_SameWaybillKeyasPrevious_Node4 -- Yes --> N_SameWaybillKeyasPrevious_Node4_action N_SameWaybillKeyasPrevious_Node4_action --> E_SameWaybillKeyasPrevious N_SameWaybillKeyasPrevious_Node3 -- No --> N_SameWaybillKeyasPrevious_Node4 N_SameWaybillKeyasPrevious_Node4 -- No --> E_SameWaybillKeyasPrevious
File: GCX003.cbl
GIVEN:
A waybill without EDI completion release has been found
WHEN:
The system compares the current FWBX key feedback with the stored previous FWBX key feedback
THEN:
- If the keys match, set waybill not found status
- Mark as done, otherwise update the stored key
- Set previous status waybill date for next iteration
File: GCX003.cbl
GIVEN:
A waybill requires further processing due to incomplete EDI
WHEN:
The system compares the current waybill key with the previously stored feedback key
THEN:
If keys match, the search is terminated as not found, otherwise the system continues with previous status search
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A waybill with haulage right carrier has EDI completion status not released
WHEN:
The system compares the current waybill feedback key with the previously processed waybill feedback key
THEN:
- If the current waybill feedback key matches the previous waybill feedback key, set status to not found
- Stop processing, otherwise continue with previous waybill date processing
File: GCX003.cbl
GIVEN:
A waybill with incomplete EDI status has been retrieved
WHEN:
The system compares the current FWBX key feedback with the previously stored key
THEN:
- If the keys match, the system marks as not found to exit the loop; otherwise updates the stored key
- Continues
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A waybill key is returned from the primary system and EDI release is not complete
WHEN:
The system compares the current waybill key feedback with the previously stored waybill key feedback
THEN:
- If the keys are identical, mark waybill as not found
- Exit, otherwise update the stored key
- Continue with previous status search
β Consolidated Acceptance Criteria
- The waybill shows empty status ('E') AND the equipment request indicates loaded status → set waybill status to not found to trigger fallback processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EmptyStatusbutLoadedRequest(["Start Step"])
E_EmptyStatusbutLoadedRequest(["End Step"])
N_EmptyStatusbutLoadedRequest_Node0{"The waybill shows empty status E
AND the equipment request indicates
loaded status"}:::decision N_EmptyStatusbutLoadedRequest_Node0_action["Set waybill status to not found to
trigger fallback processing"]:::main N_EmptyStatusbutLoadedRequest_Node0 -- Yes --> N_EmptyStatusbutLoadedRequest_Node0_action N_EmptyStatusbutLoadedRequest_Node0_action --> E_EmptyStatusbutLoadedRequest S_EmptyStatusbutLoadedRequest --> N_EmptyStatusbutLoadedRequest_Node0 N_EmptyStatusbutLoadedRequest_Node0 -- No --> E_EmptyStatusbutLoadedRequest
AND the equipment request indicates
loaded status"}:::decision N_EmptyStatusbutLoadedRequest_Node0_action["Set waybill status to not found to
trigger fallback processing"]:::main N_EmptyStatusbutLoadedRequest_Node0 -- Yes --> N_EmptyStatusbutLoadedRequest_Node0_action N_EmptyStatusbutLoadedRequest_Node0_action --> E_EmptyStatusbutLoadedRequest S_EmptyStatusbutLoadedRequest --> N_EmptyStatusbutLoadedRequest_Node0 N_EmptyStatusbutLoadedRequest_Node0 -- No --> E_EmptyStatusbutLoadedRequest
File: GCX003.cbl
GIVEN:
A waybill has been successfully retrieved
WHEN:
The waybill shows empty status ('E') AND the equipment request indicates loaded status
THEN:
Set waybill status to not found to trigger fallback processing
β Consolidated Acceptance Criteria
- The system initiates fallback processing using the inquiry system → retrieve car information from container inquiry root, set inquiry parameters using road number, station number, and waybill number, and attempt to get waybill data from inquiry system
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TryInquirySystemFallback(["Start Step"])
E_TryInquirySystemFallback(["End Step"])
N_TryInquirySystemFallback_Node0{"The system initiates fallback
processing using the inquiry system"}:::decision N_TryInquirySystemFallback_Node0_action["Retrieve car information from
container inquiry root, set inquiry
parameters using road number,
station number, and waybill number,
and attempt to get waybill data from
inquiry system"]:::main N_TryInquirySystemFallback_Node0 -- Yes --> N_TryInquirySystemFallback_Node0_action N_TryInquirySystemFallback_Node0_action --> E_TryInquirySystemFallback S_TryInquirySystemFallback --> N_TryInquirySystemFallback_Node0 N_TryInquirySystemFallback_Node0 -- No --> E_TryInquirySystemFallback
processing using the inquiry system"}:::decision N_TryInquirySystemFallback_Node0_action["Retrieve car information from
container inquiry root, set inquiry
parameters using road number,
station number, and waybill number,
and attempt to get waybill data from
inquiry system"]:::main N_TryInquirySystemFallback_Node0 -- Yes --> N_TryInquirySystemFallback_Node0_action N_TryInquirySystemFallback_Node0_action --> E_TryInquirySystemFallback S_TryInquirySystemFallback --> N_TryInquirySystemFallback_Node0 N_TryInquirySystemFallback_Node0 -- No --> E_TryInquirySystemFallback
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Primary waybill retrieval has failed or returned not found status
WHEN:
The system initiates fallback processing using the inquiry system
THEN:
Retrieve car information from container inquiry root, set inquiry parameters using road number, station number, and waybill number, and attempt to get waybill data from inquiry system
β Consolidated Acceptance Criteria
- The system processes the belonging code from the inquiry root → if belonging code equals 'ZE', set equipment status to 'E' (empty), otherwise set status to 'L' (loaded)
- The system sets load/empty status → status is set to 'E' (empty) if no cargo key exists, otherwise set to the load/empty indicator from the report line
- System evaluates cargo presence and equipment characteristics → set load/empty indicator based on cargo data, with special handling for conveying cars and international service units
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetLoadEmptyStatus(["Start Step"])
E_SetLoadEmptyStatus(["End Step"])
N_SetLoadEmptyStatus_Node0{"The system processes the belonging
code from the inquiry root"}:::decision N_SetLoadEmptyStatus_Node0_action["If belonging code equals ZE , set
equipment status to E empty,
otherwise set status to L loaded"]:::main N_SetLoadEmptyStatus_Node0 -- Yes --> N_SetLoadEmptyStatus_Node0_action N_SetLoadEmptyStatus_Node0_action --> E_SetLoadEmptyStatus S_SetLoadEmptyStatus --> N_SetLoadEmptyStatus_Node0 N_SetLoadEmptyStatus_Node1{"The system sets loadempty status"}:::decision N_SetLoadEmptyStatus_Node1_action["Status is set to E empty if no
cargo key exists, otherwise set to
the loadempty indicator from the
report line"]:::main N_SetLoadEmptyStatus_Node1 -- Yes --> N_SetLoadEmptyStatus_Node1_action N_SetLoadEmptyStatus_Node1_action --> E_SetLoadEmptyStatus N_SetLoadEmptyStatus_Node0 -- No --> N_SetLoadEmptyStatus_Node1 N_SetLoadEmptyStatus_Node2{"System evaluates cargo presence and
equipment characteristics"}:::decision N_SetLoadEmptyStatus_Node2_action["Set loadempty indicator based on
cargo data, with special handling
for conveying cars and international
service units"]:::main N_SetLoadEmptyStatus_Node2 -- Yes --> N_SetLoadEmptyStatus_Node2_action N_SetLoadEmptyStatus_Node2_action --> E_SetLoadEmptyStatus N_SetLoadEmptyStatus_Node1 -- No --> N_SetLoadEmptyStatus_Node2 N_SetLoadEmptyStatus_Node2 -- No --> E_SetLoadEmptyStatus
code from the inquiry root"}:::decision N_SetLoadEmptyStatus_Node0_action["If belonging code equals ZE , set
equipment status to E empty,
otherwise set status to L loaded"]:::main N_SetLoadEmptyStatus_Node0 -- Yes --> N_SetLoadEmptyStatus_Node0_action N_SetLoadEmptyStatus_Node0_action --> E_SetLoadEmptyStatus S_SetLoadEmptyStatus --> N_SetLoadEmptyStatus_Node0 N_SetLoadEmptyStatus_Node1{"The system sets loadempty status"}:::decision N_SetLoadEmptyStatus_Node1_action["Status is set to E empty if no
cargo key exists, otherwise set to
the loadempty indicator from the
report line"]:::main N_SetLoadEmptyStatus_Node1 -- Yes --> N_SetLoadEmptyStatus_Node1_action N_SetLoadEmptyStatus_Node1_action --> E_SetLoadEmptyStatus N_SetLoadEmptyStatus_Node0 -- No --> N_SetLoadEmptyStatus_Node1 N_SetLoadEmptyStatus_Node2{"System evaluates cargo presence and
equipment characteristics"}:::decision N_SetLoadEmptyStatus_Node2_action["Set loadempty indicator based on
cargo data, with special handling
for conveying cars and international
service units"]:::main N_SetLoadEmptyStatus_Node2 -- Yes --> N_SetLoadEmptyStatus_Node2_action N_SetLoadEmptyStatus_Node2_action --> E_SetLoadEmptyStatus N_SetLoadEmptyStatus_Node1 -- No --> N_SetLoadEmptyStatus_Node2 N_SetLoadEmptyStatus_Node2 -- No --> E_SetLoadEmptyStatus
File: GCX003.cbl
GIVEN:
Waybill data has been successfully retrieved from inquiry system
WHEN:
The system processes the belonging code from the inquiry root
THEN:
If belonging code equals 'ZE', set equipment status to 'E' (empty), otherwise set status to 'L' (loaded)
File: GCX003.cbl
GIVEN:
Equipment type is determined and cargo information is available
WHEN:
The system sets load/empty status
THEN:
Status is set to 'E' (empty) if no cargo key exists, otherwise set to the load/empty indicator from the report line
File: GCX003.cbl
GIVEN:
Equipment record has been consolidated with cargo information
WHEN:
- System evaluates cargo presence
- Equipment characteristics
THEN:
- Set load/empty indicator based on cargo data, with special handling for conveying cars
- International service units
β Consolidated Acceptance Criteria
- The system processes routing information from FWIQINFO segment → parse routing fields to extract up to 4 SCAC codes and their corresponding junction R260 codes, handling space-separated field format and storing in routing group structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetAdditionalRoutingInfo(["Start Step"])
E_GetAdditionalRoutingInfo(["End Step"])
N_GetAdditionalRoutingInfo_Node0{"The system processes routing
information from FWIQINFO segment"}:::decision N_GetAdditionalRoutingInfo_Node0_action["Parse routing fields to extract up
to 4 SCAC codes and their
corresponding junction R260 codes,
handling space-separated field
format and storing in routing group
structure"]:::main N_GetAdditionalRoutingInfo_Node0 -- Yes --> N_GetAdditionalRoutingInfo_Node0_action N_GetAdditionalRoutingInfo_Node0_action --> E_GetAdditionalRoutingInfo S_GetAdditionalRoutingInfo --> N_GetAdditionalRoutingInfo_Node0 N_GetAdditionalRoutingInfo_Node0 -- No --> E_GetAdditionalRoutingInfo
information from FWIQINFO segment"}:::decision N_GetAdditionalRoutingInfo_Node0_action["Parse routing fields to extract up
to 4 SCAC codes and their
corresponding junction R260 codes,
handling space-separated field
format and storing in routing group
structure"]:::main N_GetAdditionalRoutingInfo_Node0 -- Yes --> N_GetAdditionalRoutingInfo_Node0_action N_GetAdditionalRoutingInfo_Node0_action --> E_GetAdditionalRoutingInfo S_GetAdditionalRoutingInfo --> N_GetAdditionalRoutingInfo_Node0 N_GetAdditionalRoutingInfo_Node0 -- No --> E_GetAdditionalRoutingInfo
File: GCX003.cbl
GIVEN:
Inquiry system has returned successful waybill data
WHEN:
The system processes routing information from FWIQINFO segment
THEN:
- Parse routing fields to extract up to 4 scac codes
- Their corresponding junction r260 codes, handling space-separated field format
- Storing in routing group structure
β Consolidated Acceptance Criteria
- The system needs to retrieve waybill data for a specific equipment ID → call FWCARGET external program with configured parameters and equipment ID to retrieve waybill information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallFWCARGETtoRetrieveWaybill(["Start Step"])
E_CallFWCARGETtoRetrieveWaybill(["End Step"])
N_CallFWCARGETtoRetrieveWaybill_Node0{"The system needs to retrieve
waybill data for a specific
equipment ID"}:::decision N_CallFWCARGETtoRetrieveWaybill_Node0_action["Call FWCARGET external program with
configured parameters and equipment
ID to retrieve waybill information"]:::main N_CallFWCARGETtoRetrieveWaybill_Node0 -- Yes --> N_CallFWCARGETtoRetrieveWaybill_Node0_action N_CallFWCARGETtoRetrieveWaybill_Node0_action --> E_CallFWCARGETtoRetrieveWaybill S_CallFWCARGETtoRetrieveWaybill --> N_CallFWCARGETtoRetrieveWaybill_Node0 N_CallFWCARGETtoRetrieveWaybill_Node0 -- No --> E_CallFWCARGETtoRetrieveWaybill
waybill data for a specific
equipment ID"}:::decision N_CallFWCARGETtoRetrieveWaybill_Node0_action["Call FWCARGET external program with
configured parameters and equipment
ID to retrieve waybill information"]:::main N_CallFWCARGETtoRetrieveWaybill_Node0 -- Yes --> N_CallFWCARGETtoRetrieveWaybill_Node0_action N_CallFWCARGETtoRetrieveWaybill_Node0_action --> E_CallFWCARGETtoRetrieveWaybill S_CallFWCARGETtoRetrieveWaybill --> N_CallFWCARGETtoRetrieveWaybill_Node0 N_CallFWCARGETtoRetrieveWaybill_Node0 -- No --> E_CallFWCARGETtoRetrieveWaybill
File: GCX003.cbl
GIVEN:
Car search parameters have been properly configured
WHEN:
The system needs to retrieve waybill data for a specific equipment ID
THEN:
- Call fwcarget external program with configured parameters
- Equipment id to retrieve waybill information
β Consolidated Acceptance Criteria
- The system attempts fallback waybill retrieval from inquiry system → call FWIQIO external program with inquiry parameters to retrieve waybill data from inquiry database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallFWIQIOtoGetWaybillfromInquiry(["Start Step"])
E_CallFWIQIOtoGetWaybillfromInquiry(["End Step"])
N_CallFWIQIOtoGetWaybillfromInquiry_Node0{"The system attempts fallback
waybill retrieval from inquiry
system"}:::decision N_CallFWIQIOtoGetWaybillfromInquiry_Node0_action["Call FWIQIO external program with
inquiry parameters to retrieve
waybill data from inquiry database"]:::main N_CallFWIQIOtoGetWaybillfromInquiry_Node0 -- Yes --> N_CallFWIQIOtoGetWaybillfromInquiry_Node0_action N_CallFWIQIOtoGetWaybillfromInquiry_Node0_action --> E_CallFWIQIOtoGetWaybillfromInquiry S_CallFWIQIOtoGetWaybillfromInquiry --> N_CallFWIQIOtoGetWaybillfromInquiry_Node0 N_CallFWIQIOtoGetWaybillfromInquiry_Node0 -- No --> E_CallFWIQIOtoGetWaybillfromInquiry
waybill retrieval from inquiry
system"}:::decision N_CallFWIQIOtoGetWaybillfromInquiry_Node0_action["Call FWIQIO external program with
inquiry parameters to retrieve
waybill data from inquiry database"]:::main N_CallFWIQIOtoGetWaybillfromInquiry_Node0 -- Yes --> N_CallFWIQIOtoGetWaybillfromInquiry_Node0_action N_CallFWIQIOtoGetWaybillfromInquiry_Node0_action --> E_CallFWIQIOtoGetWaybillfromInquiry S_CallFWIQIOtoGetWaybillfromInquiry --> N_CallFWIQIOtoGetWaybillfromInquiry_Node0 N_CallFWIQIOtoGetWaybillfromInquiry_Node0 -- No --> E_CallFWIQIOtoGetWaybillfromInquiry
File: GCX003.cbl
GIVEN:
Primary waybill retrieval has failed and inquiry parameters are set
WHEN:
The system attempts fallback waybill retrieval from inquiry system
THEN:
Call FWIQIO external program with inquiry parameters to retrieve waybill data from inquiry database
β Consolidated Acceptance Criteria
- The system needs to track the current equipment ID for future comparison → the system stores the current equipment ID as the held equipment ID and marks that this is no longer the first call
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentIDasCurrent(["Start Step"])
E_SetEquipmentIDasCurrent(["End Step"])
N_SetEquipmentIDasCurrent_Node0{"The system needs to track the
current equipment ID for future
comparison"}:::decision N_SetEquipmentIDasCurrent_Node0_action["The system stores the current
equipment ID as the held equipment
ID and marks that this is no longer
the first call"]:::main N_SetEquipmentIDasCurrent_Node0 -- Yes --> N_SetEquipmentIDasCurrent_Node0_action N_SetEquipmentIDasCurrent_Node0_action --> E_SetEquipmentIDasCurrent S_SetEquipmentIDasCurrent --> N_SetEquipmentIDasCurrent_Node0 N_SetEquipmentIDasCurrent_Node0 -- No --> E_SetEquipmentIDasCurrent
current equipment ID for future
comparison"}:::decision N_SetEquipmentIDasCurrent_Node0_action["The system stores the current
equipment ID as the held equipment
ID and marks that this is no longer
the first call"]:::main N_SetEquipmentIDasCurrent_Node0 -- Yes --> N_SetEquipmentIDasCurrent_Node0_action N_SetEquipmentIDasCurrent_Node0_action --> E_SetEquipmentIDasCurrent S_SetEquipmentIDasCurrent --> N_SetEquipmentIDasCurrent_Node0 N_SetEquipmentIDasCurrent_Node0 -- No --> E_SetEquipmentIDasCurrent
File: GCX003.cbl
GIVEN:
A waybill retrieval is proceeding for a specific equipment ID
WHEN:
The system needs to track the current equipment ID for future comparison
THEN:
- The system stores the current equipment id as the held equipment id
- Marks that this is no longer the first call
β Consolidated Acceptance Criteria
- FWCARGET parameters are being configured → the system sets all waybill types except 98 and 99, includes all status types, excludes EDI incomplete waybills, includes temporary waybills, excludes corrector waybills, returns lead waybill, and gets latest waybill date
- The system initializes FWCARGET parameters → the system sets retrieval criteria to include all waybill types except 98-99, all status types, exclude EDI incomplete waybills, include temporary waybills, exclude corrector waybills, return lead waybill, and get latest waybill date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRetrievalCriteria(["Start Step"])
E_SetRetrievalCriteria(["End Step"])
N_SetRetrievalCriteria_Node0{"FWCARGET parameters are being
configured"}:::decision N_SetRetrievalCriteria_Node0_action["The system sets all waybill types
except 98 and 99, includes all
status types, excludes EDI
incomplete waybills, includes
temporary waybills, excludes
corrector waybills, returns lead
waybill, and gets latest waybill
date"]:::main N_SetRetrievalCriteria_Node0 -- Yes --> N_SetRetrievalCriteria_Node0_action N_SetRetrievalCriteria_Node0_action --> E_SetRetrievalCriteria S_SetRetrievalCriteria --> N_SetRetrievalCriteria_Node0 N_SetRetrievalCriteria_Node1{"The system initializes FWCARGET
parameters"}:::decision N_SetRetrievalCriteria_Node1_action["The system sets retrieval criteria
to include all waybill types except
98-99, all status types, exclude EDI
incomplete waybills, include
temporary waybills, exclude
corrector waybills, return lead
waybill, and get latest waybill date"]:::main N_SetRetrievalCriteria_Node1 -- Yes --> N_SetRetrievalCriteria_Node1_action N_SetRetrievalCriteria_Node1_action --> E_SetRetrievalCriteria N_SetRetrievalCriteria_Node0 -- No --> N_SetRetrievalCriteria_Node1 N_SetRetrievalCriteria_Node1 -- No --> E_SetRetrievalCriteria
configured"}:::decision N_SetRetrievalCriteria_Node0_action["The system sets all waybill types
except 98 and 99, includes all
status types, excludes EDI
incomplete waybills, includes
temporary waybills, excludes
corrector waybills, returns lead
waybill, and gets latest waybill
date"]:::main N_SetRetrievalCriteria_Node0 -- Yes --> N_SetRetrievalCriteria_Node0_action N_SetRetrievalCriteria_Node0_action --> E_SetRetrievalCriteria S_SetRetrievalCriteria --> N_SetRetrievalCriteria_Node0 N_SetRetrievalCriteria_Node1{"The system initializes FWCARGET
parameters"}:::decision N_SetRetrievalCriteria_Node1_action["The system sets retrieval criteria
to include all waybill types except
98-99, all status types, exclude EDI
incomplete waybills, include
temporary waybills, exclude
corrector waybills, return lead
waybill, and get latest waybill date"]:::main N_SetRetrievalCriteria_Node1 -- Yes --> N_SetRetrievalCriteria_Node1_action N_SetRetrievalCriteria_Node1_action --> E_SetRetrievalCriteria N_SetRetrievalCriteria_Node0 -- No --> N_SetRetrievalCriteria_Node1 N_SetRetrievalCriteria_Node1 -- No --> E_SetRetrievalCriteria
File: GCX003.cbl
GIVEN:
The system needs to retrieve waybill information for an equipment
WHEN:
FWCARGET parameters are being configured
THEN:
- The system sets all waybill types except 98
- 99, includes all status types, excludes edi incomplete waybills, includes temporary waybills, excludes corrector waybills, returns lead waybill, and gets latest waybill date
File: GCX003.cbl
GIVEN:
Waybill retrieval parameters need to be configured
WHEN:
The system initializes FWCARGET parameters
THEN:
The system sets retrieval criteria to include all waybill types except 98-99, all status types, exclude EDI incomplete waybills, include temporary waybills, exclude corrector waybills, return lead waybill, and get latest waybill date
β Consolidated Acceptance Criteria
- The system executes the FWCARGET service call → the system invokes FWCARGET service and receives waybill information or error status
- The system calls the FWCARGET external program → the waybill retrieval operation is executed and results are returned
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExecuteFWCARGETCall(["Start Step"])
E_ExecuteFWCARGETCall(["End Step"])
N_ExecuteFWCARGETCall_Node0{"The system executes the FWCARGET
service call"}:::decision N_ExecuteFWCARGETCall_Node0_action["The system invokes FWCARGET service
and receives waybill information or
error status"]:::main N_ExecuteFWCARGETCall_Node0 -- Yes --> N_ExecuteFWCARGETCall_Node0_action N_ExecuteFWCARGETCall_Node0_action --> E_ExecuteFWCARGETCall S_ExecuteFWCARGETCall --> N_ExecuteFWCARGETCall_Node0 N_ExecuteFWCARGETCall_Node1{"The system calls the FWCARGET
external program"}:::decision N_ExecuteFWCARGETCall_Node1_action["The waybill retrieval operation is
executed and results are returned"]:::main N_ExecuteFWCARGETCall_Node1 -- Yes --> N_ExecuteFWCARGETCall_Node1_action N_ExecuteFWCARGETCall_Node1_action --> E_ExecuteFWCARGETCall N_ExecuteFWCARGETCall_Node0 -- No --> N_ExecuteFWCARGETCall_Node1 N_ExecuteFWCARGETCall_Node1 -- No --> E_ExecuteFWCARGETCall
service call"}:::decision N_ExecuteFWCARGETCall_Node0_action["The system invokes FWCARGET service
and receives waybill information or
error status"]:::main N_ExecuteFWCARGETCall_Node0 -- Yes --> N_ExecuteFWCARGETCall_Node0_action N_ExecuteFWCARGETCall_Node0_action --> E_ExecuteFWCARGETCall S_ExecuteFWCARGETCall --> N_ExecuteFWCARGETCall_Node0 N_ExecuteFWCARGETCall_Node1{"The system calls the FWCARGET
external program"}:::decision N_ExecuteFWCARGETCall_Node1_action["The waybill retrieval operation is
executed and results are returned"]:::main N_ExecuteFWCARGETCall_Node1 -- Yes --> N_ExecuteFWCARGETCall_Node1_action N_ExecuteFWCARGETCall_Node1_action --> E_ExecuteFWCARGETCall N_ExecuteFWCARGETCall_Node0 -- No --> N_ExecuteFWCARGETCall_Node1 N_ExecuteFWCARGETCall_Node1 -- No --> E_ExecuteFWCARGETCall
File: GCX003.cbl
GIVEN:
FWCARGET parameters are properly configured for an equipment ID
WHEN:
The system executes the FWCARGET service call
THEN:
- The system invokes fwcarget service
- Receives waybill information or error status
File: GCX003.cbl
GIVEN:
All FWCARGET parameters are properly configured
WHEN:
The system calls the FWCARGET external program
THEN:
- The waybill retrieval operation is executed
- Results are returned
β Consolidated Acceptance Criteria
- The system checks the return status from FWCARGET → if FWCARGET returned an error or not found status, the system terminates the retrieval loop, otherwise continues with waybill validation
- If the return status → if error or not found condition exists, the system branches to error handling, otherwise continues with validation checks
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FWCARGETErrororNotFound(["Start Step"])
E_FWCARGETErrororNotFound(["End Step"])
N_FWCARGETErrororNotFound_Node0{"The system checks the return status
from FWCARGET"}:::decision N_FWCARGETErrororNotFound_Node0_action["If FWCARGET returned an error or
not found status, the system
terminates the retrieval loop,
otherwise continues with waybill
validation"]:::main N_FWCARGETErrororNotFound_Node0 -- Yes --> N_FWCARGETErrororNotFound_Node0_action N_FWCARGETErrororNotFound_Node0_action --> E_FWCARGETErrororNotFound S_FWCARGETErrororNotFound --> N_FWCARGETErrororNotFound_Node0 N_FWCARGETErrororNotFound_Node1{"The system evaluates the return
status"}:::decision N_FWCARGETErrororNotFound_Node1_action["If error or not found condition
exists, the system branches to error
handling, otherwise continues with
validation checks"]:::main N_FWCARGETErrororNotFound_Node1 -- Yes --> N_FWCARGETErrororNotFound_Node1_action N_FWCARGETErrororNotFound_Node1_action --> E_FWCARGETErrororNotFound N_FWCARGETErrororNotFound_Node0 -- No --> N_FWCARGETErrororNotFound_Node1 N_FWCARGETErrororNotFound_Node1 -- No --> E_FWCARGETErrororNotFound
from FWCARGET"}:::decision N_FWCARGETErrororNotFound_Node0_action["If FWCARGET returned an error or
not found status, the system
terminates the retrieval loop,
otherwise continues with waybill
validation"]:::main N_FWCARGETErrororNotFound_Node0 -- Yes --> N_FWCARGETErrororNotFound_Node0_action N_FWCARGETErrororNotFound_Node0_action --> E_FWCARGETErrororNotFound S_FWCARGETErrororNotFound --> N_FWCARGETErrororNotFound_Node0 N_FWCARGETErrororNotFound_Node1{"The system evaluates the return
status"}:::decision N_FWCARGETErrororNotFound_Node1_action["If error or not found condition
exists, the system branches to error
handling, otherwise continues with
validation checks"]:::main N_FWCARGETErrororNotFound_Node1 -- Yes --> N_FWCARGETErrororNotFound_Node1_action N_FWCARGETErrororNotFound_Node1_action --> E_FWCARGETErrororNotFound N_FWCARGETErrororNotFound_Node0 -- No --> N_FWCARGETErrororNotFound_Node1 N_FWCARGETErrororNotFound_Node1 -- No --> E_FWCARGETErrororNotFound
File: GCX003.cbl
GIVEN:
FWCARGET service call has completed
WHEN:
The system checks the return status from FWCARGET
THEN:
If FWCARGET returned an error or not found status, the system terminates the retrieval loop, otherwise continues with waybill validation
File: GCX003.cbl
GIVEN:
FWCARGET call has been executed
WHEN:
The system evaluates the return status
THEN:
If error or not found condition exists, the system branches to error handling, otherwise continues with validation checks
β Consolidated Acceptance Criteria
- The system checks if the haulage right carrier field is empty or spaces → if haulage right carrier is empty, the system accepts the waybill and terminates the loop, otherwise continues with additional validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HaulageRightCarrierEmpty(["Start Step"])
E_HaulageRightCarrierEmpty(["End Step"])
N_HaulageRightCarrierEmpty_Node0{"The system checks if the haulage
right carrier field is empty or
spaces"}:::decision N_HaulageRightCarrierEmpty_Node0_action["If haulage right carrier is empty,
the system accepts the waybill and
terminates the loop, otherwise
continues with additional validation"]:::main N_HaulageRightCarrierEmpty_Node0 -- Yes --> N_HaulageRightCarrierEmpty_Node0_action N_HaulageRightCarrierEmpty_Node0_action --> E_HaulageRightCarrierEmpty S_HaulageRightCarrierEmpty --> N_HaulageRightCarrierEmpty_Node0 N_HaulageRightCarrierEmpty_Node0 -- No --> E_HaulageRightCarrierEmpty
right carrier field is empty or
spaces"}:::decision N_HaulageRightCarrierEmpty_Node0_action["If haulage right carrier is empty,
the system accepts the waybill and
terminates the loop, otherwise
continues with additional validation"]:::main N_HaulageRightCarrierEmpty_Node0 -- Yes --> N_HaulageRightCarrierEmpty_Node0_action N_HaulageRightCarrierEmpty_Node0_action --> E_HaulageRightCarrierEmpty S_HaulageRightCarrierEmpty --> N_HaulageRightCarrierEmpty_Node0 N_HaulageRightCarrierEmpty_Node0 -- No --> E_HaulageRightCarrierEmpty
File: GCX003.cbl
GIVEN:
A waybill record has been retrieved successfully from FWCARGET
WHEN:
The system checks if the haulage right carrier field is empty or spaces
THEN:
- If haulage right carrier is empty, the system accepts the waybill
- Terminates the loop, otherwise continues with additional validation
β Consolidated Acceptance Criteria
- The system checks if EDI complete 418 release flag equals 'Y' → if EDI complete release is 'Y', the system accepts the waybill and terminates the loop, otherwise continues with duplicate check
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EDICompleteReleaseY(["Start Step"])
E_EDICompleteReleaseY(["End Step"])
N_EDICompleteReleaseY_Node0{"The system checks if EDI complete
418 release flag equals Y"}:::decision N_EDICompleteReleaseY_Node0_action["If EDI complete release is Y , the
system accepts the waybill and
terminates the loop, otherwise
continues with duplicate check"]:::main N_EDICompleteReleaseY_Node0 -- Yes --> N_EDICompleteReleaseY_Node0_action N_EDICompleteReleaseY_Node0_action --> E_EDICompleteReleaseY S_EDICompleteReleaseY --> N_EDICompleteReleaseY_Node0 N_EDICompleteReleaseY_Node0 -- No --> E_EDICompleteReleaseY
418 release flag equals Y"}:::decision N_EDICompleteReleaseY_Node0_action["If EDI complete release is Y , the
system accepts the waybill and
terminates the loop, otherwise
continues with duplicate check"]:::main N_EDICompleteReleaseY_Node0 -- Yes --> N_EDICompleteReleaseY_Node0_action N_EDICompleteReleaseY_Node0_action --> E_EDICompleteReleaseY S_EDICompleteReleaseY --> N_EDICompleteReleaseY_Node0 N_EDICompleteReleaseY_Node0 -- No --> E_EDICompleteReleaseY
File: GCX003.cbl
GIVEN:
A waybill record has haulage right carrier populated
WHEN:
The system checks if EDI complete 418 release flag equals 'Y'
THEN:
- If edi complete release is 'y', the system accepts the waybill
- Terminates the loop, otherwise continues with duplicate check
β Consolidated Acceptance Criteria
- The system compares the current FWBX key feedback with the previously stored FWBX key feedback → if the FWBX keys are identical, the system sets not found status and terminates the loop, otherwise updates the stored key and continues
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SameFWBXKeyasPrevious(["Start Step"])
E_SameFWBXKeyasPrevious(["End Step"])
N_SameFWBXKeyasPrevious_Node0{"The system compares the current
FWBX key feedback with the
previously stored FWBX key feedback"}:::decision N_SameFWBXKeyasPrevious_Node0_action["If the FWBX keys are identical, the
system sets not found status and
terminates the loop, otherwise
updates the stored key and continues"]:::main N_SameFWBXKeyasPrevious_Node0 -- Yes --> N_SameFWBXKeyasPrevious_Node0_action N_SameFWBXKeyasPrevious_Node0_action --> E_SameFWBXKeyasPrevious S_SameFWBXKeyasPrevious --> N_SameFWBXKeyasPrevious_Node0 N_SameFWBXKeyasPrevious_Node0 -- No --> E_SameFWBXKeyasPrevious
FWBX key feedback with the
previously stored FWBX key feedback"}:::decision N_SameFWBXKeyasPrevious_Node0_action["If the FWBX keys are identical, the
system sets not found status and
terminates the loop, otherwise
updates the stored key and continues"]:::main N_SameFWBXKeyasPrevious_Node0 -- Yes --> N_SameFWBXKeyasPrevious_Node0_action N_SameFWBXKeyasPrevious_Node0_action --> E_SameFWBXKeyasPrevious S_SameFWBXKeyasPrevious --> N_SameFWBXKeyasPrevious_Node0 N_SameFWBXKeyasPrevious_Node0 -- No --> E_SameFWBXKeyasPrevious
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A waybill record does not have EDI complete release status
WHEN:
The system compares the current FWBX key feedback with the previously stored FWBX key feedback
THEN:
- If the fwbx keys are identical, the system sets not found status
- Terminates the loop, otherwise updates the stored key
- Continues
β Consolidated Acceptance Criteria
- The system needs to search for an alternative waybill → the system sets FWCARGET to retrieve previous status waybill date and updates the stored FWBX key feedback
- The system sets search criteria for previous status → search parameters are updated to look for waybills with previous status and earlier waybill dates
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPreviousStatusWaybillDate(["Start Step"])
E_SetPreviousStatusWaybillDate(["End Step"])
N_SetPreviousStatusWaybillDate_Node0{"The system needs to search for an
alternative waybill"}:::decision N_SetPreviousStatusWaybillDate_Node0_action["The system sets FWCARGET to
retrieve previous status waybill
date and updates the stored FWBX key
feedback"]:::main N_SetPreviousStatusWaybillDate_Node0 -- Yes --> N_SetPreviousStatusWaybillDate_Node0_action N_SetPreviousStatusWaybillDate_Node0_action --> E_SetPreviousStatusWaybillDate S_SetPreviousStatusWaybillDate --> N_SetPreviousStatusWaybillDate_Node0 N_SetPreviousStatusWaybillDate_Node1{"The system sets search criteria for
previous status"}:::decision N_SetPreviousStatusWaybillDate_Node1_action["Search parameters are updated to
look for waybills with previous
status and earlier waybill dates"]:::main N_SetPreviousStatusWaybillDate_Node1 -- Yes --> N_SetPreviousStatusWaybillDate_Node1_action N_SetPreviousStatusWaybillDate_Node1_action --> E_SetPreviousStatusWaybillDate N_SetPreviousStatusWaybillDate_Node0 -- No --> N_SetPreviousStatusWaybillDate_Node1 N_SetPreviousStatusWaybillDate_Node1 -- No --> E_SetPreviousStatusWaybillDate
alternative waybill"}:::decision N_SetPreviousStatusWaybillDate_Node0_action["The system sets FWCARGET to
retrieve previous status waybill
date and updates the stored FWBX key
feedback"]:::main N_SetPreviousStatusWaybillDate_Node0 -- Yes --> N_SetPreviousStatusWaybillDate_Node0_action N_SetPreviousStatusWaybillDate_Node0_action --> E_SetPreviousStatusWaybillDate S_SetPreviousStatusWaybillDate --> N_SetPreviousStatusWaybillDate_Node0 N_SetPreviousStatusWaybillDate_Node1{"The system sets search criteria for
previous status"}:::decision N_SetPreviousStatusWaybillDate_Node1_action["Search parameters are updated to
look for waybills with previous
status and earlier waybill dates"]:::main N_SetPreviousStatusWaybillDate_Node1 -- Yes --> N_SetPreviousStatusWaybillDate_Node1_action N_SetPreviousStatusWaybillDate_Node1_action --> E_SetPreviousStatusWaybillDate N_SetPreviousStatusWaybillDate_Node0 -- No --> N_SetPreviousStatusWaybillDate_Node1 N_SetPreviousStatusWaybillDate_Node1 -- No --> E_SetPreviousStatusWaybillDate
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
The current waybill is not acceptable and FWBX key is different from previous
WHEN:
The system needs to search for an alternative waybill
THEN:
- The system sets fwcarget to retrieve previous status waybill date
- Updates the stored fwbx key feedback
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Current waybill has incomplete EDI and is not a duplicate key
WHEN:
The system sets search criteria for previous status
THEN:
- Search parameters are updated to look for waybills with previous status
- Earlier waybill dates
β Consolidated Acceptance Criteria
- The system determines that waybill was not found through primary method → the system executes inquiry fallback logic to attempt waybill retrieval through alternative database queries
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExecuteInquiryFallbackLogic(["Start Step"])
E_ExecuteInquiryFallbackLogic(["End Step"])
N_ExecuteInquiryFallbackLogic_Node0{"The system determines that waybill
was not found through primary method"}:::decision N_ExecuteInquiryFallbackLogic_Node0_action["The system executes inquiry
fallback logic to attempt waybill
retrieval through alternative
database queries"]:::main N_ExecuteInquiryFallbackLogic_Node0 -- Yes --> N_ExecuteInquiryFallbackLogic_Node0_action N_ExecuteInquiryFallbackLogic_Node0_action --> E_ExecuteInquiryFallbackLogic S_ExecuteInquiryFallbackLogic --> N_ExecuteInquiryFallbackLogic_Node0 N_ExecuteInquiryFallbackLogic_Node0 -- No --> E_ExecuteInquiryFallbackLogic
was not found through primary method"}:::decision N_ExecuteInquiryFallbackLogic_Node0_action["The system executes inquiry
fallback logic to attempt waybill
retrieval through alternative
database queries"]:::main N_ExecuteInquiryFallbackLogic_Node0 -- Yes --> N_ExecuteInquiryFallbackLogic_Node0_action N_ExecuteInquiryFallbackLogic_Node0_action --> E_ExecuteInquiryFallbackLogic S_ExecuteInquiryFallbackLogic --> N_ExecuteInquiryFallbackLogic_Node0 N_ExecuteInquiryFallbackLogic_Node0 -- No --> E_ExecuteInquiryFallbackLogic
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
FWCARGET has completed processing but no acceptable waybill was found
WHEN:
The system determines that waybill was not found through primary method
THEN:
The system executes inquiry fallback logic to attempt waybill retrieval through alternative database queries
β Consolidated Acceptance Criteria
- The system initializes FWCARGET parameters → sHIPROOT and FWWARGET-PARM structures are cleared and the current equipment ID is stored as the held equipment ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeFWCARGETParameters(["Start Step"])
E_InitializeFWCARGETParameters(["End Step"])
N_InitializeFWCARGETParameters_Node0{"The system initializes FWCARGET
parameters"}:::decision N_InitializeFWCARGETParameters_Node0_action["SHIPROOT and FWWARGET-PARM
structures are cleared and the
current equipment ID is stored as
the held equipment ID"]:::main N_InitializeFWCARGETParameters_Node0 -- Yes --> N_InitializeFWCARGETParameters_Node0_action N_InitializeFWCARGETParameters_Node0_action --> E_InitializeFWCARGETParameters S_InitializeFWCARGETParameters --> N_InitializeFWCARGETParameters_Node0 N_InitializeFWCARGETParameters_Node0 -- No --> E_InitializeFWCARGETParameters
parameters"}:::decision N_InitializeFWCARGETParameters_Node0_action["SHIPROOT and FWWARGET-PARM
structures are cleared and the
current equipment ID is stored as
the held equipment ID"]:::main N_InitializeFWCARGETParameters_Node0 -- Yes --> N_InitializeFWCARGETParameters_Node0_action N_InitializeFWCARGETParameters_Node0_action --> E_InitializeFWCARGETParameters S_InitializeFWCARGETParameters --> N_InitializeFWCARGETParameters_Node0 N_InitializeFWCARGETParameters_Node0 -- No --> E_InitializeFWCARGETParameters
File: GCX003.cbl
GIVEN:
A waybill retrieval operation needs to be performed
WHEN:
The system initializes FWCARGET parameters
THEN:
- Shiproot
- Fwwarget-parm structures are cleared
- The current equipment id is stored as the held equipment id
β Consolidated Acceptance Criteria
- The system sets waybill type criteria → waybill types 98 and 99 are excluded from the retrieval process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetWaybillTypeCriteriaExcludeTypes9899(["Start Step"])
E_SetWaybillTypeCriteriaExcludeTypes9899(["End Step"])
N_SetWaybillTypeCriteriaExcludeTypes9899_Node0{"The system sets waybill type
criteria"}:::decision N_SetWaybillTypeCriteriaExcludeTypes9899_Node0_action["Waybill types 98 and 99 are
excluded from the retrieval process"]:::main N_SetWaybillTypeCriteriaExcludeTypes9899_Node0 -- Yes --> N_SetWaybillTypeCriteriaExcludeTypes9899_Node0_action N_SetWaybillTypeCriteriaExcludeTypes9899_Node0_action --> E_SetWaybillTypeCriteriaExcludeTypes9899 S_SetWaybillTypeCriteriaExcludeTypes9899 --> N_SetWaybillTypeCriteriaExcludeTypes9899_Node0 N_SetWaybillTypeCriteriaExcludeTypes9899_Node0 -- No --> E_SetWaybillTypeCriteriaExcludeTypes9899
criteria"}:::decision N_SetWaybillTypeCriteriaExcludeTypes9899_Node0_action["Waybill types 98 and 99 are
excluded from the retrieval process"]:::main N_SetWaybillTypeCriteriaExcludeTypes9899_Node0 -- Yes --> N_SetWaybillTypeCriteriaExcludeTypes9899_Node0_action N_SetWaybillTypeCriteriaExcludeTypes9899_Node0_action --> E_SetWaybillTypeCriteriaExcludeTypes9899 S_SetWaybillTypeCriteriaExcludeTypes9899 --> N_SetWaybillTypeCriteriaExcludeTypes9899_Node0 N_SetWaybillTypeCriteriaExcludeTypes9899_Node0 -- No --> E_SetWaybillTypeCriteriaExcludeTypes9899
File: GCX003.cbl
GIVEN:
FWCARGET parameters are being configured
WHEN:
The system sets waybill type criteria
THEN:
- Waybill types 98
- 99 are excluded from the retrieval process
β Consolidated Acceptance Criteria
- The system sets status criteria → all status types are included in the waybill retrieval process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStatusCriteriaIncludeAllStatusTypes(["Start Step"])
E_SetStatusCriteriaIncludeAllStatusTypes(["End Step"])
N_SetStatusCriteriaIncludeAllStatusTypes_Node0{"The system sets status criteria"}:::decision
N_SetStatusCriteriaIncludeAllStatusTypes_Node0_action["All status types are included in
the waybill retrieval process"]:::main N_SetStatusCriteriaIncludeAllStatusTypes_Node0 -- Yes --> N_SetStatusCriteriaIncludeAllStatusTypes_Node0_action N_SetStatusCriteriaIncludeAllStatusTypes_Node0_action --> E_SetStatusCriteriaIncludeAllStatusTypes S_SetStatusCriteriaIncludeAllStatusTypes --> N_SetStatusCriteriaIncludeAllStatusTypes_Node0 N_SetStatusCriteriaIncludeAllStatusTypes_Node0 -- No --> E_SetStatusCriteriaIncludeAllStatusTypes
the waybill retrieval process"]:::main N_SetStatusCriteriaIncludeAllStatusTypes_Node0 -- Yes --> N_SetStatusCriteriaIncludeAllStatusTypes_Node0_action N_SetStatusCriteriaIncludeAllStatusTypes_Node0_action --> E_SetStatusCriteriaIncludeAllStatusTypes S_SetStatusCriteriaIncludeAllStatusTypes --> N_SetStatusCriteriaIncludeAllStatusTypes_Node0 N_SetStatusCriteriaIncludeAllStatusTypes_Node0 -- No --> E_SetStatusCriteriaIncludeAllStatusTypes
File: GCX003.cbl
GIVEN:
FWCARGET parameters are being configured
WHEN:
The system sets status criteria
THEN:
All status types are included in the waybill retrieval process
β Consolidated Acceptance Criteria
- The system sets EDI criteria → waybills with incomplete EDI processing are excluded from retrieval
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEDICriteriaExcludeIncompleteEDI(["Start Step"])
E_SetEDICriteriaExcludeIncompleteEDI(["End Step"])
N_SetEDICriteriaExcludeIncompleteEDI_Node0{"The system sets EDI criteria"}:::decision
N_SetEDICriteriaExcludeIncompleteEDI_Node0_action["Waybills with incomplete EDI
processing are excluded from
retrieval"]:::main N_SetEDICriteriaExcludeIncompleteEDI_Node0 -- Yes --> N_SetEDICriteriaExcludeIncompleteEDI_Node0_action N_SetEDICriteriaExcludeIncompleteEDI_Node0_action --> E_SetEDICriteriaExcludeIncompleteEDI S_SetEDICriteriaExcludeIncompleteEDI --> N_SetEDICriteriaExcludeIncompleteEDI_Node0 N_SetEDICriteriaExcludeIncompleteEDI_Node0 -- No --> E_SetEDICriteriaExcludeIncompleteEDI
processing are excluded from
retrieval"]:::main N_SetEDICriteriaExcludeIncompleteEDI_Node0 -- Yes --> N_SetEDICriteriaExcludeIncompleteEDI_Node0_action N_SetEDICriteriaExcludeIncompleteEDI_Node0_action --> E_SetEDICriteriaExcludeIncompleteEDI S_SetEDICriteriaExcludeIncompleteEDI --> N_SetEDICriteriaExcludeIncompleteEDI_Node0 N_SetEDICriteriaExcludeIncompleteEDI_Node0 -- No --> E_SetEDICriteriaExcludeIncompleteEDI
File: GCX003.cbl
GIVEN:
FWCARGET parameters are being configured
WHEN:
The system sets EDI criteria
THEN:
Waybills with incomplete EDI processing are excluded from retrieval
β Consolidated Acceptance Criteria
- The system sets temporary waybill criteria → temporary waybills are included in the retrieval process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncludeTemporaryWaybills(["Start Step"])
E_IncludeTemporaryWaybills(["End Step"])
N_IncludeTemporaryWaybills_Node0{"The system sets temporary waybill
criteria"}:::decision N_IncludeTemporaryWaybills_Node0_action["Temporary waybills are included in
the retrieval process"]:::main N_IncludeTemporaryWaybills_Node0 -- Yes --> N_IncludeTemporaryWaybills_Node0_action N_IncludeTemporaryWaybills_Node0_action --> E_IncludeTemporaryWaybills S_IncludeTemporaryWaybills --> N_IncludeTemporaryWaybills_Node0 N_IncludeTemporaryWaybills_Node0 -- No --> E_IncludeTemporaryWaybills
criteria"}:::decision N_IncludeTemporaryWaybills_Node0_action["Temporary waybills are included in
the retrieval process"]:::main N_IncludeTemporaryWaybills_Node0 -- Yes --> N_IncludeTemporaryWaybills_Node0_action N_IncludeTemporaryWaybills_Node0_action --> E_IncludeTemporaryWaybills S_IncludeTemporaryWaybills --> N_IncludeTemporaryWaybills_Node0 N_IncludeTemporaryWaybills_Node0 -- No --> E_IncludeTemporaryWaybills
File: GCX003.cbl
GIVEN:
FWCARGET parameters are being configured
WHEN:
The system sets temporary waybill criteria
THEN:
Temporary waybills are included in the retrieval process
β Consolidated Acceptance Criteria
- The system sets corrector waybill criteria → corrector waybills are excluded from the retrieval process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExcludeCorrectorWaybills(["Start Step"])
E_ExcludeCorrectorWaybills(["End Step"])
N_ExcludeCorrectorWaybills_Node0{"The system sets corrector waybill
criteria"}:::decision N_ExcludeCorrectorWaybills_Node0_action["Corrector waybills are excluded
from the retrieval process"]:::main N_ExcludeCorrectorWaybills_Node0 -- Yes --> N_ExcludeCorrectorWaybills_Node0_action N_ExcludeCorrectorWaybills_Node0_action --> E_ExcludeCorrectorWaybills S_ExcludeCorrectorWaybills --> N_ExcludeCorrectorWaybills_Node0 N_ExcludeCorrectorWaybills_Node0 -- No --> E_ExcludeCorrectorWaybills
criteria"}:::decision N_ExcludeCorrectorWaybills_Node0_action["Corrector waybills are excluded
from the retrieval process"]:::main N_ExcludeCorrectorWaybills_Node0 -- Yes --> N_ExcludeCorrectorWaybills_Node0_action N_ExcludeCorrectorWaybills_Node0_action --> E_ExcludeCorrectorWaybills S_ExcludeCorrectorWaybills --> N_ExcludeCorrectorWaybills_Node0 N_ExcludeCorrectorWaybills_Node0 -- No --> E_ExcludeCorrectorWaybills
File: GCX003.cbl
GIVEN:
FWCARGET parameters are being configured
WHEN:
The system sets corrector waybill criteria
THEN:
Corrector waybills are excluded from the retrieval process
β Consolidated Acceptance Criteria
- The system sets date criteria → the retrieval is configured to return the waybill with the latest date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RequestLatestWaybillDate(["Start Step"])
E_RequestLatestWaybillDate(["End Step"])
N_RequestLatestWaybillDate_Node0{"The system sets date criteria"}:::decision
N_RequestLatestWaybillDate_Node0_action["The retrieval is configured to
return the waybill with the latest
date"]:::main N_RequestLatestWaybillDate_Node0 -- Yes --> N_RequestLatestWaybillDate_Node0_action N_RequestLatestWaybillDate_Node0_action --> E_RequestLatestWaybillDate S_RequestLatestWaybillDate --> N_RequestLatestWaybillDate_Node0 N_RequestLatestWaybillDate_Node0 -- No --> E_RequestLatestWaybillDate
return the waybill with the latest
date"]:::main N_RequestLatestWaybillDate_Node0 -- Yes --> N_RequestLatestWaybillDate_Node0_action N_RequestLatestWaybillDate_Node0_action --> E_RequestLatestWaybillDate S_RequestLatestWaybillDate --> N_RequestLatestWaybillDate_Node0 N_RequestLatestWaybillDate_Node0 -- No --> E_RequestLatestWaybillDate
File: GCX003.cbl
GIVEN:
FWCARGET parameters are being configured
WHEN:
The system sets date criteria
THEN:
The retrieval is configured to return the waybill with the latest date
β Consolidated Acceptance Criteria
- The system checks the haulage right carrier field → if haulage right carrier is blank or spaces, the waybill is accepted, otherwise additional EDI validation is required
- The system checks the haulage right carrier field in the waybill → if the haulage right carrier field contains spaces or is empty, accept the waybill for processing, otherwise perform additional EDI completion validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HaulageRightCarrierPresent(["Start Step"])
E_HaulageRightCarrierPresent(["End Step"])
N_HaulageRightCarrierPresent_Node0{"The system checks the haulage right
carrier field"}:::decision N_HaulageRightCarrierPresent_Node0_action["If haulage right carrier is blank
or spaces, the waybill is accepted,
otherwise additional EDI validation
is required"]:::main N_HaulageRightCarrierPresent_Node0 -- Yes --> N_HaulageRightCarrierPresent_Node0_action N_HaulageRightCarrierPresent_Node0_action --> E_HaulageRightCarrierPresent S_HaulageRightCarrierPresent --> N_HaulageRightCarrierPresent_Node0 N_HaulageRightCarrierPresent_Node1{"The system checks the haulage right
carrier field in the waybill"}:::decision N_HaulageRightCarrierPresent_Node1_action["If the haulage right carrier field
contains spaces or is empty, accept
the waybill for processing,
otherwise perform additional EDI
completion validation"]:::main N_HaulageRightCarrierPresent_Node1 -- Yes --> N_HaulageRightCarrierPresent_Node1_action N_HaulageRightCarrierPresent_Node1_action --> E_HaulageRightCarrierPresent N_HaulageRightCarrierPresent_Node0 -- No --> N_HaulageRightCarrierPresent_Node1 N_HaulageRightCarrierPresent_Node1 -- No --> E_HaulageRightCarrierPresent
carrier field"}:::decision N_HaulageRightCarrierPresent_Node0_action["If haulage right carrier is blank
or spaces, the waybill is accepted,
otherwise additional EDI validation
is required"]:::main N_HaulageRightCarrierPresent_Node0 -- Yes --> N_HaulageRightCarrierPresent_Node0_action N_HaulageRightCarrierPresent_Node0_action --> E_HaulageRightCarrierPresent S_HaulageRightCarrierPresent --> N_HaulageRightCarrierPresent_Node0 N_HaulageRightCarrierPresent_Node1{"The system checks the haulage right
carrier field in the waybill"}:::decision N_HaulageRightCarrierPresent_Node1_action["If the haulage right carrier field
contains spaces or is empty, accept
the waybill for processing,
otherwise perform additional EDI
completion validation"]:::main N_HaulageRightCarrierPresent_Node1 -- Yes --> N_HaulageRightCarrierPresent_Node1_action N_HaulageRightCarrierPresent_Node1_action --> E_HaulageRightCarrierPresent N_HaulageRightCarrierPresent_Node0 -- No --> N_HaulageRightCarrierPresent_Node1 N_HaulageRightCarrierPresent_Node1 -- No --> E_HaulageRightCarrierPresent
File: GCX003.cbl
GIVEN:
A waybill has been successfully retrieved
WHEN:
The system checks the haulage right carrier field
THEN:
If haulage right carrier is blank or spaces, the waybill is accepted, otherwise additional EDI validation is required
File: GCX003.cbl
GIVEN:
A waybill has been successfully retrieved
WHEN:
The system checks the haulage right carrier field in the waybill
THEN:
If the haulage right carrier field contains spaces or is empty, accept the waybill for processing, otherwise perform additional EDI completion validation
β Consolidated Acceptance Criteria
- The system checks the EDI completion status → if EDI 418 release equals 'Y', the waybill is accepted, otherwise the system continues searching for previous waybills
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EDI418ReleaseComplete(["Start Step"])
E_EDI418ReleaseComplete(["End Step"])
N_EDI418ReleaseComplete_Node0{"The system checks the EDI
completion status"}:::decision N_EDI418ReleaseComplete_Node0_action["If EDI 418 release equals Y , the
waybill is accepted, otherwise the
system continues searching for
previous waybills"]:::main N_EDI418ReleaseComplete_Node0 -- Yes --> N_EDI418ReleaseComplete_Node0_action N_EDI418ReleaseComplete_Node0_action --> E_EDI418ReleaseComplete S_EDI418ReleaseComplete --> N_EDI418ReleaseComplete_Node0 N_EDI418ReleaseComplete_Node0 -- No --> E_EDI418ReleaseComplete
completion status"}:::decision N_EDI418ReleaseComplete_Node0_action["If EDI 418 release equals Y , the
waybill is accepted, otherwise the
system continues searching for
previous waybills"]:::main N_EDI418ReleaseComplete_Node0 -- Yes --> N_EDI418ReleaseComplete_Node0_action N_EDI418ReleaseComplete_Node0_action --> E_EDI418ReleaseComplete S_EDI418ReleaseComplete --> N_EDI418ReleaseComplete_Node0 N_EDI418ReleaseComplete_Node0 -- No --> E_EDI418ReleaseComplete
File: GCX003.cbl
GIVEN:
A waybill has a haulage right carrier specified
WHEN:
The system checks the EDI completion status
THEN:
If EDI 418 release equals 'Y', the waybill is accepted, otherwise the system continues searching for previous waybills
β Consolidated Acceptance Criteria
- The system updates the feedback mechanism → the current waybill key is stored in the feedback field for future comparison
- The system processes waybill retrieval results → the system stores the current FWBX key feedback for comparison in the next iteration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateWaybillKeyFeedback(["Start Step"])
E_UpdateWaybillKeyFeedback(["End Step"])
N_UpdateWaybillKeyFeedback_Node0{"The system updates the feedback
mechanism"}:::decision N_UpdateWaybillKeyFeedback_Node0_action["The current waybill key is stored
in the feedback field for future
comparison"]:::main N_UpdateWaybillKeyFeedback_Node0 -- Yes --> N_UpdateWaybillKeyFeedback_Node0_action N_UpdateWaybillKeyFeedback_Node0_action --> E_UpdateWaybillKeyFeedback S_UpdateWaybillKeyFeedback --> N_UpdateWaybillKeyFeedback_Node0 N_UpdateWaybillKeyFeedback_Node1{"The system processes waybill
retrieval results"}:::decision N_UpdateWaybillKeyFeedback_Node1_action["The system stores the current FWBX
key feedback for comparison in the
next iteration"]:::main N_UpdateWaybillKeyFeedback_Node1 -- Yes --> N_UpdateWaybillKeyFeedback_Node1_action N_UpdateWaybillKeyFeedback_Node1_action --> E_UpdateWaybillKeyFeedback N_UpdateWaybillKeyFeedback_Node0 -- No --> N_UpdateWaybillKeyFeedback_Node1 N_UpdateWaybillKeyFeedback_Node1 -- No --> E_UpdateWaybillKeyFeedback
mechanism"}:::decision N_UpdateWaybillKeyFeedback_Node0_action["The current waybill key is stored
in the feedback field for future
comparison"]:::main N_UpdateWaybillKeyFeedback_Node0 -- Yes --> N_UpdateWaybillKeyFeedback_Node0_action N_UpdateWaybillKeyFeedback_Node0_action --> E_UpdateWaybillKeyFeedback S_UpdateWaybillKeyFeedback --> N_UpdateWaybillKeyFeedback_Node0 N_UpdateWaybillKeyFeedback_Node1{"The system processes waybill
retrieval results"}:::decision N_UpdateWaybillKeyFeedback_Node1_action["The system stores the current FWBX
key feedback for comparison in the
next iteration"]:::main N_UpdateWaybillKeyFeedback_Node1 -- Yes --> N_UpdateWaybillKeyFeedback_Node1_action N_UpdateWaybillKeyFeedback_Node1_action --> E_UpdateWaybillKeyFeedback N_UpdateWaybillKeyFeedback_Node0 -- No --> N_UpdateWaybillKeyFeedback_Node1 N_UpdateWaybillKeyFeedback_Node1 -- No --> E_UpdateWaybillKeyFeedback
File: GCX003.cbl
GIVEN:
A waybill key needs to be tracked for duplicate detection
WHEN:
The system updates the feedback mechanism
THEN:
The current waybill key is stored in the feedback field for future comparison
File: GCX003.cbl
GIVEN:
A new waybill key has been encountered
WHEN:
The system processes waybill retrieval results
THEN:
The system stores the current FWBX key feedback for comparison in the next iteration
β Consolidated Acceptance Criteria
- The system determines no valid waybill exists → the waybill status is set to not found and the process exits
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkasNotFoundandExit(["Start Step"])
E_MarkasNotFoundandExit(["End Step"])
N_MarkasNotFoundandExit_Node0{"The system determines no valid
waybill exists"}:::decision N_MarkasNotFoundandExit_Node0_action["The waybill status is set to not
found and the process exits"]:::main N_MarkasNotFoundandExit_Node0 -- Yes --> N_MarkasNotFoundandExit_Node0_action N_MarkasNotFoundandExit_Node0_action --> E_MarkasNotFoundandExit S_MarkasNotFoundandExit --> N_MarkasNotFoundandExit_Node0 N_MarkasNotFoundandExit_Node0 -- No --> E_MarkasNotFoundandExit
waybill exists"}:::decision N_MarkasNotFoundandExit_Node0_action["The waybill status is set to not
found and the process exits"]:::main N_MarkasNotFoundandExit_Node0 -- Yes --> N_MarkasNotFoundandExit_Node0_action N_MarkasNotFoundandExit_Node0_action --> E_MarkasNotFoundandExit S_MarkasNotFoundandExit --> N_MarkasNotFoundandExit_Node0 N_MarkasNotFoundandExit_Node0 -- No --> E_MarkasNotFoundandExit
File: GCX003.cbl
GIVEN:
Waybill search has exhausted all possibilities or encountered duplicate keys
WHEN:
The system determines no valid waybill exists
THEN:
- The waybill status is set to not found
- The process exits
β Consolidated Acceptance Criteria
- If the specific return condition → if a system error occurred, fallback to inquiry system is attempted, otherwise waybill is marked as not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FWCARGETError(["Start Step"])
E_FWCARGETError(["End Step"])
N_FWCARGETError_Node0{"The system evaluates the specific
return condition"}:::decision N_FWCARGETError_Node0_action["If a system error occurred,
fallback to inquiry system is
attempted, otherwise waybill is
marked as not found"]:::main N_FWCARGETError_Node0 -- Yes --> N_FWCARGETError_Node0_action N_FWCARGETError_Node0_action --> E_FWCARGETError S_FWCARGETError --> N_FWCARGETError_Node0 N_FWCARGETError_Node0 -- No --> E_FWCARGETError
return condition"}:::decision N_FWCARGETError_Node0_action["If a system error occurred,
fallback to inquiry system is
attempted, otherwise waybill is
marked as not found"]:::main N_FWCARGETError_Node0 -- Yes --> N_FWCARGETError_Node0_action N_FWCARGETError_Node0_action --> E_FWCARGETError S_FWCARGETError --> N_FWCARGETError_Node0 N_FWCARGETError_Node0 -- No --> E_FWCARGETError
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
FWCARGET call has completed with error or not found status
WHEN:
The system evaluates the specific return condition
THEN:
If a system error occurred, fallback to inquiry system is attempted, otherwise waybill is marked as not found
β Consolidated Acceptance Criteria
- The system initiates fallback processing → alternative inquiry system is called to attempt waybill retrieval
- Primary system retrieval fails or returns no data → system initiates inquiry system search process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FallbacktoInquirySystem(["Start Step"])
E_FallbacktoInquirySystem(["End Step"])
N_FallbacktoInquirySystem_Node0{"The system initiates fallback
processing"}:::decision N_FallbacktoInquirySystem_Node0_action["Alternative inquiry system is
called to attempt waybill retrieval"]:::main N_FallbacktoInquirySystem_Node0 -- Yes --> N_FallbacktoInquirySystem_Node0_action N_FallbacktoInquirySystem_Node0_action --> E_FallbacktoInquirySystem S_FallbacktoInquirySystem --> N_FallbacktoInquirySystem_Node0 N_FallbacktoInquirySystem_Node1{"Primary system retrieval fails or
returns no data"}:::decision N_FallbacktoInquirySystem_Node1_action["System initiates inquiry system
search process"]:::main N_FallbacktoInquirySystem_Node1 -- Yes --> N_FallbacktoInquirySystem_Node1_action N_FallbacktoInquirySystem_Node1_action --> E_FallbacktoInquirySystem N_FallbacktoInquirySystem_Node0 -- No --> N_FallbacktoInquirySystem_Node1 N_FallbacktoInquirySystem_Node1 -- No --> E_FallbacktoInquirySystem
processing"}:::decision N_FallbacktoInquirySystem_Node0_action["Alternative inquiry system is
called to attempt waybill retrieval"]:::main N_FallbacktoInquirySystem_Node0 -- Yes --> N_FallbacktoInquirySystem_Node0_action N_FallbacktoInquirySystem_Node0_action --> E_FallbacktoInquirySystem S_FallbacktoInquirySystem --> N_FallbacktoInquirySystem_Node0 N_FallbacktoInquirySystem_Node1{"Primary system retrieval fails or
returns no data"}:::decision N_FallbacktoInquirySystem_Node1_action["System initiates inquiry system
search process"]:::main N_FallbacktoInquirySystem_Node1 -- Yes --> N_FallbacktoInquirySystem_Node1_action N_FallbacktoInquirySystem_Node1_action --> E_FallbacktoInquirySystem N_FallbacktoInquirySystem_Node0 -- No --> N_FallbacktoInquirySystem_Node1 N_FallbacktoInquirySystem_Node1 -- No --> E_FallbacktoInquirySystem
File: GCX003.cbl
GIVEN:
FWCARGET call has failed with a system error
WHEN:
The system initiates fallback processing
THEN:
Alternative inquiry system is called to attempt waybill retrieval
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Container is not found in primary waybill system
WHEN:
Primary system retrieval fails or returns no data
THEN:
System initiates inquiry system search process
β Consolidated Acceptance Criteria
- All validation criteria are met → waybill status is set to found and waybill data is available for subsequent processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnWaybillFound(["Start Step"])
E_ReturnWaybillFound(["End Step"])
N_ReturnWaybillFound_Node0{"All validation criteria are met"}:::decision
N_ReturnWaybillFound_Node0_action["Waybill status is set to found and
waybill data is available for
subsequent processing"]:::main N_ReturnWaybillFound_Node0 -- Yes --> N_ReturnWaybillFound_Node0_action N_ReturnWaybillFound_Node0_action --> E_ReturnWaybillFound S_ReturnWaybillFound --> N_ReturnWaybillFound_Node0 N_ReturnWaybillFound_Node0 -- No --> E_ReturnWaybillFound
waybill data is available for
subsequent processing"]:::main N_ReturnWaybillFound_Node0 -- Yes --> N_ReturnWaybillFound_Node0_action N_ReturnWaybillFound_Node0_action --> E_ReturnWaybillFound S_ReturnWaybillFound --> N_ReturnWaybillFound_Node0 N_ReturnWaybillFound_Node0 -- No --> E_ReturnWaybillFound
File: GCX003.cbl
GIVEN:
Waybill has been successfully retrieved and validated
WHEN:
All validation criteria are met
THEN:
- Waybill status is set to found
- Waybill data is available for subsequent processing
β Consolidated Acceptance Criteria
- No valid waybill meeting criteria is found → waybill status is set to not found and no waybill data is available
- Either inquiry root record or waybill inquiry record is not found → return waybill not found status to calling process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnWaybillNotFound(["Start Step"])
E_ReturnWaybillNotFound(["End Step"])
N_ReturnWaybillNotFound_Node0{"No valid waybill meeting criteria
is found"}:::decision N_ReturnWaybillNotFound_Node0_action["Waybill status is set to not found
and no waybill data is available"]:::main N_ReturnWaybillNotFound_Node0 -- Yes --> N_ReturnWaybillNotFound_Node0_action N_ReturnWaybillNotFound_Node0_action --> E_ReturnWaybillNotFound S_ReturnWaybillNotFound --> N_ReturnWaybillNotFound_Node0 N_ReturnWaybillNotFound_Node1{"Either inquiry root record or
waybill inquiry record is not found"}:::decision N_ReturnWaybillNotFound_Node1_action["Return waybill not found status to
calling process"]:::main N_ReturnWaybillNotFound_Node1 -- Yes --> N_ReturnWaybillNotFound_Node1_action N_ReturnWaybillNotFound_Node1_action --> E_ReturnWaybillNotFound N_ReturnWaybillNotFound_Node0 -- No --> N_ReturnWaybillNotFound_Node1 N_ReturnWaybillNotFound_Node1 -- No --> E_ReturnWaybillNotFound
is found"}:::decision N_ReturnWaybillNotFound_Node0_action["Waybill status is set to not found
and no waybill data is available"]:::main N_ReturnWaybillNotFound_Node0 -- Yes --> N_ReturnWaybillNotFound_Node0_action N_ReturnWaybillNotFound_Node0_action --> E_ReturnWaybillNotFound S_ReturnWaybillNotFound --> N_ReturnWaybillNotFound_Node0 N_ReturnWaybillNotFound_Node1{"Either inquiry root record or
waybill inquiry record is not found"}:::decision N_ReturnWaybillNotFound_Node1_action["Return waybill not found status to
calling process"]:::main N_ReturnWaybillNotFound_Node1 -- Yes --> N_ReturnWaybillNotFound_Node1_action N_ReturnWaybillNotFound_Node1_action --> E_ReturnWaybillNotFound N_ReturnWaybillNotFound_Node0 -- No --> N_ReturnWaybillNotFound_Node1 N_ReturnWaybillNotFound_Node1 -- No --> E_ReturnWaybillNotFound
File: GCX003.cbl
GIVEN:
All waybill retrieval attempts have been exhausted
WHEN:
No valid waybill meeting criteria is found
THEN:
- Waybill status is set to not found
- No waybill data is available
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Waybill lookup has failed in inquiry system
WHEN:
Either inquiry root record or waybill inquiry record is not found
THEN:
Return waybill not found status to calling process
β Consolidated Acceptance Criteria
- The system sets up retrieval parameters → configure retrieval to include all car types except 98 and 99 AND include all status types AND exclude EDI incomplete records AND include temporary waybills AND exclude corrector waybills AND return the latest waybill with the most recent date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCarRetrievalCriteria(["Start Step"])
E_SetCarRetrievalCriteria(["End Step"])
N_SetCarRetrievalCriteria_Node0{"The system sets up retrieval
parameters"}:::decision N_SetCarRetrievalCriteria_Node0_action["Configure retrieval to include all
car types except 98 and 99 AND
include all status types AND exclude
EDI incomplete records AND include
temporary waybills AND exclude
corrector waybills AND return the
latest waybill with the most recent
date"]:::main N_SetCarRetrievalCriteria_Node0 -- Yes --> N_SetCarRetrievalCriteria_Node0_action N_SetCarRetrievalCriteria_Node0_action --> E_SetCarRetrievalCriteria S_SetCarRetrievalCriteria --> N_SetCarRetrievalCriteria_Node0 N_SetCarRetrievalCriteria_Node0 -- No --> E_SetCarRetrievalCriteria
parameters"}:::decision N_SetCarRetrievalCriteria_Node0_action["Configure retrieval to include all
car types except 98 and 99 AND
include all status types AND exclude
EDI incomplete records AND include
temporary waybills AND exclude
corrector waybills AND return the
latest waybill with the most recent
date"]:::main N_SetCarRetrievalCriteria_Node0 -- Yes --> N_SetCarRetrievalCriteria_Node0_action N_SetCarRetrievalCriteria_Node0_action --> E_SetCarRetrievalCriteria S_SetCarRetrievalCriteria --> N_SetCarRetrievalCriteria_Node0 N_SetCarRetrievalCriteria_Node0 -- No --> E_SetCarRetrievalCriteria
File: GCX003.cbl
GIVEN:
Waybill retrieval is initiated for a car equipment
WHEN:
The system sets up retrieval parameters
THEN:
- Configure retrieval to include all car types except 98
- 99
- Include all status types
- Exclude edi incomplete records
- Include temporary waybills
- Exclude corrector waybills
- Return the latest waybill with the most recent date
β Consolidated Acceptance Criteria
- The system calls the external waybill retrieval service (FWCARGET) → execute the waybill retrieval call and return the waybill information and processing status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallWaybillRetrievalSystem(["Start Step"])
E_CallWaybillRetrievalSystem(["End Step"])
N_CallWaybillRetrievalSystem_Node0{"The system calls the external
waybill retrieval service FWCARGET"}:::decision N_CallWaybillRetrievalSystem_Node0_action["Execute the waybill retrieval call
and return the waybill information
and processing status"]:::main N_CallWaybillRetrievalSystem_Node0 -- Yes --> N_CallWaybillRetrievalSystem_Node0_action N_CallWaybillRetrievalSystem_Node0_action --> E_CallWaybillRetrievalSystem S_CallWaybillRetrievalSystem --> N_CallWaybillRetrievalSystem_Node0 N_CallWaybillRetrievalSystem_Node0 -- No --> E_CallWaybillRetrievalSystem
waybill retrieval service FWCARGET"}:::decision N_CallWaybillRetrievalSystem_Node0_action["Execute the waybill retrieval call
and return the waybill information
and processing status"]:::main N_CallWaybillRetrievalSystem_Node0 -- Yes --> N_CallWaybillRetrievalSystem_Node0_action N_CallWaybillRetrievalSystem_Node0_action --> E_CallWaybillRetrievalSystem S_CallWaybillRetrievalSystem --> N_CallWaybillRetrievalSystem_Node0 N_CallWaybillRetrievalSystem_Node0 -- No --> E_CallWaybillRetrievalSystem
File: GCX003.cbl
GIVEN:
Waybill retrieval parameters are configured for an equipment ID
WHEN:
The system calls the external waybill retrieval service (FWCARGET)
THEN:
- Execute the waybill retrieval call
- Return the waybill information
- Processing status
β Consolidated Acceptance Criteria
- The system checks the return status from the waybill retrieval service → if the return status indicates an error OR not found condition, set the waybill status to the error condition, otherwise continue processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrievalError(["Start Step"])
E_RetrievalError(["End Step"])
N_RetrievalError_Node0{"The system checks the return status
from the waybill retrieval service"}:::decision N_RetrievalError_Node0_action["If the return status indicates an
error OR not found condition, set
the waybill status to the error
condition, otherwise continue
processing"]:::main N_RetrievalError_Node0 -- Yes --> N_RetrievalError_Node0_action N_RetrievalError_Node0_action --> E_RetrievalError S_RetrievalError --> N_RetrievalError_Node0 N_RetrievalError_Node0 -- No --> E_RetrievalError
from the waybill retrieval service"}:::decision N_RetrievalError_Node0_action["If the return status indicates an
error OR not found condition, set
the waybill status to the error
condition, otherwise continue
processing"]:::main N_RetrievalError_Node0 -- Yes --> N_RetrievalError_Node0_action N_RetrievalError_Node0_action --> E_RetrievalError S_RetrievalError --> N_RetrievalError_Node0 N_RetrievalError_Node0 -- No --> E_RetrievalError
File: GCX003.cbl
GIVEN:
A waybill retrieval operation has been executed
WHEN:
The system checks the return status from the waybill retrieval service
THEN:
If the return status indicates an error OR not found condition, set the waybill status to the error condition, otherwise continue processing
β Consolidated Acceptance Criteria
- The system checks the EDI completion release status (EDI-COMP-418-RELEASE) → if the EDI completion status equals 'Y' (released), accept the waybill for processing, otherwise perform waybill key comparison validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EDICompletionStatusReleased(["Start Step"])
E_EDICompletionStatusReleased(["End Step"])
N_EDICompletionStatusReleased_Node0{"The system checks the EDI
completion release status
EDI-COMP-418-RELEASE"}:::decision N_EDICompletionStatusReleased_Node0_action["If the EDI completion status equals
Y released, accept the waybill for
processing, otherwise perform
waybill key comparison validation"]:::main N_EDICompletionStatusReleased_Node0 -- Yes --> N_EDICompletionStatusReleased_Node0_action N_EDICompletionStatusReleased_Node0_action --> E_EDICompletionStatusReleased S_EDICompletionStatusReleased --> N_EDICompletionStatusReleased_Node0 N_EDICompletionStatusReleased_Node0 -- No --> E_EDICompletionStatusReleased
completion release status
EDI-COMP-418-RELEASE"}:::decision N_EDICompletionStatusReleased_Node0_action["If the EDI completion status equals
Y released, accept the waybill for
processing, otherwise perform
waybill key comparison validation"]:::main N_EDICompletionStatusReleased_Node0 -- Yes --> N_EDICompletionStatusReleased_Node0_action N_EDICompletionStatusReleased_Node0_action --> E_EDICompletionStatusReleased S_EDICompletionStatusReleased --> N_EDICompletionStatusReleased_Node0 N_EDICompletionStatusReleased_Node0 -- No --> E_EDICompletionStatusReleased
File: GCX003.cbl
GIVEN:
A waybill has a haulage right carrier assigned
WHEN:
The system checks the EDI completion release status (EDI-COMP-418-RELEASE)
THEN:
If the EDI completion status equals 'Y' (released), accept the waybill for processing, otherwise perform waybill key comparison validation
β Consolidated Acceptance Criteria
- The system prepares to search for previous waybill versions → set the retrieval parameter to search for previous status waybill date AND update the feedback key tracking with the current waybill feedback key
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPreviousWaybillDateProcessing(["Start Step"])
E_SetPreviousWaybillDateProcessing(["End Step"])
N_SetPreviousWaybillDateProcessing_Node0{"The system prepares to search for
previous waybill versions"}:::decision N_SetPreviousWaybillDateProcessing_Node0_action["Set the retrieval parameter to
search for previous status waybill
date AND update the feedback key
tracking with the current waybill
feedback key"]:::main N_SetPreviousWaybillDateProcessing_Node0 -- Yes --> N_SetPreviousWaybillDateProcessing_Node0_action N_SetPreviousWaybillDateProcessing_Node0_action --> E_SetPreviousWaybillDateProcessing S_SetPreviousWaybillDateProcessing --> N_SetPreviousWaybillDateProcessing_Node0 N_SetPreviousWaybillDateProcessing_Node0 -- No --> E_SetPreviousWaybillDateProcessing
previous waybill versions"}:::decision N_SetPreviousWaybillDateProcessing_Node0_action["Set the retrieval parameter to
search for previous status waybill
date AND update the feedback key
tracking with the current waybill
feedback key"]:::main N_SetPreviousWaybillDateProcessing_Node0 -- Yes --> N_SetPreviousWaybillDateProcessing_Node0_action N_SetPreviousWaybillDateProcessing_Node0_action --> E_SetPreviousWaybillDateProcessing S_SetPreviousWaybillDateProcessing --> N_SetPreviousWaybillDateProcessing_Node0 N_SetPreviousWaybillDateProcessing_Node0 -- No --> E_SetPreviousWaybillDateProcessing
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Current waybill does not meet EDI completion criteria and is not a duplicate key
WHEN:
The system prepares to search for previous waybill versions
THEN:
- Set the retrieval parameter to search for previous status waybill date
- Update the feedback key tracking with the current waybill feedback key
β Consolidated Acceptance Criteria
- The system prepares for waybill retrieval → the system assigns the equipment ID to the CARGET-CAR-ID parameter
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentIDforRetrieval(["Start Step"])
E_SetEquipmentIDforRetrieval(["End Step"])
N_SetEquipmentIDforRetrieval_Node0{"The system prepares for waybill
retrieval"}:::decision N_SetEquipmentIDforRetrieval_Node0_action["The system assigns the equipment ID
to the CARGET-CAR-ID parameter"]:::main N_SetEquipmentIDforRetrieval_Node0 -- Yes --> N_SetEquipmentIDforRetrieval_Node0_action N_SetEquipmentIDforRetrieval_Node0_action --> E_SetEquipmentIDforRetrieval S_SetEquipmentIDforRetrieval --> N_SetEquipmentIDforRetrieval_Node0 N_SetEquipmentIDforRetrieval_Node0 -- No --> E_SetEquipmentIDforRetrieval
retrieval"}:::decision N_SetEquipmentIDforRetrieval_Node0_action["The system assigns the equipment ID
to the CARGET-CAR-ID parameter"]:::main N_SetEquipmentIDforRetrieval_Node0 -- Yes --> N_SetEquipmentIDforRetrieval_Node0_action N_SetEquipmentIDforRetrieval_Node0_action --> E_SetEquipmentIDforRetrieval S_SetEquipmentIDforRetrieval --> N_SetEquipmentIDforRetrieval_Node0 N_SetEquipmentIDforRetrieval_Node0 -- No --> E_SetEquipmentIDforRetrieval
File: GCX003.cbl
GIVEN:
Equipment ID is available for waybill lookup
WHEN:
The system prepares for waybill retrieval
THEN:
The system assigns the equipment ID to the CARGET-CAR-ID parameter
β Consolidated Acceptance Criteria
- The system needs to retrieve waybill information → the system calls the FWCARGET module and processes the return status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallFWCARGETModule(["Start Step"])
E_CallFWCARGETModule(["End Step"])
N_CallFWCARGETModule_Node0{"The system needs to retrieve
waybill information"}:::decision N_CallFWCARGETModule_Node0_action["The system calls the FWCARGET
module and processes the return
status"]:::main N_CallFWCARGETModule_Node0 -- Yes --> N_CallFWCARGETModule_Node0_action N_CallFWCARGETModule_Node0_action --> E_CallFWCARGETModule S_CallFWCARGETModule --> N_CallFWCARGETModule_Node0 N_CallFWCARGETModule_Node0 -- No --> E_CallFWCARGETModule
waybill information"}:::decision N_CallFWCARGETModule_Node0_action["The system calls the FWCARGET
module and processes the return
status"]:::main N_CallFWCARGETModule_Node0 -- Yes --> N_CallFWCARGETModule_Node0_action N_CallFWCARGETModule_Node0_action --> E_CallFWCARGETModule S_CallFWCARGETModule --> N_CallFWCARGETModule_Node0 N_CallFWCARGETModule_Node0 -- No --> E_CallFWCARGETModule
File: GCX003.cbl
GIVEN:
FWCARGET parameters are properly configured with equipment ID and retrieval criteria
WHEN:
The system needs to retrieve waybill information
THEN:
- The system calls the fwcarget module
- Processes the return status
β Consolidated Acceptance Criteria
- The system checks the EDI completion release status → if EDI completion release equals 'Y', the system accepts the waybill; otherwise continues with duplicate key checking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EDICompletionStatusY(["Start Step"])
E_EDICompletionStatusY(["End Step"])
N_EDICompletionStatusY_Node0{"The system checks the EDI
completion release status"}:::decision N_EDICompletionStatusY_Node0_action["If EDI completion release equals Y
, the system accepts the waybill
otherwise continues with duplicate
key checking"]:::main N_EDICompletionStatusY_Node0 -- Yes --> N_EDICompletionStatusY_Node0_action N_EDICompletionStatusY_Node0_action --> E_EDICompletionStatusY S_EDICompletionStatusY --> N_EDICompletionStatusY_Node0 N_EDICompletionStatusY_Node0 -- No --> E_EDICompletionStatusY
completion release status"}:::decision N_EDICompletionStatusY_Node0_action["If EDI completion release equals Y
, the system accepts the waybill
otherwise continues with duplicate
key checking"]:::main N_EDICompletionStatusY_Node0 -- Yes --> N_EDICompletionStatusY_Node0_action N_EDICompletionStatusY_Node0_action --> E_EDICompletionStatusY S_EDICompletionStatusY --> N_EDICompletionStatusY_Node0 N_EDICompletionStatusY_Node0 -- No --> E_EDICompletionStatusY
File: GCX003.cbl
GIVEN:
A waybill with haulage right carrier has been retrieved
WHEN:
The system checks the EDI completion release status
THEN:
If EDI completion release equals 'Y', the system accepts the waybill; otherwise continues with duplicate key checking
β Consolidated Acceptance Criteria
- The system needs to retrieve an earlier waybill version → the system sets CARGET to previous status waybill date mode
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPreviousWaybillDateStatus(["Start Step"])
E_SetPreviousWaybillDateStatus(["End Step"])
N_SetPreviousWaybillDateStatus_Node0{"The system needs to retrieve an
earlier waybill version"}:::decision N_SetPreviousWaybillDateStatus_Node0_action["The system sets CARGET to previous
status waybill date mode"]:::main N_SetPreviousWaybillDateStatus_Node0 -- Yes --> N_SetPreviousWaybillDateStatus_Node0_action N_SetPreviousWaybillDateStatus_Node0_action --> E_SetPreviousWaybillDateStatus S_SetPreviousWaybillDateStatus --> N_SetPreviousWaybillDateStatus_Node0 N_SetPreviousWaybillDateStatus_Node0 -- No --> E_SetPreviousWaybillDateStatus
earlier waybill version"}:::decision N_SetPreviousWaybillDateStatus_Node0_action["The system sets CARGET to previous
status waybill date mode"]:::main N_SetPreviousWaybillDateStatus_Node0 -- Yes --> N_SetPreviousWaybillDateStatus_Node0_action N_SetPreviousWaybillDateStatus_Node0_action --> E_SetPreviousWaybillDateStatus S_SetPreviousWaybillDateStatus --> N_SetPreviousWaybillDateStatus_Node0 N_SetPreviousWaybillDateStatus_Node0 -- No --> E_SetPreviousWaybillDateStatus
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Current waybill key differs from previous key and EDI is not complete
WHEN:
The system needs to retrieve an earlier waybill version
THEN:
The system sets CARGET to previous status waybill date mode
β Consolidated Acceptance Criteria
- The system detects a potential infinite loop condition → the system sets CARGET-NOT-FOUND status to exit the retrieval loop
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkasNotFound(["Start Step"])
E_MarkasNotFound(["End Step"])
N_MarkasNotFound_Node0{"The system detects a potential
infinite loop condition"}:::decision N_MarkasNotFound_Node0_action["The system sets CARGET-NOT-FOUND
status to exit the retrieval loop"]:::main N_MarkasNotFound_Node0 -- Yes --> N_MarkasNotFound_Node0_action N_MarkasNotFound_Node0_action --> E_MarkasNotFound S_MarkasNotFound --> N_MarkasNotFound_Node0 N_MarkasNotFound_Node0 -- No --> E_MarkasNotFound
infinite loop condition"}:::decision N_MarkasNotFound_Node0_action["The system sets CARGET-NOT-FOUND
status to exit the retrieval loop"]:::main N_MarkasNotFound_Node0 -- Yes --> N_MarkasNotFound_Node0_action N_MarkasNotFound_Node0_action --> E_MarkasNotFound S_MarkasNotFound --> N_MarkasNotFound_Node0 N_MarkasNotFound_Node0 -- No --> E_MarkasNotFound
File: GCX003.cbl
GIVEN:
The current waybill key matches the previously processed key
WHEN:
The system detects a potential infinite loop condition
THEN:
The system sets CARGET-NOT-FOUND status to exit the retrieval loop
β Consolidated Acceptance Criteria
- If the return status from waybill retrieval → if CARGET-ERROR is true, the system sets error status; otherwise checks for not found condition
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WaybillRetrievalError(["Start Step"])
E_WaybillRetrievalError(["End Step"])
N_WaybillRetrievalError_Node0{"The system evaluates the return
status from waybill retrieval"}:::decision N_WaybillRetrievalError_Node0_action["If CARGET-ERROR is true, the system
sets error status otherwise checks
for not found condition"]:::main N_WaybillRetrievalError_Node0 -- Yes --> N_WaybillRetrievalError_Node0_action N_WaybillRetrievalError_Node0_action --> E_WaybillRetrievalError S_WaybillRetrievalError --> N_WaybillRetrievalError_Node0 N_WaybillRetrievalError_Node0 -- No --> E_WaybillRetrievalError
status from waybill retrieval"}:::decision N_WaybillRetrievalError_Node0_action["If CARGET-ERROR is true, the system
sets error status otherwise checks
for not found condition"]:::main N_WaybillRetrievalError_Node0 -- Yes --> N_WaybillRetrievalError_Node0_action N_WaybillRetrievalError_Node0_action --> E_WaybillRetrievalError S_WaybillRetrievalError --> N_WaybillRetrievalError_Node0 N_WaybillRetrievalError_Node0 -- No --> E_WaybillRetrievalError
File: GCX003.cbl
GIVEN:
FWCARGET module execution has completed
WHEN:
The system evaluates the return status from waybill retrieval
THEN:
If CARGET-ERROR is true, the system sets error status; otherwise checks for not found condition
β Consolidated Acceptance Criteria
- The system processes the error condition → the system moves the CARGET return flag to the waybill indicator status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetErrorStatus(["Start Step"])
E_SetErrorStatus(["End Step"])
N_SetErrorStatus_Node0{"The system processes the error
condition"}:::decision N_SetErrorStatus_Node0_action["The system moves the CARGET return
flag to the waybill indicator status"]:::exclusion N_SetErrorStatus_Node0 -- Yes -->|Alternative| N_SetErrorStatus_Node0_action N_SetErrorStatus_Node0_action --> E_SetErrorStatus S_SetErrorStatus --> N_SetErrorStatus_Node0 N_SetErrorStatus_Node0 -- No --> E_SetErrorStatus
condition"}:::decision N_SetErrorStatus_Node0_action["The system moves the CARGET return
flag to the waybill indicator status"]:::exclusion N_SetErrorStatus_Node0 -- Yes -->|Alternative| N_SetErrorStatus_Node0_action N_SetErrorStatus_Node0_action --> E_SetErrorStatus S_SetErrorStatus --> N_SetErrorStatus_Node0 N_SetErrorStatus_Node0 -- No --> E_SetErrorStatus
File: GCX003.cbl
GIVEN:
An error has been detected in waybill retrieval
WHEN:
The system processes the error condition
THEN:
The system moves the CARGET return flag to the waybill indicator status
β Consolidated Acceptance Criteria
- The system checks the waybill retrieval results → the system moves the CARGET return flag to waybill indicator and proceeds to inquiry fallback if waybill not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifWaybillNotFound(["Start Step"])
E_CheckifWaybillNotFound(["End Step"])
N_CheckifWaybillNotFound_Node0{"The system checks the waybill
retrieval results"}:::decision N_CheckifWaybillNotFound_Node0_action["The system moves the CARGET return
flag to waybill indicator and
proceeds to inquiry fallback if
waybill not found"]:::main N_CheckifWaybillNotFound_Node0 -- Yes --> N_CheckifWaybillNotFound_Node0_action N_CheckifWaybillNotFound_Node0_action --> E_CheckifWaybillNotFound S_CheckifWaybillNotFound --> N_CheckifWaybillNotFound_Node0 N_CheckifWaybillNotFound_Node0 -- No --> E_CheckifWaybillNotFound
retrieval results"}:::decision N_CheckifWaybillNotFound_Node0_action["The system moves the CARGET return
flag to waybill indicator and
proceeds to inquiry fallback if
waybill not found"]:::main N_CheckifWaybillNotFound_Node0 -- Yes --> N_CheckifWaybillNotFound_Node0_action N_CheckifWaybillNotFound_Node0_action --> E_CheckifWaybillNotFound S_CheckifWaybillNotFound --> N_CheckifWaybillNotFound_Node0 N_CheckifWaybillNotFound_Node0 -- No --> E_CheckifWaybillNotFound
File: GCX003.cbl
GIVEN:
No error occurred in waybill retrieval
WHEN:
The system checks the waybill retrieval results
THEN:
- The system moves the carget return flag to waybill indicator
- Proceeds to inquiry fallback if waybill not found
β Consolidated Acceptance Criteria
- The system needs to attempt alternative retrieval methods → the system performs inquiry system fallback retrieval process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallInquirySystemFallback(["Start Step"])
E_CallInquirySystemFallback(["End Step"])
N_CallInquirySystemFallback_Node0{"The system needs to attempt
alternative retrieval methods"}:::decision N_CallInquirySystemFallback_Node0_action["The system performs inquiry system
fallback retrieval process"]:::main N_CallInquirySystemFallback_Node0 -- Yes --> N_CallInquirySystemFallback_Node0_action N_CallInquirySystemFallback_Node0_action --> E_CallInquirySystemFallback S_CallInquirySystemFallback --> N_CallInquirySystemFallback_Node0 N_CallInquirySystemFallback_Node0 -- No --> E_CallInquirySystemFallback
alternative retrieval methods"}:::decision N_CallInquirySystemFallback_Node0_action["The system performs inquiry system
fallback retrieval process"]:::main N_CallInquirySystemFallback_Node0 -- Yes --> N_CallInquirySystemFallback_Node0_action N_CallInquirySystemFallback_Node0_action --> E_CallInquirySystemFallback S_CallInquirySystemFallback --> N_CallInquirySystemFallback_Node0 N_CallInquirySystemFallback_Node0 -- No --> E_CallInquirySystemFallback
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Primary waybill retrieval did not find a waybill
WHEN:
The system needs to attempt alternative retrieval methods
THEN:
The system performs inquiry system fallback retrieval process
β Consolidated Acceptance Criteria
- System determines waybill was not found and container is not found → initiate inquiry system fallback processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrimaryWaybillSystemFailed(["Start Step"])
E_PrimaryWaybillSystemFailed(["End Step"])
N_PrimaryWaybillSystemFailed_Node0{"System determines waybill was not
found and container is not found"}:::decision N_PrimaryWaybillSystemFailed_Node0_action["Initiate inquiry system fallback
processing"]:::main N_PrimaryWaybillSystemFailed_Node0 -- Yes --> N_PrimaryWaybillSystemFailed_Node0_action N_PrimaryWaybillSystemFailed_Node0_action --> E_PrimaryWaybillSystemFailed S_PrimaryWaybillSystemFailed --> N_PrimaryWaybillSystemFailed_Node0 N_PrimaryWaybillSystemFailed_Node0 -- No --> E_PrimaryWaybillSystemFailed
found and container is not found"}:::decision N_PrimaryWaybillSystemFailed_Node0_action["Initiate inquiry system fallback
processing"]:::main N_PrimaryWaybillSystemFailed_Node0 -- Yes --> N_PrimaryWaybillSystemFailed_Node0_action N_PrimaryWaybillSystemFailed_Node0_action --> E_PrimaryWaybillSystemFailed S_PrimaryWaybillSystemFailed --> N_PrimaryWaybillSystemFailed_Node0 N_PrimaryWaybillSystemFailed_Node0 -- No --> E_PrimaryWaybillSystemFailed
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Equipment waybill lookup has failed in primary system
WHEN:
- System determines waybill was not found
- Container is not found
THEN:
Initiate inquiry system fallback processing
β Consolidated Acceptance Criteria
- System accesses FWCIROOT with equipment car ID → retrieve container inquiry root record or return not found status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessInquirySystemFWCIROOT(["Start Step"])
E_AccessInquirySystemFWCIROOT(["End Step"])
N_AccessInquirySystemFWCIROOT_Node0{"System accesses FWCIROOT with
equipment car ID"}:::decision N_AccessInquirySystemFWCIROOT_Node0_action["Retrieve container inquiry root
record or return not found status"]:::main N_AccessInquirySystemFWCIROOT_Node0 -- Yes --> N_AccessInquirySystemFWCIROOT_Node0_action N_AccessInquirySystemFWCIROOT_Node0_action --> E_AccessInquirySystemFWCIROOT S_AccessInquirySystemFWCIROOT --> N_AccessInquirySystemFWCIROOT_Node0 N_AccessInquirySystemFWCIROOT_Node0 -- No --> E_AccessInquirySystemFWCIROOT
equipment car ID"}:::decision N_AccessInquirySystemFWCIROOT_Node0_action["Retrieve container inquiry root
record or return not found status"]:::main N_AccessInquirySystemFWCIROOT_Node0 -- Yes --> N_AccessInquirySystemFWCIROOT_Node0_action N_AccessInquirySystemFWCIROOT_Node0_action --> E_AccessInquirySystemFWCIROOT S_AccessInquirySystemFWCIROOT --> N_AccessInquirySystemFWCIROOT_Node0 N_AccessInquirySystemFWCIROOT_Node0 -- No --> E_AccessInquirySystemFWCIROOT
File: GCX003.cbl
GIVEN:
Equipment ID is available for lookup
WHEN:
System accesses FWCIROOT with equipment car ID
THEN:
Retrieve container inquiry root record or return not found status
β Consolidated Acceptance Criteria
- System checks for valid inquiry root record → continue processing if found, otherwise return waybill not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InquiryRootRecordFound(["Start Step"])
E_InquiryRootRecordFound(["End Step"])
N_InquiryRootRecordFound_Node0{"System checks for valid inquiry
root record"}:::decision N_InquiryRootRecordFound_Node0_action["Continue processing if found,
otherwise return waybill not found"]:::main N_InquiryRootRecordFound_Node0 -- Yes --> N_InquiryRootRecordFound_Node0_action N_InquiryRootRecordFound_Node0_action --> E_InquiryRootRecordFound S_InquiryRootRecordFound --> N_InquiryRootRecordFound_Node0 N_InquiryRootRecordFound_Node0 -- No --> E_InquiryRootRecordFound
root record"}:::decision N_InquiryRootRecordFound_Node0_action["Continue processing if found,
otherwise return waybill not found"]:::main N_InquiryRootRecordFound_Node0 -- Yes --> N_InquiryRootRecordFound_Node0_action N_InquiryRootRecordFound_Node0_action --> E_InquiryRootRecordFound S_InquiryRootRecordFound --> N_InquiryRootRecordFound_Node0 N_InquiryRootRecordFound_Node0 -- No --> E_InquiryRootRecordFound
File: GCX003.cbl
GIVEN:
Container inquiry system has been accessed
WHEN:
System checks for valid inquiry root record
THEN:
Continue processing if found, otherwise return waybill not found
β Consolidated Acceptance Criteria
- System processes the inquiry root data → extract original road number, CSC station number, and waybill number for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractRoadStationWaybillNumbers(["Start Step"])
E_ExtractRoadStationWaybillNumbers(["End Step"])
N_ExtractRoadStationWaybillNumbers_Node0{"System processes the inquiry root
data"}:::decision N_ExtractRoadStationWaybillNumbers_Node0_action["Extract original road number, CSC
station number, and waybill number
for further processing"]:::main N_ExtractRoadStationWaybillNumbers_Node0 -- Yes --> N_ExtractRoadStationWaybillNumbers_Node0_action N_ExtractRoadStationWaybillNumbers_Node0_action --> E_ExtractRoadStationWaybillNumbers S_ExtractRoadStationWaybillNumbers --> N_ExtractRoadStationWaybillNumbers_Node0 N_ExtractRoadStationWaybillNumbers_Node0 -- No --> E_ExtractRoadStationWaybillNumbers
data"}:::decision N_ExtractRoadStationWaybillNumbers_Node0_action["Extract original road number, CSC
station number, and waybill number
for further processing"]:::main N_ExtractRoadStationWaybillNumbers_Node0 -- Yes --> N_ExtractRoadStationWaybillNumbers_Node0_action N_ExtractRoadStationWaybillNumbers_Node0_action --> E_ExtractRoadStationWaybillNumbers S_ExtractRoadStationWaybillNumbers --> N_ExtractRoadStationWaybillNumbers_Node0 N_ExtractRoadStationWaybillNumbers_Node0 -- No --> E_ExtractRoadStationWaybillNumbers
File: GCX003.cbl
GIVEN:
Valid inquiry root record exists
WHEN:
System processes the inquiry root data
THEN:
Extract original road number, CSC station number, and waybill number for further processing
β Consolidated Acceptance Criteria
- System accesses FWIQROOT with these key components → retrieve waybill inquiry record or return not found status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveWaybillfromFWIQROOT(["Start Step"])
E_RetrieveWaybillfromFWIQROOT(["End Step"])
N_RetrieveWaybillfromFWIQROOT_Node0{"System accesses FWIQROOT with these
key components"}:::decision N_RetrieveWaybillfromFWIQROOT_Node0_action["Retrieve waybill inquiry record or
return not found status"]:::main N_RetrieveWaybillfromFWIQROOT_Node0 -- Yes --> N_RetrieveWaybillfromFWIQROOT_Node0_action N_RetrieveWaybillfromFWIQROOT_Node0_action --> E_RetrieveWaybillfromFWIQROOT S_RetrieveWaybillfromFWIQROOT --> N_RetrieveWaybillfromFWIQROOT_Node0 N_RetrieveWaybillfromFWIQROOT_Node0 -- No --> E_RetrieveWaybillfromFWIQROOT
key components"}:::decision N_RetrieveWaybillfromFWIQROOT_Node0_action["Retrieve waybill inquiry record or
return not found status"]:::main N_RetrieveWaybillfromFWIQROOT_Node0 -- Yes --> N_RetrieveWaybillfromFWIQROOT_Node0_action N_RetrieveWaybillfromFWIQROOT_Node0_action --> E_RetrieveWaybillfromFWIQROOT S_RetrieveWaybillfromFWIQROOT --> N_RetrieveWaybillfromFWIQROOT_Node0 N_RetrieveWaybillfromFWIQROOT_Node0 -- No --> E_RetrieveWaybillfromFWIQROOT
File: GCX003.cbl
GIVEN:
Road number, station number, and waybill number are available
WHEN:
System accesses FWIQROOT with these key components
THEN:
Retrieve waybill inquiry record or return not found status
β Consolidated Acceptance Criteria
- Billing code equals 'ZE' → set equipment status to 'E' for empty, otherwise set to 'L' for loaded
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConvertLoadEmptyStatus(["Start Step"])
E_ConvertLoadEmptyStatus(["End Step"])
N_ConvertLoadEmptyStatus_Node0{"Billing code equals ZE"}:::decision
N_ConvertLoadEmptyStatus_Node0_action["Set equipment status to E for
empty, otherwise set to L for loaded"]:::main N_ConvertLoadEmptyStatus_Node0 -- Yes --> N_ConvertLoadEmptyStatus_Node0_action N_ConvertLoadEmptyStatus_Node0_action --> E_ConvertLoadEmptyStatus S_ConvertLoadEmptyStatus --> N_ConvertLoadEmptyStatus_Node0 N_ConvertLoadEmptyStatus_Node0 -- No --> E_ConvertLoadEmptyStatus
empty, otherwise set to L for loaded"]:::main N_ConvertLoadEmptyStatus_Node0 -- Yes --> N_ConvertLoadEmptyStatus_Node0_action N_ConvertLoadEmptyStatus_Node0_action --> E_ConvertLoadEmptyStatus S_ConvertLoadEmptyStatus --> N_ConvertLoadEmptyStatus_Node0 N_ConvertLoadEmptyStatus_Node0 -- No --> E_ConvertLoadEmptyStatus
File: GCX003.cbl
GIVEN:
Waybill inquiry record contains billing code
WHEN:
Billing code equals 'ZE'
THEN:
Set equipment status to 'E' for empty, otherwise set to 'L' for loaded
β Consolidated Acceptance Criteria
- System maps inquiry data to standard format → transfer road number, waybill number, car ID, load/empty status, TOFC/COFC indicator, waybill date, and origin station to standard waybill structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapDateandOriginInformation(["Start Step"])
E_MapDateandOriginInformation(["End Step"])
N_MapDateandOriginInformation_Node0{"System maps inquiry data to
standard format"}:::decision N_MapDateandOriginInformation_Node0_action["Transfer road number, waybill
number, car ID, loadempty status,
TOFCCOFC indicator, waybill date,
and origin station to standard
waybill structure"]:::main N_MapDateandOriginInformation_Node0 -- Yes --> N_MapDateandOriginInformation_Node0_action N_MapDateandOriginInformation_Node0_action --> E_MapDateandOriginInformation S_MapDateandOriginInformation --> N_MapDateandOriginInformation_Node0 N_MapDateandOriginInformation_Node0 -- No --> E_MapDateandOriginInformation
standard format"}:::decision N_MapDateandOriginInformation_Node0_action["Transfer road number, waybill
number, car ID, loadempty status,
TOFCCOFC indicator, waybill date,
and origin station to standard
waybill structure"]:::main N_MapDateandOriginInformation_Node0 -- Yes --> N_MapDateandOriginInformation_Node0_action N_MapDateandOriginInformation_Node0_action --> E_MapDateandOriginInformation S_MapDateandOriginInformation --> N_MapDateandOriginInformation_Node0 N_MapDateandOriginInformation_Node0 -- No --> E_MapDateandOriginInformation
File: GCX003.cbl
GIVEN:
Valid waybill inquiry record exists
WHEN:
System maps inquiry data to standard format
THEN:
Transfer road number, waybill number, car ID, load/empty status, TOFC/COFC indicator, waybill date, and origin station to standard waybill structure
β Consolidated Acceptance Criteria
- System transfers data to standard format → populate shipment root structure with all waybill information for downstream processing
- The system maps inquiry data to standard SHIPROOT format → convert railroad number, waybill number, car ID, load/empty indicator, container indicator, and waybill date to standard format
- Converting inquiry data to standard equipment format → map inquiry origin road number to standard origin road number, inquiry waybill number to standard waybill number, inquiry car ID to standard car ID, and determine load/empty status where 'ZE' billing code means empty otherwise loaded
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapInquiryDatatoStandardFormat(["Start Step"])
E_MapInquiryDatatoStandardFormat(["End Step"])
N_MapInquiryDatatoStandardFormat_Node0{"System transfers data to standard
format"}:::decision N_MapInquiryDatatoStandardFormat_Node0_action["Populate shipment root structure
with all waybill information for
downstream processing"]:::main N_MapInquiryDatatoStandardFormat_Node0 -- Yes --> N_MapInquiryDatatoStandardFormat_Node0_action N_MapInquiryDatatoStandardFormat_Node0_action --> E_MapInquiryDatatoStandardFormat S_MapInquiryDatatoStandardFormat --> N_MapInquiryDatatoStandardFormat_Node0 N_MapInquiryDatatoStandardFormat_Node1{"The system maps inquiry data to
standard SHIPROOT format"}:::decision N_MapInquiryDatatoStandardFormat_Node1_action["Convert railroad number, waybill
number, car ID, loadempty indicator,
container indicator, and waybill
date to standard format"]:::main N_MapInquiryDatatoStandardFormat_Node1 -- Yes --> N_MapInquiryDatatoStandardFormat_Node1_action N_MapInquiryDatatoStandardFormat_Node1_action --> E_MapInquiryDatatoStandardFormat N_MapInquiryDatatoStandardFormat_Node0 -- No --> N_MapInquiryDatatoStandardFormat_Node1 N_MapInquiryDatatoStandardFormat_Node2{"Converting inquiry data to standard
equipment format"}:::decision N_MapInquiryDatatoStandardFormat_Node2_action["Map inquiry origin road number to
standard origin road number, inquiry
waybill number to standard waybill
number, inquiry car ID to standard
car ID, and determine loadempty
status where ZE billing code means
empty otherwise loaded"]:::main N_MapInquiryDatatoStandardFormat_Node2 -- Yes --> N_MapInquiryDatatoStandardFormat_Node2_action N_MapInquiryDatatoStandardFormat_Node2_action --> E_MapInquiryDatatoStandardFormat N_MapInquiryDatatoStandardFormat_Node1 -- No --> N_MapInquiryDatatoStandardFormat_Node2 N_MapInquiryDatatoStandardFormat_Node2 -- No --> E_MapInquiryDatatoStandardFormat
format"}:::decision N_MapInquiryDatatoStandardFormat_Node0_action["Populate shipment root structure
with all waybill information for
downstream processing"]:::main N_MapInquiryDatatoStandardFormat_Node0 -- Yes --> N_MapInquiryDatatoStandardFormat_Node0_action N_MapInquiryDatatoStandardFormat_Node0_action --> E_MapInquiryDatatoStandardFormat S_MapInquiryDatatoStandardFormat --> N_MapInquiryDatatoStandardFormat_Node0 N_MapInquiryDatatoStandardFormat_Node1{"The system maps inquiry data to
standard SHIPROOT format"}:::decision N_MapInquiryDatatoStandardFormat_Node1_action["Convert railroad number, waybill
number, car ID, loadempty indicator,
container indicator, and waybill
date to standard format"]:::main N_MapInquiryDatatoStandardFormat_Node1 -- Yes --> N_MapInquiryDatatoStandardFormat_Node1_action N_MapInquiryDatatoStandardFormat_Node1_action --> E_MapInquiryDatatoStandardFormat N_MapInquiryDatatoStandardFormat_Node0 -- No --> N_MapInquiryDatatoStandardFormat_Node1 N_MapInquiryDatatoStandardFormat_Node2{"Converting inquiry data to standard
equipment format"}:::decision N_MapInquiryDatatoStandardFormat_Node2_action["Map inquiry origin road number to
standard origin road number, inquiry
waybill number to standard waybill
number, inquiry car ID to standard
car ID, and determine loadempty
status where ZE billing code means
empty otherwise loaded"]:::main N_MapInquiryDatatoStandardFormat_Node2 -- Yes --> N_MapInquiryDatatoStandardFormat_Node2_action N_MapInquiryDatatoStandardFormat_Node2_action --> E_MapInquiryDatatoStandardFormat N_MapInquiryDatatoStandardFormat_Node1 -- No --> N_MapInquiryDatatoStandardFormat_Node2 N_MapInquiryDatatoStandardFormat_Node2 -- No --> E_MapInquiryDatatoStandardFormat
File: GCX003.cbl
GIVEN:
Inquiry data has been successfully mapped
WHEN:
System transfers data to standard format
THEN:
Populate shipment root structure with all waybill information for downstream processing
File: GCX003.cbl
GIVEN:
Waybill information has been retrieved from inquiry system
WHEN:
The system maps inquiry data to standard SHIPROOT format
THEN:
Convert railroad number, waybill number, car ID, load/empty indicator, container indicator, and waybill date to standard format
File: GCX003.cbl
GIVEN:
Waybill inquiry system returned valid equipment data
WHEN:
Converting inquiry data to standard equipment format
THEN:
Map inquiry origin road number to standard origin road number, inquiry waybill number to standard waybill number, inquiry car ID to standard car ID, and determine load/empty status where 'ZE' billing code means empty otherwise loaded
β Consolidated Acceptance Criteria
- System accesses FWIQINFO with waybill key and routing segment 'B1' → retrieve routing information or continue without routing data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveRoutingInformation(["Start Step"])
E_RetrieveRoutingInformation(["End Step"])
N_RetrieveRoutingInformation_Node0{"System accesses FWIQINFO with
waybill key and routing segment B1"}:::decision N_RetrieveRoutingInformation_Node0_action["Retrieve routing information or
continue without routing data"]:::main N_RetrieveRoutingInformation_Node0 -- Yes --> N_RetrieveRoutingInformation_Node0_action N_RetrieveRoutingInformation_Node0_action --> E_RetrieveRoutingInformation S_RetrieveRoutingInformation --> N_RetrieveRoutingInformation_Node0 N_RetrieveRoutingInformation_Node0 -- No --> E_RetrieveRoutingInformation
waybill key and routing segment B1"}:::decision N_RetrieveRoutingInformation_Node0_action["Retrieve routing information or
continue without routing data"]:::main N_RetrieveRoutingInformation_Node0 -- Yes --> N_RetrieveRoutingInformation_Node0_action N_RetrieveRoutingInformation_Node0_action --> E_RetrieveRoutingInformation S_RetrieveRoutingInformation --> N_RetrieveRoutingInformation_Node0 N_RetrieveRoutingInformation_Node0 -- No --> E_RetrieveRoutingInformation
File: GCX003.cbl
GIVEN:
Valid waybill exists in inquiry system
WHEN:
- System accesses fwiqinfo with waybill key
- Routing segment 'b1'
THEN:
Retrieve routing information or continue without routing data
β Consolidated Acceptance Criteria
- System checks if routing info fields contain data → process routing data if available, otherwise complete waybill processing without routing information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutingInfoAvailable(["Start Step"])
E_RoutingInfoAvailable(["End Step"])
N_RoutingInfoAvailable_Node0{"System checks if routing info
fields contain data"}:::decision N_RoutingInfoAvailable_Node0_action["Process routing data if available,
otherwise complete waybill
processing without routing
information"]:::main N_RoutingInfoAvailable_Node0 -- Yes --> N_RoutingInfoAvailable_Node0_action N_RoutingInfoAvailable_Node0_action --> E_RoutingInfoAvailable S_RoutingInfoAvailable --> N_RoutingInfoAvailable_Node0 N_RoutingInfoAvailable_Node0 -- No --> E_RoutingInfoAvailable
fields contain data"}:::decision N_RoutingInfoAvailable_Node0_action["Process routing data if available,
otherwise complete waybill
processing without routing
information"]:::main N_RoutingInfoAvailable_Node0 -- Yes --> N_RoutingInfoAvailable_Node0_action N_RoutingInfoAvailable_Node0_action --> E_RoutingInfoAvailable S_RoutingInfoAvailable --> N_RoutingInfoAvailable_Node0 N_RoutingInfoAvailable_Node0 -- No --> E_RoutingInfoAvailable
File: GCX003.cbl
GIVEN:
Routing information system has been accessed
WHEN:
System checks if routing info fields contain data
THEN:
Process routing data if available, otherwise complete waybill processing without routing information
β Consolidated Acceptance Criteria
- System parses routing info fields by spaces → extract individual routing fields with their lengths for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractRoutingFields(["Start Step"])
E_ExtractRoutingFields(["End Step"])
N_ExtractRoutingFields_Node0{"System parses routing info fields
by spaces"}:::decision N_ExtractRoutingFields_Node0_action["Extract individual routing fields
with their lengths for further
processing"]:::main N_ExtractRoutingFields_Node0 -- Yes --> N_ExtractRoutingFields_Node0_action N_ExtractRoutingFields_Node0_action --> E_ExtractRoutingFields S_ExtractRoutingFields --> N_ExtractRoutingFields_Node0 N_ExtractRoutingFields_Node0 -- No --> E_ExtractRoutingFields
by spaces"}:::decision N_ExtractRoutingFields_Node0_action["Extract individual routing fields
with their lengths for further
processing"]:::main N_ExtractRoutingFields_Node0 -- Yes --> N_ExtractRoutingFields_Node0_action N_ExtractRoutingFields_Node0_action --> E_ExtractRoutingFields S_ExtractRoutingFields --> N_ExtractRoutingFields_Node0 N_ExtractRoutingFields_Node0 -- No --> E_ExtractRoutingFields
File: GCX003.cbl
GIVEN:
Routing information contains data
WHEN:
System parses routing info fields by spaces
THEN:
Extract individual routing fields with their lengths for further processing
β Consolidated Acceptance Criteria
- System processes each field sequentially → assign fields to SCAC codes and junction R260 codes in alternating pattern up to 4 SCAC entries
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ParseSCACandJunctionData(["Start Step"])
E_ParseSCACandJunctionData(["End Step"])
N_ParseSCACandJunctionData_Node0{"System processes each field
sequentially"}:::decision N_ParseSCACandJunctionData_Node0_action["Assign fields to SCAC codes and
junction R260 codes in alternating
pattern up to 4 SCAC entries"]:::main N_ParseSCACandJunctionData_Node0 -- Yes --> N_ParseSCACandJunctionData_Node0_action N_ParseSCACandJunctionData_Node0_action --> E_ParseSCACandJunctionData S_ParseSCACandJunctionData --> N_ParseSCACandJunctionData_Node0 N_ParseSCACandJunctionData_Node0 -- No --> E_ParseSCACandJunctionData
sequentially"}:::decision N_ParseSCACandJunctionData_Node0_action["Assign fields to SCAC codes and
junction R260 codes in alternating
pattern up to 4 SCAC entries"]:::main N_ParseSCACandJunctionData_Node0 -- Yes --> N_ParseSCACandJunctionData_Node0_action N_ParseSCACandJunctionData_Node0_action --> E_ParseSCACandJunctionData S_ParseSCACandJunctionData --> N_ParseSCACandJunctionData_Node0 N_ParseSCACandJunctionData_Node0 -- No --> E_ParseSCACandJunctionData
File: GCX003.cbl
GIVEN:
Individual routing fields have been extracted
WHEN:
System processes each field sequentially
THEN:
- Assign fields to scac codes
- Junction r260 codes in alternating pattern up to 4 scac entries
β Consolidated Acceptance Criteria
- System builds routing information structure → create routing information array with SCAC and junction pairs for shipment root structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildRoutingInformationArray(["Start Step"])
E_BuildRoutingInformationArray(["End Step"])
N_BuildRoutingInformationArray_Node0{"System builds routing information
structure"}:::decision N_BuildRoutingInformationArray_Node0_action["Create routing information array
with SCAC and junction pairs for
shipment root structure"]:::main N_BuildRoutingInformationArray_Node0 -- Yes --> N_BuildRoutingInformationArray_Node0_action N_BuildRoutingInformationArray_Node0_action --> E_BuildRoutingInformationArray S_BuildRoutingInformationArray --> N_BuildRoutingInformationArray_Node0 N_BuildRoutingInformationArray_Node0 -- No --> E_BuildRoutingInformationArray
structure"}:::decision N_BuildRoutingInformationArray_Node0_action["Create routing information array
with SCAC and junction pairs for
shipment root structure"]:::main N_BuildRoutingInformationArray_Node0 -- Yes --> N_BuildRoutingInformationArray_Node0_action N_BuildRoutingInformationArray_Node0_action --> E_BuildRoutingInformationArray S_BuildRoutingInformationArray --> N_BuildRoutingInformationArray_Node0 N_BuildRoutingInformationArray_Node0 -- No --> E_BuildRoutingInformationArray
File: GCX003.cbl
GIVEN:
SCAC codes and junction data have been parsed
WHEN:
System builds routing information structure
THEN:
- Create routing information array with scac
- Junction pairs for shipment root structure
β Consolidated Acceptance Criteria
- All processing steps complete successfully → return waybill found status with complete waybill and routing information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnWaybillDataSuccess(["Start Step"])
E_ReturnWaybillDataSuccess(["End Step"])
N_ReturnWaybillDataSuccess_Node0{"All processing steps complete
successfully"}:::decision N_ReturnWaybillDataSuccess_Node0_action["Return waybill found status with
complete waybill and routing
information"]:::main N_ReturnWaybillDataSuccess_Node0 -- Yes --> N_ReturnWaybillDataSuccess_Node0_action N_ReturnWaybillDataSuccess_Node0_action --> E_ReturnWaybillDataSuccess S_ReturnWaybillDataSuccess --> N_ReturnWaybillDataSuccess_Node0 N_ReturnWaybillDataSuccess_Node0 -- No --> E_ReturnWaybillDataSuccess
successfully"}:::decision N_ReturnWaybillDataSuccess_Node0_action["Return waybill found status with
complete waybill and routing
information"]:::main N_ReturnWaybillDataSuccess_Node0 -- Yes --> N_ReturnWaybillDataSuccess_Node0_action N_ReturnWaybillDataSuccess_Node0_action --> E_ReturnWaybillDataSuccess S_ReturnWaybillDataSuccess --> N_ReturnWaybillDataSuccess_Node0 N_ReturnWaybillDataSuccess_Node0 -- No --> E_ReturnWaybillDataSuccess
File: GCX003.cbl
GIVEN:
Waybill data has been successfully retrieved and mapped
WHEN:
All processing steps complete successfully
THEN:
- Return waybill found status with complete waybill
- Routing information
β Consolidated Acceptance Criteria
- The system initializes cargo search parameters → all cargo record structures are cleared and ready for new cargo data retrieval
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeCargoSearchParameters(["Start Step"])
E_InitializeCargoSearchParameters(["End Step"])
N_InitializeCargoSearchParameters_Node0{"The system initializes cargo search
parameters"}:::decision N_InitializeCargoSearchParameters_Node0_action["All cargo record structures are
cleared and ready for new cargo data
retrieval"]:::main N_InitializeCargoSearchParameters_Node0 -- Yes --> N_InitializeCargoSearchParameters_Node0_action N_InitializeCargoSearchParameters_Node0_action --> E_InitializeCargoSearchParameters S_InitializeCargoSearchParameters --> N_InitializeCargoSearchParameters_Node0 N_InitializeCargoSearchParameters_Node0 -- No --> E_InitializeCargoSearchParameters
parameters"}:::decision N_InitializeCargoSearchParameters_Node0_action["All cargo record structures are
cleared and ready for new cargo data
retrieval"]:::main N_InitializeCargoSearchParameters_Node0 -- Yes --> N_InitializeCargoSearchParameters_Node0_action N_InitializeCargoSearchParameters_Node0_action --> E_InitializeCargoSearchParameters S_InitializeCargoSearchParameters --> N_InitializeCargoSearchParameters_Node0 N_InitializeCargoSearchParameters_Node0 -- No --> E_InitializeCargoSearchParameters
File: GCX003.cbl
GIVEN:
Equipment processing is starting for a specific equipment piece
WHEN:
The system initializes cargo search parameters
THEN:
- All cargo record structures are cleared
- Ready for new cargo data retrieval
β Consolidated Acceptance Criteria
- The system sets up cargo search parameters → waybill root key and waybill date are extracted from equipment record for cargo search
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetWaybillRootKeyfromEquipment(["Start Step"])
E_SetWaybillRootKeyfromEquipment(["End Step"])
N_SetWaybillRootKeyfromEquipment_Node0{"The system sets up cargo search
parameters"}:::decision N_SetWaybillRootKeyfromEquipment_Node0_action["Waybill root key and waybill date
are extracted from equipment record
for cargo search"]:::main N_SetWaybillRootKeyfromEquipment_Node0 -- Yes --> N_SetWaybillRootKeyfromEquipment_Node0_action N_SetWaybillRootKeyfromEquipment_Node0_action --> E_SetWaybillRootKeyfromEquipment S_SetWaybillRootKeyfromEquipment --> N_SetWaybillRootKeyfromEquipment_Node0 N_SetWaybillRootKeyfromEquipment_Node0 -- No --> E_SetWaybillRootKeyfromEquipment
parameters"}:::decision N_SetWaybillRootKeyfromEquipment_Node0_action["Waybill root key and waybill date
are extracted from equipment record
for cargo search"]:::main N_SetWaybillRootKeyfromEquipment_Node0 -- Yes --> N_SetWaybillRootKeyfromEquipment_Node0_action N_SetWaybillRootKeyfromEquipment_Node0_action --> E_SetWaybillRootKeyfromEquipment S_SetWaybillRootKeyfromEquipment --> N_SetWaybillRootKeyfromEquipment_Node0 N_SetWaybillRootKeyfromEquipment_Node0 -- No --> E_SetWaybillRootKeyfromEquipment
File: GCX003.cbl
GIVEN:
Equipment has been processed and waybill information is available
WHEN:
The system sets up cargo search parameters
THEN:
- Waybill root key
- Waybill date are extracted from equipment record for cargo search
β Consolidated Acceptance Criteria
- The system prepares cargo search criteria → equipment ID is assigned to the cargo search index for precise cargo matching
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentIDforSearch(["Start Step"])
E_SetEquipmentIDforSearch(["End Step"])
N_SetEquipmentIDforSearch_Node0{"The system prepares cargo search
criteria"}:::decision N_SetEquipmentIDforSearch_Node0_action["Equipment ID is assigned to the
cargo search index for precise cargo
matching"]:::main N_SetEquipmentIDforSearch_Node0 -- Yes --> N_SetEquipmentIDforSearch_Node0_action N_SetEquipmentIDforSearch_Node0_action --> E_SetEquipmentIDforSearch S_SetEquipmentIDforSearch --> N_SetEquipmentIDforSearch_Node0 N_SetEquipmentIDforSearch_Node0 -- No --> E_SetEquipmentIDforSearch
criteria"}:::decision N_SetEquipmentIDforSearch_Node0_action["Equipment ID is assigned to the
cargo search index for precise cargo
matching"]:::main N_SetEquipmentIDforSearch_Node0 -- Yes --> N_SetEquipmentIDforSearch_Node0_action N_SetEquipmentIDforSearch_Node0_action --> E_SetEquipmentIDforSearch S_SetEquipmentIDforSearch --> N_SetEquipmentIDforSearch_Node0 N_SetEquipmentIDforSearch_Node0 -- No --> E_SetEquipmentIDforSearch
File: GCX003.cbl
GIVEN:
Equipment ID is available from current equipment processing
WHEN:
The system prepares cargo search criteria
THEN:
Equipment ID is assigned to the cargo search index for precise cargo matching
β Consolidated Acceptance Criteria
- The system builds the cargo database index key → complete index key is constructed combining waybill root-date and equipment ID for cargo record retrieval
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildCargoDatabaseIndexKey(["Start Step"])
E_BuildCargoDatabaseIndexKey(["End Step"])
N_BuildCargoDatabaseIndexKey_Node0{"The system builds the cargo
database index key"}:::decision N_BuildCargoDatabaseIndexKey_Node0_action["Complete index key is constructed
combining waybill root-date and
equipment ID for cargo record
retrieval"]:::main N_BuildCargoDatabaseIndexKey_Node0 -- Yes --> N_BuildCargoDatabaseIndexKey_Node0_action N_BuildCargoDatabaseIndexKey_Node0_action --> E_BuildCargoDatabaseIndexKey S_BuildCargoDatabaseIndexKey --> N_BuildCargoDatabaseIndexKey_Node0 N_BuildCargoDatabaseIndexKey_Node0 -- No --> E_BuildCargoDatabaseIndexKey
database index key"}:::decision N_BuildCargoDatabaseIndexKey_Node0_action["Complete index key is constructed
combining waybill root-date and
equipment ID for cargo record
retrieval"]:::main N_BuildCargoDatabaseIndexKey_Node0 -- Yes --> N_BuildCargoDatabaseIndexKey_Node0_action N_BuildCargoDatabaseIndexKey_Node0_action --> E_BuildCargoDatabaseIndexKey S_BuildCargoDatabaseIndexKey --> N_BuildCargoDatabaseIndexKey_Node0 N_BuildCargoDatabaseIndexKey_Node0 -- No --> E_BuildCargoDatabaseIndexKey
File: GCX003.cbl
GIVEN:
Waybill root key, waybill date, and equipment ID are available
WHEN:
The system builds the cargo database index key
THEN:
- Complete index key is constructed combining waybill root-date
- Equipment id for cargo record retrieval
β Consolidated Acceptance Criteria
- The system executes the first cargo record query → database query is performed using the cargo index key and cargo record status is returned
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExecuteFirstCargoRecordQuery(["Start Step"])
E_ExecuteFirstCargoRecordQuery(["End Step"])
N_ExecuteFirstCargoRecordQuery_Node0{"The system executes the first cargo
record query"}:::decision N_ExecuteFirstCargoRecordQuery_Node0_action["Database query is performed using
the cargo index key and cargo record
status is returned"]:::main N_ExecuteFirstCargoRecordQuery_Node0 -- Yes --> N_ExecuteFirstCargoRecordQuery_Node0_action N_ExecuteFirstCargoRecordQuery_Node0_action --> E_ExecuteFirstCargoRecordQuery S_ExecuteFirstCargoRecordQuery --> N_ExecuteFirstCargoRecordQuery_Node0 N_ExecuteFirstCargoRecordQuery_Node0 -- No --> E_ExecuteFirstCargoRecordQuery
record query"}:::decision N_ExecuteFirstCargoRecordQuery_Node0_action["Database query is performed using
the cargo index key and cargo record
status is returned"]:::main N_ExecuteFirstCargoRecordQuery_Node0 -- Yes --> N_ExecuteFirstCargoRecordQuery_Node0_action N_ExecuteFirstCargoRecordQuery_Node0_action --> E_ExecuteFirstCargoRecordQuery S_ExecuteFirstCargoRecordQuery --> N_ExecuteFirstCargoRecordQuery_Node0 N_ExecuteFirstCargoRecordQuery_Node0 -- No --> E_ExecuteFirstCargoRecordQuery
File: GCX003.cbl
GIVEN:
Cargo database index key is properly constructed
WHEN:
The system executes the first cargo record query
THEN:
- Database query is performed using the cargo index key
- Cargo record status is returned
β Consolidated Acceptance Criteria
- If the query results → cargo found status is determined based on database query return status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoRecordFound(["Start Step"])
E_CargoRecordFound(["End Step"])
N_CargoRecordFound_Node0{"The system evaluates the query
results"}:::decision N_CargoRecordFound_Node0_action["Cargo found status is determined
based on database query return
status"]:::main N_CargoRecordFound_Node0 -- Yes --> N_CargoRecordFound_Node0_action N_CargoRecordFound_Node0_action --> E_CargoRecordFound S_CargoRecordFound --> N_CargoRecordFound_Node0 N_CargoRecordFound_Node0 -- No --> E_CargoRecordFound
results"}:::decision N_CargoRecordFound_Node0_action["Cargo found status is determined
based on database query return
status"]:::main N_CargoRecordFound_Node0 -- Yes --> N_CargoRecordFound_Node0_action N_CargoRecordFound_Node0_action --> E_CargoRecordFound S_CargoRecordFound --> N_CargoRecordFound_Node0 N_CargoRecordFound_Node0 -- No --> E_CargoRecordFound
File: GCX003.cbl
GIVEN:
Cargo record query has been executed
WHEN:
The system evaluates the query results
THEN:
Cargo found status is determined based on database query return status
β Consolidated Acceptance Criteria
- The system validates cargo ownership → equipment ID and waybill root-date from cargo record are compared against current equipment values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateCargoBelongstoEquipment(["Start Step"])
E_ValidateCargoBelongstoEquipment(["End Step"])
N_ValidateCargoBelongstoEquipment_Node0{"The system validates cargo
ownership"}:::decision N_ValidateCargoBelongstoEquipment_Node0_action["Equipment ID and waybill root-date
from cargo record are compared
against current equipment values"]:::main N_ValidateCargoBelongstoEquipment_Node0 -- Yes --> N_ValidateCargoBelongstoEquipment_Node0_action N_ValidateCargoBelongstoEquipment_Node0_action --> E_ValidateCargoBelongstoEquipment S_ValidateCargoBelongstoEquipment --> N_ValidateCargoBelongstoEquipment_Node0 N_ValidateCargoBelongstoEquipment_Node0 -- No --> E_ValidateCargoBelongstoEquipment
ownership"}:::decision N_ValidateCargoBelongstoEquipment_Node0_action["Equipment ID and waybill root-date
from cargo record are compared
against current equipment values"]:::main N_ValidateCargoBelongstoEquipment_Node0 -- Yes --> N_ValidateCargoBelongstoEquipment_Node0_action N_ValidateCargoBelongstoEquipment_Node0_action --> E_ValidateCargoBelongstoEquipment S_ValidateCargoBelongstoEquipment --> N_ValidateCargoBelongstoEquipment_Node0 N_ValidateCargoBelongstoEquipment_Node0 -- No --> E_ValidateCargoBelongstoEquipment
File: GCX003.cbl
GIVEN:
A cargo record has been retrieved from the database
WHEN:
The system validates cargo ownership
THEN:
- Equipment id
- Waybill root-date from cargo record are compared against current equipment values
β Consolidated Acceptance Criteria
- The system compares cargo record data with current equipment data → match is confirmed when equipment ID equals cargo equipment ID AND waybill root-date equals cargo waybill root-date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentIDandWaybillMatch(["Start Step"])
E_EquipmentIDandWaybillMatch(["End Step"])
N_EquipmentIDandWaybillMatch_Node0{"The system compares cargo record
data with current equipment data"}:::decision N_EquipmentIDandWaybillMatch_Node0_action["Match is confirmed when equipment
ID equals cargo equipment ID AND
waybill root-date equals cargo
waybill root-date"]:::main N_EquipmentIDandWaybillMatch_Node0 -- Yes --> N_EquipmentIDandWaybillMatch_Node0_action N_EquipmentIDandWaybillMatch_Node0_action --> E_EquipmentIDandWaybillMatch S_EquipmentIDandWaybillMatch --> N_EquipmentIDandWaybillMatch_Node0 N_EquipmentIDandWaybillMatch_Node0 -- No --> E_EquipmentIDandWaybillMatch
data with current equipment data"}:::decision N_EquipmentIDandWaybillMatch_Node0_action["Match is confirmed when equipment
ID equals cargo equipment ID AND
waybill root-date equals cargo
waybill root-date"]:::main N_EquipmentIDandWaybillMatch_Node0 -- Yes --> N_EquipmentIDandWaybillMatch_Node0_action N_EquipmentIDandWaybillMatch_Node0_action --> E_EquipmentIDandWaybillMatch S_EquipmentIDandWaybillMatch --> N_EquipmentIDandWaybillMatch_Node0 N_EquipmentIDandWaybillMatch_Node0 -- No --> E_EquipmentIDandWaybillMatch
File: GCX003.cbl
GIVEN:
Cargo record contains equipment ID and waybill information
WHEN:
The system compares cargo record data with current equipment data
THEN:
- Match is confirmed when equipment id equals cargo equipment id
- Waybill root-date equals cargo waybill root-date
β Consolidated Acceptance Criteria
- The system sets cargo processing status → cargo found indicator is set to true and cargo data is available for processing
- The system confirms the cargo record is valid → the cargo status is set to found to indicate successful cargo record retrieval
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCargoFoundStatus(["Start Step"])
E_SetCargoFoundStatus(["End Step"])
N_SetCargoFoundStatus_Node0{"The system sets cargo processing
status"}:::decision N_SetCargoFoundStatus_Node0_action["Cargo found indicator is set to
true and cargo data is available for
processing"]:::main N_SetCargoFoundStatus_Node0 -- Yes --> N_SetCargoFoundStatus_Node0_action N_SetCargoFoundStatus_Node0_action --> E_SetCargoFoundStatus S_SetCargoFoundStatus --> N_SetCargoFoundStatus_Node0 N_SetCargoFoundStatus_Node1{"The system confirms the cargo
record is valid"}:::decision N_SetCargoFoundStatus_Node1_action["The cargo status is set to found to
indicate successful cargo record
retrieval"]:::main N_SetCargoFoundStatus_Node1 -- Yes --> N_SetCargoFoundStatus_Node1_action N_SetCargoFoundStatus_Node1_action --> E_SetCargoFoundStatus N_SetCargoFoundStatus_Node0 -- No --> N_SetCargoFoundStatus_Node1 N_SetCargoFoundStatus_Node1 -- No --> E_SetCargoFoundStatus
status"}:::decision N_SetCargoFoundStatus_Node0_action["Cargo found indicator is set to
true and cargo data is available for
processing"]:::main N_SetCargoFoundStatus_Node0 -- Yes --> N_SetCargoFoundStatus_Node0_action N_SetCargoFoundStatus_Node0_action --> E_SetCargoFoundStatus S_SetCargoFoundStatus --> N_SetCargoFoundStatus_Node0 N_SetCargoFoundStatus_Node1{"The system confirms the cargo
record is valid"}:::decision N_SetCargoFoundStatus_Node1_action["The cargo status is set to found to
indicate successful cargo record
retrieval"]:::main N_SetCargoFoundStatus_Node1 -- Yes --> N_SetCargoFoundStatus_Node1_action N_SetCargoFoundStatus_Node1_action --> E_SetCargoFoundStatus N_SetCargoFoundStatus_Node0 -- No --> N_SetCargoFoundStatus_Node1 N_SetCargoFoundStatus_Node1 -- No --> E_SetCargoFoundStatus
File: GCX003.cbl
GIVEN:
Cargo record has been retrieved and validated as belonging to current equipment
WHEN:
The system sets cargo processing status
THEN:
- Cargo found indicator is set to true
- Cargo data is available for processing
File: GCX003.cbl
GIVEN:
Both equipment ID and waybill root date match the retrieved cargo record
WHEN:
The system confirms the cargo record is valid
THEN:
The cargo status is set to found to indicate successful cargo record retrieval
β Consolidated Acceptance Criteria
- The system sets cargo processing status → no cargo found indicator is set to true indicating no valid cargo exists for this equipment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetNoCargoFoundStatus(["Start Step"])
E_SetNoCargoFoundStatus(["End Step"])
N_SetNoCargoFoundStatus_Node0{"The system sets cargo processing
status"}:::decision N_SetNoCargoFoundStatus_Node0_action["No cargo found indicator is set to
true indicating no valid cargo
exists for this equipment"]:::main N_SetNoCargoFoundStatus_Node0 -- Yes --> N_SetNoCargoFoundStatus_Node0_action N_SetNoCargoFoundStatus_Node0_action --> E_SetNoCargoFoundStatus S_SetNoCargoFoundStatus --> N_SetNoCargoFoundStatus_Node0 N_SetNoCargoFoundStatus_Node0 -- No --> E_SetNoCargoFoundStatus
status"}:::decision N_SetNoCargoFoundStatus_Node0_action["No cargo found indicator is set to
true indicating no valid cargo
exists for this equipment"]:::main N_SetNoCargoFoundStatus_Node0 -- Yes --> N_SetNoCargoFoundStatus_Node0_action N_SetNoCargoFoundStatus_Node0_action --> E_SetNoCargoFoundStatus S_SetNoCargoFoundStatus --> N_SetNoCargoFoundStatus_Node0 N_SetNoCargoFoundStatus_Node0 -- No --> E_SetNoCargoFoundStatus
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo record query returned no results OR retrieved cargo does not match current equipment
WHEN:
The system sets cargo processing status
THEN:
No cargo found indicator is set to true indicating no valid cargo exists for this equipment
β Consolidated Acceptance Criteria
- The system attempts to retrieve next cargo record → database query is executed to get the next cargo record using the same search criteria
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetNextCargoRecord(["Start Step"])
E_GetNextCargoRecord(["End Step"])
N_GetNextCargoRecord_Node0{"The system attempts to retrieve
next cargo record"}:::decision N_GetNextCargoRecord_Node0_action["Database query is executed to get
the next cargo record using the same
search criteria"]:::main N_GetNextCargoRecord_Node0 -- Yes --> N_GetNextCargoRecord_Node0_action N_GetNextCargoRecord_Node0_action --> E_GetNextCargoRecord S_GetNextCargoRecord --> N_GetNextCargoRecord_Node0 N_GetNextCargoRecord_Node0 -- No --> E_GetNextCargoRecord
next cargo record"}:::decision N_GetNextCargoRecord_Node0_action["Database query is executed to get
the next cargo record using the same
search criteria"]:::main N_GetNextCargoRecord_Node0 -- Yes --> N_GetNextCargoRecord_Node0_action N_GetNextCargoRecord_Node0_action --> E_GetNextCargoRecord S_GetNextCargoRecord --> N_GetNextCargoRecord_Node0 N_GetNextCargoRecord_Node0 -- No --> E_GetNextCargoRecord
File: GCX003.cbl
GIVEN:
Initial cargo record has been processed and more cargo records may exist
WHEN:
The system attempts to retrieve next cargo record
THEN:
Database query is executed to get the next cargo record using the same search criteria
β Consolidated Acceptance Criteria
- The system validates the next cargo record → equipment ID and waybill information from next cargo record are validated against current equipment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateNextCargoRecord(["Start Step"])
E_ValidateNextCargoRecord(["End Step"])
N_ValidateNextCargoRecord_Node0{"The system validates the next cargo
record"}:::decision N_ValidateNextCargoRecord_Node0_action["Equipment ID and waybill
information from next cargo record
are validated against current
equipment"]:::main N_ValidateNextCargoRecord_Node0 -- Yes --> N_ValidateNextCargoRecord_Node0_action N_ValidateNextCargoRecord_Node0_action --> E_ValidateNextCargoRecord S_ValidateNextCargoRecord --> N_ValidateNextCargoRecord_Node0 N_ValidateNextCargoRecord_Node0 -- No --> E_ValidateNextCargoRecord
record"}:::decision N_ValidateNextCargoRecord_Node0_action["Equipment ID and waybill
information from next cargo record
are validated against current
equipment"]:::main N_ValidateNextCargoRecord_Node0 -- Yes --> N_ValidateNextCargoRecord_Node0_action N_ValidateNextCargoRecord_Node0_action --> E_ValidateNextCargoRecord S_ValidateNextCargoRecord --> N_ValidateNextCargoRecord_Node0 N_ValidateNextCargoRecord_Node0 -- No --> E_ValidateNextCargoRecord
File: GCX003.cbl
GIVEN:
Additional cargo record has been retrieved from database
WHEN:
The system validates the next cargo record
THEN:
- Equipment id
- Waybill information from next cargo record are validated against current equipment
β Consolidated Acceptance Criteria
- The system compares next record with current equipment → match is confirmed when next record equipment ID equals current equipment ID AND next record waybill root-date equals current waybill root-date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NextRecordMatchesEquipment(["Start Step"])
E_NextRecordMatchesEquipment(["End Step"])
N_NextRecordMatchesEquipment_Node0{"The system compares next record
with current equipment"}:::decision N_NextRecordMatchesEquipment_Node0_action["Match is confirmed when next record
equipment ID equals current
equipment ID AND next record waybill
root-date equals current waybill
root-date"]:::main N_NextRecordMatchesEquipment_Node0 -- Yes --> N_NextRecordMatchesEquipment_Node0_action N_NextRecordMatchesEquipment_Node0_action --> E_NextRecordMatchesEquipment S_NextRecordMatchesEquipment --> N_NextRecordMatchesEquipment_Node0 N_NextRecordMatchesEquipment_Node0 -- No --> E_NextRecordMatchesEquipment
with current equipment"}:::decision N_NextRecordMatchesEquipment_Node0_action["Match is confirmed when next record
equipment ID equals current
equipment ID AND next record waybill
root-date equals current waybill
root-date"]:::main N_NextRecordMatchesEquipment_Node0 -- Yes --> N_NextRecordMatchesEquipment_Node0_action N_NextRecordMatchesEquipment_Node0_action --> E_NextRecordMatchesEquipment S_NextRecordMatchesEquipment --> N_NextRecordMatchesEquipment_Node0 N_NextRecordMatchesEquipment_Node0 -- No --> E_NextRecordMatchesEquipment
File: GCX003.cbl
GIVEN:
Next cargo record contains equipment and waybill identification
WHEN:
The system compares next record with current equipment
THEN:
- Match is confirmed when next record equipment id equals current equipment id
- Next record waybill root-date equals current waybill root-date
β Consolidated Acceptance Criteria
- The system processes the matching cargo record → cargo record is processed and system continues to search for additional cargo records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinuetoNextRecord(["Start Step"])
E_ContinuetoNextRecord(["End Step"])
N_ContinuetoNextRecord_Node0{"The system processes the matching
cargo record"}:::decision N_ContinuetoNextRecord_Node0_action["Cargo record is processed and
system continues to search for
additional cargo records"]:::main N_ContinuetoNextRecord_Node0 -- Yes --> N_ContinuetoNextRecord_Node0_action N_ContinuetoNextRecord_Node0_action --> E_ContinuetoNextRecord S_ContinuetoNextRecord --> N_ContinuetoNextRecord_Node0 N_ContinuetoNextRecord_Node0 -- No --> E_ContinuetoNextRecord
cargo record"}:::decision N_ContinuetoNextRecord_Node0_action["Cargo record is processed and
system continues to search for
additional cargo records"]:::main N_ContinuetoNextRecord_Node0 -- Yes --> N_ContinuetoNextRecord_Node0_action N_ContinuetoNextRecord_Node0_action --> E_ContinuetoNextRecord S_ContinuetoNextRecord --> N_ContinuetoNextRecord_Node0 N_ContinuetoNextRecord_Node0 -- No --> E_ContinuetoNextRecord
File: GCX003.cbl
GIVEN:
Next cargo record matches current equipment and waybill
WHEN:
The system processes the matching cargo record
THEN:
- Cargo record is processed
- System continues to search for additional cargo records
β Consolidated Acceptance Criteria
- The system completes cargo record processing → no more cargo indicator is set to true indicating all cargo records for this equipment have been processed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetNoMoreCargoStatus(["Start Step"])
E_SetNoMoreCargoStatus(["End Step"])
N_SetNoMoreCargoStatus_Node0{"The system completes cargo record
processing"}:::decision N_SetNoMoreCargoStatus_Node0_action["No more cargo indicator is set to
true indicating all cargo records
for this equipment have been
processed"]:::main N_SetNoMoreCargoStatus_Node0 -- Yes --> N_SetNoMoreCargoStatus_Node0_action N_SetNoMoreCargoStatus_Node0_action --> E_SetNoMoreCargoStatus S_SetNoMoreCargoStatus --> N_SetNoMoreCargoStatus_Node0 N_SetNoMoreCargoStatus_Node0 -- No --> E_SetNoMoreCargoStatus
processing"}:::decision N_SetNoMoreCargoStatus_Node0_action["No more cargo indicator is set to
true indicating all cargo records
for this equipment have been
processed"]:::main N_SetNoMoreCargoStatus_Node0 -- Yes --> N_SetNoMoreCargoStatus_Node0_action N_SetNoMoreCargoStatus_Node0_action --> E_SetNoMoreCargoStatus S_SetNoMoreCargoStatus --> N_SetNoMoreCargoStatus_Node0 N_SetNoMoreCargoStatus_Node0 -- No --> E_SetNoMoreCargoStatus
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
No more cargo records are available OR next cargo record does not match current equipment
WHEN:
The system completes cargo record processing
THEN:
No more cargo indicator is set to true indicating all cargo records for this equipment have been processed
β Consolidated Acceptance Criteria
- The system returns cargo data to equipment processing → cargo record data and cargo found status are made available for subsequent equipment processing steps
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnCargoRecordData(["Start Step"])
E_ReturnCargoRecordData(["End Step"])
N_ReturnCargoRecordData_Node0{"The system returns cargo data to
equipment processing"}:::decision N_ReturnCargoRecordData_Node0_action["Cargo record data and cargo found
status are made available for
subsequent equipment processing
steps"]:::main N_ReturnCargoRecordData_Node0 -- Yes --> N_ReturnCargoRecordData_Node0_action N_ReturnCargoRecordData_Node0_action --> E_ReturnCargoRecordData S_ReturnCargoRecordData --> N_ReturnCargoRecordData_Node0 N_ReturnCargoRecordData_Node0 -- No --> E_ReturnCargoRecordData
equipment processing"}:::decision N_ReturnCargoRecordData_Node0_action["Cargo record data and cargo found
status are made available for
subsequent equipment processing
steps"]:::main N_ReturnCargoRecordData_Node0 -- Yes --> N_ReturnCargoRecordData_Node0_action N_ReturnCargoRecordData_Node0_action --> E_ReturnCargoRecordData S_ReturnCargoRecordData --> N_ReturnCargoRecordData_Node0 N_ReturnCargoRecordData_Node0 -- No --> E_ReturnCargoRecordData
File: GCX003.cbl
GIVEN:
Cargo record retrieval and validation process is complete
WHEN:
The system returns cargo data to equipment processing
THEN:
- Cargo record data
- Cargo found status are made available for subsequent equipment processing steps
β Consolidated Acceptance Criteria
- There are processing errors present → skip the cargo attachment process and exit
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AreThereProcessingErrors(["Start Step"])
E_AreThereProcessingErrors(["End Step"])
N_AreThereProcessingErrors_Node0{"There are processing errors present"}:::decision
N_AreThereProcessingErrors_Node0_action["Skip the cargo attachment process
and exit"]:::main N_AreThereProcessingErrors_Node0 -- Yes --> N_AreThereProcessingErrors_Node0_action N_AreThereProcessingErrors_Node0_action --> E_AreThereProcessingErrors S_AreThereProcessingErrors --> N_AreThereProcessingErrors_Node0 N_AreThereProcessingErrors_Node0 -- No --> E_AreThereProcessingErrors
and exit"]:::main N_AreThereProcessingErrors_Node0 -- Yes --> N_AreThereProcessingErrors_Node0_action N_AreThereProcessingErrors_Node0_action --> E_AreThereProcessingErrors S_AreThereProcessingErrors --> N_AreThereProcessingErrors_Node0 N_AreThereProcessingErrors_Node0 -- No --> E_AreThereProcessingErrors
File: GCX003.cbl
GIVEN:
A SEND request is being processed for cargo attachment
WHEN:
There are processing errors present
THEN:
- Skip the cargo attachment process
- Exit
β Consolidated Acceptance Criteria
- Spawn processing is required → skip the cargo attachment process and exit
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsSpawnRequired(["Start Step"])
E_IsSpawnRequired(["End Step"])
N_IsSpawnRequired_Node0{"Spawn processing is required"}:::decision
N_IsSpawnRequired_Node0_action["Skip the cargo attachment process
and exit"]:::main N_IsSpawnRequired_Node0 -- Yes --> N_IsSpawnRequired_Node0_action N_IsSpawnRequired_Node0_action --> E_IsSpawnRequired S_IsSpawnRequired --> N_IsSpawnRequired_Node0 N_IsSpawnRequired_Node0 -- No --> E_IsSpawnRequired
and exit"]:::main N_IsSpawnRequired_Node0 -- Yes --> N_IsSpawnRequired_Node0_action N_IsSpawnRequired_Node0_action --> E_IsSpawnRequired S_IsSpawnRequired --> N_IsSpawnRequired_Node0 N_IsSpawnRequired_Node0 -- No --> E_IsSpawnRequired
File: GCX003.cbl
GIVEN:
A SEND request with no processing errors is being processed
WHEN:
Spawn processing is required
THEN:
- Skip the cargo attachment process
- Exit
β Consolidated Acceptance Criteria
- The cargo is classified as empty residue → skip the cargo attachment process and exit
- The cargo is classified as empty residue type → skip all cargo status validations and proceed to completion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCargoEmptyResidue(["Start Step"])
E_IsCargoEmptyResidue(["End Step"])
N_IsCargoEmptyResidue_Node0{"The cargo is classified as empty
residue"}:::decision N_IsCargoEmptyResidue_Node0_action["Skip the cargo attachment process
and exit"]:::main N_IsCargoEmptyResidue_Node0 -- Yes --> N_IsCargoEmptyResidue_Node0_action N_IsCargoEmptyResidue_Node0_action --> E_IsCargoEmptyResidue S_IsCargoEmptyResidue --> N_IsCargoEmptyResidue_Node0 N_IsCargoEmptyResidue_Node1{"The cargo is classified as empty
residue type"}:::decision N_IsCargoEmptyResidue_Node1_action["Skip all cargo status validations
and proceed to completion"]:::main N_IsCargoEmptyResidue_Node1 -- Yes --> N_IsCargoEmptyResidue_Node1_action N_IsCargoEmptyResidue_Node1_action --> E_IsCargoEmptyResidue N_IsCargoEmptyResidue_Node0 -- No --> N_IsCargoEmptyResidue_Node1 N_IsCargoEmptyResidue_Node1 -- No --> E_IsCargoEmptyResidue
residue"}:::decision N_IsCargoEmptyResidue_Node0_action["Skip the cargo attachment process
and exit"]:::main N_IsCargoEmptyResidue_Node0 -- Yes --> N_IsCargoEmptyResidue_Node0_action N_IsCargoEmptyResidue_Node0_action --> E_IsCargoEmptyResidue S_IsCargoEmptyResidue --> N_IsCargoEmptyResidue_Node0 N_IsCargoEmptyResidue_Node1{"The cargo is classified as empty
residue type"}:::decision N_IsCargoEmptyResidue_Node1_action["Skip all cargo status validations
and proceed to completion"]:::main N_IsCargoEmptyResidue_Node1 -- Yes --> N_IsCargoEmptyResidue_Node1_action N_IsCargoEmptyResidue_Node1_action --> E_IsCargoEmptyResidue N_IsCargoEmptyResidue_Node0 -- No --> N_IsCargoEmptyResidue_Node1 N_IsCargoEmptyResidue_Node1 -- No --> E_IsCargoEmptyResidue
File: GCX003.cbl
GIVEN:
A SEND request with no errors or spawn requirements is being processed
WHEN:
The cargo is classified as empty residue
THEN:
- Skip the cargo attachment process
- Exit
File: GCX003.cbl
GIVEN:
A cargo record exists and has been retrieved for processing
WHEN:
The cargo is classified as empty residue type
THEN:
- Skip all cargo status validations
- Proceed to completion
β Consolidated Acceptance Criteria
- The cargo has immediate transport bond type (IT bond) → skip cargo attachment and add to special processing queue
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ITBondImmediateTransport(["Start Step"])
E_ITBondImmediateTransport(["End Step"])
N_ITBondImmediateTransport_Node0{"The cargo has immediate transport
bond type IT bond"}:::decision N_ITBondImmediateTransport_Node0_action["Skip cargo attachment and add to
special processing queue"]:::main N_ITBondImmediateTransport_Node0 -- Yes --> N_ITBondImmediateTransport_Node0_action N_ITBondImmediateTransport_Node0_action --> E_ITBondImmediateTransport S_ITBondImmediateTransport --> N_ITBondImmediateTransport_Node0 N_ITBondImmediateTransport_Node0 -- No --> E_ITBondImmediateTransport
bond type IT bond"}:::decision N_ITBondImmediateTransport_Node0_action["Skip cargo attachment and add to
special processing queue"]:::main N_ITBondImmediateTransport_Node0 -- Yes --> N_ITBondImmediateTransport_Node0_action N_ITBondImmediateTransport_Node0_action --> E_ITBondImmediateTransport S_ITBondImmediateTransport --> N_ITBondImmediateTransport_Node0 N_ITBondImmediateTransport_Node0 -- No --> E_ITBondImmediateTransport
File: GCX003.cbl
GIVEN:
A cargo record is being evaluated for attachment to train manifest
WHEN:
The cargo has immediate transport bond type (IT bond)
THEN:
- Skip cargo attachment
- Add to special processing queue
β Consolidated Acceptance Criteria
- The cargo has TR bond already created for IT processing → skip cargo attachment and add to special processing queue
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TRCreatedforITBond(["Start Step"])
E_TRCreatedforITBond(["End Step"])
N_TRCreatedforITBond_Node0{"The cargo has TR bond already
created for IT processing"}:::decision N_TRCreatedforITBond_Node0_action["Skip cargo attachment and add to
special processing queue"]:::main N_TRCreatedforITBond_Node0 -- Yes --> N_TRCreatedforITBond_Node0_action N_TRCreatedforITBond_Node0_action --> E_TRCreatedforITBond S_TRCreatedforITBond --> N_TRCreatedforITBond_Node0 N_TRCreatedforITBond_Node0 -- No --> E_TRCreatedforITBond
created for IT processing"}:::decision N_TRCreatedforITBond_Node0_action["Skip cargo attachment and add to
special processing queue"]:::main N_TRCreatedforITBond_Node0 -- Yes --> N_TRCreatedforITBond_Node0_action N_TRCreatedforITBond_Node0_action --> E_TRCreatedforITBond S_TRCreatedforITBond --> N_TRCreatedforITBond_Node0 N_TRCreatedforITBond_Node0 -- No --> E_TRCreatedforITBond
File: GCX003.cbl
GIVEN:
A cargo record without immediate transport bond is being evaluated
WHEN:
The cargo has TR bond already created for IT processing
THEN:
- Skip cargo attachment
- Add to special processing queue
β Consolidated Acceptance Criteria
- The cargo is US-Canada-US movement type AND TR bond is not created for IT AND cargo has release status → skip cargo attachment and add to special processing queue
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_USCanadaUSMovementwithReleaseStatus(["Start Step"])
E_USCanadaUSMovementwithReleaseStatus(["End Step"])
N_USCanadaUSMovementwithReleaseStatus_Node0{"The cargo is US-Canada-US movement
type AND TR bond is not created for
IT AND cargo has release status"}:::decision N_USCanadaUSMovementwithReleaseStatus_Node0_action["Skip cargo attachment and add to
special processing queue"]:::main N_USCanadaUSMovementwithReleaseStatus_Node0 -- Yes --> N_USCanadaUSMovementwithReleaseStatus_Node0_action N_USCanadaUSMovementwithReleaseStatus_Node0_action --> E_USCanadaUSMovementwithReleaseStatus S_USCanadaUSMovementwithReleaseStatus --> N_USCanadaUSMovementwithReleaseStatus_Node0 N_USCanadaUSMovementwithReleaseStatus_Node0 -- No --> E_USCanadaUSMovementwithReleaseStatus
type AND TR bond is not created for
IT AND cargo has release status"}:::decision N_USCanadaUSMovementwithReleaseStatus_Node0_action["Skip cargo attachment and add to
special processing queue"]:::main N_USCanadaUSMovementwithReleaseStatus_Node0 -- Yes --> N_USCanadaUSMovementwithReleaseStatus_Node0_action N_USCanadaUSMovementwithReleaseStatus_Node0_action --> E_USCanadaUSMovementwithReleaseStatus S_USCanadaUSMovementwithReleaseStatus --> N_USCanadaUSMovementwithReleaseStatus_Node0 N_USCanadaUSMovementwithReleaseStatus_Node0 -- No --> E_USCanadaUSMovementwithReleaseStatus
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record without IT bond or existing TR bond is being evaluated
WHEN:
- The cargo is us-canada-us movement type
- Tr bond is not created for it
- Cargo has release status
THEN:
- Skip cargo attachment
- Add to special processing queue
β Consolidated Acceptance Criteria
- The cargo has default bond type AND TR bond is not created for IT AND cargo has release status → skip cargo attachment and add to special processing queue
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DefaultBondwithReleaseStatus(["Start Step"])
E_DefaultBondwithReleaseStatus(["End Step"])
N_DefaultBondwithReleaseStatus_Node0{"The cargo has default bond type AND
TR bond is not created for IT AND
cargo has release status"}:::decision N_DefaultBondwithReleaseStatus_Node0_action["Skip cargo attachment and add to
special processing queue"]:::main N_DefaultBondwithReleaseStatus_Node0 -- Yes --> N_DefaultBondwithReleaseStatus_Node0_action N_DefaultBondwithReleaseStatus_Node0_action --> E_DefaultBondwithReleaseStatus S_DefaultBondwithReleaseStatus --> N_DefaultBondwithReleaseStatus_Node0 N_DefaultBondwithReleaseStatus_Node0 -- No --> E_DefaultBondwithReleaseStatus
TR bond is not created for IT AND
cargo has release status"}:::decision N_DefaultBondwithReleaseStatus_Node0_action["Skip cargo attachment and add to
special processing queue"]:::main N_DefaultBondwithReleaseStatus_Node0 -- Yes --> N_DefaultBondwithReleaseStatus_Node0_action N_DefaultBondwithReleaseStatus_Node0_action --> E_DefaultBondwithReleaseStatus S_DefaultBondwithReleaseStatus --> N_DefaultBondwithReleaseStatus_Node0 N_DefaultBondwithReleaseStatus_Node0 -- No --> E_DefaultBondwithReleaseStatus
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record that doesn't meet previous exclusion criteria is being evaluated
WHEN:
- The cargo has default bond type
- Tr bond is not created for it
- Cargo has release status
THEN:
- Skip cargo attachment
- Add to special processing queue
β Consolidated Acceptance Criteria
- The cargo is classified as empty equipment bond → skip cargo attachment and add to special processing queue
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EmptyEquipmentBond(["Start Step"])
E_EmptyEquipmentBond(["End Step"])
N_EmptyEquipmentBond_Node0{"The cargo is classified as empty
equipment bond"}:::decision N_EmptyEquipmentBond_Node0_action["Skip cargo attachment and add to
special processing queue"]:::main N_EmptyEquipmentBond_Node0 -- Yes --> N_EmptyEquipmentBond_Node0_action N_EmptyEquipmentBond_Node0_action --> E_EmptyEquipmentBond S_EmptyEquipmentBond --> N_EmptyEquipmentBond_Node0 N_EmptyEquipmentBond_Node0 -- No --> E_EmptyEquipmentBond
equipment bond"}:::decision N_EmptyEquipmentBond_Node0_action["Skip cargo attachment and add to
special processing queue"]:::main N_EmptyEquipmentBond_Node0 -- Yes --> N_EmptyEquipmentBond_Node0_action N_EmptyEquipmentBond_Node0_action --> E_EmptyEquipmentBond S_EmptyEquipmentBond --> N_EmptyEquipmentBond_Node0 N_EmptyEquipmentBond_Node0 -- No --> E_EmptyEquipmentBond
File: GCX003.cbl
GIVEN:
A cargo record that doesn't meet previous exclusion criteria is being evaluated
WHEN:
The cargo is classified as empty equipment bond
THEN:
- Skip cargo attachment
- Add to special processing queue
β Consolidated Acceptance Criteria
- The cargo has special manifest original designation AND the crossing port is Woburn-PQ station → skip cargo attachment and add to special processing queue
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpecialManifestOriginalatWoburnPQ(["Start Step"])
E_SpecialManifestOriginalatWoburnPQ(["End Step"])
N_SpecialManifestOriginalatWoburnPQ_Node0{"The cargo has special manifest
original designation AND the
crossing port is Woburn-PQ station"}:::decision N_SpecialManifestOriginalatWoburnPQ_Node0_action["Skip cargo attachment and add to
special processing queue"]:::main N_SpecialManifestOriginalatWoburnPQ_Node0 -- Yes --> N_SpecialManifestOriginalatWoburnPQ_Node0_action N_SpecialManifestOriginalatWoburnPQ_Node0_action --> E_SpecialManifestOriginalatWoburnPQ S_SpecialManifestOriginalatWoburnPQ --> N_SpecialManifestOriginalatWoburnPQ_Node0 N_SpecialManifestOriginalatWoburnPQ_Node0 -- No --> E_SpecialManifestOriginalatWoburnPQ
original designation AND the
crossing port is Woburn-PQ station"}:::decision N_SpecialManifestOriginalatWoburnPQ_Node0_action["Skip cargo attachment and add to
special processing queue"]:::main N_SpecialManifestOriginalatWoburnPQ_Node0 -- Yes --> N_SpecialManifestOriginalatWoburnPQ_Node0_action N_SpecialManifestOriginalatWoburnPQ_Node0_action --> E_SpecialManifestOriginalatWoburnPQ S_SpecialManifestOriginalatWoburnPQ --> N_SpecialManifestOriginalatWoburnPQ_Node0 N_SpecialManifestOriginalatWoburnPQ_Node0 -- No --> E_SpecialManifestOriginalatWoburnPQ
File: GCX003.cbl
GIVEN:
A cargo record that doesn't meet previous exclusion criteria is being evaluated
WHEN:
- The cargo has special manifest original designation
- The crossing port is woburn-pq station
THEN:
- Skip cargo attachment
- Add to special processing queue
β Consolidated Acceptance Criteria
- The cargo has special manifest special designation AND the crossing port is NOT Woburn-PQ station → skip cargo attachment and add to special processing queue
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpecialManifestSpecialNotWoburnPQ(["Start Step"])
E_SpecialManifestSpecialNotWoburnPQ(["End Step"])
N_SpecialManifestSpecialNotWoburnPQ_Node0{"The cargo has special manifest
special designation AND the crossing
port is NOT Woburn-PQ station"}:::decision N_SpecialManifestSpecialNotWoburnPQ_Node0_action["Skip cargo attachment and add to
special processing queue"]:::main N_SpecialManifestSpecialNotWoburnPQ_Node0 -- Yes --> N_SpecialManifestSpecialNotWoburnPQ_Node0_action N_SpecialManifestSpecialNotWoburnPQ_Node0_action --> E_SpecialManifestSpecialNotWoburnPQ S_SpecialManifestSpecialNotWoburnPQ --> N_SpecialManifestSpecialNotWoburnPQ_Node0 N_SpecialManifestSpecialNotWoburnPQ_Node0 -- No --> E_SpecialManifestSpecialNotWoburnPQ
special designation AND the crossing
port is NOT Woburn-PQ station"}:::decision N_SpecialManifestSpecialNotWoburnPQ_Node0_action["Skip cargo attachment and add to
special processing queue"]:::main N_SpecialManifestSpecialNotWoburnPQ_Node0 -- Yes --> N_SpecialManifestSpecialNotWoburnPQ_Node0_action N_SpecialManifestSpecialNotWoburnPQ_Node0_action --> E_SpecialManifestSpecialNotWoburnPQ S_SpecialManifestSpecialNotWoburnPQ --> N_SpecialManifestSpecialNotWoburnPQ_Node0 N_SpecialManifestSpecialNotWoburnPQ_Node0 -- No --> E_SpecialManifestSpecialNotWoburnPQ
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record that doesn't meet previous exclusion criteria is being evaluated
WHEN:
- The cargo has special manifest special designation
- The crossing port is not woburn-pq station
THEN:
- Skip cargo attachment
- Add to special processing queue
β Consolidated Acceptance Criteria
- The cargo has export bond type AND origin-destination country codes are US-Mexico AND the crossing port is NOT Laredo-TX station → skip cargo attachment and add to special processing queue
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExportBondUSMexicoNotLaredo(["Start Step"])
E_ExportBondUSMexicoNotLaredo(["End Step"])
N_ExportBondUSMexicoNotLaredo_Node0{"The cargo has export bond type AND
origin-destination country codes are
US-Mexico AND the crossing port is
NOT Laredo-TX station"}:::decision N_ExportBondUSMexicoNotLaredo_Node0_action["Skip cargo attachment and add to
special processing queue"]:::main N_ExportBondUSMexicoNotLaredo_Node0 -- Yes --> N_ExportBondUSMexicoNotLaredo_Node0_action N_ExportBondUSMexicoNotLaredo_Node0_action --> E_ExportBondUSMexicoNotLaredo S_ExportBondUSMexicoNotLaredo --> N_ExportBondUSMexicoNotLaredo_Node0 N_ExportBondUSMexicoNotLaredo_Node0 -- No --> E_ExportBondUSMexicoNotLaredo
origin-destination country codes are
US-Mexico AND the crossing port is
NOT Laredo-TX station"}:::decision N_ExportBondUSMexicoNotLaredo_Node0_action["Skip cargo attachment and add to
special processing queue"]:::main N_ExportBondUSMexicoNotLaredo_Node0 -- Yes --> N_ExportBondUSMexicoNotLaredo_Node0_action N_ExportBondUSMexicoNotLaredo_Node0_action --> E_ExportBondUSMexicoNotLaredo S_ExportBondUSMexicoNotLaredo --> N_ExportBondUSMexicoNotLaredo_Node0 N_ExportBondUSMexicoNotLaredo_Node0 -- No --> E_ExportBondUSMexicoNotLaredo
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record that doesn't meet previous exclusion criteria is being evaluated
WHEN:
- The cargo has export bond type
- Origin-destination country codes are us-mexico
- The crossing port is not laredo-tx station
THEN:
- Skip cargo attachment
- Add to special processing queue
β Consolidated Acceptance Criteria
- The cargo does not meet any of the exclusion criteria → attach the cargo to the train manifest for customs reporting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AttachCargotoTrainforCustomsReport(["Start Step"])
E_AttachCargotoTrainforCustomsReport(["End Step"])
N_AttachCargotoTrainforCustomsReport_Node0{"The cargo does not meet any of the
exclusion criteria"}:::decision N_AttachCargotoTrainforCustomsReport_Node0_action["Attach the cargo to the train
manifest for customs reporting"]:::main N_AttachCargotoTrainforCustomsReport_Node0 -- Yes --> N_AttachCargotoTrainforCustomsReport_Node0_action N_AttachCargotoTrainforCustomsReport_Node0_action --> E_AttachCargotoTrainforCustomsReport S_AttachCargotoTrainforCustomsReport --> N_AttachCargotoTrainforCustomsReport_Node0 N_AttachCargotoTrainforCustomsReport_Node0 -- No --> E_AttachCargotoTrainforCustomsReport
exclusion criteria"}:::decision N_AttachCargotoTrainforCustomsReport_Node0_action["Attach the cargo to the train
manifest for customs reporting"]:::main N_AttachCargotoTrainforCustomsReport_Node0 -- Yes --> N_AttachCargotoTrainforCustomsReport_Node0_action N_AttachCargotoTrainforCustomsReport_Node0_action --> E_AttachCargotoTrainforCustomsReport S_AttachCargotoTrainforCustomsReport --> N_AttachCargotoTrainforCustomsReport_Node0 N_AttachCargotoTrainforCustomsReport_Node0 -- No --> E_AttachCargotoTrainforCustomsReport
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record has been evaluated against all exclusion criteria
WHEN:
The cargo does not meet any of the exclusion criteria
THEN:
Attach the cargo to the train manifest for customs reporting
β Consolidated Acceptance Criteria
- The TR created for IT flag equals 'Y' → skip cargo attachment and mark for special processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsTRBondCreatedforIT(["Start Step"])
E_IsTRBondCreatedforIT(["End Step"])
N_IsTRBondCreatedforIT_Node0{"The TR created for IT flag equals Y"}:::decision
N_IsTRBondCreatedforIT_Node0_action["Skip cargo attachment and mark for
special processing"]:::main N_IsTRBondCreatedforIT_Node0 -- Yes --> N_IsTRBondCreatedforIT_Node0_action N_IsTRBondCreatedforIT_Node0_action --> E_IsTRBondCreatedforIT S_IsTRBondCreatedforIT --> N_IsTRBondCreatedforIT_Node0 N_IsTRBondCreatedforIT_Node0 -- No --> E_IsTRBondCreatedforIT
special processing"]:::main N_IsTRBondCreatedforIT_Node0 -- Yes --> N_IsTRBondCreatedforIT_Node0_action N_IsTRBondCreatedforIT_Node0_action --> E_IsTRBondCreatedforIT S_IsTRBondCreatedforIT --> N_IsTRBondCreatedforIT_Node0 N_IsTRBondCreatedforIT_Node0 -- No --> E_IsTRBondCreatedforIT
File: GCX003.cbl
GIVEN:
A cargo record with TR bond status indicator
WHEN:
The TR created for IT flag equals 'Y'
THEN:
- Skip cargo attachment
- Mark for special processing
β Consolidated Acceptance Criteria
- The bond type is US-CAN-US AND TR created for IT is empty AND cargo short description equals release status → skip cargo attachment and mark for special processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsBondTypeUSCANUSANDIsTRCreatedforITEmptyANDIsCargoStatusRelease(["Start Step"])
E_IsBondTypeUSCANUSANDIsTRCreatedforITEmptyANDIsCargoStatusRelease(["End Step"])
N_IsBondTypeUSCANUSANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0{"The bond type is US-CAN-US AND TR
created for IT is empty AND cargo
short description equals release
status"}:::decision N_IsBondTypeUSCANUSANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0_action["Skip cargo attachment and mark for
special processing"]:::main N_IsBondTypeUSCANUSANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0 -- Yes --> N_IsBondTypeUSCANUSANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0_action N_IsBondTypeUSCANUSANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0_action --> E_IsBondTypeUSCANUSANDIsTRCreatedforITEmptyANDIsCargoStatusRelease S_IsBondTypeUSCANUSANDIsTRCreatedforITEmptyANDIsCargoStatusRelease --> N_IsBondTypeUSCANUSANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0 N_IsBondTypeUSCANUSANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0 -- No --> E_IsBondTypeUSCANUSANDIsTRCreatedforITEmptyANDIsCargoStatusRelease
created for IT is empty AND cargo
short description equals release
status"}:::decision N_IsBondTypeUSCANUSANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0_action["Skip cargo attachment and mark for
special processing"]:::main N_IsBondTypeUSCANUSANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0 -- Yes --> N_IsBondTypeUSCANUSANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0_action N_IsBondTypeUSCANUSANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0_action --> E_IsBondTypeUSCANUSANDIsTRCreatedforITEmptyANDIsCargoStatusRelease S_IsBondTypeUSCANUSANDIsTRCreatedforITEmptyANDIsCargoStatusRelease --> N_IsBondTypeUSCANUSANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0 N_IsBondTypeUSCANUSANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0 -- No --> E_IsBondTypeUSCANUSANDIsTRCreatedforITEmptyANDIsCargoStatusRelease
File: GCX003.cbl
GIVEN:
A cargo record with US-Canada-US bond type, empty TR created for IT status, and cargo status information
WHEN:
- The bond type is us-can-us
- Tr created for it is empty
- Cargo short description equals release status
THEN:
- Skip cargo attachment
- Mark for special processing
β Consolidated Acceptance Criteria
- The bond type is default (M1109) AND TR created for IT is empty AND cargo short description equals release status → skip cargo attachment and mark for special processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsBondTypeDefaultANDIsTRCreatedforITEmptyANDIsCargoStatusRelease(["Start Step"])
E_IsBondTypeDefaultANDIsTRCreatedforITEmptyANDIsCargoStatusRelease(["End Step"])
N_IsBondTypeDefaultANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0{"The bond type is default M1109 AND
TR created for IT is empty AND cargo
short description equals release
status"}:::decision N_IsBondTypeDefaultANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0_action["Skip cargo attachment and mark for
special processing"]:::main N_IsBondTypeDefaultANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0 -- Yes --> N_IsBondTypeDefaultANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0_action N_IsBondTypeDefaultANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0_action --> E_IsBondTypeDefaultANDIsTRCreatedforITEmptyANDIsCargoStatusRelease S_IsBondTypeDefaultANDIsTRCreatedforITEmptyANDIsCargoStatusRelease --> N_IsBondTypeDefaultANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0 N_IsBondTypeDefaultANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0 -- No --> E_IsBondTypeDefaultANDIsTRCreatedforITEmptyANDIsCargoStatusRelease
TR created for IT is empty AND cargo
short description equals release
status"}:::decision N_IsBondTypeDefaultANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0_action["Skip cargo attachment and mark for
special processing"]:::main N_IsBondTypeDefaultANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0 -- Yes --> N_IsBondTypeDefaultANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0_action N_IsBondTypeDefaultANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0_action --> E_IsBondTypeDefaultANDIsTRCreatedforITEmptyANDIsCargoStatusRelease S_IsBondTypeDefaultANDIsTRCreatedforITEmptyANDIsCargoStatusRelease --> N_IsBondTypeDefaultANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0 N_IsBondTypeDefaultANDIsTRCreatedforITEmptyANDIsCargoStatusRelease_Node0 -- No --> E_IsBondTypeDefaultANDIsTRCreatedforITEmptyANDIsCargoStatusRelease
File: GCX003.cbl
GIVEN:
A cargo record with default bond type, empty TR created for IT status, and cargo status information
WHEN:
- The bond type is default (m1109) and tr created for it is empty
- Cargo short description equals release status
THEN:
- Skip cargo attachment
- Mark for special processing
β Consolidated Acceptance Criteria
- The cargo bond type is classified as empty equipment (M1109) → skip cargo attachment and mark for special processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsBondTypeEmptyEquipment(["Start Step"])
E_IsBondTypeEmptyEquipment(["End Step"])
N_IsBondTypeEmptyEquipment_Node0{"The cargo bond type is classified
as empty equipment M1109"}:::decision N_IsBondTypeEmptyEquipment_Node0_action["Skip cargo attachment and mark for
special processing"]:::main N_IsBondTypeEmptyEquipment_Node0 -- Yes --> N_IsBondTypeEmptyEquipment_Node0_action N_IsBondTypeEmptyEquipment_Node0_action --> E_IsBondTypeEmptyEquipment S_IsBondTypeEmptyEquipment --> N_IsBondTypeEmptyEquipment_Node0 N_IsBondTypeEmptyEquipment_Node0 -- No --> E_IsBondTypeEmptyEquipment
as empty equipment M1109"}:::decision N_IsBondTypeEmptyEquipment_Node0_action["Skip cargo attachment and mark for
special processing"]:::main N_IsBondTypeEmptyEquipment_Node0 -- Yes --> N_IsBondTypeEmptyEquipment_Node0_action N_IsBondTypeEmptyEquipment_Node0_action --> E_IsBondTypeEmptyEquipment S_IsBondTypeEmptyEquipment --> N_IsBondTypeEmptyEquipment_Node0 N_IsBondTypeEmptyEquipment_Node0 -- No --> E_IsBondTypeEmptyEquipment
File: GCX003.cbl
GIVEN:
A cargo record with bond type classification
WHEN:
The cargo bond type is classified as empty equipment (M1109)
THEN:
- Skip cargo attachment
- Mark for special processing
β Consolidated Acceptance Criteria
- The cargo has special manifest original status AND the current station is Woburn PQ → skip cargo attachment and mark for special processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsSpecialManifestOriginalANDIsStationWoburnPQ(["Start Step"])
E_IsSpecialManifestOriginalANDIsStationWoburnPQ(["End Step"])
N_IsSpecialManifestOriginalANDIsStationWoburnPQ_Node0{"The cargo has special manifest
original status AND the current
station is Woburn PQ"}:::decision N_IsSpecialManifestOriginalANDIsStationWoburnPQ_Node0_action["Skip cargo attachment and mark for
special processing"]:::main N_IsSpecialManifestOriginalANDIsStationWoburnPQ_Node0 -- Yes --> N_IsSpecialManifestOriginalANDIsStationWoburnPQ_Node0_action N_IsSpecialManifestOriginalANDIsStationWoburnPQ_Node0_action --> E_IsSpecialManifestOriginalANDIsStationWoburnPQ S_IsSpecialManifestOriginalANDIsStationWoburnPQ --> N_IsSpecialManifestOriginalANDIsStationWoburnPQ_Node0 N_IsSpecialManifestOriginalANDIsStationWoburnPQ_Node0 -- No --> E_IsSpecialManifestOriginalANDIsStationWoburnPQ
original status AND the current
station is Woburn PQ"}:::decision N_IsSpecialManifestOriginalANDIsStationWoburnPQ_Node0_action["Skip cargo attachment and mark for
special processing"]:::main N_IsSpecialManifestOriginalANDIsStationWoburnPQ_Node0 -- Yes --> N_IsSpecialManifestOriginalANDIsStationWoburnPQ_Node0_action N_IsSpecialManifestOriginalANDIsStationWoburnPQ_Node0_action --> E_IsSpecialManifestOriginalANDIsStationWoburnPQ S_IsSpecialManifestOriginalANDIsStationWoburnPQ --> N_IsSpecialManifestOriginalANDIsStationWoburnPQ_Node0 N_IsSpecialManifestOriginalANDIsStationWoburnPQ_Node0 -- No --> E_IsSpecialManifestOriginalANDIsStationWoburnPQ
File: GCX003.cbl
GIVEN:
A cargo record with special manifest status and current station information
WHEN:
- The cargo has special manifest original status
- The current station is woburn pq
THEN:
- Skip cargo attachment
- Mark for special processing
β Consolidated Acceptance Criteria
- The cargo has special manifest special status AND the current station is NOT Woburn PQ → skip cargo attachment and mark for special processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsSpecialManifestSpecialANDIsStationNOTWoburnPQ(["Start Step"])
E_IsSpecialManifestSpecialANDIsStationNOTWoburnPQ(["End Step"])
N_IsSpecialManifestSpecialANDIsStationNOTWoburnPQ_Node0{"The cargo has special manifest
special status AND the current
station is NOT Woburn PQ"}:::decision N_IsSpecialManifestSpecialANDIsStationNOTWoburnPQ_Node0_action["Skip cargo attachment and mark for
special processing"]:::main N_IsSpecialManifestSpecialANDIsStationNOTWoburnPQ_Node0 -- Yes --> N_IsSpecialManifestSpecialANDIsStationNOTWoburnPQ_Node0_action N_IsSpecialManifestSpecialANDIsStationNOTWoburnPQ_Node0_action --> E_IsSpecialManifestSpecialANDIsStationNOTWoburnPQ S_IsSpecialManifestSpecialANDIsStationNOTWoburnPQ --> N_IsSpecialManifestSpecialANDIsStationNOTWoburnPQ_Node0 N_IsSpecialManifestSpecialANDIsStationNOTWoburnPQ_Node0 -- No --> E_IsSpecialManifestSpecialANDIsStationNOTWoburnPQ
special status AND the current
station is NOT Woburn PQ"}:::decision N_IsSpecialManifestSpecialANDIsStationNOTWoburnPQ_Node0_action["Skip cargo attachment and mark for
special processing"]:::main N_IsSpecialManifestSpecialANDIsStationNOTWoburnPQ_Node0 -- Yes --> N_IsSpecialManifestSpecialANDIsStationNOTWoburnPQ_Node0_action N_IsSpecialManifestSpecialANDIsStationNOTWoburnPQ_Node0_action --> E_IsSpecialManifestSpecialANDIsStationNOTWoburnPQ S_IsSpecialManifestSpecialANDIsStationNOTWoburnPQ --> N_IsSpecialManifestSpecialANDIsStationNOTWoburnPQ_Node0 N_IsSpecialManifestSpecialANDIsStationNOTWoburnPQ_Node0 -- No --> E_IsSpecialManifestSpecialANDIsStationNOTWoburnPQ
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record with special manifest status and current station information
WHEN:
- The cargo has special manifest special status
- The current station is not woburn pq
THEN:
- Skip cargo attachment
- Mark for special processing
β Consolidated Acceptance Criteria
- The bond type is export (M1109) AND origin-destination codes equal 'USMX' AND the current station is NOT Laredo TX → skip cargo attachment and mark for special processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsBondTypeExportANDIsOriginDestinationUSMXANDIsStationNOTLaredoTX(["Start Step"])
E_IsBondTypeExportANDIsOriginDestinationUSMXANDIsStationNOTLaredoTX(["End Step"])
N_IsBondTypeExportANDIsOriginDestinationUSMXANDIsStationNOTLaredoTX_Node0{"The bond type is export M1109 AND
origin-destination codes equal USMX
AND the current station is NOT
Laredo TX"}:::decision N_IsBondTypeExportANDIsOriginDestinationUSMXANDIsStationNOTLaredoTX_Node0_action["Skip cargo attachment and mark for
special processing"]:::main N_IsBondTypeExportANDIsOriginDestinationUSMXANDIsStationNOTLaredoTX_Node0 -- Yes --> N_IsBondTypeExportANDIsOriginDestinationUSMXANDIsStationNOTLaredoTX_Node0_action N_IsBondTypeExportANDIsOriginDestinationUSMXANDIsStationNOTLaredoTX_Node0_action --> E_IsBondTypeExportANDIsOriginDestinationUSMXANDIsStationNOTLaredoTX S_IsBondTypeExportANDIsOriginDestinationUSMXANDIsStationNOTLaredoTX --> N_IsBondTypeExportANDIsOriginDestinationUSMXANDIsStationNOTLaredoTX_Node0 N_IsBondTypeExportANDIsOriginDestinationUSMXANDIsStationNOTLaredoTX_Node0 -- No --> E_IsBondTypeExportANDIsOriginDestinationUSMXANDIsStationNOTLaredoTX
origin-destination codes equal USMX
AND the current station is NOT
Laredo TX"}:::decision N_IsBondTypeExportANDIsOriginDestinationUSMXANDIsStationNOTLaredoTX_Node0_action["Skip cargo attachment and mark for
special processing"]:::main N_IsBondTypeExportANDIsOriginDestinationUSMXANDIsStationNOTLaredoTX_Node0 -- Yes --> N_IsBondTypeExportANDIsOriginDestinationUSMXANDIsStationNOTLaredoTX_Node0_action N_IsBondTypeExportANDIsOriginDestinationUSMXANDIsStationNOTLaredoTX_Node0_action --> E_IsBondTypeExportANDIsOriginDestinationUSMXANDIsStationNOTLaredoTX S_IsBondTypeExportANDIsOriginDestinationUSMXANDIsStationNOTLaredoTX --> N_IsBondTypeExportANDIsOriginDestinationUSMXANDIsStationNOTLaredoTX_Node0 N_IsBondTypeExportANDIsOriginDestinationUSMXANDIsStationNOTLaredoTX_Node0 -- No --> E_IsBondTypeExportANDIsOriginDestinationUSMXANDIsStationNOTLaredoTX
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record with export bond type, origin-destination country codes, and current station information
WHEN:
The bond type is export (M1109) AND origin-destination codes equal 'USMX' AND the current station is NOT Laredo TX
THEN:
- Skip cargo attachment
- Mark for special processing
β Consolidated Acceptance Criteria
- The system begins building the equipment detail line → the report line is cleared and initialized with default values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeReportLine(["Start Step"])
E_InitializeReportLine(["End Step"])
N_InitializeReportLine_Node0{"The system begins building the
equipment detail line"}:::decision N_InitializeReportLine_Node0_action["The report line is cleared and
initialized with default values"]:::main N_InitializeReportLine_Node0 -- Yes --> N_InitializeReportLine_Node0_action N_InitializeReportLine_Node0_action --> E_InitializeReportLine S_InitializeReportLine --> N_InitializeReportLine_Node0 N_InitializeReportLine_Node0 -- No --> E_InitializeReportLine
equipment detail line"}:::decision N_InitializeReportLine_Node0_action["The report line is cleared and
initialized with default values"]:::main N_InitializeReportLine_Node0 -- Yes --> N_InitializeReportLine_Node0_action N_InitializeReportLine_Node0_action --> E_InitializeReportLine S_InitializeReportLine --> N_InitializeReportLine_Node0 N_InitializeReportLine_Node0 -- No --> E_InitializeReportLine
File: GCX003.cbl
GIVEN:
A new equipment item needs to be processed for reporting
WHEN:
The system begins building the equipment detail line
THEN:
- The report line is cleared
- Initialized with default values
β Consolidated Acceptance Criteria
- The system checks if a container was found in the waybill → equipment is classified as container if container found, otherwise as car
- If equipment characteristics → equipment is classified as either container or car type for appropriate processing
- Determining equipment type → if container ID exists, process as container; otherwise process as railcar
- Determining equipment type → if report shows container information, then process as container, otherwise process as car
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentType(["Start Step"])
E_EquipmentType(["End Step"])
N_EquipmentType_Node0{"The system checks if a container
was found in the waybill"}:::decision N_EquipmentType_Node0_action["Equipment is classified as
container if container found,
otherwise as car"]:::main N_EquipmentType_Node0 -- Yes --> N_EquipmentType_Node0_action N_EquipmentType_Node0_action --> E_EquipmentType S_EquipmentType --> N_EquipmentType_Node0 N_EquipmentType_Node1{"The system evaluates equipment
characteristics"}:::decision N_EquipmentType_Node1_action["Equipment is classified as either
container or car type for
appropriate processing"]:::main N_EquipmentType_Node1 -- Yes --> N_EquipmentType_Node1_action N_EquipmentType_Node1_action --> E_EquipmentType N_EquipmentType_Node0 -- No --> N_EquipmentType_Node1 N_EquipmentType_Node2{"Determining equipment type"}:::decision N_EquipmentType_Node2_action["If container ID exists, process as
container otherwise process as
railcar"]:::main N_EquipmentType_Node2 -- Yes --> N_EquipmentType_Node2_action N_EquipmentType_Node2_action --> E_EquipmentType N_EquipmentType_Node1 -- No --> N_EquipmentType_Node2 N_EquipmentType_Node3{"Determining equipment type"}:::decision N_EquipmentType_Node3_action["If report shows container
information, then process as
container, otherwise process as car"]:::main N_EquipmentType_Node3 -- Yes --> N_EquipmentType_Node3_action N_EquipmentType_Node3_action --> E_EquipmentType N_EquipmentType_Node2 -- No --> N_EquipmentType_Node3 N_EquipmentType_Node3 -- No --> E_EquipmentType
was found in the waybill"}:::decision N_EquipmentType_Node0_action["Equipment is classified as
container if container found,
otherwise as car"]:::main N_EquipmentType_Node0 -- Yes --> N_EquipmentType_Node0_action N_EquipmentType_Node0_action --> E_EquipmentType S_EquipmentType --> N_EquipmentType_Node0 N_EquipmentType_Node1{"The system evaluates equipment
characteristics"}:::decision N_EquipmentType_Node1_action["Equipment is classified as either
container or car type for
appropriate processing"]:::main N_EquipmentType_Node1 -- Yes --> N_EquipmentType_Node1_action N_EquipmentType_Node1_action --> E_EquipmentType N_EquipmentType_Node0 -- No --> N_EquipmentType_Node1 N_EquipmentType_Node2{"Determining equipment type"}:::decision N_EquipmentType_Node2_action["If container ID exists, process as
container otherwise process as
railcar"]:::main N_EquipmentType_Node2 -- Yes --> N_EquipmentType_Node2_action N_EquipmentType_Node2_action --> E_EquipmentType N_EquipmentType_Node1 -- No --> N_EquipmentType_Node2 N_EquipmentType_Node3{"Determining equipment type"}:::decision N_EquipmentType_Node3_action["If report shows container
information, then process as
container, otherwise process as car"]:::main N_EquipmentType_Node3 -- Yes --> N_EquipmentType_Node3_action N_EquipmentType_Node3_action --> E_EquipmentType N_EquipmentType_Node2 -- No --> N_EquipmentType_Node3 N_EquipmentType_Node3 -- No --> E_EquipmentType
File: GCX003.cbl
GIVEN:
An equipment item is being processed
WHEN:
The system checks if a container was found in the waybill
THEN:
Equipment is classified as container if container found, otherwise as car
File: GCX003.cbl
GIVEN:
An equipment item is being processed
WHEN:
The system evaluates equipment characteristics
THEN:
Equipment is classified as either container or car type for appropriate processing
File: GCX003.cbl
GIVEN:
Equipment details are being extracted
WHEN:
Determining equipment type
THEN:
If container ID exists, process as container; otherwise process as railcar
File: GCX003.cbl
GIVEN:
Equipment details have been extracted from report
WHEN:
Determining equipment type
THEN:
If report shows container information, then process as container, otherwise process as car
β Consolidated Acceptance Criteria
- The system processes container information → container ID is set from equipment ID, load/empty indicator is set from shipment root, and container flag is set for validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessContainerInformation(["Start Step"])
E_ProcessContainerInformation(["End Step"])
N_ProcessContainerInformation_Node0{"The system processes container
information"}:::decision N_ProcessContainerInformation_Node0_action["Container ID is set from equipment
ID, loadempty indicator is set from
shipment root, and container flag is
set for validation"]:::main N_ProcessContainerInformation_Node0 -- Yes --> N_ProcessContainerInformation_Node0_action N_ProcessContainerInformation_Node0_action --> E_ProcessContainerInformation S_ProcessContainerInformation --> N_ProcessContainerInformation_Node0 N_ProcessContainerInformation_Node0 -- No --> E_ProcessContainerInformation
information"}:::decision N_ProcessContainerInformation_Node0_action["Container ID is set from equipment
ID, loadempty indicator is set from
shipment root, and container flag is
set for validation"]:::main N_ProcessContainerInformation_Node0 -- Yes --> N_ProcessContainerInformation_Node0_action N_ProcessContainerInformation_Node0_action --> E_ProcessContainerInformation S_ProcessContainerInformation --> N_ProcessContainerInformation_Node0 N_ProcessContainerInformation_Node0 -- No --> E_ProcessContainerInformation
File: GCX003.cbl
GIVEN:
Equipment is classified as a container
WHEN:
The system processes container information
THEN:
Container ID is set from equipment ID, load/empty indicator is set from shipment root, and container flag is set for validation
β Consolidated Acceptance Criteria
- The system processes car information → car ID is set from request equipment ID, load/empty indicator is set from request, car flag is set for validation, and equipment ID is formatted for new report
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessCarInformation(["Start Step"])
E_ProcessCarInformation(["End Step"])
N_ProcessCarInformation_Node0{"The system processes car
information"}:::decision N_ProcessCarInformation_Node0_action["Car ID is set from request
equipment ID, loadempty indicator is
set from request, car flag is set
for validation, and equipment ID is
formatted for new report"]:::main N_ProcessCarInformation_Node0 -- Yes --> N_ProcessCarInformation_Node0_action N_ProcessCarInformation_Node0_action --> E_ProcessCarInformation S_ProcessCarInformation --> N_ProcessCarInformation_Node0 N_ProcessCarInformation_Node0 -- No --> E_ProcessCarInformation
information"}:::decision N_ProcessCarInformation_Node0_action["Car ID is set from request
equipment ID, loadempty indicator is
set from request, car flag is set
for validation, and equipment ID is
formatted for new report"]:::main N_ProcessCarInformation_Node0 -- Yes --> N_ProcessCarInformation_Node0_action N_ProcessCarInformation_Node0_action --> E_ProcessCarInformation S_ProcessCarInformation --> N_ProcessCarInformation_Node0 N_ProcessCarInformation_Node0 -- No --> E_ProcessCarInformation
File: GCX003.cbl
GIVEN:
Equipment is classified as a car
WHEN:
The system processes car information
THEN:
Car ID is set from request equipment ID, load/empty indicator is set from request, car flag is set for validation, and equipment ID is formatted for new report
β Consolidated Acceptance Criteria
- The system calls equipment type validation service → equipment type code is validated and equipment details are retrieved from the equipment type master
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallEquipmentTypeValidation(["Start Step"])
E_CallEquipmentTypeValidation(["End Step"])
N_CallEquipmentTypeValidation_Node0{"The system calls equipment type
validation service"}:::decision N_CallEquipmentTypeValidation_Node0_action["Equipment type code is validated
and equipment details are retrieved
from the equipment type master"]:::main N_CallEquipmentTypeValidation_Node0 -- Yes --> N_CallEquipmentTypeValidation_Node0_action N_CallEquipmentTypeValidation_Node0_action --> E_CallEquipmentTypeValidation S_CallEquipmentTypeValidation --> N_CallEquipmentTypeValidation_Node0 N_CallEquipmentTypeValidation_Node0 -- No --> E_CallEquipmentTypeValidation
validation service"}:::decision N_CallEquipmentTypeValidation_Node0_action["Equipment type code is validated
and equipment details are retrieved
from the equipment type master"]:::main N_CallEquipmentTypeValidation_Node0 -- Yes --> N_CallEquipmentTypeValidation_Node0_action N_CallEquipmentTypeValidation_Node0_action --> E_CallEquipmentTypeValidation S_CallEquipmentTypeValidation --> N_CallEquipmentTypeValidation_Node0 N_CallEquipmentTypeValidation_Node0 -- No --> E_CallEquipmentTypeValidation
File: GCX003.cbl
GIVEN:
Equipment information has been formatted with car or container details
WHEN:
The system calls equipment type validation service
THEN:
- Equipment type code is validated
- Equipment details are retrieved from the equipment type master
β Consolidated Acceptance Criteria
- The equipment type validation call is not successful → equipment error flag is set and appropriate error message is added to the report
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentTypeValid(["Start Step"])
E_EquipmentTypeValid(["End Step"])
N_EquipmentTypeValid_Node0{"The equipment type validation call
is not successful"}:::decision N_EquipmentTypeValid_Node0_action["Equipment error flag is set and
appropriate error message is added
to the report"]:::main N_EquipmentTypeValid_Node0 -- Yes --> N_EquipmentTypeValid_Node0_action N_EquipmentTypeValid_Node0_action --> E_EquipmentTypeValid S_EquipmentTypeValid --> N_EquipmentTypeValid_Node0 N_EquipmentTypeValid_Node0 -- No --> E_EquipmentTypeValid
is not successful"}:::decision N_EquipmentTypeValid_Node0_action["Equipment error flag is set and
appropriate error message is added
to the report"]:::main N_EquipmentTypeValid_Node0 -- Yes --> N_EquipmentTypeValid_Node0_action N_EquipmentTypeValid_Node0_action --> E_EquipmentTypeValid S_EquipmentTypeValid --> N_EquipmentTypeValid_Node0 N_EquipmentTypeValid_Node0 -- No --> E_EquipmentTypeValid
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Equipment type validation has been performed
WHEN:
The equipment type validation call is not successful
THEN:
- Equipment error flag is set
- Appropriate error message is added to the report
β Consolidated Acceptance Criteria
- The system processes the validation failure → equipment error flag is set to indicate processing should not continue
- Error messages have been generated → equipment error flag is set to prevent continued processing of invalid equipment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentErrorFlag(["Start Step"])
E_SetEquipmentErrorFlag(["End Step"])
N_SetEquipmentErrorFlag_Node0{"The system processes the validation
failure"}:::decision N_SetEquipmentErrorFlag_Node0_action["Equipment error flag is set to
indicate processing should not
continue"]:::main N_SetEquipmentErrorFlag_Node0 -- Yes --> N_SetEquipmentErrorFlag_Node0_action N_SetEquipmentErrorFlag_Node0_action --> E_SetEquipmentErrorFlag S_SetEquipmentErrorFlag --> N_SetEquipmentErrorFlag_Node0 N_SetEquipmentErrorFlag_Node1{"Error messages have been generated"}:::decision N_SetEquipmentErrorFlag_Node1_action["Equipment error flag is set to
prevent continued processing of
invalid equipment"]:::exclusion N_SetEquipmentErrorFlag_Node1 -- Yes -->|Alternative| N_SetEquipmentErrorFlag_Node1_action N_SetEquipmentErrorFlag_Node1_action --> E_SetEquipmentErrorFlag N_SetEquipmentErrorFlag_Node0 -- No --> N_SetEquipmentErrorFlag_Node1 N_SetEquipmentErrorFlag_Node1 -- No --> E_SetEquipmentErrorFlag
failure"}:::decision N_SetEquipmentErrorFlag_Node0_action["Equipment error flag is set to
indicate processing should not
continue"]:::main N_SetEquipmentErrorFlag_Node0 -- Yes --> N_SetEquipmentErrorFlag_Node0_action N_SetEquipmentErrorFlag_Node0_action --> E_SetEquipmentErrorFlag S_SetEquipmentErrorFlag --> N_SetEquipmentErrorFlag_Node0 N_SetEquipmentErrorFlag_Node1{"Error messages have been generated"}:::decision N_SetEquipmentErrorFlag_Node1_action["Equipment error flag is set to
prevent continued processing of
invalid equipment"]:::exclusion N_SetEquipmentErrorFlag_Node1 -- Yes -->|Alternative| N_SetEquipmentErrorFlag_Node1_action N_SetEquipmentErrorFlag_Node1_action --> E_SetEquipmentErrorFlag N_SetEquipmentErrorFlag_Node0 -- No --> N_SetEquipmentErrorFlag_Node1 N_SetEquipmentErrorFlag_Node1 -- No --> E_SetEquipmentErrorFlag
File: GCX003.cbl
GIVEN:
Equipment type validation has failed
WHEN:
The system processes the validation failure
THEN:
Equipment error flag is set to indicate processing should not continue
File: GCX003.cbl
GIVEN:
Equipment type validation has failed
WHEN:
Error messages have been generated
THEN:
Equipment error flag is set to prevent continued processing of invalid equipment
β Consolidated Acceptance Criteria
- The system adds error messages to the report → message 35 is added for container validation failure or message 36 for car validation failure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddErrorMessage(["Start Step"])
E_AddErrorMessage(["End Step"])
N_AddErrorMessage_Node0{"The system adds error messages to
the report"}:::decision N_AddErrorMessage_Node0_action["Message 35 is added for container
validation failure or message 36 for
car validation failure"]:::exclusion N_AddErrorMessage_Node0 -- Yes -->|Alternative| N_AddErrorMessage_Node0_action N_AddErrorMessage_Node0_action --> E_AddErrorMessage S_AddErrorMessage --> N_AddErrorMessage_Node0 N_AddErrorMessage_Node0 -- No --> E_AddErrorMessage
the report"}:::decision N_AddErrorMessage_Node0_action["Message 35 is added for container
validation failure or message 36 for
car validation failure"]:::exclusion N_AddErrorMessage_Node0 -- Yes -->|Alternative| N_AddErrorMessage_Node0_action N_AddErrorMessage_Node0_action --> E_AddErrorMessage S_AddErrorMessage --> N_AddErrorMessage_Node0 N_AddErrorMessage_Node0 -- No --> E_AddErrorMessage
File: GCX003.cbl
GIVEN:
Equipment has failed validation and error flag is set
WHEN:
The system adds error messages to the report
THEN:
Message 35 is added for container validation failure or message 36 for car validation failure
β Consolidated Acceptance Criteria
- The system processes double stack container information → double stack counts are updated based on traffic type (CPRS, CSXT, NS, or HAUL)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessDoubleStackContainerCount(["Start Step"])
E_ProcessDoubleStackContainerCount(["End Step"])
N_ProcessDoubleStackContainerCount_Node0{"The system processes double stack
container information"}:::decision N_ProcessDoubleStackContainerCount_Node0_action["Double stack counts are updated
based on traffic type CPRS, CSXT,
NS, or HAUL"]:::main N_ProcessDoubleStackContainerCount_Node0 -- Yes --> N_ProcessDoubleStackContainerCount_Node0_action N_ProcessDoubleStackContainerCount_Node0_action --> E_ProcessDoubleStackContainerCount S_ProcessDoubleStackContainerCount --> N_ProcessDoubleStackContainerCount_Node0 N_ProcessDoubleStackContainerCount_Node0 -- No --> E_ProcessDoubleStackContainerCount
container information"}:::decision N_ProcessDoubleStackContainerCount_Node0_action["Double stack counts are updated
based on traffic type CPRS, CSXT,
NS, or HAUL"]:::main N_ProcessDoubleStackContainerCount_Node0 -- Yes --> N_ProcessDoubleStackContainerCount_Node0_action N_ProcessDoubleStackContainerCount_Node0_action --> E_ProcessDoubleStackContainerCount S_ProcessDoubleStackContainerCount --> N_ProcessDoubleStackContainerCount_Node0 N_ProcessDoubleStackContainerCount_Node0 -- No --> E_ProcessDoubleStackContainerCount
File: GCX003.cbl
GIVEN:
Equipment has valid waybill and equipment type code is 'SK'
WHEN:
The system processes double stack container information
THEN:
Double stack counts are updated based on traffic type (CPRS, CSXT, NS, or HAUL)
β Consolidated Acceptance Criteria
- The system processes routing information from the waybill → routing is checked against predefined patterns and empty indicator is set to 1 if no valid route found, otherwise route-specific indicators are set
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessEquipmentRoutingInformation(["Start Step"])
E_ProcessEquipmentRoutingInformation(["End Step"])
N_ProcessEquipmentRoutingInformation_Node0{"The system processes routing
information from the waybill"}:::decision N_ProcessEquipmentRoutingInformation_Node0_action["Routing is checked against
predefined patterns and empty
indicator is set to 1 if no valid
route found, otherwise
route-specific indicators are set"]:::main N_ProcessEquipmentRoutingInformation_Node0 -- Yes --> N_ProcessEquipmentRoutingInformation_Node0_action N_ProcessEquipmentRoutingInformation_Node0_action --> E_ProcessEquipmentRoutingInformation S_ProcessEquipmentRoutingInformation --> N_ProcessEquipmentRoutingInformation_Node0 N_ProcessEquipmentRoutingInformation_Node0 -- No --> E_ProcessEquipmentRoutingInformation
information from the waybill"}:::decision N_ProcessEquipmentRoutingInformation_Node0_action["Routing is checked against
predefined patterns and empty
indicator is set to 1 if no valid
route found, otherwise
route-specific indicators are set"]:::main N_ProcessEquipmentRoutingInformation_Node0 -- Yes --> N_ProcessEquipmentRoutingInformation_Node0_action N_ProcessEquipmentRoutingInformation_Node0_action --> E_ProcessEquipmentRoutingInformation S_ProcessEquipmentRoutingInformation --> N_ProcessEquipmentRoutingInformation_Node0 N_ProcessEquipmentRoutingInformation_Node0 -- No --> E_ProcessEquipmentRoutingInformation
File: GCX003.cbl
GIVEN:
Equipment has valid waybill information
WHEN:
The system processes routing information from the waybill
THEN:
- Routing is checked against predefined patterns
- Empty indicator is set to 1 if no valid route found, otherwise route-specific indicators are set
β Consolidated Acceptance Criteria
- The system retrieves equipment type description from the vehicle information table → equipment type description is retrieved and stored for report display
- Equipment type information is needed → equipment car code is retrieved from validation service, station table is queried for equipment type description, and description is stored in report fields
- Equipment type description is needed for reporting → system retrieves equipment type description from vehicle information reference table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveEquipmentTypeDescription(["Start Step"])
E_RetrieveEquipmentTypeDescription(["End Step"])
N_RetrieveEquipmentTypeDescription_Node0{"The system retrieves equipment type
description from the vehicle
information table"}:::decision N_RetrieveEquipmentTypeDescription_Node0_action["Equipment type description is
retrieved and stored for report
display"]:::main N_RetrieveEquipmentTypeDescription_Node0 -- Yes --> N_RetrieveEquipmentTypeDescription_Node0_action N_RetrieveEquipmentTypeDescription_Node0_action --> E_RetrieveEquipmentTypeDescription S_RetrieveEquipmentTypeDescription --> N_RetrieveEquipmentTypeDescription_Node0 N_RetrieveEquipmentTypeDescription_Node1{"Equipment type information is
needed"}:::decision N_RetrieveEquipmentTypeDescription_Node1_action["Equipment car code is retrieved
from validation service, station
table is queried for equipment type
description, and description is
stored in report fields"]:::main N_RetrieveEquipmentTypeDescription_Node1 -- Yes --> N_RetrieveEquipmentTypeDescription_Node1_action N_RetrieveEquipmentTypeDescription_Node1_action --> E_RetrieveEquipmentTypeDescription N_RetrieveEquipmentTypeDescription_Node0 -- No --> N_RetrieveEquipmentTypeDescription_Node1 N_RetrieveEquipmentTypeDescription_Node2{"Equipment type description is
needed for reporting"}:::decision N_RetrieveEquipmentTypeDescription_Node2_action["System retrieves equipment type
description from vehicle information
reference table"]:::main N_RetrieveEquipmentTypeDescription_Node2 -- Yes --> N_RetrieveEquipmentTypeDescription_Node2_action N_RetrieveEquipmentTypeDescription_Node2_action --> E_RetrieveEquipmentTypeDescription N_RetrieveEquipmentTypeDescription_Node1 -- No --> N_RetrieveEquipmentTypeDescription_Node2 N_RetrieveEquipmentTypeDescription_Node2 -- No --> E_RetrieveEquipmentTypeDescription
description from the vehicle
information table"}:::decision N_RetrieveEquipmentTypeDescription_Node0_action["Equipment type description is
retrieved and stored for report
display"]:::main N_RetrieveEquipmentTypeDescription_Node0 -- Yes --> N_RetrieveEquipmentTypeDescription_Node0_action N_RetrieveEquipmentTypeDescription_Node0_action --> E_RetrieveEquipmentTypeDescription S_RetrieveEquipmentTypeDescription --> N_RetrieveEquipmentTypeDescription_Node0 N_RetrieveEquipmentTypeDescription_Node1{"Equipment type information is
needed"}:::decision N_RetrieveEquipmentTypeDescription_Node1_action["Equipment car code is retrieved
from validation service, station
table is queried for equipment type
description, and description is
stored in report fields"]:::main N_RetrieveEquipmentTypeDescription_Node1 -- Yes --> N_RetrieveEquipmentTypeDescription_Node1_action N_RetrieveEquipmentTypeDescription_Node1_action --> E_RetrieveEquipmentTypeDescription N_RetrieveEquipmentTypeDescription_Node0 -- No --> N_RetrieveEquipmentTypeDescription_Node1 N_RetrieveEquipmentTypeDescription_Node2{"Equipment type description is
needed for reporting"}:::decision N_RetrieveEquipmentTypeDescription_Node2_action["System retrieves equipment type
description from vehicle information
reference table"]:::main N_RetrieveEquipmentTypeDescription_Node2 -- Yes --> N_RetrieveEquipmentTypeDescription_Node2_action N_RetrieveEquipmentTypeDescription_Node2_action --> E_RetrieveEquipmentTypeDescription N_RetrieveEquipmentTypeDescription_Node1 -- No --> N_RetrieveEquipmentTypeDescription_Node2 N_RetrieveEquipmentTypeDescription_Node2 -- No --> E_RetrieveEquipmentTypeDescription
File: GCX003.cbl
GIVEN:
Equipment type code has been validated successfully
WHEN:
The system retrieves equipment type description from the vehicle information table
THEN:
- Equipment type description is retrieved
- Stored for report display
File: GCX003.cbl
GIVEN:
Equipment validation is successful
WHEN:
Equipment type information is needed
THEN:
Equipment car code is retrieved from validation service, station table is queried for equipment type description, and description is stored in report fields
File: GCX003.cbl
GIVEN:
Equipment validation was successful and equipment code is available
WHEN:
Equipment type description is needed for reporting
THEN:
System retrieves equipment type description from vehicle information reference table
β Consolidated Acceptance Criteria
- The system processes cargo details → bond type indicators are set, US CCN key is captured, load/empty indicator is updated, and cargo condition response code is stored
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FillCargoPartInformation(["Start Step"])
E_FillCargoPartInformation(["End Step"])
N_FillCargoPartInformation_Node0{"The system processes cargo details"}:::decision
N_FillCargoPartInformation_Node0_action["Bond type indicators are set, US
CCN key is captured, loadempty
indicator is updated, and cargo
condition response code is stored"]:::main N_FillCargoPartInformation_Node0 -- Yes --> N_FillCargoPartInformation_Node0_action N_FillCargoPartInformation_Node0_action --> E_FillCargoPartInformation S_FillCargoPartInformation --> N_FillCargoPartInformation_Node0 N_FillCargoPartInformation_Node0 -- No --> E_FillCargoPartInformation
CCN key is captured, loadempty
indicator is updated, and cargo
condition response code is stored"]:::main N_FillCargoPartInformation_Node0 -- Yes --> N_FillCargoPartInformation_Node0_action N_FillCargoPartInformation_Node0_action --> E_FillCargoPartInformation S_FillCargoPartInformation --> N_FillCargoPartInformation_Node0 N_FillCargoPartInformation_Node0 -- No --> E_FillCargoPartInformation
File: GCX003.cbl
GIVEN:
Cargo information exists for the equipment
WHEN:
The system processes cargo details
THEN:
Bond type indicators are set, US CCN key is captured, load/empty indicator is updated, and cargo condition response code is stored
β Consolidated Acceptance Criteria
- The system categorizes equipment for counting purposes → equipment is classified as locomotive, container, or car based on equipment type code
- Equipment categorization is needed → equipment is classified as locomotive, container, or car based on car type code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentCategory(["Start Step"])
E_EquipmentCategory(["End Step"])
N_EquipmentCategory_Node0{"The system categorizes equipment
for counting purposes"}:::decision N_EquipmentCategory_Node0_action["Equipment is classified as
locomotive, container, or car based
on equipment type code"]:::main N_EquipmentCategory_Node0 -- Yes --> N_EquipmentCategory_Node0_action N_EquipmentCategory_Node0_action --> E_EquipmentCategory S_EquipmentCategory --> N_EquipmentCategory_Node0 N_EquipmentCategory_Node1{"Equipment categorization is needed"}:::decision N_EquipmentCategory_Node1_action["Equipment is classified as
locomotive, container, or car based
on car type code"]:::main N_EquipmentCategory_Node1 -- Yes --> N_EquipmentCategory_Node1_action N_EquipmentCategory_Node1_action --> E_EquipmentCategory N_EquipmentCategory_Node0 -- No --> N_EquipmentCategory_Node1 N_EquipmentCategory_Node1 -- No --> E_EquipmentCategory
for counting purposes"}:::decision N_EquipmentCategory_Node0_action["Equipment is classified as
locomotive, container, or car based
on equipment type code"]:::main N_EquipmentCategory_Node0 -- Yes --> N_EquipmentCategory_Node0_action N_EquipmentCategory_Node0_action --> E_EquipmentCategory S_EquipmentCategory --> N_EquipmentCategory_Node0 N_EquipmentCategory_Node1{"Equipment categorization is needed"}:::decision N_EquipmentCategory_Node1_action["Equipment is classified as
locomotive, container, or car based
on car type code"]:::main N_EquipmentCategory_Node1 -- Yes --> N_EquipmentCategory_Node1_action N_EquipmentCategory_Node1_action --> E_EquipmentCategory N_EquipmentCategory_Node0 -- No --> N_EquipmentCategory_Node1 N_EquipmentCategory_Node1 -- No --> E_EquipmentCategory
File: GCX003.cbl
GIVEN:
Equipment information has been formatted
WHEN:
The system categorizes equipment for counting purposes
THEN:
Equipment is classified as locomotive, container, or car based on equipment type code
File: GCX003.cbl
GIVEN:
Equipment type information is available
WHEN:
Equipment categorization is needed
THEN:
Equipment is classified as locomotive, container, or car based on car type code
β Consolidated Acceptance Criteria
- The system processes locomotive equipment → total locomotive count is incremented by 1
- Equipment counting is performed → total locomotive count is incremented by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CountLocomotives(["Start Step"])
E_CountLocomotives(["End Step"])
N_CountLocomotives_Node0{"The system processes locomotive
equipment"}:::decision N_CountLocomotives_Node0_action["Total locomotive count is
incremented by 1"]:::main N_CountLocomotives_Node0 -- Yes --> N_CountLocomotives_Node0_action N_CountLocomotives_Node0_action --> E_CountLocomotives S_CountLocomotives --> N_CountLocomotives_Node0 N_CountLocomotives_Node1{"Equipment counting is performed"}:::decision N_CountLocomotives_Node1_action["Total locomotive count is
incremented by 1"]:::main N_CountLocomotives_Node1 -- Yes --> N_CountLocomotives_Node1_action N_CountLocomotives_Node1_action --> E_CountLocomotives N_CountLocomotives_Node0 -- No --> N_CountLocomotives_Node1 N_CountLocomotives_Node1 -- No --> E_CountLocomotives
equipment"}:::decision N_CountLocomotives_Node0_action["Total locomotive count is
incremented by 1"]:::main N_CountLocomotives_Node0 -- Yes --> N_CountLocomotives_Node0_action N_CountLocomotives_Node0_action --> E_CountLocomotives S_CountLocomotives --> N_CountLocomotives_Node0 N_CountLocomotives_Node1{"Equipment counting is performed"}:::decision N_CountLocomotives_Node1_action["Total locomotive count is
incremented by 1"]:::main N_CountLocomotives_Node1 -- Yes --> N_CountLocomotives_Node1_action N_CountLocomotives_Node1_action --> E_CountLocomotives N_CountLocomotives_Node0 -- No --> N_CountLocomotives_Node1 N_CountLocomotives_Node1 -- No --> E_CountLocomotives
File: GCX003.cbl
GIVEN:
Equipment type code is 'LO' or 'ET'
WHEN:
The system processes locomotive equipment
THEN:
Total locomotive count is incremented by 1
File: GCX003.cbl
GIVEN:
Equipment car type is 'LO' or 'ET'
WHEN:
Equipment counting is performed
THEN:
Total locomotive count is incremented by 1
β Consolidated Acceptance Criteria
- The system processes container load status → total loaded container count is incremented if load indicator is 'L', otherwise total empty container count is incremented
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CountContainersbyLoadEmpty(["Start Step"])
E_CountContainersbyLoadEmpty(["End Step"])
N_CountContainersbyLoadEmpty_Node0{"The system processes container load
status"}:::decision N_CountContainersbyLoadEmpty_Node0_action["Total loaded container count is
incremented if load indicator is L ,
otherwise total empty container
count is incremented"]:::main N_CountContainersbyLoadEmpty_Node0 -- Yes --> N_CountContainersbyLoadEmpty_Node0_action N_CountContainersbyLoadEmpty_Node0_action --> E_CountContainersbyLoadEmpty S_CountContainersbyLoadEmpty --> N_CountContainersbyLoadEmpty_Node0 N_CountContainersbyLoadEmpty_Node0 -- No --> E_CountContainersbyLoadEmpty
status"}:::decision N_CountContainersbyLoadEmpty_Node0_action["Total loaded container count is
incremented if load indicator is L ,
otherwise total empty container
count is incremented"]:::main N_CountContainersbyLoadEmpty_Node0 -- Yes --> N_CountContainersbyLoadEmpty_Node0_action N_CountContainersbyLoadEmpty_Node0_action --> E_CountContainersbyLoadEmpty S_CountContainersbyLoadEmpty --> N_CountContainersbyLoadEmpty_Node0 N_CountContainersbyLoadEmpty_Node0 -- No --> E_CountContainersbyLoadEmpty
File: GCX003.cbl
GIVEN:
Equipment type code is 'CN' (container)
WHEN:
The system processes container load status
THEN:
Total loaded container count is incremented if load indicator is 'L', otherwise total empty container count is incremented
β Consolidated Acceptance Criteria
- The system processes car load status → total loaded car count is incremented if load indicator is 'L', otherwise total empty car count is incremented
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CountCarsbyLoadEmpty(["Start Step"])
E_CountCarsbyLoadEmpty(["End Step"])
N_CountCarsbyLoadEmpty_Node0{"The system processes car load
status"}:::decision N_CountCarsbyLoadEmpty_Node0_action["Total loaded car count is
incremented if load indicator is L ,
otherwise total empty car count is
incremented"]:::main N_CountCarsbyLoadEmpty_Node0 -- Yes --> N_CountCarsbyLoadEmpty_Node0_action N_CountCarsbyLoadEmpty_Node0_action --> E_CountCarsbyLoadEmpty S_CountCarsbyLoadEmpty --> N_CountCarsbyLoadEmpty_Node0 N_CountCarsbyLoadEmpty_Node0 -- No --> E_CountCarsbyLoadEmpty
status"}:::decision N_CountCarsbyLoadEmpty_Node0_action["Total loaded car count is
incremented if load indicator is L ,
otherwise total empty car count is
incremented"]:::main N_CountCarsbyLoadEmpty_Node0 -- Yes --> N_CountCarsbyLoadEmpty_Node0_action N_CountCarsbyLoadEmpty_Node0_action --> E_CountCarsbyLoadEmpty S_CountCarsbyLoadEmpty --> N_CountCarsbyLoadEmpty_Node0 N_CountCarsbyLoadEmpty_Node0 -- No --> E_CountCarsbyLoadEmpty
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Equipment type code is not locomotive or container
WHEN:
The system processes car load status
THEN:
Total loaded car count is incremented if load indicator is 'L', otherwise total empty car count is incremented
β Consolidated Acceptance Criteria
- The system checks for special equipment characteristics → equipment is identified as SBU van, conveying car, or regular equipment for appropriate information formatting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpecialEquipment(["Start Step"])
E_SpecialEquipment(["End Step"])
N_SpecialEquipment_Node0{"The system checks for special
equipment characteristics"}:::decision N_SpecialEquipment_Node0_action["Equipment is identified as SBU van,
conveying car, or regular equipment
for appropriate information
formatting"]:::main N_SpecialEquipment_Node0 -- Yes --> N_SpecialEquipment_Node0_action N_SpecialEquipment_Node0_action --> E_SpecialEquipment S_SpecialEquipment --> N_SpecialEquipment_Node0 N_SpecialEquipment_Node0 -- No --> E_SpecialEquipment
equipment characteristics"}:::decision N_SpecialEquipment_Node0_action["Equipment is identified as SBU van,
conveying car, or regular equipment
for appropriate information
formatting"]:::main N_SpecialEquipment_Node0 -- Yes --> N_SpecialEquipment_Node0_action N_SpecialEquipment_Node0_action --> E_SpecialEquipment S_SpecialEquipment --> N_SpecialEquipment_Node0 N_SpecialEquipment_Node0 -- No --> E_SpecialEquipment
File: GCX003.cbl
GIVEN:
Equipment has been categorized and counted
WHEN:
The system checks for special equipment characteristics
THEN:
Equipment is identified as SBU van, conveying car, or regular equipment for appropriate information formatting
β Consolidated Acceptance Criteria
- The load/empty indicator is 'E' (empty) → information field is set to 'INTERNATIONAL SERVICE' and processing exits
- Load indicator is 'E' (empty) → equipment description is set to 'INTERNATIONAL SERVICE' and processing is completed
- The system processes the equipment description → the equipment description is set to 'INTERNATIONAL SERVICE' and processing completes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessInternationalServiceUnit(["Start Step"])
E_ProcessInternationalServiceUnit(["End Step"])
N_ProcessInternationalServiceUnit_Node0{"The loadempty indicator is E empty"}:::decision
N_ProcessInternationalServiceUnit_Node0_action["Information field is set to
INTERNATIONAL SERVICE and processing
exits"]:::main N_ProcessInternationalServiceUnit_Node0 -- Yes --> N_ProcessInternationalServiceUnit_Node0_action N_ProcessInternationalServiceUnit_Node0_action --> E_ProcessInternationalServiceUnit S_ProcessInternationalServiceUnit --> N_ProcessInternationalServiceUnit_Node0 N_ProcessInternationalServiceUnit_Node1{"Load indicator is E empty"}:::decision N_ProcessInternationalServiceUnit_Node1_action["Equipment description is set to
INTERNATIONAL SERVICE and processing
is completed"]:::main N_ProcessInternationalServiceUnit_Node1 -- Yes --> N_ProcessInternationalServiceUnit_Node1_action N_ProcessInternationalServiceUnit_Node1_action --> E_ProcessInternationalServiceUnit N_ProcessInternationalServiceUnit_Node0 -- No --> N_ProcessInternationalServiceUnit_Node1 N_ProcessInternationalServiceUnit_Node2{"The system processes the equipment
description"}:::decision N_ProcessInternationalServiceUnit_Node2_action["The equipment description is set to
INTERNATIONAL SERVICE and processing
completes"]:::main N_ProcessInternationalServiceUnit_Node2 -- Yes --> N_ProcessInternationalServiceUnit_Node2_action N_ProcessInternationalServiceUnit_Node2_action --> E_ProcessInternationalServiceUnit N_ProcessInternationalServiceUnit_Node1 -- No --> N_ProcessInternationalServiceUnit_Node2 N_ProcessInternationalServiceUnit_Node2 -- No --> E_ProcessInternationalServiceUnit
INTERNATIONAL SERVICE and processing
exits"]:::main N_ProcessInternationalServiceUnit_Node0 -- Yes --> N_ProcessInternationalServiceUnit_Node0_action N_ProcessInternationalServiceUnit_Node0_action --> E_ProcessInternationalServiceUnit S_ProcessInternationalServiceUnit --> N_ProcessInternationalServiceUnit_Node0 N_ProcessInternationalServiceUnit_Node1{"Load indicator is E empty"}:::decision N_ProcessInternationalServiceUnit_Node1_action["Equipment description is set to
INTERNATIONAL SERVICE and processing
is completed"]:::main N_ProcessInternationalServiceUnit_Node1 -- Yes --> N_ProcessInternationalServiceUnit_Node1_action N_ProcessInternationalServiceUnit_Node1_action --> E_ProcessInternationalServiceUnit N_ProcessInternationalServiceUnit_Node0 -- No --> N_ProcessInternationalServiceUnit_Node1 N_ProcessInternationalServiceUnit_Node2{"The system processes the equipment
description"}:::decision N_ProcessInternationalServiceUnit_Node2_action["The equipment description is set to
INTERNATIONAL SERVICE and processing
completes"]:::main N_ProcessInternationalServiceUnit_Node2 -- Yes --> N_ProcessInternationalServiceUnit_Node2_action N_ProcessInternationalServiceUnit_Node2_action --> E_ProcessInternationalServiceUnit N_ProcessInternationalServiceUnit_Node1 -- No --> N_ProcessInternationalServiceUnit_Node2 N_ProcessInternationalServiceUnit_Node2 -- No --> E_ProcessInternationalServiceUnit
File: GCX003.cbl
GIVEN:
Equipment is identified as SBU van unit
WHEN:
The load/empty indicator is 'E' (empty)
THEN:
Information field is set to 'INTERNATIONAL SERVICE' and processing exits
File: GCX003.cbl
GIVEN:
Equipment is classified as SBU van unit
WHEN:
Load indicator is 'E' (empty)
THEN:
Equipment description is set to 'INTERNATIONAL SERVICE' and processing is completed
File: GCX003.cbl
GIVEN:
An equipment item is classified as SBU Van unit and has empty load indicator
WHEN:
The system processes the equipment description
THEN:
The equipment description is set to 'INTERNATIONAL SERVICE' and processing completes
β Consolidated Acceptance Criteria
- The system processes conveying car information → information field is set to 'CONVEYING FLAT CAR' and processing exits
- Conveying car processing is initiated → equipment description is set to 'CONVEYING FLAT CAR' and load indicator is set to 'E'
- The system processes the equipment description → the equipment description is set to 'CONVEYING FLAT CAR'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessConveyingFlatCar(["Start Step"])
E_ProcessConveyingFlatCar(["End Step"])
N_ProcessConveyingFlatCar_Node0{"The system processes conveying car
information"}:::decision N_ProcessConveyingFlatCar_Node0_action["Information field is set to
CONVEYING FLAT CAR and processing
exits"]:::main N_ProcessConveyingFlatCar_Node0 -- Yes --> N_ProcessConveyingFlatCar_Node0_action N_ProcessConveyingFlatCar_Node0_action --> E_ProcessConveyingFlatCar S_ProcessConveyingFlatCar --> N_ProcessConveyingFlatCar_Node0 N_ProcessConveyingFlatCar_Node1{"Conveying car processing is
initiated"}:::decision N_ProcessConveyingFlatCar_Node1_action["Equipment description is set to
CONVEYING FLAT CAR and load
indicator is set to E"]:::main N_ProcessConveyingFlatCar_Node1 -- Yes --> N_ProcessConveyingFlatCar_Node1_action N_ProcessConveyingFlatCar_Node1_action --> E_ProcessConveyingFlatCar N_ProcessConveyingFlatCar_Node0 -- No --> N_ProcessConveyingFlatCar_Node1 N_ProcessConveyingFlatCar_Node2{"The system processes the equipment
description"}:::decision N_ProcessConveyingFlatCar_Node2_action["The equipment description is set to
CONVEYING FLAT CAR"]:::main N_ProcessConveyingFlatCar_Node2 -- Yes --> N_ProcessConveyingFlatCar_Node2_action N_ProcessConveyingFlatCar_Node2_action --> E_ProcessConveyingFlatCar N_ProcessConveyingFlatCar_Node1 -- No --> N_ProcessConveyingFlatCar_Node2 N_ProcessConveyingFlatCar_Node2 -- No --> E_ProcessConveyingFlatCar
information"}:::decision N_ProcessConveyingFlatCar_Node0_action["Information field is set to
CONVEYING FLAT CAR and processing
exits"]:::main N_ProcessConveyingFlatCar_Node0 -- Yes --> N_ProcessConveyingFlatCar_Node0_action N_ProcessConveyingFlatCar_Node0_action --> E_ProcessConveyingFlatCar S_ProcessConveyingFlatCar --> N_ProcessConveyingFlatCar_Node0 N_ProcessConveyingFlatCar_Node1{"Conveying car processing is
initiated"}:::decision N_ProcessConveyingFlatCar_Node1_action["Equipment description is set to
CONVEYING FLAT CAR and load
indicator is set to E"]:::main N_ProcessConveyingFlatCar_Node1 -- Yes --> N_ProcessConveyingFlatCar_Node1_action N_ProcessConveyingFlatCar_Node1_action --> E_ProcessConveyingFlatCar N_ProcessConveyingFlatCar_Node0 -- No --> N_ProcessConveyingFlatCar_Node1 N_ProcessConveyingFlatCar_Node2{"The system processes the equipment
description"}:::decision N_ProcessConveyingFlatCar_Node2_action["The equipment description is set to
CONVEYING FLAT CAR"]:::main N_ProcessConveyingFlatCar_Node2 -- Yes --> N_ProcessConveyingFlatCar_Node2_action N_ProcessConveyingFlatCar_Node2_action --> E_ProcessConveyingFlatCar N_ProcessConveyingFlatCar_Node1 -- No --> N_ProcessConveyingFlatCar_Node2 N_ProcessConveyingFlatCar_Node2 -- No --> E_ProcessConveyingFlatCar
File: GCX003.cbl
GIVEN:
Equipment is identified as conveying car and no cargo found
WHEN:
The system processes conveying car information
THEN:
Information field is set to 'CONVEYING FLAT CAR' and processing exits
File: GCX003.cbl
GIVEN:
Equipment is classified as conveying car
WHEN:
Conveying car processing is initiated
THEN:
Equipment description is set to 'CONVEYING FLAT CAR' and load indicator is set to 'E'
File: GCX003.cbl
GIVEN:
Equipment is classified as conveying car and no cargo is found
WHEN:
The system processes the equipment description
THEN:
The equipment description is set to 'CONVEYING FLAT CAR'
β Consolidated Acceptance Criteria
- The system determines cargo processing requirements → cargo is classified as empty equipment, loaded with bond information, or regular cargo for information field formatting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoStatus(["Start Step"])
E_CargoStatus(["End Step"])
N_CargoStatus_Node0{"The system determines cargo
processing requirements"}:::decision N_CargoStatus_Node0_action["Cargo is classified as empty
equipment, loaded with bond
information, or regular cargo for
information field formatting"]:::main N_CargoStatus_Node0 -- Yes --> N_CargoStatus_Node0_action N_CargoStatus_Node0_action --> E_CargoStatus S_CargoStatus --> N_CargoStatus_Node0 N_CargoStatus_Node0 -- No --> E_CargoStatus
processing requirements"}:::decision N_CargoStatus_Node0_action["Cargo is classified as empty
equipment, loaded with bond
information, or regular cargo for
information field formatting"]:::main N_CargoStatus_Node0 -- Yes --> N_CargoStatus_Node0_action N_CargoStatus_Node0_action --> E_CargoStatus S_CargoStatus --> N_CargoStatus_Node0 N_CargoStatus_Node0 -- No --> E_CargoStatus
File: GCX003.cbl
GIVEN:
Equipment and cargo information has been processed
WHEN:
The system determines cargo processing requirements
THEN:
Cargo is classified as empty equipment, loaded with bond information, or regular cargo for information field formatting
β Consolidated Acceptance Criteria
- The system processes empty equipment status → container or car counts are adjusted from loaded to empty, information field is set to 'EMPTY', and load/empty indicator is set to 'E'
- The cargo is classified as empty equipment or empty residue → set cargo information to 'EMPTY', update load/empty indicator to 'E', and adjust equipment counters from loaded to empty
- The system determines the equipment description → the equipment description is set to 'EMPTY' and load indicator is set to 'E'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessEmptyEquipment(["Start Step"])
E_ProcessEmptyEquipment(["End Step"])
N_ProcessEmptyEquipment_Node0{"The system processes empty
equipment status"}:::decision N_ProcessEmptyEquipment_Node0_action["Container or car counts are
adjusted from loaded to empty,
information field is set to EMPTY ,
and loadempty indicator is set to E"]:::main N_ProcessEmptyEquipment_Node0 -- Yes --> N_ProcessEmptyEquipment_Node0_action N_ProcessEmptyEquipment_Node0_action --> E_ProcessEmptyEquipment S_ProcessEmptyEquipment --> N_ProcessEmptyEquipment_Node0 N_ProcessEmptyEquipment_Node1{"The cargo is classified as empty
equipment or empty residue"}:::decision N_ProcessEmptyEquipment_Node1_action["Set cargo information to EMPTY ,
update loadempty indicator to E ,
and adjust equipment counters from
loaded to empty"]:::main N_ProcessEmptyEquipment_Node1 -- Yes --> N_ProcessEmptyEquipment_Node1_action N_ProcessEmptyEquipment_Node1_action --> E_ProcessEmptyEquipment N_ProcessEmptyEquipment_Node0 -- No --> N_ProcessEmptyEquipment_Node1 N_ProcessEmptyEquipment_Node2{"The system determines the equipment
description"}:::decision N_ProcessEmptyEquipment_Node2_action["The equipment description is set to
EMPTY and load indicator is set to E"]:::main N_ProcessEmptyEquipment_Node2 -- Yes --> N_ProcessEmptyEquipment_Node2_action N_ProcessEmptyEquipment_Node2_action --> E_ProcessEmptyEquipment N_ProcessEmptyEquipment_Node1 -- No --> N_ProcessEmptyEquipment_Node2 N_ProcessEmptyEquipment_Node2 -- No --> E_ProcessEmptyEquipment
equipment status"}:::decision N_ProcessEmptyEquipment_Node0_action["Container or car counts are
adjusted from loaded to empty,
information field is set to EMPTY ,
and loadempty indicator is set to E"]:::main N_ProcessEmptyEquipment_Node0 -- Yes --> N_ProcessEmptyEquipment_Node0_action N_ProcessEmptyEquipment_Node0_action --> E_ProcessEmptyEquipment S_ProcessEmptyEquipment --> N_ProcessEmptyEquipment_Node0 N_ProcessEmptyEquipment_Node1{"The cargo is classified as empty
equipment or empty residue"}:::decision N_ProcessEmptyEquipment_Node1_action["Set cargo information to EMPTY ,
update loadempty indicator to E ,
and adjust equipment counters from
loaded to empty"]:::main N_ProcessEmptyEquipment_Node1 -- Yes --> N_ProcessEmptyEquipment_Node1_action N_ProcessEmptyEquipment_Node1_action --> E_ProcessEmptyEquipment N_ProcessEmptyEquipment_Node0 -- No --> N_ProcessEmptyEquipment_Node1 N_ProcessEmptyEquipment_Node2{"The system determines the equipment
description"}:::decision N_ProcessEmptyEquipment_Node2_action["The equipment description is set to
EMPTY and load indicator is set to E"]:::main N_ProcessEmptyEquipment_Node2 -- Yes --> N_ProcessEmptyEquipment_Node2_action N_ProcessEmptyEquipment_Node2_action --> E_ProcessEmptyEquipment N_ProcessEmptyEquipment_Node1 -- No --> N_ProcessEmptyEquipment_Node2 N_ProcessEmptyEquipment_Node2 -- No --> E_ProcessEmptyEquipment
File: GCX003.cbl
GIVEN:
Cargo is classified as empty equipment or empty residue
WHEN:
The system processes empty equipment status
THEN:
Container or car counts are adjusted from loaded to empty, information field is set to 'EMPTY', and load/empty indicator is set to 'E'
File: GCX003.cbl
GIVEN:
A cargo record with empty equipment designation
WHEN:
The cargo is classified as empty equipment or empty residue
THEN:
Set cargo information to 'EMPTY', update load/empty indicator to 'E', and adjust equipment counters from loaded to empty
File: GCX003.cbl
GIVEN:
No cargo is found for the equipment or cargo is classified as empty equipment type
WHEN:
The system determines the equipment description
THEN:
The equipment description is set to 'EMPTY' and load indicator is set to 'E'
β Consolidated Acceptance Criteria
- The system formats bond information for display → bond information is formatted as 'PPR 7512 15 US-CA-US' for type 15, 'AMS [type] [number]' for IT/IE types, or 'AMS 7512 [type] [number]' for TE/TR/MT types
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatAMSBondDisplay(["Start Step"])
E_FormatAMSBondDisplay(["End Step"])
N_FormatAMSBondDisplay_Node0{"The system formats bond information
for display"}:::decision N_FormatAMSBondDisplay_Node0_action["Bond information is formatted as
PPR 7512 15 US-CA-US for type 15,
AMS type number for ITIE types, or
AMS 7512 type number for TETRMT
types"]:::main N_FormatAMSBondDisplay_Node0 -- Yes --> N_FormatAMSBondDisplay_Node0_action N_FormatAMSBondDisplay_Node0_action --> E_FormatAMSBondDisplay S_FormatAMSBondDisplay --> N_FormatAMSBondDisplay_Node0 N_FormatAMSBondDisplay_Node0 -- No --> E_FormatAMSBondDisplay
for display"}:::decision N_FormatAMSBondDisplay_Node0_action["Bond information is formatted as
PPR 7512 15 US-CA-US for type 15,
AMS type number for ITIE types, or
AMS 7512 type number for TETRMT
types"]:::main N_FormatAMSBondDisplay_Node0 -- Yes --> N_FormatAMSBondDisplay_Node0_action N_FormatAMSBondDisplay_Node0_action --> E_FormatAMSBondDisplay S_FormatAMSBondDisplay --> N_FormatAMSBondDisplay_Node0 N_FormatAMSBondDisplay_Node0 -- No --> E_FormatAMSBondDisplay
File: GCX003.cbl
GIVEN:
Cargo has bond information that needs display formatting
WHEN:
The system formats bond information for display
THEN:
Bond information is formatted as 'PPR 7512 15 US-CA-US' for type 15, 'AMS [type] [number]' for IT/IE types, or 'AMS 7512 [type] [number]' for TE/TR/MT types
β Consolidated Acceptance Criteria
- The system processes segment 07 cargo descriptions → cargo descriptions are extracted from segment 07 data, formatted for display, and multiple descriptions create separate report lines
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessSegment07Data(["Start Step"])
E_ProcessSegment07Data(["End Step"])
N_ProcessSegment07Data_Node0{"The system processes segment 07
cargo descriptions"}:::decision N_ProcessSegment07Data_Node0_action["Cargo descriptions are extracted
from segment 07 data, formatted for
display, and multiple descriptions
create separate report lines"]:::main N_ProcessSegment07Data_Node0 -- Yes --> N_ProcessSegment07Data_Node0_action N_ProcessSegment07Data_Node0_action --> E_ProcessSegment07Data S_ProcessSegment07Data --> N_ProcessSegment07Data_Node0 N_ProcessSegment07Data_Node0 -- No --> E_ProcessSegment07Data
cargo descriptions"}:::decision N_ProcessSegment07Data_Node0_action["Cargo descriptions are extracted
from segment 07 data, formatted for
display, and multiple descriptions
create separate report lines"]:::main N_ProcessSegment07Data_Node0 -- Yes --> N_ProcessSegment07Data_Node0_action N_ProcessSegment07Data_Node0_action --> E_ProcessSegment07Data S_ProcessSegment07Data --> N_ProcessSegment07Data_Node0 N_ProcessSegment07Data_Node0 -- No --> E_ProcessSegment07Data
File: GCX003.cbl
GIVEN:
Cargo information exists and segment 07 data is available
WHEN:
The system processes segment 07 cargo descriptions
THEN:
Cargo descriptions are extracted from segment 07 data, formatted for display, and multiple descriptions create separate report lines
β Consolidated Acceptance Criteria
- The equipment line is not blank and not marked for special processing → equipment count is incremented, report line is added to email text, and report index is advanced
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddEquipmentLinetoReport(["Start Step"])
E_AddEquipmentLinetoReport(["End Step"])
N_AddEquipmentLinetoReport_Node0{"The equipment line is not blank and
not marked for special processing"}:::decision N_AddEquipmentLinetoReport_Node0_action["Equipment count is incremented,
report line is added to email text,
and report index is advanced"]:::main N_AddEquipmentLinetoReport_Node0 -- Yes --> N_AddEquipmentLinetoReport_Node0_action N_AddEquipmentLinetoReport_Node0_action --> E_AddEquipmentLinetoReport S_AddEquipmentLinetoReport --> N_AddEquipmentLinetoReport_Node0 N_AddEquipmentLinetoReport_Node0 -- No --> E_AddEquipmentLinetoReport
not marked for special processing"}:::decision N_AddEquipmentLinetoReport_Node0_action["Equipment count is incremented,
report line is added to email text,
and report index is advanced"]:::main N_AddEquipmentLinetoReport_Node0 -- Yes --> N_AddEquipmentLinetoReport_Node0_action N_AddEquipmentLinetoReport_Node0_action --> E_AddEquipmentLinetoReport S_AddEquipmentLinetoReport --> N_AddEquipmentLinetoReport_Node0 N_AddEquipmentLinetoReport_Node0 -- No --> E_AddEquipmentLinetoReport
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Equipment information has been completely formatted
WHEN:
- The equipment line is not blank
- Not marked for special processing
THEN:
Equipment count is incremented, report line is added to email text, and report index is advanced
β Consolidated Acceptance Criteria
- Container processing is initiated → container ID is set from equipment ID, load/empty indicator is set from shipment root, and container flag is activated with trailer flag if applicable
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessContainerEquipment(["Start Step"])
E_ProcessContainerEquipment(["End Step"])
N_ProcessContainerEquipment_Node0{"Container processing is initiated"}:::decision
N_ProcessContainerEquipment_Node0_action["Container ID is set from equipment
ID, loadempty indicator is set from
shipment root, and container flag is
activated with trailer flag if
applicable"]:::main N_ProcessContainerEquipment_Node0 -- Yes --> N_ProcessContainerEquipment_Node0_action N_ProcessContainerEquipment_Node0_action --> E_ProcessContainerEquipment S_ProcessContainerEquipment --> N_ProcessContainerEquipment_Node0 N_ProcessContainerEquipment_Node0 -- No --> E_ProcessContainerEquipment
ID, loadempty indicator is set from
shipment root, and container flag is
activated with trailer flag if
applicable"]:::main N_ProcessContainerEquipment_Node0 -- Yes --> N_ProcessContainerEquipment_Node0_action N_ProcessContainerEquipment_Node0_action --> E_ProcessContainerEquipment S_ProcessContainerEquipment --> N_ProcessContainerEquipment_Node0 N_ProcessContainerEquipment_Node0 -- No --> E_ProcessContainerEquipment
File: GCX003.cbl
GIVEN:
Equipment is classified as a container
WHEN:
Container processing is initiated
THEN:
Container ID is set from equipment ID, load/empty indicator is set from shipment root, and container flag is activated with trailer flag if applicable
β Consolidated Acceptance Criteria
- Car processing is initiated → car ID is set from request equipment ID, load/empty indicator is set from request, car flag is activated, and equipment ID components are parsed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessCarEquipment(["Start Step"])
E_ProcessCarEquipment(["End Step"])
N_ProcessCarEquipment_Node0{"Car processing is initiated"}:::decision
N_ProcessCarEquipment_Node0_action["Car ID is set from request
equipment ID, loadempty indicator is
set from request, car flag is
activated, and equipment ID
components are parsed"]:::main N_ProcessCarEquipment_Node0 -- Yes --> N_ProcessCarEquipment_Node0_action N_ProcessCarEquipment_Node0_action --> E_ProcessCarEquipment S_ProcessCarEquipment --> N_ProcessCarEquipment_Node0 N_ProcessCarEquipment_Node0 -- No --> E_ProcessCarEquipment
equipment ID, loadempty indicator is
set from request, car flag is
activated, and equipment ID
components are parsed"]:::main N_ProcessCarEquipment_Node0 -- Yes --> N_ProcessCarEquipment_Node0_action N_ProcessCarEquipment_Node0_action --> E_ProcessCarEquipment S_ProcessCarEquipment --> N_ProcessCarEquipment_Node0 N_ProcessCarEquipment_Node0 -- No --> E_ProcessCarEquipment
File: GCX003.cbl
GIVEN:
Equipment is classified as a car
WHEN:
Car processing is initiated
THEN:
Car ID is set from request equipment ID, load/empty indicator is set from request, car flag is activated, and equipment ID components are parsed
β Consolidated Acceptance Criteria
- Equipment type validation is required → gCCCARTP service is called with equipment parameters to validate and retrieve equipment type information
- The system needs to validate equipment type → the GCCCARTP service should be called with the equipment parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallEquipmentTypeValidationService(["Start Step"])
E_CallEquipmentTypeValidationService(["End Step"])
N_CallEquipmentTypeValidationService_Node0{"Equipment type validation is
required"}:::decision N_CallEquipmentTypeValidationService_Node0_action["GCCCARTP service is called with
equipment parameters to validate and
retrieve equipment type information"]:::main N_CallEquipmentTypeValidationService_Node0 -- Yes --> N_CallEquipmentTypeValidationService_Node0_action N_CallEquipmentTypeValidationService_Node0_action --> E_CallEquipmentTypeValidationService S_CallEquipmentTypeValidationService --> N_CallEquipmentTypeValidationService_Node0 N_CallEquipmentTypeValidationService_Node1{"The system needs to validate
equipment type"}:::decision N_CallEquipmentTypeValidationService_Node1_action["The GCCCARTP service should be
called with the equipment parameters"]:::main N_CallEquipmentTypeValidationService_Node1 -- Yes --> N_CallEquipmentTypeValidationService_Node1_action N_CallEquipmentTypeValidationService_Node1_action --> E_CallEquipmentTypeValidationService N_CallEquipmentTypeValidationService_Node0 -- No --> N_CallEquipmentTypeValidationService_Node1 N_CallEquipmentTypeValidationService_Node1 -- No --> E_CallEquipmentTypeValidationService
required"}:::decision N_CallEquipmentTypeValidationService_Node0_action["GCCCARTP service is called with
equipment parameters to validate and
retrieve equipment type information"]:::main N_CallEquipmentTypeValidationService_Node0 -- Yes --> N_CallEquipmentTypeValidationService_Node0_action N_CallEquipmentTypeValidationService_Node0_action --> E_CallEquipmentTypeValidationService S_CallEquipmentTypeValidationService --> N_CallEquipmentTypeValidationService_Node0 N_CallEquipmentTypeValidationService_Node1{"The system needs to validate
equipment type"}:::decision N_CallEquipmentTypeValidationService_Node1_action["The GCCCARTP service should be
called with the equipment parameters"]:::main N_CallEquipmentTypeValidationService_Node1 -- Yes --> N_CallEquipmentTypeValidationService_Node1_action N_CallEquipmentTypeValidationService_Node1_action --> E_CallEquipmentTypeValidationService N_CallEquipmentTypeValidationService_Node0 -- No --> N_CallEquipmentTypeValidationService_Node1 N_CallEquipmentTypeValidationService_Node1 -- No --> E_CallEquipmentTypeValidationService
File: GCX003.cbl
GIVEN:
Equipment ID and type flags are set
WHEN:
Equipment type validation is required
THEN:
- Gcccartp service is called with equipment parameters to validate
- Retrieve equipment type information
File: GCX003.cbl
GIVEN:
Equipment ID and type flags have been set
WHEN:
The system needs to validate equipment type
THEN:
The GCCCARTP service should be called with the equipment parameters
β Consolidated Acceptance Criteria
- Validation failure is detected → error message 35 is generated for container validation failure or error message 36 for car validation failure, equipment error flag is set, and processing continues to next equipment
- The system processes the validation failure → if the equipment is a container, message 35 should be generated, otherwise message 36 should be generated, and the equipment error flag should be set
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateEquipmentErrorMessage(["Start Step"])
E_GenerateEquipmentErrorMessage(["End Step"])
N_GenerateEquipmentErrorMessage_Node0{"Validation failure is detected"}:::decision
N_GenerateEquipmentErrorMessage_Node0_action["Error message 35 is generated for
container validation failure or
error message 36 for car validation
failure, equipment error flag is
set, and processing continues to
next equipment"]:::main N_GenerateEquipmentErrorMessage_Node0 -- Yes --> N_GenerateEquipmentErrorMessage_Node0_action N_GenerateEquipmentErrorMessage_Node0_action --> E_GenerateEquipmentErrorMessage S_GenerateEquipmentErrorMessage --> N_GenerateEquipmentErrorMessage_Node0 N_GenerateEquipmentErrorMessage_Node1{"The system processes the validation
failure"}:::decision N_GenerateEquipmentErrorMessage_Node1_action["If the equipment is a container,
message 35 should be generated,
otherwise message 36 should be
generated, and the equipment error
flag should be set"]:::main N_GenerateEquipmentErrorMessage_Node1 -- Yes --> N_GenerateEquipmentErrorMessage_Node1_action N_GenerateEquipmentErrorMessage_Node1_action --> E_GenerateEquipmentErrorMessage N_GenerateEquipmentErrorMessage_Node0 -- No --> N_GenerateEquipmentErrorMessage_Node1 N_GenerateEquipmentErrorMessage_Node1 -- No --> E_GenerateEquipmentErrorMessage
container validation failure or
error message 36 for car validation
failure, equipment error flag is
set, and processing continues to
next equipment"]:::main N_GenerateEquipmentErrorMessage_Node0 -- Yes --> N_GenerateEquipmentErrorMessage_Node0_action N_GenerateEquipmentErrorMessage_Node0_action --> E_GenerateEquipmentErrorMessage S_GenerateEquipmentErrorMessage --> N_GenerateEquipmentErrorMessage_Node0 N_GenerateEquipmentErrorMessage_Node1{"The system processes the validation
failure"}:::decision N_GenerateEquipmentErrorMessage_Node1_action["If the equipment is a container,
message 35 should be generated,
otherwise message 36 should be
generated, and the equipment error
flag should be set"]:::main N_GenerateEquipmentErrorMessage_Node1 -- Yes --> N_GenerateEquipmentErrorMessage_Node1_action N_GenerateEquipmentErrorMessage_Node1_action --> E_GenerateEquipmentErrorMessage N_GenerateEquipmentErrorMessage_Node0 -- No --> N_GenerateEquipmentErrorMessage_Node1 N_GenerateEquipmentErrorMessage_Node1 -- No --> E_GenerateEquipmentErrorMessage
File: GCX003.cbl
GIVEN:
Equipment type validation service call fails
WHEN:
Validation failure is detected
THEN:
Error message 35 is generated for container validation failure or error message 36 for car validation failure, equipment error flag is set, and processing continues to next equipment
File: GCX003.cbl
GIVEN:
The equipment type validation service call has failed
WHEN:
The system processes the validation failure
THEN:
If the equipment is a container, message 35 should be generated, otherwise message 36 should be generated, and the equipment error flag should be set
β Consolidated Acceptance Criteria
- Car code equals 'SK' → equipment is classified as double stack container for traffic counting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckDoubleStackContainerClassification(["Start Step"])
E_CheckDoubleStackContainerClassification(["End Step"])
N_CheckDoubleStackContainerClassification_Node0{"Car code equals SK"}:::decision
N_CheckDoubleStackContainerClassification_Node0_action["Equipment is classified as double
stack container for traffic counting"]:::main N_CheckDoubleStackContainerClassification_Node0 -- Yes --> N_CheckDoubleStackContainerClassification_Node0_action N_CheckDoubleStackContainerClassification_Node0_action --> E_CheckDoubleStackContainerClassification S_CheckDoubleStackContainerClassification --> N_CheckDoubleStackContainerClassification_Node0 N_CheckDoubleStackContainerClassification_Node0 -- No --> E_CheckDoubleStackContainerClassification
stack container for traffic counting"]:::main N_CheckDoubleStackContainerClassification_Node0 -- Yes --> N_CheckDoubleStackContainerClassification_Node0_action N_CheckDoubleStackContainerClassification_Node0_action --> E_CheckDoubleStackContainerClassification S_CheckDoubleStackContainerClassification --> N_CheckDoubleStackContainerClassification_Node0 N_CheckDoubleStackContainerClassification_Node0 -- No --> E_CheckDoubleStackContainerClassification
File: GCX003.cbl
GIVEN:
Equipment has a waybill and car code is available
WHEN:
Car code equals 'SK'
THEN:
Equipment is classified as double stack container for traffic counting
β Consolidated Acceptance Criteria
- Double stack counting service is called → container count is added to appropriate traffic type counter (CPRS, CSXT, NS, or HAUL) based on traffic classification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CountbyTrafficTypeCPRSCSXTNSHAUL(["Start Step"])
E_CountbyTrafficTypeCPRSCSXTNSHAUL(["End Step"])
N_CountbyTrafficTypeCPRSCSXTNSHAUL_Node0{"Double stack counting service is
called"}:::decision N_CountbyTrafficTypeCPRSCSXTNSHAUL_Node0_action["Container count is added to
appropriate traffic type counter
CPRS, CSXT, NS, or HAUL based on
traffic classification"]:::main N_CountbyTrafficTypeCPRSCSXTNSHAUL_Node0 -- Yes --> N_CountbyTrafficTypeCPRSCSXTNSHAUL_Node0_action N_CountbyTrafficTypeCPRSCSXTNSHAUL_Node0_action --> E_CountbyTrafficTypeCPRSCSXTNSHAUL S_CountbyTrafficTypeCPRSCSXTNSHAUL --> N_CountbyTrafficTypeCPRSCSXTNSHAUL_Node0 N_CountbyTrafficTypeCPRSCSXTNSHAUL_Node0 -- No --> E_CountbyTrafficTypeCPRSCSXTNSHAUL
called"}:::decision N_CountbyTrafficTypeCPRSCSXTNSHAUL_Node0_action["Container count is added to
appropriate traffic type counter
CPRS, CSXT, NS, or HAUL based on
traffic classification"]:::main N_CountbyTrafficTypeCPRSCSXTNSHAUL_Node0 -- Yes --> N_CountbyTrafficTypeCPRSCSXTNSHAUL_Node0_action N_CountbyTrafficTypeCPRSCSXTNSHAUL_Node0_action --> E_CountbyTrafficTypeCPRSCSXTNSHAUL S_CountbyTrafficTypeCPRSCSXTNSHAUL --> N_CountbyTrafficTypeCPRSCSXTNSHAUL_Node0 N_CountbyTrafficTypeCPRSCSXTNSHAUL_Node0 -- No --> E_CountbyTrafficTypeCPRSCSXTNSHAUL
File: GCX003.cbl
GIVEN:
Equipment is classified as double stack container
WHEN:
Double stack counting service is called
THEN:
Container count is added to appropriate traffic type counter (CPRS, CSXT, NS, or HAUL) based on traffic classification
β Consolidated Acceptance Criteria
- Routing information is needed → routing information is extracted from shipment root, exclamation marks are replaced with spaces, and routing analysis is prepared
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractWaybillRoutingInformation(["Start Step"])
E_ExtractWaybillRoutingInformation(["End Step"])
N_ExtractWaybillRoutingInformation_Node0{"Routing information is needed"}:::decision
N_ExtractWaybillRoutingInformation_Node0_action["Routing information is extracted
from shipment root, exclamation
marks are replaced with spaces, and
routing analysis is prepared"]:::main N_ExtractWaybillRoutingInformation_Node0 -- Yes --> N_ExtractWaybillRoutingInformation_Node0_action N_ExtractWaybillRoutingInformation_Node0_action --> E_ExtractWaybillRoutingInformation S_ExtractWaybillRoutingInformation --> N_ExtractWaybillRoutingInformation_Node0 N_ExtractWaybillRoutingInformation_Node0 -- No --> E_ExtractWaybillRoutingInformation
from shipment root, exclamation
marks are replaced with spaces, and
routing analysis is prepared"]:::main N_ExtractWaybillRoutingInformation_Node0 -- Yes --> N_ExtractWaybillRoutingInformation_Node0_action N_ExtractWaybillRoutingInformation_Node0_action --> E_ExtractWaybillRoutingInformation S_ExtractWaybillRoutingInformation --> N_ExtractWaybillRoutingInformation_Node0 N_ExtractWaybillRoutingInformation_Node0 -- No --> E_ExtractWaybillRoutingInformation
File: GCX003.cbl
GIVEN:
Equipment has an associated waybill
WHEN:
Routing information is needed
THEN:
Routing information is extracted from shipment root, exclamation marks are replaced with spaces, and routing analysis is prepared
β Consolidated Acceptance Criteria
- Routing pattern analysis is performed → system checks for specific routing patterns including CSXT/NS to CPRS via DET junction and sets appropriate routing indicators
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnalyzeEquipmentRoutingPatterns(["Start Step"])
E_AnalyzeEquipmentRoutingPatterns(["End Step"])
N_AnalyzeEquipmentRoutingPatterns_Node0{"Routing pattern analysis is
performed"}:::decision N_AnalyzeEquipmentRoutingPatterns_Node0_action["System checks for specific routing
patterns including CSXTNS to CPRS
via DET junction and sets
appropriate routing indicators"]:::main N_AnalyzeEquipmentRoutingPatterns_Node0 -- Yes --> N_AnalyzeEquipmentRoutingPatterns_Node0_action N_AnalyzeEquipmentRoutingPatterns_Node0_action --> E_AnalyzeEquipmentRoutingPatterns S_AnalyzeEquipmentRoutingPatterns --> N_AnalyzeEquipmentRoutingPatterns_Node0 N_AnalyzeEquipmentRoutingPatterns_Node0 -- No --> E_AnalyzeEquipmentRoutingPatterns
performed"}:::decision N_AnalyzeEquipmentRoutingPatterns_Node0_action["System checks for specific routing
patterns including CSXTNS to CPRS
via DET junction and sets
appropriate routing indicators"]:::main N_AnalyzeEquipmentRoutingPatterns_Node0 -- Yes --> N_AnalyzeEquipmentRoutingPatterns_Node0_action N_AnalyzeEquipmentRoutingPatterns_Node0_action --> E_AnalyzeEquipmentRoutingPatterns S_AnalyzeEquipmentRoutingPatterns --> N_AnalyzeEquipmentRoutingPatterns_Node0 N_AnalyzeEquipmentRoutingPatterns_Node0 -- No --> E_AnalyzeEquipmentRoutingPatterns
File: GCX003.cbl
GIVEN:
Routing information is available from waybill
WHEN:
Routing pattern analysis is performed
THEN:
- System checks for specific routing patterns including csxt/ns to cprs via det junction
- Sets appropriate routing indicators
β Consolidated Acceptance Criteria
- Equipment processing continues → empty equipment indicator is set to 1 in report fields
- No valid routing pattern has been found → the system sets the empty equipment indicator to 1 to classify the equipment as having no defined route
- Routing validation fails or waybill is not found → empty equipment indicator is set to 1 for the equipment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEmptyEquipmentIndicator(["Start Step"])
E_SetEmptyEquipmentIndicator(["End Step"])
N_SetEmptyEquipmentIndicator_Node0{"Equipment processing continues"}:::decision
N_SetEmptyEquipmentIndicator_Node0_action["Empty equipment indicator is set to
1 in report fields"]:::main N_SetEmptyEquipmentIndicator_Node0 -- Yes --> N_SetEmptyEquipmentIndicator_Node0_action N_SetEmptyEquipmentIndicator_Node0_action --> E_SetEmptyEquipmentIndicator S_SetEmptyEquipmentIndicator --> N_SetEmptyEquipmentIndicator_Node0 N_SetEmptyEquipmentIndicator_Node1{"No valid routing pattern has been
found"}:::decision N_SetEmptyEquipmentIndicator_Node1_action["The system sets the empty equipment
indicator to 1 to classify the
equipment as having no defined route"]:::main N_SetEmptyEquipmentIndicator_Node1 -- Yes --> N_SetEmptyEquipmentIndicator_Node1_action N_SetEmptyEquipmentIndicator_Node1_action --> E_SetEmptyEquipmentIndicator N_SetEmptyEquipmentIndicator_Node0 -- No --> N_SetEmptyEquipmentIndicator_Node1 N_SetEmptyEquipmentIndicator_Node2{"Routing validation fails or waybill
is not found"}:::decision N_SetEmptyEquipmentIndicator_Node2_action["Empty equipment indicator is set to
1 for the equipment"]:::main N_SetEmptyEquipmentIndicator_Node2 -- Yes --> N_SetEmptyEquipmentIndicator_Node2_action N_SetEmptyEquipmentIndicator_Node2_action --> E_SetEmptyEquipmentIndicator N_SetEmptyEquipmentIndicator_Node1 -- No --> N_SetEmptyEquipmentIndicator_Node2 N_SetEmptyEquipmentIndicator_Node2 -- No --> E_SetEmptyEquipmentIndicator
1 in report fields"]:::main N_SetEmptyEquipmentIndicator_Node0 -- Yes --> N_SetEmptyEquipmentIndicator_Node0_action N_SetEmptyEquipmentIndicator_Node0_action --> E_SetEmptyEquipmentIndicator S_SetEmptyEquipmentIndicator --> N_SetEmptyEquipmentIndicator_Node0 N_SetEmptyEquipmentIndicator_Node1{"No valid routing pattern has been
found"}:::decision N_SetEmptyEquipmentIndicator_Node1_action["The system sets the empty equipment
indicator to 1 to classify the
equipment as having no defined route"]:::main N_SetEmptyEquipmentIndicator_Node1 -- Yes --> N_SetEmptyEquipmentIndicator_Node1_action N_SetEmptyEquipmentIndicator_Node1_action --> E_SetEmptyEquipmentIndicator N_SetEmptyEquipmentIndicator_Node0 -- No --> N_SetEmptyEquipmentIndicator_Node1 N_SetEmptyEquipmentIndicator_Node2{"Routing validation fails or waybill
is not found"}:::decision N_SetEmptyEquipmentIndicator_Node2_action["Empty equipment indicator is set to
1 for the equipment"]:::main N_SetEmptyEquipmentIndicator_Node2 -- Yes --> N_SetEmptyEquipmentIndicator_Node2_action N_SetEmptyEquipmentIndicator_Node2_action --> E_SetEmptyEquipmentIndicator N_SetEmptyEquipmentIndicator_Node1 -- No --> N_SetEmptyEquipmentIndicator_Node2 N_SetEmptyEquipmentIndicator_Node2 -- No --> E_SetEmptyEquipmentIndicator
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Equipment routing information is not available or waybill is not found
WHEN:
Equipment processing continues
THEN:
Empty equipment indicator is set to 1 in report fields
File: GCX003.cbl
GIVEN:
Route processing has completed for an equipment item
WHEN:
No valid routing pattern has been found
THEN:
The system sets the empty equipment indicator to 1 to classify the equipment as having no defined route
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Equipment routing validation has been performed
WHEN:
Routing validation fails or waybill is not found
THEN:
Empty equipment indicator is set to 1 for the equipment
β Consolidated Acceptance Criteria
- Container counting is performed → if load indicator is 'L' then loaded container count is incremented, otherwise if load indicator is 'E' then empty container count is incremented
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CountLoadedEmptyContainers(["Start Step"])
E_CountLoadedEmptyContainers(["End Step"])
N_CountLoadedEmptyContainers_Node0{"Container counting is performed"}:::decision
N_CountLoadedEmptyContainers_Node0_action["If load indicator is L then loaded
container count is incremented,
otherwise if load indicator is E
then empty container count is
incremented"]:::main N_CountLoadedEmptyContainers_Node0 -- Yes --> N_CountLoadedEmptyContainers_Node0_action N_CountLoadedEmptyContainers_Node0_action --> E_CountLoadedEmptyContainers S_CountLoadedEmptyContainers --> N_CountLoadedEmptyContainers_Node0 N_CountLoadedEmptyContainers_Node0 -- No --> E_CountLoadedEmptyContainers
container count is incremented,
otherwise if load indicator is E
then empty container count is
incremented"]:::main N_CountLoadedEmptyContainers_Node0 -- Yes --> N_CountLoadedEmptyContainers_Node0_action N_CountLoadedEmptyContainers_Node0_action --> E_CountLoadedEmptyContainers S_CountLoadedEmptyContainers --> N_CountLoadedEmptyContainers_Node0 N_CountLoadedEmptyContainers_Node0 -- No --> E_CountLoadedEmptyContainers
File: GCX003.cbl
GIVEN:
Equipment car type is 'CN' (container)
WHEN:
Container counting is performed
THEN:
If load indicator is 'L' then loaded container count is incremented, otherwise if load indicator is 'E' then empty container count is incremented
β Consolidated Acceptance Criteria
- Car counting is performed → if load indicator is 'L' then loaded car count is incremented, otherwise if load indicator is 'E' then empty car count is incremented
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CountLoadedEmptyCars(["Start Step"])
E_CountLoadedEmptyCars(["End Step"])
N_CountLoadedEmptyCars_Node0{"Car counting is performed"}:::decision
N_CountLoadedEmptyCars_Node0_action["If load indicator is L then loaded
car count is incremented, otherwise
if load indicator is E then empty
car count is incremented"]:::main N_CountLoadedEmptyCars_Node0 -- Yes --> N_CountLoadedEmptyCars_Node0_action N_CountLoadedEmptyCars_Node0_action --> E_CountLoadedEmptyCars S_CountLoadedEmptyCars --> N_CountLoadedEmptyCars_Node0 N_CountLoadedEmptyCars_Node0 -- No --> E_CountLoadedEmptyCars
car count is incremented, otherwise
if load indicator is E then empty
car count is incremented"]:::main N_CountLoadedEmptyCars_Node0 -- Yes --> N_CountLoadedEmptyCars_Node0_action N_CountLoadedEmptyCars_Node0_action --> E_CountLoadedEmptyCars S_CountLoadedEmptyCars --> N_CountLoadedEmptyCars_Node0 N_CountLoadedEmptyCars_Node0 -- No --> E_CountLoadedEmptyCars
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Equipment car type is not locomotive or container
WHEN:
Car counting is performed
THEN:
If load indicator is 'L' then loaded car count is incremented, otherwise if load indicator is 'E' then empty car count is incremented
β Consolidated Acceptance Criteria
- Special equipment evaluation is performed → equipment is classified as SBU van, conveying car, or regular equipment for appropriate processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpecialEquipmentType(["Start Step"])
E_SpecialEquipmentType(["End Step"])
N_SpecialEquipmentType_Node0{"Special equipment evaluation is
performed"}:::decision N_SpecialEquipmentType_Node0_action["Equipment is classified as SBU van,
conveying car, or regular equipment
for appropriate processing"]:::main N_SpecialEquipmentType_Node0 -- Yes --> N_SpecialEquipmentType_Node0_action N_SpecialEquipmentType_Node0_action --> E_SpecialEquipmentType S_SpecialEquipmentType --> N_SpecialEquipmentType_Node0 N_SpecialEquipmentType_Node0 -- No --> E_SpecialEquipmentType
performed"}:::decision N_SpecialEquipmentType_Node0_action["Equipment is classified as SBU van,
conveying car, or regular equipment
for appropriate processing"]:::main N_SpecialEquipmentType_Node0 -- Yes --> N_SpecialEquipmentType_Node0_action N_SpecialEquipmentType_Node0_action --> E_SpecialEquipmentType S_SpecialEquipmentType --> N_SpecialEquipmentType_Node0 N_SpecialEquipmentType_Node0 -- No --> E_SpecialEquipmentType
File: GCX003.cbl
GIVEN:
Equipment information is assembled
WHEN:
Special equipment evaluation is performed
THEN:
Equipment is classified as SBU van, conveying car, or regular equipment for appropriate processing
β Consolidated Acceptance Criteria
- Final load status determination is needed → load indicator is set based on cargo presence, equipment type, and special conditions with appropriate status adjustments for empty residue and empty equipment cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentLoadEmptyStatus(["Start Step"])
E_SetEquipmentLoadEmptyStatus(["End Step"])
N_SetEquipmentLoadEmptyStatus_Node0{"Final load status determination is
needed"}:::decision N_SetEquipmentLoadEmptyStatus_Node0_action["Load indicator is set based on
cargo presence, equipment type, and
special conditions with appropriate
status adjustments for empty residue
and empty equipment cargo"]:::main N_SetEquipmentLoadEmptyStatus_Node0 -- Yes --> N_SetEquipmentLoadEmptyStatus_Node0_action N_SetEquipmentLoadEmptyStatus_Node0_action --> E_SetEquipmentLoadEmptyStatus S_SetEquipmentLoadEmptyStatus --> N_SetEquipmentLoadEmptyStatus_Node0 N_SetEquipmentLoadEmptyStatus_Node0 -- No --> E_SetEquipmentLoadEmptyStatus
needed"}:::decision N_SetEquipmentLoadEmptyStatus_Node0_action["Load indicator is set based on
cargo presence, equipment type, and
special conditions with appropriate
status adjustments for empty residue
and empty equipment cargo"]:::main N_SetEquipmentLoadEmptyStatus_Node0 -- Yes --> N_SetEquipmentLoadEmptyStatus_Node0_action N_SetEquipmentLoadEmptyStatus_Node0_action --> E_SetEquipmentLoadEmptyStatus S_SetEquipmentLoadEmptyStatus --> N_SetEquipmentLoadEmptyStatus_Node0 N_SetEquipmentLoadEmptyStatus_Node0 -- No --> E_SetEquipmentLoadEmptyStatus
File: GCX003.cbl
GIVEN:
Equipment processing is complete and cargo information is available
WHEN:
Final load status determination is needed
THEN:
- Load indicator is set based on cargo presence, equipment type, and special conditions with appropriate status adjustments for empty residue
- Empty equipment cargo
β Consolidated Acceptance Criteria
- The system processes the waybill for routing analysis → the routing information from RUT-INFO fields 1, 2, and 3 is extracted and stored in working storage routing variables
- The system processes the waybill routing data → the routing information is extracted into working storage fields and exclamation marks are replaced with spaces for proper parsing
- The system processes the waybill routing data → the routing information is extracted into working storage and exclamation marks are replaced with spaces for proper parsing
- The system processes the waybill routing data → the routing information is extracted from three RUT-INFO positions and all '!' characters are replaced with spaces
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractRoutingInformationfromWaybill(["Start Step"])
E_ExtractRoutingInformationfromWaybill(["End Step"])
N_ExtractRoutingInformationfromWaybill_Node0{"The system processes the waybill
for routing analysis"}:::decision N_ExtractRoutingInformationfromWaybill_Node0_action["The routing information from
RUT-INFO fields 1, 2, and 3 is
extracted and stored in working
storage routing variables"]:::main N_ExtractRoutingInformationfromWaybill_Node0 -- Yes --> N_ExtractRoutingInformationfromWaybill_Node0_action N_ExtractRoutingInformationfromWaybill_Node0_action --> E_ExtractRoutingInformationfromWaybill S_ExtractRoutingInformationfromWaybill --> N_ExtractRoutingInformationfromWaybill_Node0 N_ExtractRoutingInformationfromWaybill_Node1{"The system processes the waybill
routing data"}:::decision N_ExtractRoutingInformationfromWaybill_Node1_action["The routing information is
extracted into working storage
fields and exclamation marks are
replaced with spaces for proper
parsing"]:::main N_ExtractRoutingInformationfromWaybill_Node1 -- Yes --> N_ExtractRoutingInformationfromWaybill_Node1_action N_ExtractRoutingInformationfromWaybill_Node1_action --> E_ExtractRoutingInformationfromWaybill N_ExtractRoutingInformationfromWaybill_Node0 -- No --> N_ExtractRoutingInformationfromWaybill_Node1 N_ExtractRoutingInformationfromWaybill_Node2{"The system processes the waybill
routing data"}:::decision N_ExtractRoutingInformationfromWaybill_Node2_action["The routing information is
extracted into working storage and
exclamation marks are replaced with
spaces for proper parsing"]:::main N_ExtractRoutingInformationfromWaybill_Node2 -- Yes --> N_ExtractRoutingInformationfromWaybill_Node2_action N_ExtractRoutingInformationfromWaybill_Node2_action --> E_ExtractRoutingInformationfromWaybill N_ExtractRoutingInformationfromWaybill_Node1 -- No --> N_ExtractRoutingInformationfromWaybill_Node2 N_ExtractRoutingInformationfromWaybill_Node3{"The system processes the waybill
routing data"}:::decision N_ExtractRoutingInformationfromWaybill_Node3_action["The routing information is
extracted from three RUT-INFO
positions and all ! characters are
replaced with spaces"]:::main N_ExtractRoutingInformationfromWaybill_Node3 -- Yes --> N_ExtractRoutingInformationfromWaybill_Node3_action N_ExtractRoutingInformationfromWaybill_Node3_action --> E_ExtractRoutingInformationfromWaybill N_ExtractRoutingInformationfromWaybill_Node2 -- No --> N_ExtractRoutingInformationfromWaybill_Node3 N_ExtractRoutingInformationfromWaybill_Node3 -- No --> E_ExtractRoutingInformationfromWaybill
for routing analysis"}:::decision N_ExtractRoutingInformationfromWaybill_Node0_action["The routing information from
RUT-INFO fields 1, 2, and 3 is
extracted and stored in working
storage routing variables"]:::main N_ExtractRoutingInformationfromWaybill_Node0 -- Yes --> N_ExtractRoutingInformationfromWaybill_Node0_action N_ExtractRoutingInformationfromWaybill_Node0_action --> E_ExtractRoutingInformationfromWaybill S_ExtractRoutingInformationfromWaybill --> N_ExtractRoutingInformationfromWaybill_Node0 N_ExtractRoutingInformationfromWaybill_Node1{"The system processes the waybill
routing data"}:::decision N_ExtractRoutingInformationfromWaybill_Node1_action["The routing information is
extracted into working storage
fields and exclamation marks are
replaced with spaces for proper
parsing"]:::main N_ExtractRoutingInformationfromWaybill_Node1 -- Yes --> N_ExtractRoutingInformationfromWaybill_Node1_action N_ExtractRoutingInformationfromWaybill_Node1_action --> E_ExtractRoutingInformationfromWaybill N_ExtractRoutingInformationfromWaybill_Node0 -- No --> N_ExtractRoutingInformationfromWaybill_Node1 N_ExtractRoutingInformationfromWaybill_Node2{"The system processes the waybill
routing data"}:::decision N_ExtractRoutingInformationfromWaybill_Node2_action["The routing information is
extracted into working storage and
exclamation marks are replaced with
spaces for proper parsing"]:::main N_ExtractRoutingInformationfromWaybill_Node2 -- Yes --> N_ExtractRoutingInformationfromWaybill_Node2_action N_ExtractRoutingInformationfromWaybill_Node2_action --> E_ExtractRoutingInformationfromWaybill N_ExtractRoutingInformationfromWaybill_Node1 -- No --> N_ExtractRoutingInformationfromWaybill_Node2 N_ExtractRoutingInformationfromWaybill_Node3{"The system processes the waybill
routing data"}:::decision N_ExtractRoutingInformationfromWaybill_Node3_action["The routing information is
extracted from three RUT-INFO
positions and all ! characters are
replaced with spaces"]:::main N_ExtractRoutingInformationfromWaybill_Node3 -- Yes --> N_ExtractRoutingInformationfromWaybill_Node3_action N_ExtractRoutingInformationfromWaybill_Node3_action --> E_ExtractRoutingInformationfromWaybill N_ExtractRoutingInformationfromWaybill_Node2 -- No --> N_ExtractRoutingInformationfromWaybill_Node3 N_ExtractRoutingInformationfromWaybill_Node3 -- No --> E_ExtractRoutingInformationfromWaybill
File: GCX003.cbl
GIVEN:
A waybill exists with routing information in RUT-INFO fields
WHEN:
The system processes the waybill for routing analysis
THEN:
- The routing information from rut-info fields 1, 2, and 3 is extracted
- Stored in working storage routing variables
File: GCX003.cbl
GIVEN:
A waybill exists with routing information in RUT-INFO fields 1, 2, and 3
WHEN:
The system processes the waybill routing data
THEN:
- The routing information is extracted into working storage fields
- Exclamation marks are replaced with spaces for proper parsing
File: GCX003.cbl
GIVEN:
A waybill exists with routing information in RUT-INFO fields
WHEN:
The system processes the waybill routing data
THEN:
- The routing information is extracted into working storage
- Exclamation marks are replaced with spaces for proper parsing
File: GCX003.cbl
GIVEN:
A waybill exists with routing information in RUT-INFO fields
WHEN:
The system processes the waybill routing data
THEN:
- The routing information is extracted from three rut-info positions
- All '!' characters are replaced with spaces
β Consolidated Acceptance Criteria
- The system processes the routing data → all exclamation marks in the routing information are replaced with spaces
- The routing information contains exclamation mark delimiters → replace all exclamation marks with spaces to normalize the routing data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CleanRoutingDataReplaceSpecialCharacters(["Start Step"])
E_CleanRoutingDataReplaceSpecialCharacters(["End Step"])
N_CleanRoutingDataReplaceSpecialCharacters_Node0{"The system processes the routing
data"}:::decision N_CleanRoutingDataReplaceSpecialCharacters_Node0_action["All exclamation marks in the
routing information are replaced
with spaces"]:::main N_CleanRoutingDataReplaceSpecialCharacters_Node0 -- Yes --> N_CleanRoutingDataReplaceSpecialCharacters_Node0_action N_CleanRoutingDataReplaceSpecialCharacters_Node0_action --> E_CleanRoutingDataReplaceSpecialCharacters S_CleanRoutingDataReplaceSpecialCharacters --> N_CleanRoutingDataReplaceSpecialCharacters_Node0 N_CleanRoutingDataReplaceSpecialCharacters_Node1{"The routing information contains
exclamation mark delimiters"}:::decision N_CleanRoutingDataReplaceSpecialCharacters_Node1_action["Replace all exclamation marks with
spaces to normalize the routing data"]:::main N_CleanRoutingDataReplaceSpecialCharacters_Node1 -- Yes --> N_CleanRoutingDataReplaceSpecialCharacters_Node1_action N_CleanRoutingDataReplaceSpecialCharacters_Node1_action --> E_CleanRoutingDataReplaceSpecialCharacters N_CleanRoutingDataReplaceSpecialCharacters_Node0 -- No --> N_CleanRoutingDataReplaceSpecialCharacters_Node1 N_CleanRoutingDataReplaceSpecialCharacters_Node1 -- No --> E_CleanRoutingDataReplaceSpecialCharacters
data"}:::decision N_CleanRoutingDataReplaceSpecialCharacters_Node0_action["All exclamation marks in the
routing information are replaced
with spaces"]:::main N_CleanRoutingDataReplaceSpecialCharacters_Node0 -- Yes --> N_CleanRoutingDataReplaceSpecialCharacters_Node0_action N_CleanRoutingDataReplaceSpecialCharacters_Node0_action --> E_CleanRoutingDataReplaceSpecialCharacters S_CleanRoutingDataReplaceSpecialCharacters --> N_CleanRoutingDataReplaceSpecialCharacters_Node0 N_CleanRoutingDataReplaceSpecialCharacters_Node1{"The routing information contains
exclamation mark delimiters"}:::decision N_CleanRoutingDataReplaceSpecialCharacters_Node1_action["Replace all exclamation marks with
spaces to normalize the routing data"]:::main N_CleanRoutingDataReplaceSpecialCharacters_Node1 -- Yes --> N_CleanRoutingDataReplaceSpecialCharacters_Node1_action N_CleanRoutingDataReplaceSpecialCharacters_Node1_action --> E_CleanRoutingDataReplaceSpecialCharacters N_CleanRoutingDataReplaceSpecialCharacters_Node0 -- No --> N_CleanRoutingDataReplaceSpecialCharacters_Node1 N_CleanRoutingDataReplaceSpecialCharacters_Node1 -- No --> E_CleanRoutingDataReplaceSpecialCharacters
File: GCX003.cbl
GIVEN:
Routing information contains special characters including exclamation marks
WHEN:
The system processes the routing data
THEN:
All exclamation marks in the routing information are replaced with spaces
File: GCX003.cbl
GIVEN:
Raw routing information has been extracted from waybill
WHEN:
The routing information contains exclamation mark delimiters
THEN:
Replace all exclamation marks with spaces to normalize the routing data
β Consolidated Acceptance Criteria
- The system initializes routing variables → the route status is set to not found as the default state
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeRoutingVariables(["Start Step"])
E_InitializeRoutingVariables(["End Step"])
N_InitializeRoutingVariables_Node0{"The system initializes routing
variables"}:::decision N_InitializeRoutingVariables_Node0_action["The route status is set to not
found as the default state"]:::main N_InitializeRoutingVariables_Node0 -- Yes --> N_InitializeRoutingVariables_Node0_action N_InitializeRoutingVariables_Node0_action --> E_InitializeRoutingVariables S_InitializeRoutingVariables --> N_InitializeRoutingVariables_Node0 N_InitializeRoutingVariables_Node0 -- No --> E_InitializeRoutingVariables
variables"}:::decision N_InitializeRoutingVariables_Node0_action["The route status is set to not
found as the default state"]:::main N_InitializeRoutingVariables_Node0 -- Yes --> N_InitializeRoutingVariables_Node0_action N_InitializeRoutingVariables_Node0_action --> E_InitializeRoutingVariables S_InitializeRoutingVariables --> N_InitializeRoutingVariables_Node0 N_InitializeRoutingVariables_Node0 -- No --> E_InitializeRoutingVariables
File: GCX003.cbl
GIVEN:
Equipment routing analysis is starting
WHEN:
The system initializes routing variables
THEN:
The route status is set to not found as the default state
β Consolidated Acceptance Criteria
- The IMA code equals 'HM' → the equipment empty indicator is set to 2 for hazmat routing and route found flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckHazmatCodeHM(["Start Step"])
E_CheckHazmatCodeHM(["End Step"])
N_CheckHazmatCodeHM_Node0{"The IMA code equals HM"}:::decision
N_CheckHazmatCodeHM_Node0_action["The equipment empty indicator is
set to 2 for hazmat routing and
route found flag is set to true"]:::main N_CheckHazmatCodeHM_Node0 -- Yes --> N_CheckHazmatCodeHM_Node0_action N_CheckHazmatCodeHM_Node0_action --> E_CheckHazmatCodeHM S_CheckHazmatCodeHM --> N_CheckHazmatCodeHM_Node0 N_CheckHazmatCodeHM_Node0 -- No --> E_CheckHazmatCodeHM
set to 2 for hazmat routing and
route found flag is set to true"]:::main N_CheckHazmatCodeHM_Node0 -- Yes --> N_CheckHazmatCodeHM_Node0_action N_CheckHazmatCodeHM_Node0_action --> E_CheckHazmatCodeHM S_CheckHazmatCodeHM --> N_CheckHazmatCodeHM_Node0 N_CheckHazmatCodeHM_Node0 -- No --> E_CheckHazmatCodeHM
File: GCX003.cbl
GIVEN:
Equipment has an IMA code in the waybill
WHEN:
The IMA code equals 'HM'
THEN:
- The equipment empty indicator is set to 2 for hazmat routing
- Route found flag is set to true
β Consolidated Acceptance Criteria
- The routing entry is spaces, low values, or empty → the routing validation loop is terminated and processing moves to the next step
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateRoutingEntryFormat(["Start Step"])
E_ValidateRoutingEntryFormat(["End Step"])
N_ValidateRoutingEntryFormat_Node0{"The routing entry is spaces, low
values, or empty"}:::decision N_ValidateRoutingEntryFormat_Node0_action["The routing validation loop is
terminated and processing moves to
the next step"]:::main N_ValidateRoutingEntryFormat_Node0 -- Yes --> N_ValidateRoutingEntryFormat_Node0_action N_ValidateRoutingEntryFormat_Node0_action --> E_ValidateRoutingEntryFormat S_ValidateRoutingEntryFormat --> N_ValidateRoutingEntryFormat_Node0 N_ValidateRoutingEntryFormat_Node0 -- No --> E_ValidateRoutingEntryFormat
values, or empty"}:::decision N_ValidateRoutingEntryFormat_Node0_action["The routing validation loop is
terminated and processing moves to
the next step"]:::main N_ValidateRoutingEntryFormat_Node0 -- Yes --> N_ValidateRoutingEntryFormat_Node0_action N_ValidateRoutingEntryFormat_Node0_action --> E_ValidateRoutingEntryFormat S_ValidateRoutingEntryFormat --> N_ValidateRoutingEntryFormat_Node0 N_ValidateRoutingEntryFormat_Node0 -- No --> E_ValidateRoutingEntryFormat
File: GCX003.cbl
GIVEN:
A routing entry exists in the routing information array
WHEN:
The routing entry is spaces, low values, or empty
THEN:
- The routing validation loop is terminated
- Processing moves to the next step
β Consolidated Acceptance Criteria
- The system processes consecutive routing entries to identify carrier patterns → the routing information is parsed into SCAC codes and junction codes for pattern analysis
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnalyzeSCACCarrierPatterns(["Start Step"])
E_AnalyzeSCACCarrierPatterns(["End Step"])
N_AnalyzeSCACCarrierPatterns_Node0{"The system processes consecutive
routing entries to identify carrier
patterns"}:::decision N_AnalyzeSCACCarrierPatterns_Node0_action["The routing information is parsed
into SCAC codes and junction codes
for pattern analysis"]:::main N_AnalyzeSCACCarrierPatterns_Node0 -- Yes --> N_AnalyzeSCACCarrierPatterns_Node0_action N_AnalyzeSCACCarrierPatterns_Node0_action --> E_AnalyzeSCACCarrierPatterns S_AnalyzeSCACCarrierPatterns --> N_AnalyzeSCACCarrierPatterns_Node0 N_AnalyzeSCACCarrierPatterns_Node0 -- No --> E_AnalyzeSCACCarrierPatterns
routing entries to identify carrier
patterns"}:::decision N_AnalyzeSCACCarrierPatterns_Node0_action["The routing information is parsed
into SCAC codes and junction codes
for pattern analysis"]:::main N_AnalyzeSCACCarrierPatterns_Node0 -- Yes --> N_AnalyzeSCACCarrierPatterns_Node0_action N_AnalyzeSCACCarrierPatterns_Node0_action --> E_AnalyzeSCACCarrierPatterns S_AnalyzeSCACCarrierPatterns --> N_AnalyzeSCACCarrierPatterns_Node0 N_AnalyzeSCACCarrierPatterns_Node0 -- No --> E_AnalyzeSCACCarrierPatterns
File: GCX003.cbl
GIVEN:
Valid routing entries with SCAC carrier codes and junction information exist
WHEN:
The system processes consecutive routing entries to identify carrier patterns
THEN:
- The routing information is parsed into scac codes
- Junction codes for pattern analysis
β Consolidated Acceptance Criteria
- The first SCAC is specifically CSXT → the equipment empty indicator is set to 3 for CSXT routing classification and route found flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCSXTRoutingClassification(["Start Step"])
E_SetCSXTRoutingClassification(["End Step"])
N_SetCSXTRoutingClassification_Node0{"The first SCAC is specifically CSXT"}:::decision
N_SetCSXTRoutingClassification_Node0_action["The equipment empty indicator is
set to 3 for CSXT routing
classification and route found flag
is set to true"]:::main N_SetCSXTRoutingClassification_Node0 -- Yes --> N_SetCSXTRoutingClassification_Node0_action N_SetCSXTRoutingClassification_Node0_action --> E_SetCSXTRoutingClassification S_SetCSXTRoutingClassification --> N_SetCSXTRoutingClassification_Node0 N_SetCSXTRoutingClassification_Node0 -- No --> E_SetCSXTRoutingClassification
set to 3 for CSXT routing
classification and route found flag
is set to true"]:::main N_SetCSXTRoutingClassification_Node0 -- Yes --> N_SetCSXTRoutingClassification_Node0_action N_SetCSXTRoutingClassification_Node0_action --> E_SetCSXTRoutingClassification S_SetCSXTRoutingClassification --> N_SetCSXTRoutingClassification_Node0 N_SetCSXTRoutingClassification_Node0 -- No --> E_SetCSXTRoutingClassification
File: GCX003.cbl
GIVEN:
Routing shows first SCAC as CSXT or NS, second SCAC as CPRS, and junction as DET
WHEN:
The first SCAC is specifically CSXT
THEN:
- The equipment empty indicator is set to 3 for csxt routing classification
- Route found flag is set to true
β Consolidated Acceptance Criteria
- The first SCAC is specifically NS → the equipment empty indicator is set to 4 for NS routing classification and route found flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetNSRoutingClassification(["Start Step"])
E_SetNSRoutingClassification(["End Step"])
N_SetNSRoutingClassification_Node0{"The first SCAC is specifically NS"}:::decision
N_SetNSRoutingClassification_Node0_action["The equipment empty indicator is
set to 4 for NS routing
classification and route found flag
is set to true"]:::main N_SetNSRoutingClassification_Node0 -- Yes --> N_SetNSRoutingClassification_Node0_action N_SetNSRoutingClassification_Node0_action --> E_SetNSRoutingClassification S_SetNSRoutingClassification --> N_SetNSRoutingClassification_Node0 N_SetNSRoutingClassification_Node0 -- No --> E_SetNSRoutingClassification
set to 4 for NS routing
classification and route found flag
is set to true"]:::main N_SetNSRoutingClassification_Node0 -- Yes --> N_SetNSRoutingClassification_Node0_action N_SetNSRoutingClassification_Node0_action --> E_SetNSRoutingClassification S_SetNSRoutingClassification --> N_SetNSRoutingClassification_Node0 N_SetNSRoutingClassification_Node0 -- No --> E_SetNSRoutingClassification
File: GCX003.cbl
GIVEN:
Routing shows first SCAC as CSXT or NS, second SCAC as CPRS, and junction as DET
WHEN:
The first SCAC is specifically NS
THEN:
- The equipment empty indicator is set to 4 for ns routing classification
- Route found flag is set to true
β Consolidated Acceptance Criteria
- The route was not found or waybill is not available → the equipment empty indicator is set to 1 as the default value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentEmptyIndicatorBasedonRouting(["Start Step"])
E_SetEquipmentEmptyIndicatorBasedonRouting(["End Step"])
N_SetEquipmentEmptyIndicatorBasedonRouting_Node0{"The route was not found or waybill
is not available"}:::decision N_SetEquipmentEmptyIndicatorBasedonRouting_Node0_action["The equipment empty indicator is
set to 1 as the default value"]:::main N_SetEquipmentEmptyIndicatorBasedonRouting_Node0 -- Yes --> N_SetEquipmentEmptyIndicatorBasedonRouting_Node0_action N_SetEquipmentEmptyIndicatorBasedonRouting_Node0_action --> E_SetEquipmentEmptyIndicatorBasedonRouting S_SetEquipmentEmptyIndicatorBasedonRouting --> N_SetEquipmentEmptyIndicatorBasedonRouting_Node0 N_SetEquipmentEmptyIndicatorBasedonRouting_Node0 -- No --> E_SetEquipmentEmptyIndicatorBasedonRouting
is not available"}:::decision N_SetEquipmentEmptyIndicatorBasedonRouting_Node0_action["The equipment empty indicator is
set to 1 as the default value"]:::main N_SetEquipmentEmptyIndicatorBasedonRouting_Node0 -- Yes --> N_SetEquipmentEmptyIndicatorBasedonRouting_Node0_action N_SetEquipmentEmptyIndicatorBasedonRouting_Node0_action --> E_SetEquipmentEmptyIndicatorBasedonRouting S_SetEquipmentEmptyIndicatorBasedonRouting --> N_SetEquipmentEmptyIndicatorBasedonRouting_Node0 N_SetEquipmentEmptyIndicatorBasedonRouting_Node0 -- No --> E_SetEquipmentEmptyIndicatorBasedonRouting
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Equipment processing is complete and no specific routing pattern was identified OR no waybill was found
WHEN:
The route was not found or waybill is not available
THEN:
The equipment empty indicator is set to 1 as the default value
β Consolidated Acceptance Criteria
- The system processes the routing data → all exclamation marks in the routing information line are replaced with spaces
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReplaceExclamationMarkswithSpaces(["Start Step"])
E_ReplaceExclamationMarkswithSpaces(["End Step"])
N_ReplaceExclamationMarkswithSpaces_Node0{"The system processes the routing
data"}:::decision N_ReplaceExclamationMarkswithSpaces_Node0_action["All exclamation marks in the
routing information line are
replaced with spaces"]:::main N_ReplaceExclamationMarkswithSpaces_Node0 -- Yes --> N_ReplaceExclamationMarkswithSpaces_Node0_action N_ReplaceExclamationMarkswithSpaces_Node0_action --> E_ReplaceExclamationMarkswithSpaces S_ReplaceExclamationMarkswithSpaces --> N_ReplaceExclamationMarkswithSpaces_Node0 N_ReplaceExclamationMarkswithSpaces_Node0 -- No --> E_ReplaceExclamationMarkswithSpaces
data"}:::decision N_ReplaceExclamationMarkswithSpaces_Node0_action["All exclamation marks in the
routing information line are
replaced with spaces"]:::main N_ReplaceExclamationMarkswithSpaces_Node0 -- Yes --> N_ReplaceExclamationMarkswithSpaces_Node0_action N_ReplaceExclamationMarkswithSpaces_Node0_action --> E_ReplaceExclamationMarkswithSpaces S_ReplaceExclamationMarkswithSpaces --> N_ReplaceExclamationMarkswithSpaces_Node0 N_ReplaceExclamationMarkswithSpaces_Node0 -- No --> E_ReplaceExclamationMarkswithSpaces
File: GCX003.cbl
GIVEN:
Routing information contains exclamation marks as field delimiters
WHEN:
The system processes the routing data
THEN:
All exclamation marks in the routing information line are replaced with spaces
β Consolidated Acceptance Criteria
- The system starts route pattern analysis → route not found flag is set to true and route search counter is initialized to begin pattern matching loop
- The system begins route pattern analysis → route search variables are initialized and route not found flag is set to true
- The system begins route analysis → route search variables are set to initial state with route not found status and starting position
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeRouteSearchVariables(["Start Step"])
E_InitializeRouteSearchVariables(["End Step"])
N_InitializeRouteSearchVariables_Node0{"The system starts route pattern
analysis"}:::decision N_InitializeRouteSearchVariables_Node0_action["Route not found flag is set to true
and route search counter is
initialized to begin pattern
matching loop"]:::main N_InitializeRouteSearchVariables_Node0 -- Yes --> N_InitializeRouteSearchVariables_Node0_action N_InitializeRouteSearchVariables_Node0_action --> E_InitializeRouteSearchVariables S_InitializeRouteSearchVariables --> N_InitializeRouteSearchVariables_Node0 N_InitializeRouteSearchVariables_Node1{"The system begins route pattern
analysis"}:::decision N_InitializeRouteSearchVariables_Node1_action["Route search variables are
initialized and route not found flag
is set to true"]:::main N_InitializeRouteSearchVariables_Node1 -- Yes --> N_InitializeRouteSearchVariables_Node1_action N_InitializeRouteSearchVariables_Node1_action --> E_InitializeRouteSearchVariables N_InitializeRouteSearchVariables_Node0 -- No --> N_InitializeRouteSearchVariables_Node1 N_InitializeRouteSearchVariables_Node2{"The system begins route analysis"}:::decision N_InitializeRouteSearchVariables_Node2_action["Route search variables are set to
initial state with route not found
status and starting position"]:::main N_InitializeRouteSearchVariables_Node2 -- Yes --> N_InitializeRouteSearchVariables_Node2_action N_InitializeRouteSearchVariables_Node2_action --> E_InitializeRouteSearchVariables N_InitializeRouteSearchVariables_Node1 -- No --> N_InitializeRouteSearchVariables_Node2 N_InitializeRouteSearchVariables_Node2 -- No --> E_InitializeRouteSearchVariables
analysis"}:::decision N_InitializeRouteSearchVariables_Node0_action["Route not found flag is set to true
and route search counter is
initialized to begin pattern
matching loop"]:::main N_InitializeRouteSearchVariables_Node0 -- Yes --> N_InitializeRouteSearchVariables_Node0_action N_InitializeRouteSearchVariables_Node0_action --> E_InitializeRouteSearchVariables S_InitializeRouteSearchVariables --> N_InitializeRouteSearchVariables_Node0 N_InitializeRouteSearchVariables_Node1{"The system begins route pattern
analysis"}:::decision N_InitializeRouteSearchVariables_Node1_action["Route search variables are
initialized and route not found flag
is set to true"]:::main N_InitializeRouteSearchVariables_Node1 -- Yes --> N_InitializeRouteSearchVariables_Node1_action N_InitializeRouteSearchVariables_Node1_action --> E_InitializeRouteSearchVariables N_InitializeRouteSearchVariables_Node0 -- No --> N_InitializeRouteSearchVariables_Node1 N_InitializeRouteSearchVariables_Node2{"The system begins route analysis"}:::decision N_InitializeRouteSearchVariables_Node2_action["Route search variables are set to
initial state with route not found
status and starting position"]:::main N_InitializeRouteSearchVariables_Node2 -- Yes --> N_InitializeRouteSearchVariables_Node2_action N_InitializeRouteSearchVariables_Node2_action --> E_InitializeRouteSearchVariables N_InitializeRouteSearchVariables_Node1 -- No --> N_InitializeRouteSearchVariables_Node2 N_InitializeRouteSearchVariables_Node2 -- No --> E_InitializeRouteSearchVariables
File: GCX003.cbl
GIVEN:
Routing analysis is about to begin
WHEN:
The system starts route pattern analysis
THEN:
- Route not found flag is set to true
- Route search counter is initialized to begin pattern matching loop
File: GCX003.cbl
GIVEN:
Equipment routing classification process is starting
WHEN:
The system begins route pattern analysis
THEN:
- Route search variables are initialized
- Route not found flag is set to true
File: GCX003.cbl
GIVEN:
Routing information has been extracted from waybill
WHEN:
The system begins route analysis
THEN:
- Route search variables are set to initial state with route not found status
- Starting position
β Consolidated Acceptance Criteria
- The IMA code equals 'HM' indicating hazardous materials → route type is set to 2 for hazmat, route found flag is set to true, and normal pattern analysis is bypassed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckRoutePatternLoop(["Start Step"])
E_CheckRoutePatternLoop(["End Step"])
N_CheckRoutePatternLoop_Node0{"The IMA code equals HM indicating
hazardous materials"}:::decision N_CheckRoutePatternLoop_Node0_action["Route type is set to 2 for hazmat,
route found flag is set to true, and
normal pattern analysis is bypassed"]:::main N_CheckRoutePatternLoop_Node0 -- Yes --> N_CheckRoutePatternLoop_Node0_action N_CheckRoutePatternLoop_Node0_action --> E_CheckRoutePatternLoop S_CheckRoutePatternLoop --> N_CheckRoutePatternLoop_Node0 N_CheckRoutePatternLoop_Node0 -- No --> E_CheckRoutePatternLoop
hazardous materials"}:::decision N_CheckRoutePatternLoop_Node0_action["Route type is set to 2 for hazmat,
route found flag is set to true, and
normal pattern analysis is bypassed"]:::main N_CheckRoutePatternLoop_Node0 -- Yes --> N_CheckRoutePatternLoop_Node0_action N_CheckRoutePatternLoop_Node0_action --> E_CheckRoutePatternLoop S_CheckRoutePatternLoop --> N_CheckRoutePatternLoop_Node0 N_CheckRoutePatternLoop_Node0 -- No --> E_CheckRoutePatternLoop
File: GCX003.cbl
GIVEN:
A waybill has routing information to be analyzed
WHEN:
The IMA code equals 'HM' indicating hazardous materials
THEN:
Route type is set to 2 for hazmat, route found flag is set to true, and normal pattern analysis is bypassed
β Consolidated Acceptance Criteria
- The system processes each routing field in sequence → sCAC codes and junction codes are extracted from consecutive routing information array elements for pattern analysis
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractSCACCodefromRouteInfo(["Start Step"])
E_ExtractSCACCodefromRouteInfo(["End Step"])
N_ExtractSCACCodefromRouteInfo_Node0{"The system processes each routing
field in sequence"}:::decision N_ExtractSCACCodefromRouteInfo_Node0_action["SCAC codes and junction codes are
extracted from consecutive routing
information array elements for
pattern analysis"]:::main N_ExtractSCACCodefromRouteInfo_Node0 -- Yes --> N_ExtractSCACCodefromRouteInfo_Node0_action N_ExtractSCACCodefromRouteInfo_Node0_action --> E_ExtractSCACCodefromRouteInfo S_ExtractSCACCodefromRouteInfo --> N_ExtractSCACCodefromRouteInfo_Node0 N_ExtractSCACCodefromRouteInfo_Node0 -- No --> E_ExtractSCACCodefromRouteInfo
field in sequence"}:::decision N_ExtractSCACCodefromRouteInfo_Node0_action["SCAC codes and junction codes are
extracted from consecutive routing
information array elements for
pattern analysis"]:::main N_ExtractSCACCodefromRouteInfo_Node0 -- Yes --> N_ExtractSCACCodefromRouteInfo_Node0_action N_ExtractSCACCodefromRouteInfo_Node0_action --> E_ExtractSCACCodefromRouteInfo S_ExtractSCACCodefromRouteInfo --> N_ExtractSCACCodefromRouteInfo_Node0 N_ExtractSCACCodefromRouteInfo_Node0 -- No --> E_ExtractSCACCodefromRouteInfo
File: GCX003.cbl
GIVEN:
Routing information fields contain carrier and junction data
WHEN:
The system processes each routing field in sequence
THEN:
- Scac codes
- Junction codes are extracted from consecutive routing information array elements for pattern analysis
β Consolidated Acceptance Criteria
- First SCAC equals CSXT or NS AND second SCAC equals CPRS AND junction code equals DET → the routing pattern is recognized as a valid CSXT/NS to CPRS via Detroit connection
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SCAC1CSXTorNS(["Start Step"])
E_SCAC1CSXTorNS(["End Step"])
N_SCAC1CSXTorNS_Node0{"First SCAC equals CSXT or NS AND
second SCAC equals CPRS AND junction
code equals DET"}:::decision N_SCAC1CSXTorNS_Node0_action["The routing pattern is recognized
as a valid CSXTNS to CPRS via
Detroit connection"]:::main N_SCAC1CSXTorNS_Node0 -- Yes --> N_SCAC1CSXTorNS_Node0_action N_SCAC1CSXTorNS_Node0_action --> E_SCAC1CSXTorNS S_SCAC1CSXTorNS --> N_SCAC1CSXTorNS_Node0 N_SCAC1CSXTorNS_Node0 -- No --> E_SCAC1CSXTorNS
second SCAC equals CPRS AND junction
code equals DET"}:::decision N_SCAC1CSXTorNS_Node0_action["The routing pattern is recognized
as a valid CSXTNS to CPRS via
Detroit connection"]:::main N_SCAC1CSXTorNS_Node0 -- Yes --> N_SCAC1CSXTorNS_Node0_action N_SCAC1CSXTorNS_Node0_action --> E_SCAC1CSXTorNS S_SCAC1CSXTorNS --> N_SCAC1CSXTorNS_Node0 N_SCAC1CSXTorNS_Node0 -- No --> E_SCAC1CSXTorNS
File: GCX003.cbl
GIVEN:
Routing information contains carrier SCAC codes and junction information
WHEN:
- First scac equals csxt or ns
- Second scac equals cprs
- Junction code equals det
THEN:
The routing pattern is recognized as a valid CSXT/NS to CPRS via Detroit connection
β Consolidated Acceptance Criteria
- The first SCAC code is CSXT → route type is set to 3 and empty indicator is set to 3 to represent CSXT to CPRS via Detroit routing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRouteType3CSXTtoCPRSviaDET(["Start Step"])
E_SetRouteType3CSXTtoCPRSviaDET(["End Step"])
N_SetRouteType3CSXTtoCPRSviaDET_Node0{"The first SCAC code is CSXT"}:::decision
N_SetRouteType3CSXTtoCPRSviaDET_Node0_action["Route type is set to 3 and empty
indicator is set to 3 to represent
CSXT to CPRS via Detroit routing"]:::main N_SetRouteType3CSXTtoCPRSviaDET_Node0 -- Yes --> N_SetRouteType3CSXTtoCPRSviaDET_Node0_action N_SetRouteType3CSXTtoCPRSviaDET_Node0_action --> E_SetRouteType3CSXTtoCPRSviaDET S_SetRouteType3CSXTtoCPRSviaDET --> N_SetRouteType3CSXTtoCPRSviaDET_Node0 N_SetRouteType3CSXTtoCPRSviaDET_Node0 -- No --> E_SetRouteType3CSXTtoCPRSviaDET
indicator is set to 3 to represent
CSXT to CPRS via Detroit routing"]:::main N_SetRouteType3CSXTtoCPRSviaDET_Node0 -- Yes --> N_SetRouteType3CSXTtoCPRSviaDET_Node0_action N_SetRouteType3CSXTtoCPRSviaDET_Node0_action --> E_SetRouteType3CSXTtoCPRSviaDET S_SetRouteType3CSXTtoCPRSviaDET --> N_SetRouteType3CSXTtoCPRSviaDET_Node0 N_SetRouteType3CSXTtoCPRSviaDET_Node0 -- No --> E_SetRouteType3CSXTtoCPRSviaDET
File: GCX003.cbl
GIVEN:
A valid CSXT to CPRS via DET routing pattern is identified
WHEN:
The first SCAC code is CSXT
THEN:
- Route type is set to 3
- Empty indicator is set to 3 to represent csxt to cprs via detroit routing
β Consolidated Acceptance Criteria
- The first SCAC code is NS → route type is set to 4 and empty indicator is set to 4 to represent NS to CPRS via Detroit routing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRouteType4NStoCPRSviaDET(["Start Step"])
E_SetRouteType4NStoCPRSviaDET(["End Step"])
N_SetRouteType4NStoCPRSviaDET_Node0{"The first SCAC code is NS"}:::decision
N_SetRouteType4NStoCPRSviaDET_Node0_action["Route type is set to 4 and empty
indicator is set to 4 to represent
NS to CPRS via Detroit routing"]:::main N_SetRouteType4NStoCPRSviaDET_Node0 -- Yes --> N_SetRouteType4NStoCPRSviaDET_Node0_action N_SetRouteType4NStoCPRSviaDET_Node0_action --> E_SetRouteType4NStoCPRSviaDET S_SetRouteType4NStoCPRSviaDET --> N_SetRouteType4NStoCPRSviaDET_Node0 N_SetRouteType4NStoCPRSviaDET_Node0 -- No --> E_SetRouteType4NStoCPRSviaDET
indicator is set to 4 to represent
NS to CPRS via Detroit routing"]:::main N_SetRouteType4NStoCPRSviaDET_Node0 -- Yes --> N_SetRouteType4NStoCPRSviaDET_Node0_action N_SetRouteType4NStoCPRSviaDET_Node0_action --> E_SetRouteType4NStoCPRSviaDET S_SetRouteType4NStoCPRSviaDET --> N_SetRouteType4NStoCPRSviaDET_Node0 N_SetRouteType4NStoCPRSviaDET_Node0 -- No --> E_SetRouteType4NStoCPRSviaDET
File: GCX003.cbl
GIVEN:
A valid NS to CPRS via DET routing pattern is identified
WHEN:
The first SCAC code is NS
THEN:
- Route type is set to 4
- Empty indicator is set to 4 to represent ns to cprs via detroit routing
β Consolidated Acceptance Criteria
- Route type has been determined (hazmat, CSXT, or NS pattern) → route found flag is set to true to indicate successful pattern matching and stop further search iterations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRouteFoundFlag(["Start Step"])
E_SetRouteFoundFlag(["End Step"])
N_SetRouteFoundFlag_Node0{"Route type has been determined
hazmat, CSXT, or NS pattern"}:::decision N_SetRouteFoundFlag_Node0_action["Route found flag is set to true to
indicate successful pattern matching
and stop further search iterations"]:::main N_SetRouteFoundFlag_Node0 -- Yes --> N_SetRouteFoundFlag_Node0_action N_SetRouteFoundFlag_Node0_action --> E_SetRouteFoundFlag S_SetRouteFoundFlag --> N_SetRouteFoundFlag_Node0 N_SetRouteFoundFlag_Node0 -- No --> E_SetRouteFoundFlag
hazmat, CSXT, or NS pattern"}:::decision N_SetRouteFoundFlag_Node0_action["Route found flag is set to true to
indicate successful pattern matching
and stop further search iterations"]:::main N_SetRouteFoundFlag_Node0 -- Yes --> N_SetRouteFoundFlag_Node0_action N_SetRouteFoundFlag_Node0_action --> E_SetRouteFoundFlag S_SetRouteFoundFlag --> N_SetRouteFoundFlag_Node0 N_SetRouteFoundFlag_Node0 -- No --> E_SetRouteFoundFlag
File: GCX003.cbl
GIVEN:
A valid carrier routing pattern has been identified
WHEN:
Route type has been determined (hazmat, CSXT, or NS pattern)
THEN:
- Route found flag is set to true to indicate successful pattern matching
- Stop further search iterations
β Consolidated Acceptance Criteria
- No hazmat code exists AND no CSXT/NS to CPRS via DET patterns are found → route not found flag remains true and empty indicator is set to 1 to indicate no recognized routing pattern
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRouteNotFoundFlag(["Start Step"])
E_SetRouteNotFoundFlag(["End Step"])
N_SetRouteNotFoundFlag_Node0{"No hazmat code exists AND no CSXTNS
to CPRS via DET patterns are found"}:::decision N_SetRouteNotFoundFlag_Node0_action["Route not found flag remains true
and empty indicator is set to 1 to
indicate no recognized routing
pattern"]:::main N_SetRouteNotFoundFlag_Node0 -- Yes --> N_SetRouteNotFoundFlag_Node0_action N_SetRouteNotFoundFlag_Node0_action --> E_SetRouteNotFoundFlag S_SetRouteNotFoundFlag --> N_SetRouteNotFoundFlag_Node0 N_SetRouteNotFoundFlag_Node0 -- No --> E_SetRouteNotFoundFlag
to CPRS via DET patterns are found"}:::decision N_SetRouteNotFoundFlag_Node0_action["Route not found flag remains true
and empty indicator is set to 1 to
indicate no recognized routing
pattern"]:::main N_SetRouteNotFoundFlag_Node0 -- Yes --> N_SetRouteNotFoundFlag_Node0_action N_SetRouteNotFoundFlag_Node0_action --> E_SetRouteNotFoundFlag S_SetRouteNotFoundFlag --> N_SetRouteNotFoundFlag_Node0 N_SetRouteNotFoundFlag_Node0 -- No --> E_SetRouteNotFoundFlag
File: GCX003.cbl
GIVEN:
Route search has completed all iterations without finding valid patterns
WHEN:
- No hazmat code exists
- No csxt/ns to cprs via det patterns are found
THEN:
- Route not found flag remains true
- Empty indicator is set to 1 to indicate no recognized routing pattern
β Consolidated Acceptance Criteria
- The system processes the waybill routing data → the routing information is extracted from the first three RUT-INFO positions and exclamation marks are replaced with spaces for proper parsing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetRoutingInformationfromWaybill(["Start Step"])
E_GetRoutingInformationfromWaybill(["End Step"])
N_GetRoutingInformationfromWaybill_Node0{"The system processes the waybill
routing data"}:::decision N_GetRoutingInformationfromWaybill_Node0_action["The routing information is
extracted from the first three
RUT-INFO positions and exclamation
marks are replaced with spaces for
proper parsing"]:::main N_GetRoutingInformationfromWaybill_Node0 -- Yes --> N_GetRoutingInformationfromWaybill_Node0_action N_GetRoutingInformationfromWaybill_Node0_action --> E_GetRoutingInformationfromWaybill S_GetRoutingInformationfromWaybill --> N_GetRoutingInformationfromWaybill_Node0 N_GetRoutingInformationfromWaybill_Node0 -- No --> E_GetRoutingInformationfromWaybill
routing data"}:::decision N_GetRoutingInformationfromWaybill_Node0_action["The routing information is
extracted from the first three
RUT-INFO positions and exclamation
marks are replaced with spaces for
proper parsing"]:::main N_GetRoutingInformationfromWaybill_Node0 -- Yes --> N_GetRoutingInformationfromWaybill_Node0_action N_GetRoutingInformationfromWaybill_Node0_action --> E_GetRoutingInformationfromWaybill S_GetRoutingInformationfromWaybill --> N_GetRoutingInformationfromWaybill_Node0 N_GetRoutingInformationfromWaybill_Node0 -- No --> E_GetRoutingInformationfromWaybill
File: GCX003.cbl
GIVEN:
A waybill contains routing information in RUT-INFO fields
WHEN:
The system processes the waybill routing data
THEN:
- The routing information is extracted from the first three rut-info positions
- Exclamation marks are replaced with spaces for proper parsing
β Consolidated Acceptance Criteria
- The system checks for more route segments to process → processing continues if route segment counter is 9 or less and route has not been found, otherwise processing stops
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreRouteSegmentstoProcess(["Start Step"])
E_MoreRouteSegmentstoProcess(["End Step"])
N_MoreRouteSegmentstoProcess_Node0{"The system checks for more route
segments to process"}:::decision N_MoreRouteSegmentstoProcess_Node0_action["Processing continues if route
segment counter is 9 or less and
route has not been found, otherwise
processing stops"]:::main N_MoreRouteSegmentstoProcess_Node0 -- Yes --> N_MoreRouteSegmentstoProcess_Node0_action N_MoreRouteSegmentstoProcess_Node0_action --> E_MoreRouteSegmentstoProcess S_MoreRouteSegmentstoProcess --> N_MoreRouteSegmentstoProcess_Node0 N_MoreRouteSegmentstoProcess_Node0 -- No --> E_MoreRouteSegmentstoProcess
segments to process"}:::decision N_MoreRouteSegmentstoProcess_Node0_action["Processing continues if route
segment counter is 9 or less and
route has not been found, otherwise
processing stops"]:::main N_MoreRouteSegmentstoProcess_Node0 -- Yes --> N_MoreRouteSegmentstoProcess_Node0_action N_MoreRouteSegmentstoProcess_Node0_action --> E_MoreRouteSegmentstoProcess S_MoreRouteSegmentstoProcess --> N_MoreRouteSegmentstoProcess_Node0 N_MoreRouteSegmentstoProcess_Node0 -- No --> E_MoreRouteSegmentstoProcess
File: GCX003.cbl
GIVEN:
Route processing is in progress with a route segment counter
WHEN:
The system checks for more route segments to process
THEN:
- Processing continues if route segment counter is 9 or less
- Route has not been found, otherwise processing stops
β Consolidated Acceptance Criteria
- The system parses route segment information → sCAC codes are extracted to route SCAC positions and junction/R260 codes are extracted to corresponding route junction positions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ParseSCACCodefromRouteInfo(["Start Step"])
E_ParseSCACCodefromRouteInfo(["End Step"])
N_ParseSCACCodefromRouteInfo_Node0{"The system parses route segment
information"}:::decision N_ParseSCACCodefromRouteInfo_Node0_action["SCAC codes are extracted to route
SCAC positions and junctionR260
codes are extracted to corresponding
route junction positions"]:::main N_ParseSCACCodefromRouteInfo_Node0 -- Yes --> N_ParseSCACCodefromRouteInfo_Node0_action N_ParseSCACCodefromRouteInfo_Node0_action --> E_ParseSCACCodefromRouteInfo S_ParseSCACCodefromRouteInfo --> N_ParseSCACCodefromRouteInfo_Node0 N_ParseSCACCodefromRouteInfo_Node0 -- No --> E_ParseSCACCodefromRouteInfo
information"}:::decision N_ParseSCACCodefromRouteInfo_Node0_action["SCAC codes are extracted to route
SCAC positions and junctionR260
codes are extracted to corresponding
route junction positions"]:::main N_ParseSCACCodefromRouteInfo_Node0 -- Yes --> N_ParseSCACCodefromRouteInfo_Node0_action N_ParseSCACCodefromRouteInfo_Node0_action --> E_ParseSCACCodefromRouteInfo S_ParseSCACCodefromRouteInfo --> N_ParseSCACCodefromRouteInfo_Node0 N_ParseSCACCodefromRouteInfo_Node0 -- No --> E_ParseSCACCodefromRouteInfo
File: GCX003.cbl
GIVEN:
Route information contains carrier and junction data in structured format
WHEN:
The system parses route segment information
THEN:
- Scac codes are extracted to route scac positions
- Junction/r260 codes are extracted to corresponding route junction positions
β Consolidated Acceptance Criteria
- The first route SCAC is CSXT or NS, the second route SCAC is CPRS, and the junction code is DET → the system sets equipment routing classification to 3 for CSXT or 4 for NS and marks the route as found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CSXTNStoCPRSviaDET(["Start Step"])
E_CSXTNStoCPRSviaDET(["End Step"])
N_CSXTNStoCPRSviaDET_Node0{"The first route SCAC is CSXT or NS,
the second route SCAC is CPRS, and
the junction code is DET"}:::decision N_CSXTNStoCPRSviaDET_Node0_action["The system sets equipment routing
classification to 3 for CSXT or 4
for NS and marks the route as found"]:::main N_CSXTNStoCPRSviaDET_Node0 -- Yes --> N_CSXTNStoCPRSviaDET_Node0_action N_CSXTNStoCPRSviaDET_Node0_action --> E_CSXTNStoCPRSviaDET S_CSXTNStoCPRSviaDET --> N_CSXTNStoCPRSviaDET_Node0 N_CSXTNStoCPRSviaDET_Node0 -- No --> E_CSXTNStoCPRSviaDET
the second route SCAC is CPRS, and
the junction code is DET"}:::decision N_CSXTNStoCPRSviaDET_Node0_action["The system sets equipment routing
classification to 3 for CSXT or 4
for NS and marks the route as found"]:::main N_CSXTNStoCPRSviaDET_Node0 -- Yes --> N_CSXTNStoCPRSviaDET_Node0_action N_CSXTNStoCPRSviaDET_Node0_action --> E_CSXTNStoCPRSviaDET S_CSXTNStoCPRSviaDET --> N_CSXTNStoCPRSviaDET_Node0 N_CSXTNStoCPRSviaDET_Node0 -- No --> E_CSXTNStoCPRSviaDET
File: GCX003.cbl
GIVEN:
Route information contains SCAC codes and junction information
WHEN:
The first route SCAC is CSXT or NS, the second route SCAC is CPRS, and the junction code is DET
THEN:
- The system sets equipment routing classification to 3 for csxt or 4 for ns
- Marks the route as found
β Consolidated Acceptance Criteria
- The IMA code equals 'HM' → the system sets the equipment routing classification to 2 and marks the route as found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HaulageMarkHMFound(["Start Step"])
E_HaulageMarkHMFound(["End Step"])
N_HaulageMarkHMFound_Node0{"The IMA code equals HM"}:::decision
N_HaulageMarkHMFound_Node0_action["The system sets the equipment
routing classification to 2 and
marks the route as found"]:::main N_HaulageMarkHMFound_Node0 -- Yes --> N_HaulageMarkHMFound_Node0_action N_HaulageMarkHMFound_Node0_action --> E_HaulageMarkHMFound S_HaulageMarkHMFound --> N_HaulageMarkHMFound_Node0 N_HaulageMarkHMFound_Node0 -- No --> E_HaulageMarkHMFound
routing classification to 2 and
marks the route as found"]:::main N_HaulageMarkHMFound_Node0 -- Yes --> N_HaulageMarkHMFound_Node0_action N_HaulageMarkHMFound_Node0_action --> E_HaulageMarkHMFound S_HaulageMarkHMFound --> N_HaulageMarkHMFound_Node0 N_HaulageMarkHMFound_Node0 -- No --> E_HaulageMarkHMFound
File: GCX003.cbl
GIVEN:
A shipment has an IMA code field
WHEN:
The IMA code equals 'HM'
THEN:
- The system sets the equipment routing classification to 2
- Marks the route as found
β Consolidated Acceptance Criteria
- If the bond type code from the cargo record → the system should classify the bond as IT (Immediate Transport), TE (Transport Export), TR (Transit), IE (Immediate Export), or MT (Marine Transport) and apply corresponding processing rules
- If the cargo bond type → if bond type is TE (Transport Export), route to TE bond detour processing; if bond type is TR (Transit), route to TR bond detour processing; if bond type is default, route to border clearance detour processing; if bond type is export, route to US-MX export detour processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BondTypeClassification(["Start Step"])
E_BondTypeClassification(["End Step"])
N_BondTypeClassification_Node0{"The system evaluates the bond type
code from the cargo record"}:::decision N_BondTypeClassification_Node0_action["The system should classify the bond
as IT Immediate Transport, TE
Transport Export, TR Transit, IE
Immediate Export, or MT Marine
Transport and apply corresponding
processing rules"]:::main N_BondTypeClassification_Node0 -- Yes --> N_BondTypeClassification_Node0_action N_BondTypeClassification_Node0_action --> E_BondTypeClassification S_BondTypeClassification --> N_BondTypeClassification_Node0 N_BondTypeClassification_Node1{"The system evaluates the cargo bond
type"}:::decision N_BondTypeClassification_Node1_action["If bond type is TE Transport
Export, route to TE bond detour
processing if bond type is TR
Transit, route to TR bond detour
processing if bond type is default,
route to border clearance detour
processing if bond type is export,
route to US-MX export detour
processing"]:::main N_BondTypeClassification_Node1 -- Yes --> N_BondTypeClassification_Node1_action N_BondTypeClassification_Node1_action --> E_BondTypeClassification N_BondTypeClassification_Node0 -- No --> N_BondTypeClassification_Node1 N_BondTypeClassification_Node1 -- No --> E_BondTypeClassification
code from the cargo record"}:::decision N_BondTypeClassification_Node0_action["The system should classify the bond
as IT Immediate Transport, TE
Transport Export, TR Transit, IE
Immediate Export, or MT Marine
Transport and apply corresponding
processing rules"]:::main N_BondTypeClassification_Node0 -- Yes --> N_BondTypeClassification_Node0_action N_BondTypeClassification_Node0_action --> E_BondTypeClassification S_BondTypeClassification --> N_BondTypeClassification_Node0 N_BondTypeClassification_Node1{"The system evaluates the cargo bond
type"}:::decision N_BondTypeClassification_Node1_action["If bond type is TE Transport
Export, route to TE bond detour
processing if bond type is TR
Transit, route to TR bond detour
processing if bond type is default,
route to border clearance detour
processing if bond type is export,
route to US-MX export detour
processing"]:::main N_BondTypeClassification_Node1 -- Yes --> N_BondTypeClassification_Node1_action N_BondTypeClassification_Node1_action --> E_BondTypeClassification N_BondTypeClassification_Node0 -- No --> N_BondTypeClassification_Node1 N_BondTypeClassification_Node1 -- No --> E_BondTypeClassification
File: GCX003.cbl
GIVEN:
A cargo record with bond type code is being processed
WHEN:
The system evaluates the bond type code from the cargo record
THEN:
The system should classify the bond as IT (Immediate Transport), TE (Transport Export), TR (Transit), IE (Immediate Export), or MT (Marine Transport) and apply corresponding processing rules
File: GCX003.cbl
GIVEN:
Cargo exists and detour processing is required
WHEN:
The system evaluates the cargo bond type
THEN:
If bond type is TE (Transport Export), route to TE bond detour processing; if bond type is TR (Transit), route to TR bond detour processing; if bond type is default, route to border clearance detour processing; if bond type is export, route to US-MX export detour processing
β Consolidated Acceptance Criteria
- The system checks for entry number or in-bond control number availability → the system should extract the entry number if available, otherwise use the in-bond control number, or set to spaces if neither is available
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractEntryNumberforBondDisplay(["Start Step"])
E_ExtractEntryNumberforBondDisplay(["End Step"])
N_ExtractEntryNumberforBondDisplay_Node0{"The system checks for entry number
or in-bond control number
availability"}:::decision N_ExtractEntryNumberforBondDisplay_Node0_action["The system should extract the entry
number if available, otherwise use
the in-bond control number, or set
to spaces if neither is available"]:::main N_ExtractEntryNumberforBondDisplay_Node0 -- Yes --> N_ExtractEntryNumberforBondDisplay_Node0_action N_ExtractEntryNumberforBondDisplay_Node0_action --> E_ExtractEntryNumberforBondDisplay S_ExtractEntryNumberforBondDisplay --> N_ExtractEntryNumberforBondDisplay_Node0 N_ExtractEntryNumberforBondDisplay_Node0 -- No --> E_ExtractEntryNumberforBondDisplay
or in-bond control number
availability"}:::decision N_ExtractEntryNumberforBondDisplay_Node0_action["The system should extract the entry
number if available, otherwise use
the in-bond control number, or set
to spaces if neither is available"]:::main N_ExtractEntryNumberforBondDisplay_Node0 -- Yes --> N_ExtractEntryNumberforBondDisplay_Node0_action N_ExtractEntryNumberforBondDisplay_Node0_action --> E_ExtractEntryNumberforBondDisplay S_ExtractEntryNumberforBondDisplay --> N_ExtractEntryNumberforBondDisplay_Node0 N_ExtractEntryNumberforBondDisplay_Node0 -- No --> E_ExtractEntryNumberforBondDisplay
File: GCX003.cbl
GIVEN:
A cargo record is being processed for bond information
WHEN:
The system checks for entry number or in-bond control number availability
THEN:
The system should extract the entry number if available, otherwise use the in-bond control number, or set to spaces if neither is available
β Consolidated Acceptance Criteria
- The system extracts the VID10 load/empty code from the cargo record → the system should set the equipment load/empty indicator and apply corresponding validation rules based on the status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessLoadEmptyStatusCode(["Start Step"])
E_ProcessLoadEmptyStatusCode(["End Step"])
N_ProcessLoadEmptyStatusCode_Node0{"The system extracts the VID10
loadempty code from the cargo record"}:::decision N_ProcessLoadEmptyStatusCode_Node0_action["The system should set the equipment
loadempty indicator and apply
corresponding validation rules based
on the status"]:::main N_ProcessLoadEmptyStatusCode_Node0 -- Yes --> N_ProcessLoadEmptyStatusCode_Node0_action N_ProcessLoadEmptyStatusCode_Node0_action --> E_ProcessLoadEmptyStatusCode S_ProcessLoadEmptyStatusCode --> N_ProcessLoadEmptyStatusCode_Node0 N_ProcessLoadEmptyStatusCode_Node0 -- No --> E_ProcessLoadEmptyStatusCode
loadempty code from the cargo record"}:::decision N_ProcessLoadEmptyStatusCode_Node0_action["The system should set the equipment
loadempty indicator and apply
corresponding validation rules based
on the status"]:::main N_ProcessLoadEmptyStatusCode_Node0 -- Yes --> N_ProcessLoadEmptyStatusCode_Node0_action N_ProcessLoadEmptyStatusCode_Node0_action --> E_ProcessLoadEmptyStatusCode S_ProcessLoadEmptyStatusCode --> N_ProcessLoadEmptyStatusCode_Node0 N_ProcessLoadEmptyStatusCode_Node0 -- No --> E_ProcessLoadEmptyStatusCode
File: GCX003.cbl
GIVEN:
A cargo record with load/empty status code is being processed
WHEN:
The system extracts the VID10 load/empty code from the cargo record
THEN:
- The system should set the equipment load/empty indicator
- Apply corresponding validation rules based on the status
β Consolidated Acceptance Criteria
- The cargo has BOL type code indicating empty equipment or empty residue → the system should classify the cargo as empty, update load/empty indicators, adjust equipment counts, and set appropriate display information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessEmptyResidueHandling(["Start Step"])
E_ProcessEmptyResidueHandling(["End Step"])
N_ProcessEmptyResidueHandling_Node0{"The cargo has BOL type code
indicating empty equipment or empty
residue"}:::decision N_ProcessEmptyResidueHandling_Node0_action["The system should classify the
cargo as empty, update loadempty
indicators, adjust equipment counts,
and set appropriate display
information"]:::main N_ProcessEmptyResidueHandling_Node0 -- Yes --> N_ProcessEmptyResidueHandling_Node0_action N_ProcessEmptyResidueHandling_Node0_action --> E_ProcessEmptyResidueHandling S_ProcessEmptyResidueHandling --> N_ProcessEmptyResidueHandling_Node0 N_ProcessEmptyResidueHandling_Node0 -- No --> E_ProcessEmptyResidueHandling
indicating empty equipment or empty
residue"}:::decision N_ProcessEmptyResidueHandling_Node0_action["The system should classify the
cargo as empty, update loadempty
indicators, adjust equipment counts,
and set appropriate display
information"]:::main N_ProcessEmptyResidueHandling_Node0 -- Yes --> N_ProcessEmptyResidueHandling_Node0_action N_ProcessEmptyResidueHandling_Node0_action --> E_ProcessEmptyResidueHandling S_ProcessEmptyResidueHandling --> N_ProcessEmptyResidueHandling_Node0 N_ProcessEmptyResidueHandling_Node0 -- No --> E_ProcessEmptyResidueHandling
File: GCX003.cbl
GIVEN:
A cargo record is being evaluated for empty equipment status
WHEN:
The cargo has BOL type code indicating empty equipment or empty residue
THEN:
The system should classify the cargo as empty, update load/empty indicators, adjust equipment counts, and set appropriate display information
β Consolidated Acceptance Criteria
- The cargo has special manifest origin flag or special manifest special flag set → the system should set corresponding special manifest processing flags (IT found, TE found, TR found, or USMX 88 found) based on cargo type and routing
- The system processes the bond type classification → the special manifest origin flag is set to indicate special processing is required
- The system processes the bond type classification → the special manifest special flag is set to indicate TE special processing
- The system processes export bond classification → the USMX 88 found flag is set to indicate special export processing
- The system processes bond type classification → the SPLC TR found flag is set to indicate special TR processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSpecialManifestFlags(["Start Step"])
E_SetSpecialManifestFlags(["End Step"])
N_SetSpecialManifestFlags_Node0{"The cargo has special manifest
origin flag or special manifest
special flag set"}:::decision N_SetSpecialManifestFlags_Node0_action["The system should set corresponding
special manifest processing flags IT
found, TE found, TR found, or USMX
88 found based on cargo type and
routing"]:::main N_SetSpecialManifestFlags_Node0 -- Yes --> N_SetSpecialManifestFlags_Node0_action N_SetSpecialManifestFlags_Node0_action --> E_SetSpecialManifestFlags S_SetSpecialManifestFlags --> N_SetSpecialManifestFlags_Node0 N_SetSpecialManifestFlags_Node1{"The system processes the bond type
classification"}:::decision N_SetSpecialManifestFlags_Node1_action["The special manifest origin flag is
set to indicate special processing
is required"]:::main N_SetSpecialManifestFlags_Node1 -- Yes --> N_SetSpecialManifestFlags_Node1_action N_SetSpecialManifestFlags_Node1_action --> E_SetSpecialManifestFlags N_SetSpecialManifestFlags_Node0 -- No --> N_SetSpecialManifestFlags_Node1 N_SetSpecialManifestFlags_Node2{"The system processes the bond type
classification"}:::decision N_SetSpecialManifestFlags_Node2_action["The special manifest special flag
is set to indicate TE special
processing"]:::main N_SetSpecialManifestFlags_Node2 -- Yes --> N_SetSpecialManifestFlags_Node2_action N_SetSpecialManifestFlags_Node2_action --> E_SetSpecialManifestFlags N_SetSpecialManifestFlags_Node1 -- No --> N_SetSpecialManifestFlags_Node2 N_SetSpecialManifestFlags_Node3{"The system processes export bond
classification"}:::decision N_SetSpecialManifestFlags_Node3_action["The USMX 88 found flag is set to
indicate special export processing"]:::main N_SetSpecialManifestFlags_Node3 -- Yes --> N_SetSpecialManifestFlags_Node3_action N_SetSpecialManifestFlags_Node3_action --> E_SetSpecialManifestFlags N_SetSpecialManifestFlags_Node2 -- No --> N_SetSpecialManifestFlags_Node3 N_SetSpecialManifestFlags_Node4{"The system processes bond type
classification"}:::decision N_SetSpecialManifestFlags_Node4_action["The SPLC TR found flag is set to
indicate special TR processing"]:::main N_SetSpecialManifestFlags_Node4 -- Yes --> N_SetSpecialManifestFlags_Node4_action N_SetSpecialManifestFlags_Node4_action --> E_SetSpecialManifestFlags N_SetSpecialManifestFlags_Node3 -- No --> N_SetSpecialManifestFlags_Node4 N_SetSpecialManifestFlags_Node4 -- No --> E_SetSpecialManifestFlags
origin flag or special manifest
special flag set"}:::decision N_SetSpecialManifestFlags_Node0_action["The system should set corresponding
special manifest processing flags IT
found, TE found, TR found, or USMX
88 found based on cargo type and
routing"]:::main N_SetSpecialManifestFlags_Node0 -- Yes --> N_SetSpecialManifestFlags_Node0_action N_SetSpecialManifestFlags_Node0_action --> E_SetSpecialManifestFlags S_SetSpecialManifestFlags --> N_SetSpecialManifestFlags_Node0 N_SetSpecialManifestFlags_Node1{"The system processes the bond type
classification"}:::decision N_SetSpecialManifestFlags_Node1_action["The special manifest origin flag is
set to indicate special processing
is required"]:::main N_SetSpecialManifestFlags_Node1 -- Yes --> N_SetSpecialManifestFlags_Node1_action N_SetSpecialManifestFlags_Node1_action --> E_SetSpecialManifestFlags N_SetSpecialManifestFlags_Node0 -- No --> N_SetSpecialManifestFlags_Node1 N_SetSpecialManifestFlags_Node2{"The system processes the bond type
classification"}:::decision N_SetSpecialManifestFlags_Node2_action["The special manifest special flag
is set to indicate TE special
processing"]:::main N_SetSpecialManifestFlags_Node2 -- Yes --> N_SetSpecialManifestFlags_Node2_action N_SetSpecialManifestFlags_Node2_action --> E_SetSpecialManifestFlags N_SetSpecialManifestFlags_Node1 -- No --> N_SetSpecialManifestFlags_Node2 N_SetSpecialManifestFlags_Node3{"The system processes export bond
classification"}:::decision N_SetSpecialManifestFlags_Node3_action["The USMX 88 found flag is set to
indicate special export processing"]:::main N_SetSpecialManifestFlags_Node3 -- Yes --> N_SetSpecialManifestFlags_Node3_action N_SetSpecialManifestFlags_Node3_action --> E_SetSpecialManifestFlags N_SetSpecialManifestFlags_Node2 -- No --> N_SetSpecialManifestFlags_Node3 N_SetSpecialManifestFlags_Node4{"The system processes bond type
classification"}:::decision N_SetSpecialManifestFlags_Node4_action["The SPLC TR found flag is set to
indicate special TR processing"]:::main N_SetSpecialManifestFlags_Node4 -- Yes --> N_SetSpecialManifestFlags_Node4_action N_SetSpecialManifestFlags_Node4_action --> E_SetSpecialManifestFlags N_SetSpecialManifestFlags_Node3 -- No --> N_SetSpecialManifestFlags_Node4 N_SetSpecialManifestFlags_Node4 -- No --> E_SetSpecialManifestFlags
File: GCX003.cbl
GIVEN:
A cargo record is being evaluated for special manifest requirements
WHEN:
The cargo has special manifest origin flag or special manifest special flag set
THEN:
- The system should set corresponding special manifest processing flags (it found, te found, tr found, or usmx 88 found) based on cargo type
- Routing
File: GCX003.cbl
GIVEN:
Cargo has IT bond type
WHEN:
The system processes the bond type classification
THEN:
The special manifest origin flag is set to indicate special processing is required
File: GCX003.cbl
GIVEN:
Cargo has TE bond type and special manifest processing is required
WHEN:
The system processes the bond type classification
THEN:
The special manifest special flag is set to indicate TE special processing
File: GCX003.cbl
GIVEN:
Cargo has export bond type and has USMX special 88 processing
WHEN:
The system processes export bond classification
THEN:
The USMX 88 found flag is set to indicate special export processing
File: GCX003.cbl
GIVEN:
Cargo has US-Canada-US bond type and has USMX special TR processing
WHEN:
The system processes bond type classification
THEN:
The SPLC TR found flag is set to indicate special TR processing
β Consolidated Acceptance Criteria
- The system formats cargo information for display → the system should format bond information as 'AMS [bond_type] [bond_number]' for IT/IE types or 'AMS 7512 [bond_type] [bond_number]' for TE/TR/MT types, or 'PPR 7512 15 US-CA-US' for BOL type 15
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessAMSBondInformation(["Start Step"])
E_ProcessAMSBondInformation(["End Step"])
N_ProcessAMSBondInformation_Node0{"The system formats cargo
information for display"}:::decision N_ProcessAMSBondInformation_Node0_action["The system should format bond
information as AMS bondtype
bondnumber for ITIE types or AMS
7512 bondtype bondnumber for TETRMT
types, or PPR 7512 15 US-CA-US for
BOL type 15"]:::main N_ProcessAMSBondInformation_Node0 -- Yes --> N_ProcessAMSBondInformation_Node0_action N_ProcessAMSBondInformation_Node0_action --> E_ProcessAMSBondInformation S_ProcessAMSBondInformation --> N_ProcessAMSBondInformation_Node0 N_ProcessAMSBondInformation_Node0 -- No --> E_ProcessAMSBondInformation
information for display"}:::decision N_ProcessAMSBondInformation_Node0_action["The system should format bond
information as AMS bondtype
bondnumber for ITIE types or AMS
7512 bondtype bondnumber for TETRMT
types, or PPR 7512 15 US-CA-US for
BOL type 15"]:::main N_ProcessAMSBondInformation_Node0 -- Yes --> N_ProcessAMSBondInformation_Node0_action N_ProcessAMSBondInformation_Node0_action --> E_ProcessAMSBondInformation S_ProcessAMSBondInformation --> N_ProcessAMSBondInformation_Node0 N_ProcessAMSBondInformation_Node0 -- No --> E_ProcessAMSBondInformation
File: GCX003.cbl
GIVEN:
A cargo record with bond type and control numbers is being processed
WHEN:
The system formats cargo information for display
THEN:
The system should format bond information as 'AMS [bond_type] [bond_number]' for IT/IE types or 'AMS 7512 [bond_type] [bond_number]' for TE/TR/MT types, or 'PPR 7512 15 US-CA-US' for BOL type 15
β Consolidated Acceptance Criteria
- The system checks cargo status codes for pending, deleted, or error conditions → the system should generate appropriate error messages (message 16) if cargo is in pending, deleted, or error status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateCargoStatusCodes(["Start Step"])
E_ValidateCargoStatusCodes(["End Step"])
N_ValidateCargoStatusCodes_Node0{"The system checks cargo status
codes for pending, deleted, or error
conditions"}:::decision N_ValidateCargoStatusCodes_Node0_action["The system should generate
appropriate error messages message
16 if cargo is in pending, deleted,
or error status"]:::exclusion N_ValidateCargoStatusCodes_Node0 -- Yes -->|Alternative| N_ValidateCargoStatusCodes_Node0_action N_ValidateCargoStatusCodes_Node0_action --> E_ValidateCargoStatusCodes S_ValidateCargoStatusCodes --> N_ValidateCargoStatusCodes_Node0 N_ValidateCargoStatusCodes_Node0 -- No --> E_ValidateCargoStatusCodes
codes for pending, deleted, or error
conditions"}:::decision N_ValidateCargoStatusCodes_Node0_action["The system should generate
appropriate error messages message
16 if cargo is in pending, deleted,
or error status"]:::exclusion N_ValidateCargoStatusCodes_Node0 -- Yes -->|Alternative| N_ValidateCargoStatusCodes_Node0_action N_ValidateCargoStatusCodes_Node0_action --> E_ValidateCargoStatusCodes S_ValidateCargoStatusCodes --> N_ValidateCargoStatusCodes_Node0 N_ValidateCargoStatusCodes_Node0 -- No --> E_ValidateCargoStatusCodes
File: GCX003.cbl
GIVEN:
A cargo record with status indicators is being processed
WHEN:
The system checks cargo status codes for pending, deleted, or error conditions
THEN:
The system should generate appropriate error messages (message 16) if cargo is in pending, deleted, or error status
β Consolidated Acceptance Criteria
- The system searches for FEN and KCM reference number qualifiers in the segment data → the system should set FEN found flag if FEN qualifier exists with non-blank reference number, and KCM found flag if KCM qualifier exists with non-blank reference number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessFENReferenceNumbers(["Start Step"])
E_ProcessFENReferenceNumbers(["End Step"])
N_ProcessFENReferenceNumbers_Node0{"The system searches for FEN and KCM
reference number qualifiers in the
segment data"}:::decision N_ProcessFENReferenceNumbers_Node0_action["The system should set FEN found
flag if FEN qualifier exists with
non-blank reference number, and KCM
found flag if KCM qualifier exists
with non-blank reference number"]:::main N_ProcessFENReferenceNumbers_Node0 -- Yes --> N_ProcessFENReferenceNumbers_Node0_action N_ProcessFENReferenceNumbers_Node0_action --> E_ProcessFENReferenceNumbers S_ProcessFENReferenceNumbers --> N_ProcessFENReferenceNumbers_Node0 N_ProcessFENReferenceNumbers_Node0 -- No --> E_ProcessFENReferenceNumbers
reference number qualifiers in the
segment data"}:::decision N_ProcessFENReferenceNumbers_Node0_action["The system should set FEN found
flag if FEN qualifier exists with
non-blank reference number, and KCM
found flag if KCM qualifier exists
with non-blank reference number"]:::main N_ProcessFENReferenceNumbers_Node0 -- Yes --> N_ProcessFENReferenceNumbers_Node0_action N_ProcessFENReferenceNumbers_Node0_action --> E_ProcessFENReferenceNumbers S_ProcessFENReferenceNumbers --> N_ProcessFENReferenceNumbers_Node0 N_ProcessFENReferenceNumbers_Node0 -- No --> E_ProcessFENReferenceNumbers
File: GCX003.cbl
GIVEN:
A cargo record is being processed at Laredo TX station with segment 02 data
WHEN:
- The system searches for fen
- Kcm reference number qualifiers in the segment data
THEN:
The system should set FEN found flag if FEN qualifier exists with non-blank reference number, and KCM found flag if KCM qualifier exists with non-blank reference number
β Consolidated Acceptance Criteria
- The system determines port type (automated or paper) and current haulage automation status → the system should update haulage automation flag to 'N' if automated haulage at paper port, or to 'Y' if manual haulage at automated port
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetHaulageAutomationFlags(["Start Step"])
E_SetHaulageAutomationFlags(["End Step"])
N_SetHaulageAutomationFlags_Node0{"The system determines port type
automated or paper and current
haulage automation status"}:::decision N_SetHaulageAutomationFlags_Node0_action["The system should update haulage
automation flag to N if automated
haulage at paper port, or to Y if
manual haulage at automated port"]:::main N_SetHaulageAutomationFlags_Node0 -- Yes --> N_SetHaulageAutomationFlags_Node0_action N_SetHaulageAutomationFlags_Node0_action --> E_SetHaulageAutomationFlags S_SetHaulageAutomationFlags --> N_SetHaulageAutomationFlags_Node0 N_SetHaulageAutomationFlags_Node0 -- No --> E_SetHaulageAutomationFlags
automated or paper and current
haulage automation status"}:::decision N_SetHaulageAutomationFlags_Node0_action["The system should update haulage
automation flag to N if automated
haulage at paper port, or to Y if
manual haulage at automated port"]:::main N_SetHaulageAutomationFlags_Node0 -- Yes --> N_SetHaulageAutomationFlags_Node0_action N_SetHaulageAutomationFlags_Node0_action --> E_SetHaulageAutomationFlags S_SetHaulageAutomationFlags --> N_SetHaulageAutomationFlags_Node0 N_SetHaulageAutomationFlags_Node0 -- No --> E_SetHaulageAutomationFlags
File: GCX003.cbl
GIVEN:
A cargo record with haulage information is being processed for send action
WHEN:
The system determines port type (automated or paper) and current haulage automation status
THEN:
The system should update haulage automation flag to 'N' if automated haulage at paper port, or to 'Y' if manual haulage at automated port
β Consolidated Acceptance Criteria
- The system extracts the M1011 condition response code from the cargo record → the system should store the condition response code in the report working storage for equipment tracking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractCargoConditionResponseCode(["Start Step"])
E_ExtractCargoConditionResponseCode(["End Step"])
N_ExtractCargoConditionResponseCode_Node0{"The system extracts the M1011
condition response code from the
cargo record"}:::decision N_ExtractCargoConditionResponseCode_Node0_action["The system should store the
condition response code in the
report working storage for equipment
tracking"]:::main N_ExtractCargoConditionResponseCode_Node0 -- Yes --> N_ExtractCargoConditionResponseCode_Node0_action N_ExtractCargoConditionResponseCode_Node0_action --> E_ExtractCargoConditionResponseCode S_ExtractCargoConditionResponseCode --> N_ExtractCargoConditionResponseCode_Node0 N_ExtractCargoConditionResponseCode_Node0 -- No --> E_ExtractCargoConditionResponseCode
condition response code from the
cargo record"}:::decision N_ExtractCargoConditionResponseCode_Node0_action["The system should store the
condition response code in the
report working storage for equipment
tracking"]:::main N_ExtractCargoConditionResponseCode_Node0 -- Yes --> N_ExtractCargoConditionResponseCode_Node0_action N_ExtractCargoConditionResponseCode_Node0_action --> E_ExtractCargoConditionResponseCode S_ExtractCargoConditionResponseCode --> N_ExtractCargoConditionResponseCode_Node0 N_ExtractCargoConditionResponseCode_Node0 -- No --> E_ExtractCargoConditionResponseCode
File: GCX003.cbl
GIVEN:
A cargo record is being processed for condition information
WHEN:
The system extracts the M1011 condition response code from the cargo record
THEN:
The system should store the condition response code in the report working storage for equipment tracking
β Consolidated Acceptance Criteria
- System processes equipment for special handling codes → system initiates empty residue code scanning and weight threshold evaluation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckEquipmentLoadEmptyStatus(["Start Step"])
E_CheckEquipmentLoadEmptyStatus(["End Step"])
N_CheckEquipmentLoadEmptyStatus_Node0{"System processes equipment for
special handling codes"}:::decision N_CheckEquipmentLoadEmptyStatus_Node0_action["System initiates empty residue code
scanning and weight threshold
evaluation"]:::main N_CheckEquipmentLoadEmptyStatus_Node0 -- Yes --> N_CheckEquipmentLoadEmptyStatus_Node0_action N_CheckEquipmentLoadEmptyStatus_Node0_action --> E_CheckEquipmentLoadEmptyStatus S_CheckEquipmentLoadEmptyStatus --> N_CheckEquipmentLoadEmptyStatus_Node0 N_CheckEquipmentLoadEmptyStatus_Node0 -- No --> E_CheckEquipmentLoadEmptyStatus
special handling codes"}:::decision N_CheckEquipmentLoadEmptyStatus_Node0_action["System initiates empty residue code
scanning and weight threshold
evaluation"]:::main N_CheckEquipmentLoadEmptyStatus_Node0 -- Yes --> N_CheckEquipmentLoadEmptyStatus_Node0_action N_CheckEquipmentLoadEmptyStatus_Node0_action --> E_CheckEquipmentLoadEmptyStatus S_CheckEquipmentLoadEmptyStatus --> N_CheckEquipmentLoadEmptyStatus_Node0 N_CheckEquipmentLoadEmptyStatus_Node0 -- No --> E_CheckEquipmentLoadEmptyStatus
File: GCX003.cbl
GIVEN:
Equipment has empty status and contains residue weight greater than zero
WHEN:
System processes equipment for special handling codes
THEN:
- System initiates empty residue code scanning
- Weight threshold evaluation
β Consolidated Acceptance Criteria
- System scans through special handling codes array up to 8 positions → system identifies if empty residue threshold code is present and sets appropriate flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ScanSpecialHandlingCodesArray(["Start Step"])
E_ScanSpecialHandlingCodesArray(["End Step"])
N_ScanSpecialHandlingCodesArray_Node0{"System scans through special
handling codes array up to 8
positions"}:::decision N_ScanSpecialHandlingCodesArray_Node0_action["System identifies if empty residue
threshold code is present and sets
appropriate flag"]:::main N_ScanSpecialHandlingCodesArray_Node0 -- Yes --> N_ScanSpecialHandlingCodesArray_Node0_action N_ScanSpecialHandlingCodesArray_Node0_action --> E_ScanSpecialHandlingCodesArray S_ScanSpecialHandlingCodesArray --> N_ScanSpecialHandlingCodesArray_Node0 N_ScanSpecialHandlingCodesArray_Node0 -- No --> E_ScanSpecialHandlingCodesArray
handling codes array up to 8
positions"}:::decision N_ScanSpecialHandlingCodesArray_Node0_action["System identifies if empty residue
threshold code is present and sets
appropriate flag"]:::main N_ScanSpecialHandlingCodesArray_Node0 -- Yes --> N_ScanSpecialHandlingCodesArray_Node0_action N_ScanSpecialHandlingCodesArray_Node0_action --> E_ScanSpecialHandlingCodesArray S_ScanSpecialHandlingCodesArray --> N_ScanSpecialHandlingCodesArray_Node0 N_ScanSpecialHandlingCodesArray_Node0 -- No --> E_ScanSpecialHandlingCodesArray
File: GCX003.cbl
GIVEN:
Equipment has residue weight and special handling codes exist
WHEN:
System scans through special handling codes array up to 8 positions
THEN:
- System identifies if empty residue threshold code is present
- Sets appropriate flag
β Consolidated Acceptance Criteria
- System evaluates residue weight against threshold of 7000 pounds → system sets high residue weight flag if weight exceeds 7000 pounds, otherwise sets low residue weight flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EvaluateResidueWeightAgainstThreshold(["Start Step"])
E_EvaluateResidueWeightAgainstThreshold(["End Step"])
N_EvaluateResidueWeightAgainstThreshold_Node0{"System evaluates residue weight
against threshold of 7000 pounds"}:::decision N_EvaluateResidueWeightAgainstThreshold_Node0_action["System sets high residue weight
flag if weight exceeds 7000 pounds,
otherwise sets low residue weight
flag"]:::main N_EvaluateResidueWeightAgainstThreshold_Node0 -- Yes --> N_EvaluateResidueWeightAgainstThreshold_Node0_action N_EvaluateResidueWeightAgainstThreshold_Node0_action --> E_EvaluateResidueWeightAgainstThreshold S_EvaluateResidueWeightAgainstThreshold --> N_EvaluateResidueWeightAgainstThreshold_Node0 N_EvaluateResidueWeightAgainstThreshold_Node0 -- No --> E_EvaluateResidueWeightAgainstThreshold
against threshold of 7000 pounds"}:::decision N_EvaluateResidueWeightAgainstThreshold_Node0_action["System sets high residue weight
flag if weight exceeds 7000 pounds,
otherwise sets low residue weight
flag"]:::main N_EvaluateResidueWeightAgainstThreshold_Node0 -- Yes --> N_EvaluateResidueWeightAgainstThreshold_Node0_action N_EvaluateResidueWeightAgainstThreshold_Node0_action --> E_EvaluateResidueWeightAgainstThreshold S_EvaluateResidueWeightAgainstThreshold --> N_EvaluateResidueWeightAgainstThreshold_Node0 N_EvaluateResidueWeightAgainstThreshold_Node0 -- No --> E_EvaluateResidueWeightAgainstThreshold
File: GCX003.cbl
GIVEN:
Equipment contains residue weight
WHEN:
System evaluates residue weight against threshold of 7000 pounds
THEN:
System sets high residue weight flag if weight exceeds 7000 pounds, otherwise sets low residue weight flag
β Consolidated Acceptance Criteria
- System checks for Segment 08 data availability → system sets hazmat flag to Yes if Segment 08 data is found, otherwise sets hazmat flag to No
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckSegment08DataforHazmat(["Start Step"])
E_CheckSegment08DataforHazmat(["End Step"])
N_CheckSegment08DataforHazmat_Node0{"System checks for Segment 08 data
availability"}:::decision N_CheckSegment08DataforHazmat_Node0_action["System sets hazmat flag to Yes if
Segment 08 data is found, otherwise
sets hazmat flag to No"]:::main N_CheckSegment08DataforHazmat_Node0 -- Yes --> N_CheckSegment08DataforHazmat_Node0_action N_CheckSegment08DataforHazmat_Node0_action --> E_CheckSegment08DataforHazmat S_CheckSegment08DataforHazmat --> N_CheckSegment08DataforHazmat_Node0 N_CheckSegment08DataforHazmat_Node0 -- No --> E_CheckSegment08DataforHazmat
availability"}:::decision N_CheckSegment08DataforHazmat_Node0_action["System sets hazmat flag to Yes if
Segment 08 data is found, otherwise
sets hazmat flag to No"]:::main N_CheckSegment08DataforHazmat_Node0 -- Yes --> N_CheckSegment08DataforHazmat_Node0_action N_CheckSegment08DataforHazmat_Node0_action --> E_CheckSegment08DataforHazmat S_CheckSegment08DataforHazmat --> N_CheckSegment08DataforHazmat_Node0 N_CheckSegment08DataforHazmat_Node0 -- No --> E_CheckSegment08DataforHazmat
File: GCX003.cbl
GIVEN:
Equipment cargo data is being processed
WHEN:
System checks for Segment 08 data availability
THEN:
System sets hazmat flag to Yes if Segment 08 data is found, otherwise sets hazmat flag to No
β Consolidated Acceptance Criteria
- System processes empty residue business rules with cargo found status and weight classifications → system determines appropriate processing path based on empty residue presence, weight threshold, and cargo availability
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessEmptyResidueBusinessRules(["Start Step"])
E_ProcessEmptyResidueBusinessRules(["End Step"])
N_ProcessEmptyResidueBusinessRules_Node0{"System processes empty residue
business rules with cargo found
status and weight classifications"}:::decision N_ProcessEmptyResidueBusinessRules_Node0_action["System determines appropriate
processing path based on empty
residue presence, weight threshold,
and cargo availability"]:::main N_ProcessEmptyResidueBusinessRules_Node0 -- Yes --> N_ProcessEmptyResidueBusinessRules_Node0_action N_ProcessEmptyResidueBusinessRules_Node0_action --> E_ProcessEmptyResidueBusinessRules S_ProcessEmptyResidueBusinessRules --> N_ProcessEmptyResidueBusinessRules_Node0 N_ProcessEmptyResidueBusinessRules_Node0 -- No --> E_ProcessEmptyResidueBusinessRules
business rules with cargo found
status and weight classifications"}:::decision N_ProcessEmptyResidueBusinessRules_Node0_action["System determines appropriate
processing path based on empty
residue presence, weight threshold,
and cargo availability"]:::main N_ProcessEmptyResidueBusinessRules_Node0 -- Yes --> N_ProcessEmptyResidueBusinessRules_Node0_action N_ProcessEmptyResidueBusinessRules_Node0_action --> E_ProcessEmptyResidueBusinessRules S_ProcessEmptyResidueBusinessRules --> N_ProcessEmptyResidueBusinessRules_Node0 N_ProcessEmptyResidueBusinessRules_Node0 -- No --> E_ProcessEmptyResidueBusinessRules
File: GCX003.cbl
GIVEN:
Equipment has been evaluated for empty residue and weight thresholds
WHEN:
- System processes empty residue business rules with cargo found status
- Weight classifications
THEN:
System determines appropriate processing path based on empty residue presence, weight threshold, and cargo availability
β Consolidated Acceptance Criteria
- System processes waybill found with no cargo found condition → system generates message 44 with waybill root key and date information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateEmptyResidueErrorMessage(["Start Step"])
E_GenerateEmptyResidueErrorMessage(["End Step"])
N_GenerateEmptyResidueErrorMessage_Node0{"System processes waybill found with
no cargo found condition"}:::decision N_GenerateEmptyResidueErrorMessage_Node0_action["System generates message 44 with
waybill root key and date
information"]:::main N_GenerateEmptyResidueErrorMessage_Node0 -- Yes --> N_GenerateEmptyResidueErrorMessage_Node0_action N_GenerateEmptyResidueErrorMessage_Node0_action --> E_GenerateEmptyResidueErrorMessage S_GenerateEmptyResidueErrorMessage --> N_GenerateEmptyResidueErrorMessage_Node0 N_GenerateEmptyResidueErrorMessage_Node0 -- No --> E_GenerateEmptyResidueErrorMessage
no cargo found condition"}:::decision N_GenerateEmptyResidueErrorMessage_Node0_action["System generates message 44 with
waybill root key and date
information"]:::main N_GenerateEmptyResidueErrorMessage_Node0 -- Yes --> N_GenerateEmptyResidueErrorMessage_Node0_action N_GenerateEmptyResidueErrorMessage_Node0_action --> E_GenerateEmptyResidueErrorMessage S_GenerateEmptyResidueErrorMessage --> N_GenerateEmptyResidueErrorMessage_Node0 N_GenerateEmptyResidueErrorMessage_Node0 -- No --> E_GenerateEmptyResidueErrorMessage
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Equipment has empty residue code found and residue weight exceeds 7000 pounds and equipment is empty and not idler
WHEN:
System processes waybill found with no cargo found condition
THEN:
- System generates message 44 with waybill root key
- Date information
β Consolidated Acceptance Criteria
- System processes equipment with waybill found but cargo not found condition → system generates appropriate missing cargo message for loaded equipment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateLoadedEquipmentMissingCargoMessage(["Start Step"])
E_GenerateLoadedEquipmentMissingCargoMessage(["End Step"])
N_GenerateLoadedEquipmentMissingCargoMessage_Node0{"System processes equipment with
waybill found but cargo not found
condition"}:::decision N_GenerateLoadedEquipmentMissingCargoMessage_Node0_action["System generates appropriate
missing cargo message for loaded
equipment"]:::main N_GenerateLoadedEquipmentMissingCargoMessage_Node0 -- Yes --> N_GenerateLoadedEquipmentMissingCargoMessage_Node0_action N_GenerateLoadedEquipmentMissingCargoMessage_Node0_action --> E_GenerateLoadedEquipmentMissingCargoMessage S_GenerateLoadedEquipmentMissingCargoMessage --> N_GenerateLoadedEquipmentMissingCargoMessage_Node0 N_GenerateLoadedEquipmentMissingCargoMessage_Node0 -- No --> E_GenerateLoadedEquipmentMissingCargoMessage
waybill found but cargo not found
condition"}:::decision N_GenerateLoadedEquipmentMissingCargoMessage_Node0_action["System generates appropriate
missing cargo message for loaded
equipment"]:::main N_GenerateLoadedEquipmentMissingCargoMessage_Node0 -- Yes --> N_GenerateLoadedEquipmentMissingCargoMessage_Node0_action N_GenerateLoadedEquipmentMissingCargoMessage_Node0_action --> E_GenerateLoadedEquipmentMissingCargoMessage S_GenerateLoadedEquipmentMissingCargoMessage --> N_GenerateLoadedEquipmentMissingCargoMessage_Node0 N_GenerateLoadedEquipmentMissingCargoMessage_Node0 -- No --> E_GenerateLoadedEquipmentMissingCargoMessage
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Equipment is marked as loaded and has residue weight with empty residue code found but no cargo data available
WHEN:
System processes equipment with waybill found but cargo not found condition
THEN:
System generates appropriate missing cargo message for loaded equipment
β Consolidated Acceptance Criteria
- The equipment load/empty indicator is checked → if equipment is empty, proceed to retrieve shipment comments for residue weight analysis, otherwise skip residue weight processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsEquipmentEmpty(["Start Step"])
E_IsEquipmentEmpty(["End Step"])
N_IsEquipmentEmpty_Node0{"The equipment loadempty indicator
is checked"}:::decision N_IsEquipmentEmpty_Node0_action["If equipment is empty, proceed to
retrieve shipment comments for
residue weight analysis, otherwise
skip residue weight processing"]:::main N_IsEquipmentEmpty_Node0 -- Yes --> N_IsEquipmentEmpty_Node0_action N_IsEquipmentEmpty_Node0_action --> E_IsEquipmentEmpty S_IsEquipmentEmpty --> N_IsEquipmentEmpty_Node0 N_IsEquipmentEmpty_Node0 -- No --> E_IsEquipmentEmpty
is checked"}:::decision N_IsEquipmentEmpty_Node0_action["If equipment is empty, proceed to
retrieve shipment comments for
residue weight analysis, otherwise
skip residue weight processing"]:::main N_IsEquipmentEmpty_Node0 -- Yes --> N_IsEquipmentEmpty_Node0_action N_IsEquipmentEmpty_Node0_action --> E_IsEquipmentEmpty S_IsEquipmentEmpty --> N_IsEquipmentEmpty_Node0 N_IsEquipmentEmpty_Node0 -- No --> E_IsEquipmentEmpty
File: GCX003.cbl
GIVEN:
An equipment item is being processed for residue weight evaluation
WHEN:
The equipment load/empty indicator is checked
THEN:
If equipment is empty, proceed to retrieve shipment comments for residue weight analysis, otherwise skip residue weight processing
β Consolidated Acceptance Criteria
- System attempts to retrieve SHIPCOMM segment using waybill root key → retrieve shipment comments data including residue weight and special handling codes for threshold analysis
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveSHIPCOMMSegment(["Start Step"])
E_RetrieveSHIPCOMMSegment(["End Step"])
N_RetrieveSHIPCOMMSegment_Node0{"System attempts to retrieve
SHIPCOMM segment using waybill root
key"}:::decision N_RetrieveSHIPCOMMSegment_Node0_action["Retrieve shipment comments data
including residue weight and special
handling codes for threshold
analysis"]:::main N_RetrieveSHIPCOMMSegment_Node0 -- Yes --> N_RetrieveSHIPCOMMSegment_Node0_action N_RetrieveSHIPCOMMSegment_Node0_action --> E_RetrieveSHIPCOMMSegment S_RetrieveSHIPCOMMSegment --> N_RetrieveSHIPCOMMSegment_Node0 N_RetrieveSHIPCOMMSegment_Node0 -- No --> E_RetrieveSHIPCOMMSegment
SHIPCOMM segment using waybill root
key"}:::decision N_RetrieveSHIPCOMMSegment_Node0_action["Retrieve shipment comments data
including residue weight and special
handling codes for threshold
analysis"]:::main N_RetrieveSHIPCOMMSegment_Node0 -- Yes --> N_RetrieveSHIPCOMMSegment_Node0_action N_RetrieveSHIPCOMMSegment_Node0_action --> E_RetrieveSHIPCOMMSegment S_RetrieveSHIPCOMMSegment --> N_RetrieveSHIPCOMMSegment_Node0 N_RetrieveSHIPCOMMSegment_Node0 -- No --> E_RetrieveSHIPCOMMSegment
File: GCX003.cbl
GIVEN:
Empty equipment requires residue weight evaluation
WHEN:
System attempts to retrieve SHIPCOMM segment using waybill root key
THEN:
- Retrieve shipment comments data including residue weight
- Special handling codes for threshold analysis
β Consolidated Acceptance Criteria
- Database status code is evaluated → if retrieval successful, use retrieved data; if failed, initialize SHIPCOMM to spaces to prevent processing errors
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SHIPCOMMRetrievedSuccessfully(["Start Step"])
E_SHIPCOMMRetrievedSuccessfully(["End Step"])
N_SHIPCOMMRetrievedSuccessfully_Node0{"Database status code is evaluated"}:::decision
N_SHIPCOMMRetrievedSuccessfully_Node0_action["If retrieval successful, use
retrieved data if failed, initialize
SHIPCOMM to spaces to prevent
processing errors"]:::main N_SHIPCOMMRetrievedSuccessfully_Node0 -- Yes --> N_SHIPCOMMRetrievedSuccessfully_Node0_action N_SHIPCOMMRetrievedSuccessfully_Node0_action --> E_SHIPCOMMRetrievedSuccessfully S_SHIPCOMMRetrievedSuccessfully --> N_SHIPCOMMRetrievedSuccessfully_Node0 N_SHIPCOMMRetrievedSuccessfully_Node0 -- No --> E_SHIPCOMMRetrievedSuccessfully
retrieved data if failed, initialize
SHIPCOMM to spaces to prevent
processing errors"]:::main N_SHIPCOMMRetrievedSuccessfully_Node0 -- Yes --> N_SHIPCOMMRetrievedSuccessfully_Node0_action N_SHIPCOMMRetrievedSuccessfully_Node0_action --> E_SHIPCOMMRetrievedSuccessfully S_SHIPCOMMRetrievedSuccessfully --> N_SHIPCOMMRetrievedSuccessfully_Node0 N_SHIPCOMMRetrievedSuccessfully_Node0 -- No --> E_SHIPCOMMRetrievedSuccessfully
File: GCX003.cbl
GIVEN:
System has attempted to retrieve SHIPCOMM segment
WHEN:
Database status code is evaluated
THEN:
If retrieval successful, use retrieved data; if failed, initialize SHIPCOMM to spaces to prevent processing errors
β Consolidated Acceptance Criteria
- System needs to continue processing without shipment comments data → initialize SHIPCOMM structure to spaces to ensure clean data state for subsequent processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeSHIPCOMMtoSpaces(["Start Step"])
E_InitializeSHIPCOMMtoSpaces(["End Step"])
N_InitializeSHIPCOMMtoSpaces_Node0{"System needs to continue processing
without shipment comments data"}:::decision N_InitializeSHIPCOMMtoSpaces_Node0_action["Initialize SHIPCOMM structure to
spaces to ensure clean data state
for subsequent processing"]:::main N_InitializeSHIPCOMMtoSpaces_Node0 -- Yes --> N_InitializeSHIPCOMMtoSpaces_Node0_action N_InitializeSHIPCOMMtoSpaces_Node0_action --> E_InitializeSHIPCOMMtoSpaces S_InitializeSHIPCOMMtoSpaces --> N_InitializeSHIPCOMMtoSpaces_Node0 N_InitializeSHIPCOMMtoSpaces_Node0 -- No --> E_InitializeSHIPCOMMtoSpaces
without shipment comments data"}:::decision N_InitializeSHIPCOMMtoSpaces_Node0_action["Initialize SHIPCOMM structure to
spaces to ensure clean data state
for subsequent processing"]:::main N_InitializeSHIPCOMMtoSpaces_Node0 -- Yes --> N_InitializeSHIPCOMMtoSpaces_Node0_action N_InitializeSHIPCOMMtoSpaces_Node0_action --> E_InitializeSHIPCOMMtoSpaces S_InitializeSHIPCOMMtoSpaces --> N_InitializeSHIPCOMMtoSpaces_Node0 N_InitializeSHIPCOMMtoSpaces_Node0 -- No --> E_InitializeSHIPCOMMtoSpaces
File: GCX003.cbl
GIVEN:
SHIPCOMM segment retrieval has failed
WHEN:
System needs to continue processing without shipment comments data
THEN:
Initialize SHIPCOMM structure to spaces to ensure clean data state for subsequent processing
β Consolidated Acceptance Criteria
- Residue weight value is evaluated → if residue weight is greater than zero, proceed with special handling code analysis and threshold evaluation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ResidueWeight0(["Start Step"])
E_ResidueWeight0(["End Step"])
N_ResidueWeight0_Node0{"Residue weight value is evaluated"}:::decision
N_ResidueWeight0_Node0_action["If residue weight is greater than
zero, proceed with special handling
code analysis and threshold
evaluation"]:::main N_ResidueWeight0_Node0 -- Yes --> N_ResidueWeight0_Node0_action N_ResidueWeight0_Node0_action --> E_ResidueWeight0 S_ResidueWeight0 --> N_ResidueWeight0_Node0 N_ResidueWeight0_Node0 -- No --> E_ResidueWeight0
zero, proceed with special handling
code analysis and threshold
evaluation"]:::main N_ResidueWeight0_Node0 -- Yes --> N_ResidueWeight0_Node0_action N_ResidueWeight0_Node0_action --> E_ResidueWeight0 S_ResidueWeight0 --> N_ResidueWeight0_Node0 N_ResidueWeight0_Node0 -- No --> E_ResidueWeight0
File: GCX003.cbl
GIVEN:
SHIPCOMM data is available for processing
WHEN:
Residue weight value is evaluated
THEN:
- If residue weight is greater than zero, proceed with special handling code analysis
- Threshold evaluation
β Consolidated Acceptance Criteria
- Special handling codes array is scanned for ER threshold code → iterate through up to 8 special handling code positions to locate ER threshold code indicator
- One of the special handling codes equals 'ER' (Empty Residue threshold code) → the empty residue condition should be flagged as found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckSpecialHandlingCodes(["Start Step"])
E_CheckSpecialHandlingCodes(["End Step"])
N_CheckSpecialHandlingCodes_Node0{"Special handling codes array is
scanned for ER threshold code"}:::decision N_CheckSpecialHandlingCodes_Node0_action["Iterate through up to 8 special
handling code positions to locate ER
threshold code indicator"]:::main N_CheckSpecialHandlingCodes_Node0 -- Yes --> N_CheckSpecialHandlingCodes_Node0_action N_CheckSpecialHandlingCodes_Node0_action --> E_CheckSpecialHandlingCodes S_CheckSpecialHandlingCodes --> N_CheckSpecialHandlingCodes_Node0 N_CheckSpecialHandlingCodes_Node1{"One of the special handling codes
equals ER Empty Residue threshold
code"}:::decision N_CheckSpecialHandlingCodes_Node1_action["The empty residue condition should
be flagged as found"]:::main N_CheckSpecialHandlingCodes_Node1 -- Yes --> N_CheckSpecialHandlingCodes_Node1_action N_CheckSpecialHandlingCodes_Node1_action --> E_CheckSpecialHandlingCodes N_CheckSpecialHandlingCodes_Node0 -- No --> N_CheckSpecialHandlingCodes_Node1 N_CheckSpecialHandlingCodes_Node1 -- No --> E_CheckSpecialHandlingCodes
scanned for ER threshold code"}:::decision N_CheckSpecialHandlingCodes_Node0_action["Iterate through up to 8 special
handling code positions to locate ER
threshold code indicator"]:::main N_CheckSpecialHandlingCodes_Node0 -- Yes --> N_CheckSpecialHandlingCodes_Node0_action N_CheckSpecialHandlingCodes_Node0_action --> E_CheckSpecialHandlingCodes S_CheckSpecialHandlingCodes --> N_CheckSpecialHandlingCodes_Node0 N_CheckSpecialHandlingCodes_Node1{"One of the special handling codes
equals ER Empty Residue threshold
code"}:::decision N_CheckSpecialHandlingCodes_Node1_action["The empty residue condition should
be flagged as found"]:::main N_CheckSpecialHandlingCodes_Node1 -- Yes --> N_CheckSpecialHandlingCodes_Node1_action N_CheckSpecialHandlingCodes_Node1_action --> E_CheckSpecialHandlingCodes N_CheckSpecialHandlingCodes_Node0 -- No --> N_CheckSpecialHandlingCodes_Node1 N_CheckSpecialHandlingCodes_Node1 -- No --> E_CheckSpecialHandlingCodes
File: GCX003.cbl
GIVEN:
Equipment has residue weight greater than zero
WHEN:
Special handling codes array is scanned for ER threshold code
THEN:
Iterate through up to 8 special handling code positions to locate ER threshold code indicator
File: GCX003.cbl
GIVEN:
A shipment has special handling codes and residue weight greater than 0
WHEN:
One of the special handling codes equals 'ER' (Empty Residue threshold code)
THEN:
The empty residue condition should be flagged as found
β Consolidated Acceptance Criteria
- Each special handling code position is compared against ER threshold code value → if ER threshold code is found in any position, set ER found flag; otherwise set ER not found flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ERThresholdCodeFound(["Start Step"])
E_ERThresholdCodeFound(["End Step"])
N_ERThresholdCodeFound_Node0{"Each special handling code position
is compared against ER threshold
code value"}:::decision N_ERThresholdCodeFound_Node0_action["If ER threshold code is found in
any position, set ER found flag
otherwise set ER not found flag"]:::main N_ERThresholdCodeFound_Node0 -- Yes --> N_ERThresholdCodeFound_Node0_action N_ERThresholdCodeFound_Node0_action --> E_ERThresholdCodeFound S_ERThresholdCodeFound --> N_ERThresholdCodeFound_Node0 N_ERThresholdCodeFound_Node0 -- No --> E_ERThresholdCodeFound
is compared against ER threshold
code value"}:::decision N_ERThresholdCodeFound_Node0_action["If ER threshold code is found in
any position, set ER found flag
otherwise set ER not found flag"]:::main N_ERThresholdCodeFound_Node0 -- Yes --> N_ERThresholdCodeFound_Node0_action N_ERThresholdCodeFound_Node0_action --> E_ERThresholdCodeFound S_ERThresholdCodeFound --> N_ERThresholdCodeFound_Node0 N_ERThresholdCodeFound_Node0 -- No --> E_ERThresholdCodeFound
File: GCX003.cbl
GIVEN:
Special handling codes are being analyzed for ER threshold code
WHEN:
Each special handling code position is compared against ER threshold code value
THEN:
If ER threshold code is found in any position, set ER found flag; otherwise set ER not found flag
β Consolidated Acceptance Criteria
- System needs to record ER code presence for threshold evaluation → set ER found indicator to true for subsequent weight threshold processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetERFoundFlag(["Start Step"])
E_SetERFoundFlag(["End Step"])
N_SetERFoundFlag_Node0{"System needs to record ER code
presence for threshold evaluation"}:::decision N_SetERFoundFlag_Node0_action["Set ER found indicator to true for
subsequent weight threshold
processing"]:::main N_SetERFoundFlag_Node0 -- Yes --> N_SetERFoundFlag_Node0_action N_SetERFoundFlag_Node0_action --> E_SetERFoundFlag S_SetERFoundFlag --> N_SetERFoundFlag_Node0 N_SetERFoundFlag_Node0 -- No --> E_SetERFoundFlag
presence for threshold evaluation"}:::decision N_SetERFoundFlag_Node0_action["Set ER found indicator to true for
subsequent weight threshold
processing"]:::main N_SetERFoundFlag_Node0 -- Yes --> N_SetERFoundFlag_Node0_action N_SetERFoundFlag_Node0_action --> E_SetERFoundFlag S_SetERFoundFlag --> N_SetERFoundFlag_Node0 N_SetERFoundFlag_Node0 -- No --> E_SetERFoundFlag
File: GCX003.cbl
GIVEN:
ER threshold code has been located in special handling codes
WHEN:
System needs to record ER code presence for threshold evaluation
THEN:
Set ER found indicator to true for subsequent weight threshold processing
β Consolidated Acceptance Criteria
- System needs to record ER code absence for threshold evaluation → set ER found indicator to false for subsequent weight threshold processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetERNotFoundFlag(["Start Step"])
E_SetERNotFoundFlag(["End Step"])
N_SetERNotFoundFlag_Node0{"System needs to record ER code
absence for threshold evaluation"}:::decision N_SetERNotFoundFlag_Node0_action["Set ER found indicator to false for
subsequent weight threshold
processing"]:::main N_SetERNotFoundFlag_Node0 -- Yes --> N_SetERNotFoundFlag_Node0_action N_SetERNotFoundFlag_Node0_action --> E_SetERNotFoundFlag S_SetERNotFoundFlag --> N_SetERNotFoundFlag_Node0 N_SetERNotFoundFlag_Node0 -- No --> E_SetERNotFoundFlag
absence for threshold evaluation"}:::decision N_SetERNotFoundFlag_Node0_action["Set ER found indicator to false for
subsequent weight threshold
processing"]:::main N_SetERNotFoundFlag_Node0 -- Yes --> N_SetERNotFoundFlag_Node0_action N_SetERNotFoundFlag_Node0_action --> E_SetERNotFoundFlag S_SetERNotFoundFlag --> N_SetERNotFoundFlag_Node0 N_SetERNotFoundFlag_Node0 -- No --> E_SetERNotFoundFlag
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
ER threshold code has not been found in special handling codes after complete scan
WHEN:
System needs to record ER code absence for threshold evaluation
THEN:
Set ER found indicator to false for subsequent weight threshold processing
β Consolidated Acceptance Criteria
- Residue weight value is compared against 7000 pound threshold → if weight exceeds 7000 pounds, set weight threshold GT7 flag; otherwise set weight threshold LE7 flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ResidueWeight7000lbs(["Start Step"])
E_ResidueWeight7000lbs(["End Step"])
N_ResidueWeight7000lbs_Node0{"Residue weight value is compared
against 7000 pound threshold"}:::decision N_ResidueWeight7000lbs_Node0_action["If weight exceeds 7000 pounds, set
weight threshold GT7 flag otherwise
set weight threshold LE7 flag"]:::main N_ResidueWeight7000lbs_Node0 -- Yes --> N_ResidueWeight7000lbs_Node0_action N_ResidueWeight7000lbs_Node0_action --> E_ResidueWeight7000lbs S_ResidueWeight7000lbs --> N_ResidueWeight7000lbs_Node0 N_ResidueWeight7000lbs_Node0 -- No --> E_ResidueWeight7000lbs
against 7000 pound threshold"}:::decision N_ResidueWeight7000lbs_Node0_action["If weight exceeds 7000 pounds, set
weight threshold GT7 flag otherwise
set weight threshold LE7 flag"]:::main N_ResidueWeight7000lbs_Node0 -- Yes --> N_ResidueWeight7000lbs_Node0_action N_ResidueWeight7000lbs_Node0_action --> E_ResidueWeight7000lbs S_ResidueWeight7000lbs --> N_ResidueWeight7000lbs_Node0 N_ResidueWeight7000lbs_Node0 -- No --> E_ResidueWeight7000lbs
File: GCX003.cbl
GIVEN:
Equipment has measurable residue weight and ER code status is determined
WHEN:
Residue weight value is compared against 7000 pound threshold
THEN:
If weight exceeds 7000 pounds, set weight threshold GT7 flag; otherwise set weight threshold LE7 flag
β Consolidated Acceptance Criteria
- System needs to classify weight threshold status → set weight threshold greater than 7000 indicator for subsequent compliance processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetERWeightThresholdGT7(["Start Step"])
E_SetERWeightThresholdGT7(["End Step"])
N_SetERWeightThresholdGT7_Node0{"System needs to classify weight
threshold status"}:::decision N_SetERWeightThresholdGT7_Node0_action["Set weight threshold greater than
7000 indicator for subsequent
compliance processing"]:::main N_SetERWeightThresholdGT7_Node0 -- Yes --> N_SetERWeightThresholdGT7_Node0_action N_SetERWeightThresholdGT7_Node0_action --> E_SetERWeightThresholdGT7 S_SetERWeightThresholdGT7 --> N_SetERWeightThresholdGT7_Node0 N_SetERWeightThresholdGT7_Node0 -- No --> E_SetERWeightThresholdGT7
threshold status"}:::decision N_SetERWeightThresholdGT7_Node0_action["Set weight threshold greater than
7000 indicator for subsequent
compliance processing"]:::main N_SetERWeightThresholdGT7_Node0 -- Yes --> N_SetERWeightThresholdGT7_Node0_action N_SetERWeightThresholdGT7_Node0_action --> E_SetERWeightThresholdGT7 S_SetERWeightThresholdGT7 --> N_SetERWeightThresholdGT7_Node0 N_SetERWeightThresholdGT7_Node0 -- No --> E_SetERWeightThresholdGT7
File: GCX003.cbl
GIVEN:
Residue weight has been determined to exceed 7000 pounds
WHEN:
System needs to classify weight threshold status
THEN:
Set weight threshold greater than 7000 indicator for subsequent compliance processing
β Consolidated Acceptance Criteria
- System needs to classify weight threshold status → set weight threshold less than or equal to 7000 indicator for subsequent compliance processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetERWeightThresholdLE7(["Start Step"])
E_SetERWeightThresholdLE7(["End Step"])
N_SetERWeightThresholdLE7_Node0{"System needs to classify weight
threshold status"}:::decision N_SetERWeightThresholdLE7_Node0_action["Set weight threshold less than or
equal to 7000 indicator for
subsequent compliance processing"]:::main N_SetERWeightThresholdLE7_Node0 -- Yes --> N_SetERWeightThresholdLE7_Node0_action N_SetERWeightThresholdLE7_Node0_action --> E_SetERWeightThresholdLE7 S_SetERWeightThresholdLE7 --> N_SetERWeightThresholdLE7_Node0 N_SetERWeightThresholdLE7_Node0 -- No --> E_SetERWeightThresholdLE7
threshold status"}:::decision N_SetERWeightThresholdLE7_Node0_action["Set weight threshold less than or
equal to 7000 indicator for
subsequent compliance processing"]:::main N_SetERWeightThresholdLE7_Node0 -- Yes --> N_SetERWeightThresholdLE7_Node0_action N_SetERWeightThresholdLE7_Node0_action --> E_SetERWeightThresholdLE7 S_SetERWeightThresholdLE7 --> N_SetERWeightThresholdLE7_Node0 N_SetERWeightThresholdLE7_Node0 -- No --> E_SetERWeightThresholdLE7
File: GCX003.cbl
GIVEN:
Residue weight has been determined to be 7000 pounds or less
WHEN:
System needs to classify weight threshold status
THEN:
Set weight threshold less than or equal to 7000 indicator for subsequent compliance processing
β Consolidated Acceptance Criteria
- Residue weight compliance status is evaluated → continue normal equipment processing without generating threshold violation errors
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinueProcessingWithinThreshold(["Start Step"])
E_ContinueProcessingWithinThreshold(["End Step"])
N_ContinueProcessingWithinThreshold_Node0{"Residue weight compliance status is
evaluated"}:::decision N_ContinueProcessingWithinThreshold_Node0_action["Continue normal equipment
processing without generating
threshold violation errors"]:::main N_ContinueProcessingWithinThreshold_Node0 -- Yes --> N_ContinueProcessingWithinThreshold_Node0_action N_ContinueProcessingWithinThreshold_Node0_action --> E_ContinueProcessingWithinThreshold S_ContinueProcessingWithinThreshold --> N_ContinueProcessingWithinThreshold_Node0 N_ContinueProcessingWithinThreshold_Node0 -- No --> E_ContinueProcessingWithinThreshold
evaluated"}:::decision N_ContinueProcessingWithinThreshold_Node0_action["Continue normal equipment
processing without generating
threshold violation errors"]:::main N_ContinueProcessingWithinThreshold_Node0 -- Yes --> N_ContinueProcessingWithinThreshold_Node0_action N_ContinueProcessingWithinThreshold_Node0_action --> E_ContinueProcessingWithinThreshold S_ContinueProcessingWithinThreshold --> N_ContinueProcessingWithinThreshold_Node0 N_ContinueProcessingWithinThreshold_Node0 -- No --> E_ContinueProcessingWithinThreshold
File: GCX003.cbl
GIVEN:
Equipment has either ER code present with weight at or below 7000 pounds, or ER code absent with weight exceeding 7000 pounds
WHEN:
Residue weight compliance status is evaluated
THEN:
Continue normal equipment processing without generating threshold violation errors
β Consolidated Acceptance Criteria
- Residue weight compliance status indicates threshold violation → generate appropriate error message for residue weight threshold non-compliance
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateErrorMessageThresholdExceeded(["Start Step"])
E_GenerateErrorMessageThresholdExceeded(["End Step"])
N_GenerateErrorMessageThresholdExceeded_Node0{"Residue weight compliance status
indicates threshold violation"}:::decision N_GenerateErrorMessageThresholdExceeded_Node0_action["Generate appropriate error message
for residue weight threshold
non-compliance"]:::main N_GenerateErrorMessageThresholdExceeded_Node0 -- Yes --> N_GenerateErrorMessageThresholdExceeded_Node0_action N_GenerateErrorMessageThresholdExceeded_Node0_action --> E_GenerateErrorMessageThresholdExceeded S_GenerateErrorMessageThresholdExceeded --> N_GenerateErrorMessageThresholdExceeded_Node0 N_GenerateErrorMessageThresholdExceeded_Node0 -- No --> E_GenerateErrorMessageThresholdExceeded
indicates threshold violation"}:::decision N_GenerateErrorMessageThresholdExceeded_Node0_action["Generate appropriate error message
for residue weight threshold
non-compliance"]:::main N_GenerateErrorMessageThresholdExceeded_Node0 -- Yes --> N_GenerateErrorMessageThresholdExceeded_Node0_action N_GenerateErrorMessageThresholdExceeded_Node0_action --> E_GenerateErrorMessageThresholdExceeded S_GenerateErrorMessageThresholdExceeded --> N_GenerateErrorMessageThresholdExceeded_Node0 N_GenerateErrorMessageThresholdExceeded_Node0 -- No --> E_GenerateErrorMessageThresholdExceeded
File: GCX003.cbl
GIVEN:
Equipment has either ER code present with weight exceeding 7000 pounds, or ER code absent with weight at or below 7000 pounds
WHEN:
Residue weight compliance status indicates threshold violation
THEN:
Generate appropriate error message for residue weight threshold non-compliance
β Consolidated Acceptance Criteria
- The system detects container equipment from waybill data → equipment type is set to container and container-specific processing parameters are established
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetContainerParameters(["Start Step"])
E_SetContainerParameters(["End Step"])
N_SetContainerParameters_Node0{"The system detects container
equipment from waybill data"}:::decision N_SetContainerParameters_Node0_action["Equipment type is set to container
and container-specific processing
parameters are established"]:::main N_SetContainerParameters_Node0 -- Yes --> N_SetContainerParameters_Node0_action N_SetContainerParameters_Node0_action --> E_SetContainerParameters S_SetContainerParameters --> N_SetContainerParameters_Node0 N_SetContainerParameters_Node0 -- No --> E_SetContainerParameters
equipment from waybill data"}:::decision N_SetContainerParameters_Node0_action["Equipment type is set to container
and container-specific processing
parameters are established"]:::main N_SetContainerParameters_Node0 -- Yes --> N_SetContainerParameters_Node0_action N_SetContainerParameters_Node0_action --> E_SetContainerParameters S_SetContainerParameters --> N_SetContainerParameters_Node0 N_SetContainerParameters_Node0 -- No --> E_SetContainerParameters
File: GCX003.cbl
GIVEN:
Equipment processing is initiated and waybill data is available
WHEN:
The system detects container equipment from waybill data
THEN:
- Equipment type is set to container
- Container-specific processing parameters are established
β Consolidated Acceptance Criteria
- The waybill indicates trailer equipment type → trailer-specific processing parameters are applied to the equipment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrailerParameters(["Start Step"])
E_SetTrailerParameters(["End Step"])
N_SetTrailerParameters_Node0{"The waybill indicates trailer
equipment type"}:::decision N_SetTrailerParameters_Node0_action["Trailer-specific processing
parameters are applied to the
equipment"]:::main N_SetTrailerParameters_Node0 -- Yes --> N_SetTrailerParameters_Node0_action N_SetTrailerParameters_Node0_action --> E_SetTrailerParameters S_SetTrailerParameters --> N_SetTrailerParameters_Node0 N_SetTrailerParameters_Node0 -- No --> E_SetTrailerParameters
equipment type"}:::decision N_SetTrailerParameters_Node0_action["Trailer-specific processing
parameters are applied to the
equipment"]:::main N_SetTrailerParameters_Node0 -- Yes --> N_SetTrailerParameters_Node0_action N_SetTrailerParameters_Node0_action --> E_SetTrailerParameters S_SetTrailerParameters --> N_SetTrailerParameters_Node0 N_SetTrailerParameters_Node0 -- No --> E_SetTrailerParameters
File: GCX003.cbl
GIVEN:
Equipment is classified as container type and waybill routing data is available
WHEN:
The waybill indicates trailer equipment type
THEN:
Trailer-specific processing parameters are applied to the equipment
β Consolidated Acceptance Criteria
- The equipment is not identified as container equipment → equipment type is set to car and car-specific processing parameters are established
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCarParameters(["Start Step"])
E_SetCarParameters(["End Step"])
N_SetCarParameters_Node0{"The equipment is not identified as
container equipment"}:::decision N_SetCarParameters_Node0_action["Equipment type is set to car and
car-specific processing parameters
are established"]:::main N_SetCarParameters_Node0 -- Yes --> N_SetCarParameters_Node0_action N_SetCarParameters_Node0_action --> E_SetCarParameters S_SetCarParameters --> N_SetCarParameters_Node0 N_SetCarParameters_Node0 -- No --> E_SetCarParameters
container equipment"}:::decision N_SetCarParameters_Node0_action["Equipment type is set to car and
car-specific processing parameters
are established"]:::main N_SetCarParameters_Node0 -- Yes --> N_SetCarParameters_Node0_action N_SetCarParameters_Node0_action --> E_SetCarParameters S_SetCarParameters --> N_SetCarParameters_Node0 N_SetCarParameters_Node0 -- No --> E_SetCarParameters
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Equipment processing is initiated
WHEN:
The equipment is not identified as container equipment
THEN:
- Equipment type is set to car
- Car-specific processing parameters are established
β Consolidated Acceptance Criteria
- Equipment type validation is required → external equipment validation service GCCCARTP is called with equipment parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallEquipmentTypeValidationServiceGCCCARTP(["Start Step"])
E_CallEquipmentTypeValidationServiceGCCCARTP(["End Step"])
N_CallEquipmentTypeValidationServiceGCCCARTP_Node0{"Equipment type validation is
required"}:::decision N_CallEquipmentTypeValidationServiceGCCCARTP_Node0_action["External equipment validation
service GCCCARTP is called with
equipment parameters"]:::main N_CallEquipmentTypeValidationServiceGCCCARTP_Node0 -- Yes --> N_CallEquipmentTypeValidationServiceGCCCARTP_Node0_action N_CallEquipmentTypeValidationServiceGCCCARTP_Node0_action --> E_CallEquipmentTypeValidationServiceGCCCARTP S_CallEquipmentTypeValidationServiceGCCCARTP --> N_CallEquipmentTypeValidationServiceGCCCARTP_Node0 N_CallEquipmentTypeValidationServiceGCCCARTP_Node0 -- No --> E_CallEquipmentTypeValidationServiceGCCCARTP
required"}:::decision N_CallEquipmentTypeValidationServiceGCCCARTP_Node0_action["External equipment validation
service GCCCARTP is called with
equipment parameters"]:::main N_CallEquipmentTypeValidationServiceGCCCARTP_Node0 -- Yes --> N_CallEquipmentTypeValidationServiceGCCCARTP_Node0_action N_CallEquipmentTypeValidationServiceGCCCARTP_Node0_action --> E_CallEquipmentTypeValidationServiceGCCCARTP S_CallEquipmentTypeValidationServiceGCCCARTP --> N_CallEquipmentTypeValidationServiceGCCCARTP_Node0 N_CallEquipmentTypeValidationServiceGCCCARTP_Node0 -- No --> E_CallEquipmentTypeValidationServiceGCCCARTP
File: GCX003.cbl
GIVEN:
Equipment type parameters are set and equipment ID is available
WHEN:
Equipment type validation is required
THEN:
External equipment validation service GCCCARTP is called with equipment parameters
β Consolidated Acceptance Criteria
- The validation service returns a response → system checks if validation was successful and routes processing accordingly
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidationSuccessful(["Start Step"])
E_ValidationSuccessful(["End Step"])
N_ValidationSuccessful_Node0{"The validation service returns a
response"}:::decision N_ValidationSuccessful_Node0_action["System checks if validation was
successful and routes processing
accordingly"]:::main N_ValidationSuccessful_Node0 -- Yes --> N_ValidationSuccessful_Node0_action N_ValidationSuccessful_Node0_action --> E_ValidationSuccessful S_ValidationSuccessful --> N_ValidationSuccessful_Node0 N_ValidationSuccessful_Node0 -- No --> E_ValidationSuccessful
response"}:::decision N_ValidationSuccessful_Node0_action["System checks if validation was
successful and routes processing
accordingly"]:::main N_ValidationSuccessful_Node0 -- Yes --> N_ValidationSuccessful_Node0_action N_ValidationSuccessful_Node0_action --> E_ValidationSuccessful S_ValidationSuccessful --> N_ValidationSuccessful_Node0 N_ValidationSuccessful_Node0 -- No --> E_ValidationSuccessful
File: GCX003.cbl
GIVEN:
Equipment validation service has been called
WHEN:
The validation service returns a response
THEN:
- System checks if validation was successful
- Routes processing accordingly
β Consolidated Acceptance Criteria
- Double stack container processing is required → system calls double stack service and updates appropriate traffic type counters (CPRS, CSXT, NS, or HAUL)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDoubleStackContainerCount(["Start Step"])
E_SetDoubleStackContainerCount(["End Step"])
N_SetDoubleStackContainerCount_Node0{"Double stack container processing
is required"}:::decision N_SetDoubleStackContainerCount_Node0_action["System calls double stack service
and updates appropriate traffic type
counters CPRS, CSXT, NS, or HAUL"]:::main N_SetDoubleStackContainerCount_Node0 -- Yes --> N_SetDoubleStackContainerCount_Node0_action N_SetDoubleStackContainerCount_Node0_action --> E_SetDoubleStackContainerCount S_SetDoubleStackContainerCount --> N_SetDoubleStackContainerCount_Node0 N_SetDoubleStackContainerCount_Node0 -- No --> E_SetDoubleStackContainerCount
is required"}:::decision N_SetDoubleStackContainerCount_Node0_action["System calls double stack service
and updates appropriate traffic type
counters CPRS, CSXT, NS, or HAUL"]:::main N_SetDoubleStackContainerCount_Node0 -- Yes --> N_SetDoubleStackContainerCount_Node0_action N_SetDoubleStackContainerCount_Node0_action --> E_SetDoubleStackContainerCount S_SetDoubleStackContainerCount --> N_SetDoubleStackContainerCount_Node0 N_SetDoubleStackContainerCount_Node0 -- No --> E_SetDoubleStackContainerCount
File: GCX003.cbl
GIVEN:
Equipment is validated and waybill is found and equipment type is 'SK' (stack car)
WHEN:
Double stack container processing is required
THEN:
- System calls double stack service
- Updates appropriate traffic type counters (cprs, csxt, ns, or haul)
β Consolidated Acceptance Criteria
- Equipment routing validation is performed → system checks routing information against predefined routing patterns and sets appropriate routing indicators
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateEquipmentRoutingInformation(["Start Step"])
E_ValidateEquipmentRoutingInformation(["End Step"])
N_ValidateEquipmentRoutingInformation_Node0{"Equipment routing validation is
performed"}:::decision N_ValidateEquipmentRoutingInformation_Node0_action["System checks routing information
against predefined routing patterns
and sets appropriate routing
indicators"]:::main N_ValidateEquipmentRoutingInformation_Node0 -- Yes --> N_ValidateEquipmentRoutingInformation_Node0_action N_ValidateEquipmentRoutingInformation_Node0_action --> E_ValidateEquipmentRoutingInformation S_ValidateEquipmentRoutingInformation --> N_ValidateEquipmentRoutingInformation_Node0 N_ValidateEquipmentRoutingInformation_Node0 -- No --> E_ValidateEquipmentRoutingInformation
performed"}:::decision N_ValidateEquipmentRoutingInformation_Node0_action["System checks routing information
against predefined routing patterns
and sets appropriate routing
indicators"]:::main N_ValidateEquipmentRoutingInformation_Node0 -- Yes --> N_ValidateEquipmentRoutingInformation_Node0_action N_ValidateEquipmentRoutingInformation_Node0_action --> E_ValidateEquipmentRoutingInformation S_ValidateEquipmentRoutingInformation --> N_ValidateEquipmentRoutingInformation_Node0 N_ValidateEquipmentRoutingInformation_Node0 -- No --> E_ValidateEquipmentRoutingInformation
File: GCX003.cbl
GIVEN:
Waybill is found and routing information is available
WHEN:
Equipment routing validation is performed
THEN:
- System checks routing information against predefined routing patterns
- Sets appropriate routing indicators
β Consolidated Acceptance Criteria
- Equipment type validation service call fails → error message MSG-35 is generated indicating container type validation failure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateContainerTypeErrorMessageMSG35(["Start Step"])
E_GenerateContainerTypeErrorMessageMSG35(["End Step"])
N_GenerateContainerTypeErrorMessageMSG35_Node0{"Equipment type validation service
call fails"}:::decision N_GenerateContainerTypeErrorMessageMSG35_Node0_action["Error message MSG-35 is generated
indicating container type validation
failure"]:::main N_GenerateContainerTypeErrorMessageMSG35_Node0 -- Yes --> N_GenerateContainerTypeErrorMessageMSG35_Node0_action N_GenerateContainerTypeErrorMessageMSG35_Node0_action --> E_GenerateContainerTypeErrorMessageMSG35 S_GenerateContainerTypeErrorMessageMSG35 --> N_GenerateContainerTypeErrorMessageMSG35_Node0 N_GenerateContainerTypeErrorMessageMSG35_Node0 -- No --> E_GenerateContainerTypeErrorMessageMSG35
call fails"}:::decision N_GenerateContainerTypeErrorMessageMSG35_Node0_action["Error message MSG-35 is generated
indicating container type validation
failure"]:::main N_GenerateContainerTypeErrorMessageMSG35_Node0 -- Yes --> N_GenerateContainerTypeErrorMessageMSG35_Node0_action N_GenerateContainerTypeErrorMessageMSG35_Node0_action --> E_GenerateContainerTypeErrorMessageMSG35 S_GenerateContainerTypeErrorMessageMSG35 --> N_GenerateContainerTypeErrorMessageMSG35_Node0 N_GenerateContainerTypeErrorMessageMSG35_Node0 -- No --> E_GenerateContainerTypeErrorMessageMSG35
File: GCX003.cbl
GIVEN:
Equipment is classified as container type
WHEN:
Equipment type validation service call fails
THEN:
Error message MSG-35 is generated indicating container type validation failure
β Consolidated Acceptance Criteria
- Equipment type validation service call fails → error message MSG-36 is generated indicating car type validation failure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateCarTypeErrorMessageMSG36(["Start Step"])
E_GenerateCarTypeErrorMessageMSG36(["End Step"])
N_GenerateCarTypeErrorMessageMSG36_Node0{"Equipment type validation service
call fails"}:::decision N_GenerateCarTypeErrorMessageMSG36_Node0_action["Error message MSG-36 is generated
indicating car type validation
failure"]:::main N_GenerateCarTypeErrorMessageMSG36_Node0 -- Yes --> N_GenerateCarTypeErrorMessageMSG36_Node0_action N_GenerateCarTypeErrorMessageMSG36_Node0_action --> E_GenerateCarTypeErrorMessageMSG36 S_GenerateCarTypeErrorMessageMSG36 --> N_GenerateCarTypeErrorMessageMSG36_Node0 N_GenerateCarTypeErrorMessageMSG36_Node0 -- No --> E_GenerateCarTypeErrorMessageMSG36
call fails"}:::decision N_GenerateCarTypeErrorMessageMSG36_Node0_action["Error message MSG-36 is generated
indicating car type validation
failure"]:::main N_GenerateCarTypeErrorMessageMSG36_Node0 -- Yes --> N_GenerateCarTypeErrorMessageMSG36_Node0_action N_GenerateCarTypeErrorMessageMSG36_Node0_action --> E_GenerateCarTypeErrorMessageMSG36 S_GenerateCarTypeErrorMessageMSG36 --> N_GenerateCarTypeErrorMessageMSG36_Node0 N_GenerateCarTypeErrorMessageMSG36_Node0 -- No --> E_GenerateCarTypeErrorMessageMSG36
File: GCX003.cbl
GIVEN:
Equipment is classified as car type
WHEN:
Equipment type validation service call fails
THEN:
Error message MSG-36 is generated indicating car type validation failure
β Consolidated Acceptance Criteria
- The cargo is designated as special manifest original → set the special IT found flag to true
- The cargo has special manifest original flag set → skip detour processing and continue with normal flow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpecialManifestOriginal(["Start Step"])
E_SpecialManifestOriginal(["End Step"])
N_SpecialManifestOriginal_Node0{"The cargo is designated as special
manifest original"}:::decision N_SpecialManifestOriginal_Node0_action["Set the special IT found flag to
true"]:::main N_SpecialManifestOriginal_Node0 -- Yes --> N_SpecialManifestOriginal_Node0_action N_SpecialManifestOriginal_Node0_action --> E_SpecialManifestOriginal S_SpecialManifestOriginal --> N_SpecialManifestOriginal_Node0 N_SpecialManifestOriginal_Node1{"The cargo has special manifest
original flag set"}:::decision N_SpecialManifestOriginal_Node1_action["Skip detour processing and continue
with normal flow"]:::main N_SpecialManifestOriginal_Node1 -- Yes --> N_SpecialManifestOriginal_Node1_action N_SpecialManifestOriginal_Node1_action --> E_SpecialManifestOriginal N_SpecialManifestOriginal_Node0 -- No --> N_SpecialManifestOriginal_Node1 N_SpecialManifestOriginal_Node1 -- No --> E_SpecialManifestOriginal
manifest original"}:::decision N_SpecialManifestOriginal_Node0_action["Set the special IT found flag to
true"]:::main N_SpecialManifestOriginal_Node0 -- Yes --> N_SpecialManifestOriginal_Node0_action N_SpecialManifestOriginal_Node0_action --> E_SpecialManifestOriginal S_SpecialManifestOriginal --> N_SpecialManifestOriginal_Node0 N_SpecialManifestOriginal_Node1{"The cargo has special manifest
original flag set"}:::decision N_SpecialManifestOriginal_Node1_action["Skip detour processing and continue
with normal flow"]:::main N_SpecialManifestOriginal_Node1 -- Yes --> N_SpecialManifestOriginal_Node1_action N_SpecialManifestOriginal_Node1_action --> E_SpecialManifestOriginal N_SpecialManifestOriginal_Node0 -- No --> N_SpecialManifestOriginal_Node1 N_SpecialManifestOriginal_Node1 -- No --> E_SpecialManifestOriginal
File: GCX003.cbl
GIVEN:
A cargo record with special manifest indicators
WHEN:
The cargo is designated as special manifest original
THEN:
Set the special IT found flag to true
File: GCX003.cbl
GIVEN:
Cargo has IT bond type and cargo is found
WHEN:
The cargo has special manifest original flag set
THEN:
- Skip detour processing
- Continue with normal flow
β Consolidated Acceptance Criteria
- The cargo has transportation export bond type code AND the cargo is designated as special manifest → set the special TE found flag to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BondTypeTEANDSpecialManifest(["Start Step"])
E_BondTypeTEANDSpecialManifest(["End Step"])
N_BondTypeTEANDSpecialManifest_Node0{"The cargo has transportation export
bond type code AND the cargo is
designated as special manifest"}:::decision N_BondTypeTEANDSpecialManifest_Node0_action["Set the special TE found flag to
true"]:::main N_BondTypeTEANDSpecialManifest_Node0 -- Yes --> N_BondTypeTEANDSpecialManifest_Node0_action N_BondTypeTEANDSpecialManifest_Node0_action --> E_BondTypeTEANDSpecialManifest S_BondTypeTEANDSpecialManifest --> N_BondTypeTEANDSpecialManifest_Node0 N_BondTypeTEANDSpecialManifest_Node0 -- No --> E_BondTypeTEANDSpecialManifest
bond type code AND the cargo is
designated as special manifest"}:::decision N_BondTypeTEANDSpecialManifest_Node0_action["Set the special TE found flag to
true"]:::main N_BondTypeTEANDSpecialManifest_Node0 -- Yes --> N_BondTypeTEANDSpecialManifest_Node0_action N_BondTypeTEANDSpecialManifest_Node0_action --> E_BondTypeTEANDSpecialManifest S_BondTypeTEANDSpecialManifest --> N_BondTypeTEANDSpecialManifest_Node0 N_BondTypeTEANDSpecialManifest_Node0 -- No --> E_BondTypeTEANDSpecialManifest
File: GCX003.cbl
GIVEN:
A cargo record with TE bond type and special manifest indicators
WHEN:
- The cargo has transportation export bond type code
- The cargo is designated as special manifest
THEN:
Set the special TE found flag to true
β Consolidated Acceptance Criteria
- The cargo has export bond type code AND the cargo has USMX special 88 designation → set the US-MX 88 found flag to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BondTypeExportANDSpecial88(["Start Step"])
E_BondTypeExportANDSpecial88(["End Step"])
N_BondTypeExportANDSpecial88_Node0{"The cargo has export bond type code
AND the cargo has USMX special 88
designation"}:::decision N_BondTypeExportANDSpecial88_Node0_action["Set the US-MX 88 found flag to true"]:::main N_BondTypeExportANDSpecial88_Node0 -- Yes --> N_BondTypeExportANDSpecial88_Node0_action N_BondTypeExportANDSpecial88_Node0_action --> E_BondTypeExportANDSpecial88 S_BondTypeExportANDSpecial88 --> N_BondTypeExportANDSpecial88_Node0 N_BondTypeExportANDSpecial88_Node0 -- No --> E_BondTypeExportANDSpecial88
AND the cargo has USMX special 88
designation"}:::decision N_BondTypeExportANDSpecial88_Node0_action["Set the US-MX 88 found flag to true"]:::main N_BondTypeExportANDSpecial88_Node0 -- Yes --> N_BondTypeExportANDSpecial88_Node0_action N_BondTypeExportANDSpecial88_Node0_action --> E_BondTypeExportANDSpecial88 S_BondTypeExportANDSpecial88 --> N_BondTypeExportANDSpecial88_Node0 N_BondTypeExportANDSpecial88_Node0 -- No --> E_BondTypeExportANDSpecial88
File: GCX003.cbl
GIVEN:
A cargo record with export bond type and special indicators
WHEN:
- The cargo has export bond type code
- The cargo has usmx special 88 designation
THEN:
Set the US-MX 88 found flag to true
β Consolidated Acceptance Criteria
- The cargo has US-Canada-US bond type code AND the cargo has USMX special TR designation → set the special TR found flag to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BondTypeUSCANUSANDSpecialTR(["Start Step"])
E_BondTypeUSCANUSANDSpecialTR(["End Step"])
N_BondTypeUSCANUSANDSpecialTR_Node0{"The cargo has US-Canada-US bond
type code AND the cargo has USMX
special TR designation"}:::decision N_BondTypeUSCANUSANDSpecialTR_Node0_action["Set the special TR found flag to
true"]:::main N_BondTypeUSCANUSANDSpecialTR_Node0 -- Yes --> N_BondTypeUSCANUSANDSpecialTR_Node0_action N_BondTypeUSCANUSANDSpecialTR_Node0_action --> E_BondTypeUSCANUSANDSpecialTR S_BondTypeUSCANUSANDSpecialTR --> N_BondTypeUSCANUSANDSpecialTR_Node0 N_BondTypeUSCANUSANDSpecialTR_Node0 -- No --> E_BondTypeUSCANUSANDSpecialTR
type code AND the cargo has USMX
special TR designation"}:::decision N_BondTypeUSCANUSANDSpecialTR_Node0_action["Set the special TR found flag to
true"]:::main N_BondTypeUSCANUSANDSpecialTR_Node0 -- Yes --> N_BondTypeUSCANUSANDSpecialTR_Node0_action N_BondTypeUSCANUSANDSpecialTR_Node0_action --> E_BondTypeUSCANUSANDSpecialTR S_BondTypeUSCANUSANDSpecialTR --> N_BondTypeUSCANUSANDSpecialTR_Node0 N_BondTypeUSCANUSANDSpecialTR_Node0 -- No --> E_BondTypeUSCANUSANDSpecialTR
File: GCX003.cbl
GIVEN:
A cargo record with US-Canada-US bond type and special TR indicators
WHEN:
- The cargo has us-canada-us bond type code
- The cargo has usmx special tr designation
THEN:
Set the special TR found flag to true
β Consolidated Acceptance Criteria
- The cargo entry number field is not blank or spaces → use the entry number as the bond number for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EntryNumberAvailable(["Start Step"])
E_EntryNumberAvailable(["End Step"])
N_EntryNumberAvailable_Node0{"The cargo entry number field is not
blank or spaces"}:::decision N_EntryNumberAvailable_Node0_action["Use the entry number as the bond
number for processing"]:::main N_EntryNumberAvailable_Node0 -- Yes --> N_EntryNumberAvailable_Node0_action N_EntryNumberAvailable_Node0_action --> E_EntryNumberAvailable S_EntryNumberAvailable --> N_EntryNumberAvailable_Node0 N_EntryNumberAvailable_Node0 -- No --> E_EntryNumberAvailable
blank or spaces"}:::decision N_EntryNumberAvailable_Node0_action["Use the entry number as the bond
number for processing"]:::main N_EntryNumberAvailable_Node0 -- Yes --> N_EntryNumberAvailable_Node0_action N_EntryNumberAvailable_Node0_action --> E_EntryNumberAvailable S_EntryNumberAvailable --> N_EntryNumberAvailable_Node0 N_EntryNumberAvailable_Node0 -- No --> E_EntryNumberAvailable
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record with potential bond number sources
WHEN:
The cargo entry number field is not blank or spaces
THEN:
Use the entry number as the bond number for processing
β Consolidated Acceptance Criteria
- The in-bond control number field is not blank or spaces → use the in-bond control number as the bond number for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InBondControlNumberAvailable(["Start Step"])
E_InBondControlNumberAvailable(["End Step"])
N_InBondControlNumberAvailable_Node0{"The in-bond control number field is
not blank or spaces"}:::decision N_InBondControlNumberAvailable_Node0_action["Use the in-bond control number as
the bond number for processing"]:::main N_InBondControlNumberAvailable_Node0 -- Yes --> N_InBondControlNumberAvailable_Node0_action N_InBondControlNumberAvailable_Node0_action --> E_InBondControlNumberAvailable S_InBondControlNumberAvailable --> N_InBondControlNumberAvailable_Node0 N_InBondControlNumberAvailable_Node0 -- No --> E_InBondControlNumberAvailable
not blank or spaces"}:::decision N_InBondControlNumberAvailable_Node0_action["Use the in-bond control number as
the bond number for processing"]:::main N_InBondControlNumberAvailable_Node0 -- Yes --> N_InBondControlNumberAvailable_Node0_action N_InBondControlNumberAvailable_Node0_action --> E_InBondControlNumberAvailable S_InBondControlNumberAvailable --> N_InBondControlNumberAvailable_Node0 N_InBondControlNumberAvailable_Node0 -- No --> E_InBondControlNumberAvailable
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record where entry number is not available
WHEN:
The in-bond control number field is not blank or spaces
THEN:
Use the in-bond control number as the bond number for processing
β Consolidated Acceptance Criteria
- The cargo bond type code equals '15' → set cargo information to 'PPR 7512 15 US-CA-US'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessPaper7512Movement(["Start Step"])
E_ProcessPaper7512Movement(["End Step"])
N_ProcessPaper7512Movement_Node0{"The cargo bond type code equals 15"}:::decision
N_ProcessPaper7512Movement_Node0_action["Set cargo information to PPR 7512
15 US-CA-US"]:::main N_ProcessPaper7512Movement_Node0 -- Yes --> N_ProcessPaper7512Movement_Node0_action N_ProcessPaper7512Movement_Node0_action --> E_ProcessPaper7512Movement S_ProcessPaper7512Movement --> N_ProcessPaper7512Movement_Node0 N_ProcessPaper7512Movement_Node0 -- No --> E_ProcessPaper7512Movement
15 US-CA-US"]:::main N_ProcessPaper7512Movement_Node0 -- Yes --> N_ProcessPaper7512Movement_Node0_action N_ProcessPaper7512Movement_Node0_action --> E_ProcessPaper7512Movement S_ProcessPaper7512Movement --> N_ProcessPaper7512Movement_Node0 N_ProcessPaper7512Movement_Node0 -- No --> E_ProcessPaper7512Movement
File: GCX003.cbl
GIVEN:
A cargo record with specific bond type code
WHEN:
The cargo bond type code equals '15'
THEN:
Set cargo information to 'PPR 7512 15 US-CA-US'
β Consolidated Acceptance Criteria
- The cargo in-bond type code equals 'IT' or 'IE' → format cargo information as 'AMS' followed by bond type code and bond number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessAMSITIEBond(["Start Step"])
E_ProcessAMSITIEBond(["End Step"])
N_ProcessAMSITIEBond_Node0{"The cargo in-bond type code equals
IT or IE"}:::decision N_ProcessAMSITIEBond_Node0_action["Format cargo information as AMS
followed by bond type code and bond
number"]:::main N_ProcessAMSITIEBond_Node0 -- Yes --> N_ProcessAMSITIEBond_Node0_action N_ProcessAMSITIEBond_Node0_action --> E_ProcessAMSITIEBond S_ProcessAMSITIEBond --> N_ProcessAMSITIEBond_Node0 N_ProcessAMSITIEBond_Node0 -- No --> E_ProcessAMSITIEBond
IT or IE"}:::decision N_ProcessAMSITIEBond_Node0_action["Format cargo information as AMS
followed by bond type code and bond
number"]:::main N_ProcessAMSITIEBond_Node0 -- Yes --> N_ProcessAMSITIEBond_Node0_action N_ProcessAMSITIEBond_Node0_action --> E_ProcessAMSITIEBond S_ProcessAMSITIEBond --> N_ProcessAMSITIEBond_Node0 N_ProcessAMSITIEBond_Node0 -- No --> E_ProcessAMSITIEBond
File: GCX003.cbl
GIVEN:
A cargo record with IT or IE bond type and extracted bond number
WHEN:
The cargo in-bond type code equals 'IT' or 'IE'
THEN:
- Format cargo information as 'ams' followed by bond type code
- Bond number
β Consolidated Acceptance Criteria
- The cargo in-bond type code equals 'TE' or 'TR' or 'MT' → format cargo information as 'AMS 7512' followed by bond type code and bond number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessAMS7512TETRMTBond(["Start Step"])
E_ProcessAMS7512TETRMTBond(["End Step"])
N_ProcessAMS7512TETRMTBond_Node0{"The cargo in-bond type code equals
TE or TR or MT"}:::decision N_ProcessAMS7512TETRMTBond_Node0_action["Format cargo information as AMS
7512 followed by bond type code and
bond number"]:::main N_ProcessAMS7512TETRMTBond_Node0 -- Yes --> N_ProcessAMS7512TETRMTBond_Node0_action N_ProcessAMS7512TETRMTBond_Node0_action --> E_ProcessAMS7512TETRMTBond S_ProcessAMS7512TETRMTBond --> N_ProcessAMS7512TETRMTBond_Node0 N_ProcessAMS7512TETRMTBond_Node0 -- No --> E_ProcessAMS7512TETRMTBond
TE or TR or MT"}:::decision N_ProcessAMS7512TETRMTBond_Node0_action["Format cargo information as AMS
7512 followed by bond type code and
bond number"]:::main N_ProcessAMS7512TETRMTBond_Node0 -- Yes --> N_ProcessAMS7512TETRMTBond_Node0_action N_ProcessAMS7512TETRMTBond_Node0_action --> E_ProcessAMS7512TETRMTBond S_ProcessAMS7512TETRMTBond --> N_ProcessAMS7512TETRMTBond_Node0 N_ProcessAMS7512TETRMTBond_Node0 -- No --> E_ProcessAMS7512TETRMTBond
File: GCX003.cbl
GIVEN:
A cargo record with TE, TR, or MT bond type and extracted bond number
WHEN:
The cargo in-bond type code equals 'TE' or 'TR' or 'MT'
THEN:
- Format cargo information as 'ams 7512' followed by bond type code
- Bond number
β Consolidated Acceptance Criteria
- Segment 07 data exists and is not blank or low-values → process the segment 07 data for cargo description extraction
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Segment07DataAvailable(["Start Step"])
E_Segment07DataAvailable(["End Step"])
N_Segment07DataAvailable_Node0{"Segment 07 data exists and is not
blank or low-values"}:::decision N_Segment07DataAvailable_Node0_action["Process the segment 07 data for
cargo description extraction"]:::main N_Segment07DataAvailable_Node0 -- Yes --> N_Segment07DataAvailable_Node0_action N_Segment07DataAvailable_Node0_action --> E_Segment07DataAvailable S_Segment07DataAvailable --> N_Segment07DataAvailable_Node0 N_Segment07DataAvailable_Node0 -- No --> E_Segment07DataAvailable
blank or low-values"}:::decision N_Segment07DataAvailable_Node0_action["Process the segment 07 data for
cargo description extraction"]:::main N_Segment07DataAvailable_Node0 -- Yes --> N_Segment07DataAvailable_Node0_action N_Segment07DataAvailable_Node0_action --> E_Segment07DataAvailable S_Segment07DataAvailable --> N_Segment07DataAvailable_Node0 N_Segment07DataAvailable_Node0 -- No --> E_Segment07DataAvailable
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record with potential segment 07 data
WHEN:
- Segment 07 data exists
- Is not blank or low-values
THEN:
Process the segment 07 data for cargo description extraction
β Consolidated Acceptance Criteria
- Segment 07 contains cargo description information → extract the cargo description and use it as the cargo information field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractEquipmentDescription(["Start Step"])
E_ExtractEquipmentDescription(["End Step"])
N_ExtractEquipmentDescription_Node0{"Segment 07 contains cargo
description information"}:::decision N_ExtractEquipmentDescription_Node0_action["Extract the cargo description and
use it as the cargo information
field"]:::main N_ExtractEquipmentDescription_Node0 -- Yes --> N_ExtractEquipmentDescription_Node0_action N_ExtractEquipmentDescription_Node0_action --> E_ExtractEquipmentDescription S_ExtractEquipmentDescription --> N_ExtractEquipmentDescription_Node0 N_ExtractEquipmentDescription_Node0 -- No --> E_ExtractEquipmentDescription
description information"}:::decision N_ExtractEquipmentDescription_Node0_action["Extract the cargo description and
use it as the cargo information
field"]:::main N_ExtractEquipmentDescription_Node0 -- Yes --> N_ExtractEquipmentDescription_Node0_action N_ExtractEquipmentDescription_Node0_action --> E_ExtractEquipmentDescription S_ExtractEquipmentDescription --> N_ExtractEquipmentDescription_Node0 N_ExtractEquipmentDescription_Node0 -- No --> E_ExtractEquipmentDescription
File: GCX003.cbl
GIVEN:
A cargo record with valid segment 07 data
WHEN:
Segment 07 contains cargo description information
THEN:
- Extract the cargo description
- Use it as the cargo information field
β Consolidated Acceptance Criteria
- The residue weight is greater than zero AND special handling code contains ER threshold code → apply empty residue processing rules
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ResidueWeightThreshold(["Start Step"])
E_ResidueWeightThreshold(["End Step"])
N_ResidueWeightThreshold_Node0{"The residue weight is greater than
zero AND special handling code
contains ER threshold code"}:::decision N_ResidueWeightThreshold_Node0_action["Apply empty residue processing
rules"]:::main N_ResidueWeightThreshold_Node0 -- Yes --> N_ResidueWeightThreshold_Node0_action N_ResidueWeightThreshold_Node0_action --> E_ResidueWeightThreshold S_ResidueWeightThreshold --> N_ResidueWeightThreshold_Node0 N_ResidueWeightThreshold_Node0 -- No --> E_ResidueWeightThreshold
zero AND special handling code
contains ER threshold code"}:::decision N_ResidueWeightThreshold_Node0_action["Apply empty residue processing
rules"]:::main N_ResidueWeightThreshold_Node0 -- Yes --> N_ResidueWeightThreshold_Node0_action N_ResidueWeightThreshold_Node0_action --> E_ResidueWeightThreshold S_ResidueWeightThreshold --> N_ResidueWeightThreshold_Node0 N_ResidueWeightThreshold_Node0 -- No --> E_ResidueWeightThreshold
File: GCX003.cbl
GIVEN:
An empty equipment record with residue weight information
WHEN:
- The residue weight is greater than zero
- Special handling code contains er threshold code
THEN:
Apply empty residue processing rules
β Consolidated Acceptance Criteria
- Processing equipment counters for containers or cars → increment appropriate counter (container loaded/empty or car loaded/empty) based on equipment type and load status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateLoadEmptyStatusCounters(["Start Step"])
E_UpdateLoadEmptyStatusCounters(["End Step"])
N_UpdateLoadEmptyStatusCounters_Node0{"Processing equipment counters for
containers or cars"}:::decision N_UpdateLoadEmptyStatusCounters_Node0_action["Increment appropriate counter
container loadedempty or car
loadedempty based on equipment type
and load status"]:::main N_UpdateLoadEmptyStatusCounters_Node0 -- Yes --> N_UpdateLoadEmptyStatusCounters_Node0_action N_UpdateLoadEmptyStatusCounters_Node0_action --> E_UpdateLoadEmptyStatusCounters S_UpdateLoadEmptyStatusCounters --> N_UpdateLoadEmptyStatusCounters_Node0 N_UpdateLoadEmptyStatusCounters_Node0 -- No --> E_UpdateLoadEmptyStatusCounters
containers or cars"}:::decision N_UpdateLoadEmptyStatusCounters_Node0_action["Increment appropriate counter
container loadedempty or car
loadedempty based on equipment type
and load status"]:::main N_UpdateLoadEmptyStatusCounters_Node0 -- Yes --> N_UpdateLoadEmptyStatusCounters_Node0_action N_UpdateLoadEmptyStatusCounters_Node0_action --> E_UpdateLoadEmptyStatusCounters S_UpdateLoadEmptyStatusCounters --> N_UpdateLoadEmptyStatusCounters_Node0 N_UpdateLoadEmptyStatusCounters_Node0 -- No --> E_UpdateLoadEmptyStatusCounters
File: GCX003.cbl
GIVEN:
Equipment with determined load/empty status and equipment type
WHEN:
Processing equipment counters for containers or cars
THEN:
- Increment appropriate counter (container loaded/empty or car loaded/empty) based on equipment type
- Load status
β Consolidated Acceptance Criteria
- The system processes the cargo information → the in-bond type code is extracted from the cargo record field M1201-IN-BOND-TYP-CDE
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractBondTypefromCargoRecord(["Start Step"])
E_ExtractBondTypefromCargoRecord(["End Step"])
N_ExtractBondTypefromCargoRecord_Node0{"The system processes the cargo
information"}:::decision N_ExtractBondTypefromCargoRecord_Node0_action["The in-bond type code is extracted
from the cargo record field
M1201-IN-BOND-TYP-CDE"]:::main N_ExtractBondTypefromCargoRecord_Node0 -- Yes --> N_ExtractBondTypefromCargoRecord_Node0_action N_ExtractBondTypefromCargoRecord_Node0_action --> E_ExtractBondTypefromCargoRecord S_ExtractBondTypefromCargoRecord --> N_ExtractBondTypefromCargoRecord_Node0 N_ExtractBondTypefromCargoRecord_Node0 -- No --> E_ExtractBondTypefromCargoRecord
information"}:::decision N_ExtractBondTypefromCargoRecord_Node0_action["The in-bond type code is extracted
from the cargo record field
M1201-IN-BOND-TYP-CDE"]:::main N_ExtractBondTypefromCargoRecord_Node0 -- Yes --> N_ExtractBondTypefromCargoRecord_Node0_action N_ExtractBondTypefromCargoRecord_Node0_action --> E_ExtractBondTypefromCargoRecord S_ExtractBondTypefromCargoRecord --> N_ExtractBondTypefromCargoRecord_Node0 N_ExtractBondTypefromCargoRecord_Node0 -- No --> E_ExtractBondTypefromCargoRecord
File: GCX003.cbl
GIVEN:
A cargo record exists for the equipment
WHEN:
The system processes the cargo information
THEN:
The in-bond type code is extracted from the cargo record field M1201-IN-BOND-TYP-CDE
β Consolidated Acceptance Criteria
- The system formats cargo information for display → the US CCN key from cargo is assigned to the report US CCN field
- The system formats bond information for display → the report info shows 'EMPTY', load/empty indicator is set to 'E', and equipment counters are updated from loaded to empty
- The system formats bond information for display → the report info displays 'PPR 7512 15 US-CA-US'
- The system formats bond information for display → the report info displays 'AMS ' concatenated with bond type and bond number
- The system formats bond information for display → the report info displays 'AMS 7512 ' concatenated with bond type and bond number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatBondInformationDisplay(["Start Step"])
E_FormatBondInformationDisplay(["End Step"])
N_FormatBondInformationDisplay_Node0{"The system formats cargo
information for display"}:::decision N_FormatBondInformationDisplay_Node0_action["The US CCN key from cargo is
assigned to the report US CCN field"]:::main N_FormatBondInformationDisplay_Node0 -- Yes --> N_FormatBondInformationDisplay_Node0_action N_FormatBondInformationDisplay_Node0_action --> E_FormatBondInformationDisplay S_FormatBondInformationDisplay --> N_FormatBondInformationDisplay_Node0 N_FormatBondInformationDisplay_Node1{"The system formats bond information
for display"}:::decision N_FormatBondInformationDisplay_Node1_action["The report info shows EMPTY ,
loadempty indicator is set to E ,
and equipment counters are updated
from loaded to empty"]:::main N_FormatBondInformationDisplay_Node1 -- Yes --> N_FormatBondInformationDisplay_Node1_action N_FormatBondInformationDisplay_Node1_action --> E_FormatBondInformationDisplay N_FormatBondInformationDisplay_Node0 -- No --> N_FormatBondInformationDisplay_Node1 N_FormatBondInformationDisplay_Node2{"The system formats bond information
for display"}:::decision N_FormatBondInformationDisplay_Node2_action["The report info displays PPR 7512
15 US-CA-US"]:::main N_FormatBondInformationDisplay_Node2 -- Yes --> N_FormatBondInformationDisplay_Node2_action N_FormatBondInformationDisplay_Node2_action --> E_FormatBondInformationDisplay N_FormatBondInformationDisplay_Node1 -- No --> N_FormatBondInformationDisplay_Node2 N_FormatBondInformationDisplay_Node3{"The system formats bond information
for display"}:::decision N_FormatBondInformationDisplay_Node3_action["The report info displays AMS
concatenated with bond type and bond
number"]:::main N_FormatBondInformationDisplay_Node3 -- Yes --> N_FormatBondInformationDisplay_Node3_action N_FormatBondInformationDisplay_Node3_action --> E_FormatBondInformationDisplay N_FormatBondInformationDisplay_Node2 -- No --> N_FormatBondInformationDisplay_Node3 N_FormatBondInformationDisplay_Node4{"The system formats bond information
for display"}:::decision N_FormatBondInformationDisplay_Node4_action["The report info displays AMS 7512
concatenated with bond type and bond
number"]:::main N_FormatBondInformationDisplay_Node4 -- Yes --> N_FormatBondInformationDisplay_Node4_action N_FormatBondInformationDisplay_Node4_action --> E_FormatBondInformationDisplay N_FormatBondInformationDisplay_Node3 -- No --> N_FormatBondInformationDisplay_Node4 N_FormatBondInformationDisplay_Node4 -- No --> E_FormatBondInformationDisplay
information for display"}:::decision N_FormatBondInformationDisplay_Node0_action["The US CCN key from cargo is
assigned to the report US CCN field"]:::main N_FormatBondInformationDisplay_Node0 -- Yes --> N_FormatBondInformationDisplay_Node0_action N_FormatBondInformationDisplay_Node0_action --> E_FormatBondInformationDisplay S_FormatBondInformationDisplay --> N_FormatBondInformationDisplay_Node0 N_FormatBondInformationDisplay_Node1{"The system formats bond information
for display"}:::decision N_FormatBondInformationDisplay_Node1_action["The report info shows EMPTY ,
loadempty indicator is set to E ,
and equipment counters are updated
from loaded to empty"]:::main N_FormatBondInformationDisplay_Node1 -- Yes --> N_FormatBondInformationDisplay_Node1_action N_FormatBondInformationDisplay_Node1_action --> E_FormatBondInformationDisplay N_FormatBondInformationDisplay_Node0 -- No --> N_FormatBondInformationDisplay_Node1 N_FormatBondInformationDisplay_Node2{"The system formats bond information
for display"}:::decision N_FormatBondInformationDisplay_Node2_action["The report info displays PPR 7512
15 US-CA-US"]:::main N_FormatBondInformationDisplay_Node2 -- Yes --> N_FormatBondInformationDisplay_Node2_action N_FormatBondInformationDisplay_Node2_action --> E_FormatBondInformationDisplay N_FormatBondInformationDisplay_Node1 -- No --> N_FormatBondInformationDisplay_Node2 N_FormatBondInformationDisplay_Node3{"The system formats bond information
for display"}:::decision N_FormatBondInformationDisplay_Node3_action["The report info displays AMS
concatenated with bond type and bond
number"]:::main N_FormatBondInformationDisplay_Node3 -- Yes --> N_FormatBondInformationDisplay_Node3_action N_FormatBondInformationDisplay_Node3_action --> E_FormatBondInformationDisplay N_FormatBondInformationDisplay_Node2 -- No --> N_FormatBondInformationDisplay_Node3 N_FormatBondInformationDisplay_Node4{"The system formats bond information
for display"}:::decision N_FormatBondInformationDisplay_Node4_action["The report info displays AMS 7512
concatenated with bond type and bond
number"]:::main N_FormatBondInformationDisplay_Node4 -- Yes --> N_FormatBondInformationDisplay_Node4_action N_FormatBondInformationDisplay_Node4_action --> E_FormatBondInformationDisplay N_FormatBondInformationDisplay_Node3 -- No --> N_FormatBondInformationDisplay_Node4 N_FormatBondInformationDisplay_Node4 -- No --> E_FormatBondInformationDisplay
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo bond type is not spaces and not export type and not empty equipment type
WHEN:
The system formats cargo information for display
THEN:
The US CCN key from cargo is assigned to the report US CCN field
File: GCX003.cbl
GIVEN:
Cargo is empty equipment type or empty residue type
WHEN:
The system formats bond information for display
THEN:
The report info shows 'EMPTY', load/empty indicator is set to 'E', and equipment counters are updated from loaded to empty
File: GCX003.cbl
GIVEN:
Cargo bond type code is '15'
WHEN:
The system formats bond information for display
THEN:
The report info displays 'PPR 7512 15 US-CA-US'
File: GCX003.cbl
GIVEN:
Cargo in-bond type code is 'IT' or 'IE'
WHEN:
The system formats bond information for display
THEN:
- The report info displays 'ams ' concatenated with bond type
- Bond number
File: GCX003.cbl
GIVEN:
Cargo in-bond type code is 'TE' or 'TR' or 'MT'
WHEN:
The system formats bond information for display
THEN:
- The report info displays 'ams 7512 ' concatenated with bond type
- Bond number
β Consolidated Acceptance Criteria
- The system extracts bond number information → the entry number is saved as the bond number for display formatting
- Entry number field is not spaces → use entry number as the saved bond number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractfromEntryNumber(["Start Step"])
E_ExtractfromEntryNumber(["End Step"])
N_ExtractfromEntryNumber_Node0{"The system extracts bond number
information"}:::decision N_ExtractfromEntryNumber_Node0_action["The entry number is saved as the
bond number for display formatting"]:::main N_ExtractfromEntryNumber_Node0 -- Yes --> N_ExtractfromEntryNumber_Node0_action N_ExtractfromEntryNumber_Node0_action --> E_ExtractfromEntryNumber S_ExtractfromEntryNumber --> N_ExtractfromEntryNumber_Node0 N_ExtractfromEntryNumber_Node1{"Entry number field is not spaces"}:::decision N_ExtractfromEntryNumber_Node1_action["Use entry number as the saved bond
number"]:::main N_ExtractfromEntryNumber_Node1 -- Yes --> N_ExtractfromEntryNumber_Node1_action N_ExtractfromEntryNumber_Node1_action --> E_ExtractfromEntryNumber N_ExtractfromEntryNumber_Node0 -- No --> N_ExtractfromEntryNumber_Node1 N_ExtractfromEntryNumber_Node1 -- No --> E_ExtractfromEntryNumber
information"}:::decision N_ExtractfromEntryNumber_Node0_action["The entry number is saved as the
bond number for display formatting"]:::main N_ExtractfromEntryNumber_Node0 -- Yes --> N_ExtractfromEntryNumber_Node0_action N_ExtractfromEntryNumber_Node0_action --> E_ExtractfromEntryNumber S_ExtractfromEntryNumber --> N_ExtractfromEntryNumber_Node0 N_ExtractfromEntryNumber_Node1{"Entry number field is not spaces"}:::decision N_ExtractfromEntryNumber_Node1_action["Use entry number as the saved bond
number"]:::main N_ExtractfromEntryNumber_Node1 -- Yes --> N_ExtractfromEntryNumber_Node1_action N_ExtractfromEntryNumber_Node1_action --> E_ExtractfromEntryNumber N_ExtractfromEntryNumber_Node0 -- No --> N_ExtractfromEntryNumber_Node1 N_ExtractfromEntryNumber_Node1 -- No --> E_ExtractfromEntryNumber
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo entry number field is not spaces
WHEN:
The system extracts bond number information
THEN:
The entry number is saved as the bond number for display formatting
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo data is available for equipment
WHEN:
Entry number field is not spaces
THEN:
Use entry number as the saved bond number
β Consolidated Acceptance Criteria
- The system extracts bond number information → the in-bond control number is saved as the bond number for display formatting
- In-bond control number field is not spaces → use in-bond control number as the saved bond number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractfromInBondControlNumber(["Start Step"])
E_ExtractfromInBondControlNumber(["End Step"])
N_ExtractfromInBondControlNumber_Node0{"The system extracts bond number
information"}:::decision N_ExtractfromInBondControlNumber_Node0_action["The in-bond control number is saved
as the bond number for display
formatting"]:::main N_ExtractfromInBondControlNumber_Node0 -- Yes --> N_ExtractfromInBondControlNumber_Node0_action N_ExtractfromInBondControlNumber_Node0_action --> E_ExtractfromInBondControlNumber S_ExtractfromInBondControlNumber --> N_ExtractfromInBondControlNumber_Node0 N_ExtractfromInBondControlNumber_Node1{"In-bond control number field is not
spaces"}:::decision N_ExtractfromInBondControlNumber_Node1_action["Use in-bond control number as the
saved bond number"]:::main N_ExtractfromInBondControlNumber_Node1 -- Yes --> N_ExtractfromInBondControlNumber_Node1_action N_ExtractfromInBondControlNumber_Node1_action --> E_ExtractfromInBondControlNumber N_ExtractfromInBondControlNumber_Node0 -- No --> N_ExtractfromInBondControlNumber_Node1 N_ExtractfromInBondControlNumber_Node1 -- No --> E_ExtractfromInBondControlNumber
information"}:::decision N_ExtractfromInBondControlNumber_Node0_action["The in-bond control number is saved
as the bond number for display
formatting"]:::main N_ExtractfromInBondControlNumber_Node0 -- Yes --> N_ExtractfromInBondControlNumber_Node0_action N_ExtractfromInBondControlNumber_Node0_action --> E_ExtractfromInBondControlNumber S_ExtractfromInBondControlNumber --> N_ExtractfromInBondControlNumber_Node0 N_ExtractfromInBondControlNumber_Node1{"In-bond control number field is not
spaces"}:::decision N_ExtractfromInBondControlNumber_Node1_action["Use in-bond control number as the
saved bond number"]:::main N_ExtractfromInBondControlNumber_Node1 -- Yes --> N_ExtractfromInBondControlNumber_Node1_action N_ExtractfromInBondControlNumber_Node1_action --> E_ExtractfromInBondControlNumber N_ExtractfromInBondControlNumber_Node0 -- No --> N_ExtractfromInBondControlNumber_Node1 N_ExtractfromInBondControlNumber_Node1 -- No --> E_ExtractfromInBondControlNumber
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo entry number is spaces and in-bond control number is not spaces
WHEN:
The system extracts bond number information
THEN:
The in-bond control number is saved as the bond number for display formatting
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo data is available and entry number is spaces
WHEN:
In-bond control number field is not spaces
THEN:
Use in-bond control number as the saved bond number
β Consolidated Acceptance Criteria
- The system checks user authorization for special manifests → if user is not authorized for special manifests, generate authorization error message 43, otherwise proceed with IT export manifest creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifSpecialManifestRequired(["Start Step"])
E_CheckifSpecialManifestRequired(["End Step"])
N_CheckifSpecialManifestRequired_Node0{"The system checks user
authorization for special manifests"}:::decision N_CheckifSpecialManifestRequired_Node0_action["If user is not authorized for
special manifests, generate
authorization error message 43,
otherwise proceed with IT export
manifest creation"]:::main N_CheckifSpecialManifestRequired_Node0 -- Yes --> N_CheckifSpecialManifestRequired_Node0_action N_CheckifSpecialManifestRequired_Node0_action --> E_CheckifSpecialManifestRequired S_CheckifSpecialManifestRequired --> N_CheckifSpecialManifestRequired_Node0 N_CheckifSpecialManifestRequired_Node0 -- No --> E_CheckifSpecialManifestRequired
authorization for special manifests"}:::decision N_CheckifSpecialManifestRequired_Node0_action["If user is not authorized for
special manifests, generate
authorization error message 43,
otherwise proceed with IT export
manifest creation"]:::main N_CheckifSpecialManifestRequired_Node0 -- Yes --> N_CheckifSpecialManifestRequired_Node0_action N_CheckifSpecialManifestRequired_Node0_action --> E_CheckifSpecialManifestRequired S_CheckifSpecialManifestRequired --> N_CheckifSpecialManifestRequired_Node0 N_CheckifSpecialManifestRequired_Node0 -- No --> E_CheckifSpecialManifestRequired
File: GCX003.cbl
GIVEN:
IT cargo requires special manifest processing and action is send
WHEN:
The system checks user authorization for special manifests
THEN:
If user is not authorized for special manifests, generate authorization error message 43, otherwise proceed with IT export manifest creation
β Consolidated Acceptance Criteria
- The system checks user authorization for port change manifests → if user is not authorized for special manifests, generate authorization error message 43, otherwise proceed with port change manifest creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckPortChangeRequirements(["Start Step"])
E_CheckPortChangeRequirements(["End Step"])
N_CheckPortChangeRequirements_Node0{"The system checks user
authorization for port change
manifests"}:::decision N_CheckPortChangeRequirements_Node0_action["If user is not authorized for
special manifests, generate
authorization error message 43,
otherwise proceed with port change
manifest creation"]:::main N_CheckPortChangeRequirements_Node0 -- Yes --> N_CheckPortChangeRequirements_Node0_action N_CheckPortChangeRequirements_Node0_action --> E_CheckPortChangeRequirements S_CheckPortChangeRequirements --> N_CheckPortChangeRequirements_Node0 N_CheckPortChangeRequirements_Node0 -- No --> E_CheckPortChangeRequirements
authorization for port change
manifests"}:::decision N_CheckPortChangeRequirements_Node0_action["If user is not authorized for
special manifests, generate
authorization error message 43,
otherwise proceed with port change
manifest creation"]:::main N_CheckPortChangeRequirements_Node0 -- Yes --> N_CheckPortChangeRequirements_Node0_action N_CheckPortChangeRequirements_Node0_action --> E_CheckPortChangeRequirements S_CheckPortChangeRequirements --> N_CheckPortChangeRequirements_Node0 N_CheckPortChangeRequirements_Node0 -- No --> E_CheckPortChangeRequirements
File: GCX003.cbl
GIVEN:
TE cargo requires port change processing and action is send
WHEN:
The system checks user authorization for port change manifests
THEN:
If user is not authorized for special manifests, generate authorization error message 43, otherwise proceed with port change manifest creation
β Consolidated Acceptance Criteria
- The system checks user authorization for diversion manifests → if user is not authorized for special manifests, generate authorization error message 43, otherwise proceed with diversion manifest creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckDiversionRequirements(["Start Step"])
E_CheckDiversionRequirements(["End Step"])
N_CheckDiversionRequirements_Node0{"The system checks user
authorization for diversion
manifests"}:::decision N_CheckDiversionRequirements_Node0_action["If user is not authorized for
special manifests, generate
authorization error message 43,
otherwise proceed with diversion
manifest creation"]:::main N_CheckDiversionRequirements_Node0 -- Yes --> N_CheckDiversionRequirements_Node0_action N_CheckDiversionRequirements_Node0_action --> E_CheckDiversionRequirements S_CheckDiversionRequirements --> N_CheckDiversionRequirements_Node0 N_CheckDiversionRequirements_Node0 -- No --> E_CheckDiversionRequirements
authorization for diversion
manifests"}:::decision N_CheckDiversionRequirements_Node0_action["If user is not authorized for
special manifests, generate
authorization error message 43,
otherwise proceed with diversion
manifest creation"]:::main N_CheckDiversionRequirements_Node0 -- Yes --> N_CheckDiversionRequirements_Node0_action N_CheckDiversionRequirements_Node0_action --> E_CheckDiversionRequirements S_CheckDiversionRequirements --> N_CheckDiversionRequirements_Node0 N_CheckDiversionRequirements_Node0 -- No --> E_CheckDiversionRequirements
File: GCX003.cbl
GIVEN:
TR cargo requires diversion processing and action is send
WHEN:
The system checks user authorization for diversion manifests
THEN:
If user is not authorized for special manifests, generate authorization error message 43, otherwise proceed with diversion manifest creation
β Consolidated Acceptance Criteria
- The system validates MT bond requirements → generate error message 25 for invalid MT bond vessel configuration
- The system validates TE bond requirements → generate error message 17 for invalid TE bond vessel name
- The system validates bond vessel requirements → generate error message 17 for invalid vessel name configuration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateVesselName(["Start Step"])
E_ValidateVesselName(["End Step"])
N_ValidateVesselName_Node0{"The system validates MT bond
requirements"}:::decision N_ValidateVesselName_Node0_action["Generate error message 25 for
invalid MT bond vessel configuration"]:::main N_ValidateVesselName_Node0 -- Yes --> N_ValidateVesselName_Node0_action N_ValidateVesselName_Node0_action --> E_ValidateVesselName S_ValidateVesselName --> N_ValidateVesselName_Node0 N_ValidateVesselName_Node1{"The system validates TE bond
requirements"}:::decision N_ValidateVesselName_Node1_action["Generate error message 17 for
invalid TE bond vessel name"]:::main N_ValidateVesselName_Node1 -- Yes --> N_ValidateVesselName_Node1_action N_ValidateVesselName_Node1_action --> E_ValidateVesselName N_ValidateVesselName_Node0 -- No --> N_ValidateVesselName_Node1 N_ValidateVesselName_Node2{"The system validates bond vessel
requirements"}:::decision N_ValidateVesselName_Node2_action["Generate error message 17 for
invalid vessel name configuration"]:::main N_ValidateVesselName_Node2 -- Yes --> N_ValidateVesselName_Node2_action N_ValidateVesselName_Node2_action --> E_ValidateVesselName N_ValidateVesselName_Node1 -- No --> N_ValidateVesselName_Node2 N_ValidateVesselName_Node2 -- No --> E_ValidateVesselName
requirements"}:::decision N_ValidateVesselName_Node0_action["Generate error message 25 for
invalid MT bond vessel configuration"]:::main N_ValidateVesselName_Node0 -- Yes --> N_ValidateVesselName_Node0_action N_ValidateVesselName_Node0_action --> E_ValidateVesselName S_ValidateVesselName --> N_ValidateVesselName_Node0 N_ValidateVesselName_Node1{"The system validates TE bond
requirements"}:::decision N_ValidateVesselName_Node1_action["Generate error message 17 for
invalid TE bond vessel name"]:::main N_ValidateVesselName_Node1 -- Yes --> N_ValidateVesselName_Node1_action N_ValidateVesselName_Node1_action --> E_ValidateVesselName N_ValidateVesselName_Node0 -- No --> N_ValidateVesselName_Node1 N_ValidateVesselName_Node2{"The system validates bond vessel
requirements"}:::decision N_ValidateVesselName_Node2_action["Generate error message 17 for
invalid vessel name configuration"]:::main N_ValidateVesselName_Node2 -- Yes --> N_ValidateVesselName_Node2_action N_ValidateVesselName_Node2_action --> E_ValidateVesselName N_ValidateVesselName_Node1 -- No --> N_ValidateVesselName_Node2 N_ValidateVesselName_Node2 -- No --> E_ValidateVesselName
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has MT bond type and vessel name is not 'TRAIN' and not spaces and crossing port matches cargo location
WHEN:
The system validates MT bond requirements
THEN:
Generate error message 25 for invalid MT bond vessel configuration
File: GCX003.cbl
GIVEN:
Cargo has TE bond type and vessel name character 23 is 'T'
WHEN:
The system validates TE bond requirements
THEN:
Generate error message 17 for invalid TE bond vessel name
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo bond type is not 'TE' and not 'MT' and vessel name is not 'TRAIN'
WHEN:
The system validates bond vessel requirements
THEN:
Generate error message 17 for invalid vessel name configuration
β Consolidated Acceptance Criteria
- The system checks if TR (Transport Record) has already been created for IT bond (GCUSRT-TR-CREATED-FOR-IT equals 'Y') → skip IT bond processing and continue with next equipment item
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ITBondAlreadyCreatedforTrain(["Start Step"])
E_ITBondAlreadyCreatedforTrain(["End Step"])
N_ITBondAlreadyCreatedforTrain_Node0{"The system checks if TR Transport
Record has already been created for
IT bond GCUSRT-TR-CREATED-FOR-IT
equals Y"}:::decision N_ITBondAlreadyCreatedforTrain_Node0_action["Skip IT bond processing and
continue with next equipment item"]:::main N_ITBondAlreadyCreatedforTrain_Node0 -- Yes --> N_ITBondAlreadyCreatedforTrain_Node0_action N_ITBondAlreadyCreatedforTrain_Node0_action --> E_ITBondAlreadyCreatedforTrain S_ITBondAlreadyCreatedforTrain --> N_ITBondAlreadyCreatedforTrain_Node0 N_ITBondAlreadyCreatedforTrain_Node0 -- No --> E_ITBondAlreadyCreatedforTrain
Record has already been created for
IT bond GCUSRT-TR-CREATED-FOR-IT
equals Y"}:::decision N_ITBondAlreadyCreatedforTrain_Node0_action["Skip IT bond processing and
continue with next equipment item"]:::main N_ITBondAlreadyCreatedforTrain_Node0 -- Yes --> N_ITBondAlreadyCreatedforTrain_Node0_action N_ITBondAlreadyCreatedforTrain_Node0_action --> E_ITBondAlreadyCreatedforTrain S_ITBondAlreadyCreatedforTrain --> N_ITBondAlreadyCreatedforTrain_Node0 N_ITBondAlreadyCreatedforTrain_Node0 -- No --> E_ITBondAlreadyCreatedforTrain
File: GCX003.cbl
GIVEN:
An IT bond cargo is detected for processing
WHEN:
The system checks if TR (Transport Record) has already been created for IT bond (GCUSRT-TR-CREATED-FOR-IT equals 'Y')
THEN:
- Skip it bond processing
- Continue with next equipment item
β Consolidated Acceptance Criteria
- The request action is evaluated (REQ-ACTION-SEND vs REQ-ACTION-REPORT) → route to either authorization check for SEND actions or generate report-only message for REPORT actions
- If the request action type → if action is REPORT, generate report message; if action is SEND, proceed to authorization check
- If the request action type → if request action is SEND, proceed to create special manifest spawn; if request action is REPORT, create warning message only
- If the request action type → if action is REPORT, generate warning message 18 for TR bond detour detection; if action is SEND, check user authorization for special manifests
- The system checks the request action type → if action is REPORT, generate detour report message; if action is SEND, check user authorization
- If the request action type → the system should route to report generation if action is REPORT, or to authorization check if action is SEND
- The request action type is being evaluated → branch to SEND action processing if REQ-ACTION-SEND, REPORT action processing if REQ-ACTION-REPORT, or OTHER action processing for any other action type
- The request action type and error status are evaluated → set train error classification if errors exist, train sent classification for send actions, or train report classification for report actions
- If the request action type and error append status → the system sets train error type if error append is true, train sent type if action is send, or train report type if action is report
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RequestActionType(["Start Step"])
E_RequestActionType(["End Step"])
N_RequestActionType_Node0{"The request action is evaluated
REQ-ACTION-SEND vs REQ-ACTION-REPORT"}:::decision N_RequestActionType_Node0_action["Route to either authorization check
for SEND actions or generate
report-only message for REPORT
actions"]:::main N_RequestActionType_Node0 -- Yes --> N_RequestActionType_Node0_action N_RequestActionType_Node0_action --> E_RequestActionType S_RequestActionType --> N_RequestActionType_Node0 N_RequestActionType_Node1{"The system evaluates the request
action type"}:::decision N_RequestActionType_Node1_action["If action is REPORT, generate
report message if action is SEND,
proceed to authorization check"]:::main N_RequestActionType_Node1 -- Yes --> N_RequestActionType_Node1_action N_RequestActionType_Node1_action --> E_RequestActionType N_RequestActionType_Node0 -- No --> N_RequestActionType_Node1 N_RequestActionType_Node2{"The system evaluates the request
action type"}:::decision N_RequestActionType_Node2_action["If request action is SEND, proceed
to create special manifest spawn if
request action is REPORT, create
warning message only"]:::main N_RequestActionType_Node2 -- Yes --> N_RequestActionType_Node2_action N_RequestActionType_Node2_action --> E_RequestActionType N_RequestActionType_Node1 -- No --> N_RequestActionType_Node2 N_RequestActionType_Node3{"The system evaluates the request
action type"}:::decision N_RequestActionType_Node3_action["If action is REPORT, generate
warning message 18 for TR bond
detour detection if action is SEND,
check user authorization for special
manifests"]:::main N_RequestActionType_Node3 -- Yes --> N_RequestActionType_Node3_action N_RequestActionType_Node3_action --> E_RequestActionType N_RequestActionType_Node2 -- No --> N_RequestActionType_Node3 N_RequestActionType_Node4{"The system checks the request
action type"}:::decision N_RequestActionType_Node4_action["If action is REPORT, generate
detour report message if action is
SEND, check user authorization"]:::main N_RequestActionType_Node4 -- Yes --> N_RequestActionType_Node4_action N_RequestActionType_Node4_action --> E_RequestActionType N_RequestActionType_Node3 -- No --> N_RequestActionType_Node4 N_RequestActionType_Node5{"The system evaluates the request
action type"}:::decision N_RequestActionType_Node5_action["The system should route to report
generation if action is REPORT, or
to authorization check if action is
SEND"]:::main N_RequestActionType_Node5 -- Yes --> N_RequestActionType_Node5_action N_RequestActionType_Node5_action --> E_RequestActionType N_RequestActionType_Node4 -- No --> N_RequestActionType_Node5 N_RequestActionType_Node6{"The request action type is being
evaluated"}:::decision N_RequestActionType_Node6_action["Branch to SEND action processing if
REQ-ACTION-SEND, REPORT action
processing if REQ-ACTION-REPORT, or
OTHER action processing for any
other action type"]:::main N_RequestActionType_Node6 -- Yes --> N_RequestActionType_Node6_action N_RequestActionType_Node6_action --> E_RequestActionType N_RequestActionType_Node5 -- No --> N_RequestActionType_Node6 N_RequestActionType_Node7{"The request action type and error
status are evaluated"}:::decision N_RequestActionType_Node7_action["Set train error classification if
errors exist, train sent
classification for send actions, or
train report classification for
report actions"]:::exclusion N_RequestActionType_Node7 -- Yes -->|Alternative| N_RequestActionType_Node7_action N_RequestActionType_Node7_action --> E_RequestActionType N_RequestActionType_Node6 -- No --> N_RequestActionType_Node7 N_RequestActionType_Node8{"The system evaluates the request
action type and error append status"}:::decision N_RequestActionType_Node8_action["The system sets train error type if
error append is true, train sent
type if action is send, or train
report type if action is report"]:::exclusion N_RequestActionType_Node8 -- Yes -->|Alternative| N_RequestActionType_Node8_action N_RequestActionType_Node8_action --> E_RequestActionType N_RequestActionType_Node7 -- No --> N_RequestActionType_Node8 N_RequestActionType_Node8 -- No --> E_RequestActionType
REQ-ACTION-SEND vs REQ-ACTION-REPORT"}:::decision N_RequestActionType_Node0_action["Route to either authorization check
for SEND actions or generate
report-only message for REPORT
actions"]:::main N_RequestActionType_Node0 -- Yes --> N_RequestActionType_Node0_action N_RequestActionType_Node0_action --> E_RequestActionType S_RequestActionType --> N_RequestActionType_Node0 N_RequestActionType_Node1{"The system evaluates the request
action type"}:::decision N_RequestActionType_Node1_action["If action is REPORT, generate
report message if action is SEND,
proceed to authorization check"]:::main N_RequestActionType_Node1 -- Yes --> N_RequestActionType_Node1_action N_RequestActionType_Node1_action --> E_RequestActionType N_RequestActionType_Node0 -- No --> N_RequestActionType_Node1 N_RequestActionType_Node2{"The system evaluates the request
action type"}:::decision N_RequestActionType_Node2_action["If request action is SEND, proceed
to create special manifest spawn if
request action is REPORT, create
warning message only"]:::main N_RequestActionType_Node2 -- Yes --> N_RequestActionType_Node2_action N_RequestActionType_Node2_action --> E_RequestActionType N_RequestActionType_Node1 -- No --> N_RequestActionType_Node2 N_RequestActionType_Node3{"The system evaluates the request
action type"}:::decision N_RequestActionType_Node3_action["If action is REPORT, generate
warning message 18 for TR bond
detour detection if action is SEND,
check user authorization for special
manifests"]:::main N_RequestActionType_Node3 -- Yes --> N_RequestActionType_Node3_action N_RequestActionType_Node3_action --> E_RequestActionType N_RequestActionType_Node2 -- No --> N_RequestActionType_Node3 N_RequestActionType_Node4{"The system checks the request
action type"}:::decision N_RequestActionType_Node4_action["If action is REPORT, generate
detour report message if action is
SEND, check user authorization"]:::main N_RequestActionType_Node4 -- Yes --> N_RequestActionType_Node4_action N_RequestActionType_Node4_action --> E_RequestActionType N_RequestActionType_Node3 -- No --> N_RequestActionType_Node4 N_RequestActionType_Node5{"The system evaluates the request
action type"}:::decision N_RequestActionType_Node5_action["The system should route to report
generation if action is REPORT, or
to authorization check if action is
SEND"]:::main N_RequestActionType_Node5 -- Yes --> N_RequestActionType_Node5_action N_RequestActionType_Node5_action --> E_RequestActionType N_RequestActionType_Node4 -- No --> N_RequestActionType_Node5 N_RequestActionType_Node6{"The request action type is being
evaluated"}:::decision N_RequestActionType_Node6_action["Branch to SEND action processing if
REQ-ACTION-SEND, REPORT action
processing if REQ-ACTION-REPORT, or
OTHER action processing for any
other action type"]:::main N_RequestActionType_Node6 -- Yes --> N_RequestActionType_Node6_action N_RequestActionType_Node6_action --> E_RequestActionType N_RequestActionType_Node5 -- No --> N_RequestActionType_Node6 N_RequestActionType_Node7{"The request action type and error
status are evaluated"}:::decision N_RequestActionType_Node7_action["Set train error classification if
errors exist, train sent
classification for send actions, or
train report classification for
report actions"]:::exclusion N_RequestActionType_Node7 -- Yes -->|Alternative| N_RequestActionType_Node7_action N_RequestActionType_Node7_action --> E_RequestActionType N_RequestActionType_Node6 -- No --> N_RequestActionType_Node7 N_RequestActionType_Node8{"The system evaluates the request
action type and error append status"}:::decision N_RequestActionType_Node8_action["The system sets train error type if
error append is true, train sent
type if action is send, or train
report type if action is report"]:::exclusion N_RequestActionType_Node8 -- Yes -->|Alternative| N_RequestActionType_Node8_action N_RequestActionType_Node8_action --> E_RequestActionType N_RequestActionType_Node7 -- No --> N_RequestActionType_Node8 N_RequestActionType_Node8 -- No --> E_RequestActionType
File: GCX003.cbl
GIVEN:
An IT bond cargo requires processing and no TR has been created yet
WHEN:
The request action is evaluated (REQ-ACTION-SEND vs REQ-ACTION-REPORT)
THEN:
Route to either authorization check for SEND actions or generate report-only message for REPORT actions
File: GCX003.cbl
GIVEN:
Cargo qualifies for TR bond diversion processing
WHEN:
The system evaluates the request action type
THEN:
If action is REPORT, generate report message; if action is SEND, proceed to authorization check
File: GCX003.cbl
GIVEN:
User is authorized and detour processing is required
WHEN:
The system evaluates the request action type
THEN:
If request action is SEND, proceed to create special manifest spawn; if request action is REPORT, create warning message only
File: GCX003.cbl
GIVEN:
TR bond cargo with release status is ready for detour processing
WHEN:
The system evaluates the request action type
THEN:
If action is REPORT, generate warning message 18 for TR bond detour detection; if action is SEND, check user authorization for special manifests
File: GCX003.cbl
GIVEN:
A cargo record with release status for border clearance
WHEN:
The system checks the request action type
THEN:
If action is REPORT, generate detour report message; if action is SEND, check user authorization
File: GCX003.cbl
GIVEN:
A US-US movement detour scenario is identified
WHEN:
The system evaluates the request action type
THEN:
The system should route to report generation if action is REPORT, or to authorization check if action is SEND
File: GCX003.cbl
GIVEN:
A report header line 3 is being populated
WHEN:
The request action type is being evaluated
THEN:
Branch to SEND action processing if REQ-ACTION-SEND, REPORT action processing if REQ-ACTION-REPORT, or OTHER action processing for any other action type
File: GCX003.cbl
GIVEN:
A report is being prepared for distribution
WHEN:
- The request action type
- Error status are evaluated
THEN:
Set train error classification if errors exist, train sent classification for send actions, or train report classification for report actions
File: GCX003.cbl
GIVEN:
A report is being prepared for distribution
WHEN:
- The system evaluates the request action type
- Error append status
THEN:
The system sets train error type if error append is true, train sent type if action is send, or train report type if action is report
β Consolidated Acceptance Criteria
- IT bond processing requires special manifest creation → generate message 23 (special manifest creation), set IT export spawn flag, and initiate special manifest creation process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateSpecialManifestCreationMessage(["Start Step"])
E_GenerateSpecialManifestCreationMessage(["End Step"])
N_GenerateSpecialManifestCreationMessage_Node0{"IT bond processing requires special
manifest creation"}:::decision N_GenerateSpecialManifestCreationMessage_Node0_action["Generate message 23 special
manifest creation, set IT export
spawn flag, and initiate special
manifest creation process"]:::main N_GenerateSpecialManifestCreationMessage_Node0 -- Yes --> N_GenerateSpecialManifestCreationMessage_Node0_action N_GenerateSpecialManifestCreationMessage_Node0_action --> E_GenerateSpecialManifestCreationMessage S_GenerateSpecialManifestCreationMessage --> N_GenerateSpecialManifestCreationMessage_Node0 N_GenerateSpecialManifestCreationMessage_Node0 -- No --> E_GenerateSpecialManifestCreationMessage
manifest creation"}:::decision N_GenerateSpecialManifestCreationMessage_Node0_action["Generate message 23 special
manifest creation, set IT export
spawn flag, and initiate special
manifest creation process"]:::main N_GenerateSpecialManifestCreationMessage_Node0 -- Yes --> N_GenerateSpecialManifestCreationMessage_Node0_action N_GenerateSpecialManifestCreationMessage_Node0_action --> E_GenerateSpecialManifestCreationMessage S_GenerateSpecialManifestCreationMessage --> N_GenerateSpecialManifestCreationMessage_Node0 N_GenerateSpecialManifestCreationMessage_Node0 -- No --> E_GenerateSpecialManifestCreationMessage
File: GCX003.cbl
GIVEN:
User is authorized for special manifests and request action is SEND
WHEN:
IT bond processing requires special manifest creation
THEN:
Generate message 23 (special manifest creation), set IT export spawn flag, and initiate special manifest creation process
β Consolidated Acceptance Criteria
- The request action is REPORT (not SEND) → generate message 24 (report-only notification) and add equipment line to report
- The request action is REPORT instead of SEND → the system should generate appropriate report messages (18, 19, 24, 50) without creating special manifests
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateReportOnlyMessage(["Start Step"])
E_GenerateReportOnlyMessage(["End Step"])
N_GenerateReportOnlyMessage_Node0{"The request action is REPORT not
SEND"}:::decision N_GenerateReportOnlyMessage_Node0_action["Generate message 24 report-only
notification and add equipment line
to report"]:::main N_GenerateReportOnlyMessage_Node0 -- Yes --> N_GenerateReportOnlyMessage_Node0_action N_GenerateReportOnlyMessage_Node0_action --> E_GenerateReportOnlyMessage S_GenerateReportOnlyMessage --> N_GenerateReportOnlyMessage_Node0 N_GenerateReportOnlyMessage_Node1{"The request action is REPORT
instead of SEND"}:::decision N_GenerateReportOnlyMessage_Node1_action["The system should generate
appropriate report messages 18, 19,
24, 50 without creating special
manifests"]:::main N_GenerateReportOnlyMessage_Node1 -- Yes --> N_GenerateReportOnlyMessage_Node1_action N_GenerateReportOnlyMessage_Node1_action --> E_GenerateReportOnlyMessage N_GenerateReportOnlyMessage_Node0 -- No --> N_GenerateReportOnlyMessage_Node1 N_GenerateReportOnlyMessage_Node1 -- No --> E_GenerateReportOnlyMessage
SEND"}:::decision N_GenerateReportOnlyMessage_Node0_action["Generate message 24 report-only
notification and add equipment line
to report"]:::main N_GenerateReportOnlyMessage_Node0 -- Yes --> N_GenerateReportOnlyMessage_Node0_action N_GenerateReportOnlyMessage_Node0_action --> E_GenerateReportOnlyMessage S_GenerateReportOnlyMessage --> N_GenerateReportOnlyMessage_Node0 N_GenerateReportOnlyMessage_Node1{"The request action is REPORT
instead of SEND"}:::decision N_GenerateReportOnlyMessage_Node1_action["The system should generate
appropriate report messages 18, 19,
24, 50 without creating special
manifests"]:::main N_GenerateReportOnlyMessage_Node1 -- Yes --> N_GenerateReportOnlyMessage_Node1_action N_GenerateReportOnlyMessage_Node1_action --> E_GenerateReportOnlyMessage N_GenerateReportOnlyMessage_Node0 -- No --> N_GenerateReportOnlyMessage_Node1 N_GenerateReportOnlyMessage_Node1 -- No --> E_GenerateReportOnlyMessage
File: GCX003.cbl
GIVEN:
IT bond cargo requires processing and no TR has been created
WHEN:
The request action is REPORT (not SEND)
THEN:
Generate message 24 (report-only notification) and add equipment line to report
File: GCX003.cbl
GIVEN:
Special manifest processing is required
WHEN:
The request action is REPORT instead of SEND
THEN:
The system should generate appropriate report messages (18, 19, 24, 50) without creating special manifests
β Consolidated Acceptance Criteria
- The system queries the user security table GCSTBRT-US with the user's ACF2 ID → the system retrieves the user's security record containing authorization flags and permissions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReadUserSecurityTableGCSTBRTUS(["Start Step"])
E_ReadUserSecurityTableGCSTBRTUS(["End Step"])
N_ReadUserSecurityTableGCSTBRTUS_Node0{"The system queries the user
security table GCSTBRT-US with the
user s ACF2 ID"}:::decision N_ReadUserSecurityTableGCSTBRTUS_Node0_action["The system retrieves the user s
security record containing
authorization flags and permissions"]:::main N_ReadUserSecurityTableGCSTBRTUS_Node0 -- Yes --> N_ReadUserSecurityTableGCSTBRTUS_Node0_action N_ReadUserSecurityTableGCSTBRTUS_Node0_action --> E_ReadUserSecurityTableGCSTBRTUS S_ReadUserSecurityTableGCSTBRTUS --> N_ReadUserSecurityTableGCSTBRTUS_Node0 N_ReadUserSecurityTableGCSTBRTUS_Node0 -- No --> E_ReadUserSecurityTableGCSTBRTUS
security table GCSTBRT-US with the
user s ACF2 ID"}:::decision N_ReadUserSecurityTableGCSTBRTUS_Node0_action["The system retrieves the user s
security record containing
authorization flags and permissions"]:::main N_ReadUserSecurityTableGCSTBRTUS_Node0 -- Yes --> N_ReadUserSecurityTableGCSTBRTUS_Node0_action N_ReadUserSecurityTableGCSTBRTUS_Node0_action --> E_ReadUserSecurityTableGCSTBRTUS S_ReadUserSecurityTableGCSTBRTUS --> N_ReadUserSecurityTableGCSTBRTUS_Node0 N_ReadUserSecurityTableGCSTBRTUS_Node0 -- No --> E_ReadUserSecurityTableGCSTBRTUS
File: GCX003.cbl
GIVEN:
A user ACF2 ID is provided for authorization check
WHEN:
The system queries the user security table GCSTBRT-US with the user's ACF2 ID
THEN:
- The system retrieves the user's security record containing authorization flags
- Permissions
β Consolidated Acceptance Criteria
- The system checks if a valid user security record was returned from the database → the system determines if the user has a valid security profile or should use default authorization settings
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UserRecordFound(["Start Step"])
E_UserRecordFound(["End Step"])
N_UserRecordFound_Node0{"The system checks if a valid user
security record was returned from
the database"}:::decision N_UserRecordFound_Node0_action["The system determines if the user
has a valid security profile or
should use default authorization
settings"]:::main N_UserRecordFound_Node0 -- Yes --> N_UserRecordFound_Node0_action N_UserRecordFound_Node0_action --> E_UserRecordFound S_UserRecordFound --> N_UserRecordFound_Node0 N_UserRecordFound_Node0 -- No --> E_UserRecordFound
security record was returned from
the database"}:::decision N_UserRecordFound_Node0_action["The system determines if the user
has a valid security profile or
should use default authorization
settings"]:::main N_UserRecordFound_Node0 -- Yes --> N_UserRecordFound_Node0_action N_UserRecordFound_Node0_action --> E_UserRecordFound S_UserRecordFound --> N_UserRecordFound_Node0 N_UserRecordFound_Node0 -- No --> E_UserRecordFound
File: GCX003.cbl
GIVEN:
A query has been made to retrieve user security information
WHEN:
The system checks if a valid user security record was returned from the database
THEN:
The system determines if the user has a valid security profile or should use default authorization settings
β Consolidated Acceptance Criteria
- The system processes the user security information → the system copies the user security segment data to working storage for authorization processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeUserAuthorizationFlags(["Start Step"])
E_InitializeUserAuthorizationFlags(["End Step"])
N_InitializeUserAuthorizationFlags_Node0{"The system processes the user
security information"}:::decision N_InitializeUserAuthorizationFlags_Node0_action["The system copies the user security
segment data to working storage for
authorization processing"]:::main N_InitializeUserAuthorizationFlags_Node0 -- Yes --> N_InitializeUserAuthorizationFlags_Node0_action N_InitializeUserAuthorizationFlags_Node0_action --> E_InitializeUserAuthorizationFlags S_InitializeUserAuthorizationFlags --> N_InitializeUserAuthorizationFlags_Node0 N_InitializeUserAuthorizationFlags_Node0 -- No --> E_InitializeUserAuthorizationFlags
security information"}:::decision N_InitializeUserAuthorizationFlags_Node0_action["The system copies the user security
segment data to working storage for
authorization processing"]:::main N_InitializeUserAuthorizationFlags_Node0 -- Yes --> N_InitializeUserAuthorizationFlags_Node0_action N_InitializeUserAuthorizationFlags_Node0_action --> E_InitializeUserAuthorizationFlags S_InitializeUserAuthorizationFlags --> N_InitializeUserAuthorizationFlags_Node0 N_InitializeUserAuthorizationFlags_Node0 -- No --> E_InitializeUserAuthorizationFlags
File: GCX003.cbl
GIVEN:
A valid user security record exists in the database
WHEN:
The system processes the user security information
THEN:
The system copies the user security segment data to working storage for authorization processing
β Consolidated Acceptance Criteria
- The system checks the UTF-SPEC-MANI field in the user's security profile → the system determines if the field contains 'S' indicating special manifest authorization or any other value indicating no authorization
- The system validates special manifest authorization AND the request action is SEND AND the user's UTF-SPEC-MANI field is not equal to 'S' AND the AEI train send flag is set to NO → the system sets the user as NOT authorized for special manifest creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckUTFSPECMANIField(["Start Step"])
E_CheckUTFSPECMANIField(["End Step"])
N_CheckUTFSPECMANIField_Node0{"The system checks the UTF-SPEC-MANI
field in the user s security profile"}:::decision N_CheckUTFSPECMANIField_Node0_action["The system determines if the field
contains S indicating special
manifest authorization or any other
value indicating no authorization"]:::main N_CheckUTFSPECMANIField_Node0 -- Yes --> N_CheckUTFSPECMANIField_Node0_action N_CheckUTFSPECMANIField_Node0_action --> E_CheckUTFSPECMANIField S_CheckUTFSPECMANIField --> N_CheckUTFSPECMANIField_Node0 N_CheckUTFSPECMANIField_Node1{"The system validates special
manifest authorization AND the
request action is SEND AND the user
s UTF-SPEC-MANI field is not equal
to S AND the AEI train send flag is
set to NO"}:::decision N_CheckUTFSPECMANIField_Node1_action["The system sets the user as NOT
authorized for special manifest
creation"]:::main N_CheckUTFSPECMANIField_Node1 -- Yes --> N_CheckUTFSPECMANIField_Node1_action N_CheckUTFSPECMANIField_Node1_action --> E_CheckUTFSPECMANIField N_CheckUTFSPECMANIField_Node0 -- No --> N_CheckUTFSPECMANIField_Node1 N_CheckUTFSPECMANIField_Node1 -- No --> E_CheckUTFSPECMANIField
field in the user s security profile"}:::decision N_CheckUTFSPECMANIField_Node0_action["The system determines if the field
contains S indicating special
manifest authorization or any other
value indicating no authorization"]:::main N_CheckUTFSPECMANIField_Node0 -- Yes --> N_CheckUTFSPECMANIField_Node0_action N_CheckUTFSPECMANIField_Node0_action --> E_CheckUTFSPECMANIField S_CheckUTFSPECMANIField --> N_CheckUTFSPECMANIField_Node0 N_CheckUTFSPECMANIField_Node1{"The system validates special
manifest authorization AND the
request action is SEND AND the user
s UTF-SPEC-MANI field is not equal
to S AND the AEI train send flag is
set to NO"}:::decision N_CheckUTFSPECMANIField_Node1_action["The system sets the user as NOT
authorized for special manifest
creation"]:::main N_CheckUTFSPECMANIField_Node1 -- Yes --> N_CheckUTFSPECMANIField_Node1_action N_CheckUTFSPECMANIField_Node1_action --> E_CheckUTFSPECMANIField N_CheckUTFSPECMANIField_Node0 -- No --> N_CheckUTFSPECMANIField_Node1 N_CheckUTFSPECMANIField_Node1 -- No --> E_CheckUTFSPECMANIField
File: GCX003.cbl
GIVEN:
User security information is available for processing
WHEN:
The system checks the UTF-SPEC-MANI field in the user's security profile
THEN:
The system determines if the field contains 'S' indicating special manifest authorization or any other value indicating no authorization
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A user is processing a train request with send action
WHEN:
- The system validates special manifest authorization
- The request action is send
- The user's utf-spec-mani field is not equal to 's' and the aei train send flag is set to no
THEN:
The system sets the user as NOT authorized for special manifest creation
β Consolidated Acceptance Criteria
- If special manifest authorization → the system sets the user as authorized for special manifest creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetUserAuthorizedforSpecialManifests(["Start Step"])
E_SetUserAuthorizedforSpecialManifests(["End Step"])
N_SetUserAuthorizedforSpecialManifests_Node0{"The system evaluates special
manifest authorization"}:::decision N_SetUserAuthorizedforSpecialManifests_Node0_action["The system sets the user as
authorized for special manifest
creation"]:::main N_SetUserAuthorizedforSpecialManifests_Node0 -- Yes --> N_SetUserAuthorizedforSpecialManifests_Node0_action N_SetUserAuthorizedforSpecialManifests_Node0_action --> E_SetUserAuthorizedforSpecialManifests S_SetUserAuthorizedforSpecialManifests --> N_SetUserAuthorizedforSpecialManifests_Node0 N_SetUserAuthorizedforSpecialManifests_Node0 -- No --> E_SetUserAuthorizedforSpecialManifests
manifest authorization"}:::decision N_SetUserAuthorizedforSpecialManifests_Node0_action["The system sets the user as
authorized for special manifest
creation"]:::main N_SetUserAuthorizedforSpecialManifests_Node0 -- Yes --> N_SetUserAuthorizedforSpecialManifests_Node0_action N_SetUserAuthorizedforSpecialManifests_Node0_action --> E_SetUserAuthorizedforSpecialManifests S_SetUserAuthorizedforSpecialManifests --> N_SetUserAuthorizedforSpecialManifests_Node0 N_SetUserAuthorizedforSpecialManifests_Node0 -- No --> E_SetUserAuthorizedforSpecialManifests
File: GCX003.cbl
GIVEN:
The user's UTF-SPEC-MANI field contains 'S'
WHEN:
The system evaluates special manifest authorization
THEN:
The system sets the user as authorized for special manifest creation
β Consolidated Acceptance Criteria
- If special manifest authorization → the system sets the user as not authorized for special manifest creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetUserNOTAuthorizedforSpecialManifests(["Start Step"])
E_SetUserNOTAuthorizedforSpecialManifests(["End Step"])
N_SetUserNOTAuthorizedforSpecialManifests_Node0{"The system evaluates special
manifest authorization"}:::decision N_SetUserNOTAuthorizedforSpecialManifests_Node0_action["The system sets the user as not
authorized for special manifest
creation"]:::main N_SetUserNOTAuthorizedforSpecialManifests_Node0 -- Yes --> N_SetUserNOTAuthorizedforSpecialManifests_Node0_action N_SetUserNOTAuthorizedforSpecialManifests_Node0_action --> E_SetUserNOTAuthorizedforSpecialManifests S_SetUserNOTAuthorizedforSpecialManifests --> N_SetUserNOTAuthorizedforSpecialManifests_Node0 N_SetUserNOTAuthorizedforSpecialManifests_Node0 -- No --> E_SetUserNOTAuthorizedforSpecialManifests
manifest authorization"}:::decision N_SetUserNOTAuthorizedforSpecialManifests_Node0_action["The system sets the user as not
authorized for special manifest
creation"]:::main N_SetUserNOTAuthorizedforSpecialManifests_Node0 -- Yes --> N_SetUserNOTAuthorizedforSpecialManifests_Node0_action N_SetUserNOTAuthorizedforSpecialManifests_Node0_action --> E_SetUserNOTAuthorizedforSpecialManifests S_SetUserNOTAuthorizedforSpecialManifests --> N_SetUserNOTAuthorizedforSpecialManifests_Node0 N_SetUserNOTAuthorizedforSpecialManifests_Node0 -- No --> E_SetUserNOTAuthorizedforSpecialManifests
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
The user's UTF-SPEC-MANI field does not contain 'S' OR no user security record exists
WHEN:
The system evaluates special manifest authorization
THEN:
The system sets the user as not authorized for special manifest creation
β Consolidated Acceptance Criteria
- If if the current cargo or train processing requires special manifest creation → the system determines whether special manifest authorization check is needed for the current operation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpecialManifestRequired(["Start Step"])
E_SpecialManifestRequired(["End Step"])
N_SpecialManifestRequired_Node0{"The system evaluates if the current
cargo or train processing requires
special manifest creation"}:::decision N_SpecialManifestRequired_Node0_action["The system determines whether
special manifest authorization check
is needed for the current operation"]:::main N_SpecialManifestRequired_Node0 -- Yes --> N_SpecialManifestRequired_Node0_action N_SpecialManifestRequired_Node0_action --> E_SpecialManifestRequired S_SpecialManifestRequired --> N_SpecialManifestRequired_Node0 N_SpecialManifestRequired_Node0 -- No --> E_SpecialManifestRequired
cargo or train processing requires
special manifest creation"}:::decision N_SpecialManifestRequired_Node0_action["The system determines whether
special manifest authorization check
is needed for the current operation"]:::main N_SpecialManifestRequired_Node0 -- Yes --> N_SpecialManifestRequired_Node0_action N_SpecialManifestRequired_Node0_action --> E_SpecialManifestRequired S_SpecialManifestRequired --> N_SpecialManifestRequired_Node0 N_SpecialManifestRequired_Node0 -- No --> E_SpecialManifestRequired
File: GCX003.cbl
GIVEN:
User authorization status has been determined
WHEN:
The system evaluates if the current cargo or train processing requires special manifest creation
THEN:
The system determines whether special manifest authorization check is needed for the current operation
β Consolidated Acceptance Criteria
- The system processes the authorization decision → the system allows the special manifest creation process to continue
- The action type is SEND and user is not authorized for special manifests → generate authorization error message 43 and do not create detour manifest, otherwise if action is SEND and user is authorized, generate message 23 and create detour spawn
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AllowSpecialManifestCreation(["Start Step"])
E_AllowSpecialManifestCreation(["End Step"])
N_AllowSpecialManifestCreation_Node0{"The system processes the
authorization decision"}:::decision N_AllowSpecialManifestCreation_Node0_action["The system allows the special
manifest creation process to
continue"]:::main N_AllowSpecialManifestCreation_Node0 -- Yes --> N_AllowSpecialManifestCreation_Node0_action N_AllowSpecialManifestCreation_Node0_action --> E_AllowSpecialManifestCreation S_AllowSpecialManifestCreation --> N_AllowSpecialManifestCreation_Node0 N_AllowSpecialManifestCreation_Node1{"The action type is SEND and user is
not authorized for special manifests"}:::decision N_AllowSpecialManifestCreation_Node1_action["Generate authorization error
message 43 and do not create detour
manifest, otherwise if action is
SEND and user is authorized,
generate message 23 and create
detour spawn"]:::main N_AllowSpecialManifestCreation_Node1 -- Yes --> N_AllowSpecialManifestCreation_Node1_action N_AllowSpecialManifestCreation_Node1_action --> E_AllowSpecialManifestCreation N_AllowSpecialManifestCreation_Node0 -- No --> N_AllowSpecialManifestCreation_Node1 N_AllowSpecialManifestCreation_Node1 -- No --> E_AllowSpecialManifestCreation
authorization decision"}:::decision N_AllowSpecialManifestCreation_Node0_action["The system allows the special
manifest creation process to
continue"]:::main N_AllowSpecialManifestCreation_Node0 -- Yes --> N_AllowSpecialManifestCreation_Node0_action N_AllowSpecialManifestCreation_Node0_action --> E_AllowSpecialManifestCreation S_AllowSpecialManifestCreation --> N_AllowSpecialManifestCreation_Node0 N_AllowSpecialManifestCreation_Node1{"The action type is SEND and user is
not authorized for special manifests"}:::decision N_AllowSpecialManifestCreation_Node1_action["Generate authorization error
message 43 and do not create detour
manifest, otherwise if action is
SEND and user is authorized,
generate message 23 and create
detour spawn"]:::main N_AllowSpecialManifestCreation_Node1 -- Yes --> N_AllowSpecialManifestCreation_Node1_action N_AllowSpecialManifestCreation_Node1_action --> E_AllowSpecialManifestCreation N_AllowSpecialManifestCreation_Node0 -- No --> N_AllowSpecialManifestCreation_Node1 N_AllowSpecialManifestCreation_Node1 -- No --> E_AllowSpecialManifestCreation
File: GCX003.cbl
GIVEN:
Special manifest is required AND user is authorized for special manifests
WHEN:
The system processes the authorization decision
THEN:
The system allows the special manifest creation process to continue
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has US-Canada-US bond type and cargo is not created for IT and cargo has release status and cargo does not have special TR flag
WHEN:
- The action type is send
- User is not authorized for special manifests
THEN:
- Generate authorization error message 43
- Do not create detour manifest, otherwise if action is send
- User is authorized, generate message 23
- Create detour spawn
β Consolidated Acceptance Criteria
- The system processes the authorization decision → the system generates error message 43 indicating the user is not authorized for special manifest creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateErrorMessage43NotAuthorized(["Start Step"])
E_GenerateErrorMessage43NotAuthorized(["End Step"])
N_GenerateErrorMessage43NotAuthorized_Node0{"The system processes the
authorization decision"}:::decision N_GenerateErrorMessage43NotAuthorized_Node0_action["The system generates error message
43 indicating the user is not
authorized for special manifest
creation"]:::main N_GenerateErrorMessage43NotAuthorized_Node0 -- Yes --> N_GenerateErrorMessage43NotAuthorized_Node0_action N_GenerateErrorMessage43NotAuthorized_Node0_action --> E_GenerateErrorMessage43NotAuthorized S_GenerateErrorMessage43NotAuthorized --> N_GenerateErrorMessage43NotAuthorized_Node0 N_GenerateErrorMessage43NotAuthorized_Node0 -- No --> E_GenerateErrorMessage43NotAuthorized
authorization decision"}:::decision N_GenerateErrorMessage43NotAuthorized_Node0_action["The system generates error message
43 indicating the user is not
authorized for special manifest
creation"]:::main N_GenerateErrorMessage43NotAuthorized_Node0 -- Yes --> N_GenerateErrorMessage43NotAuthorized_Node0_action N_GenerateErrorMessage43NotAuthorized_Node0_action --> E_GenerateErrorMessage43NotAuthorized S_GenerateErrorMessage43NotAuthorized --> N_GenerateErrorMessage43NotAuthorized_Node0 N_GenerateErrorMessage43NotAuthorized_Node0 -- No --> E_GenerateErrorMessage43NotAuthorized
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Special manifest is required AND user is not authorized for special manifests
WHEN:
The system processes the authorization decision
THEN:
The system generates error message 43 indicating the user is not authorized for special manifest creation
β Consolidated Acceptance Criteria
- The system validates special manifest authorization AND the request action is SEND AND (the user's UTF-SPEC-MANI field equals 'S' OR the AEI train send flag is set to YES) → the system sets the user as authorized for special manifest creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetUserAuthorizedforSpecialManifest(["Start Step"])
E_SetUserAuthorizedforSpecialManifest(["End Step"])
N_SetUserAuthorizedforSpecialManifest_Node0{"The system validates special
manifest authorization AND the
request action is SEND AND the user
s UTF-SPEC-MANI field equals S OR
the AEI train send flag is set to
YES"}:::decision N_SetUserAuthorizedforSpecialManifest_Node0_action["The system sets the user as
authorized for special manifest
creation"]:::main N_SetUserAuthorizedforSpecialManifest_Node0 -- Yes --> N_SetUserAuthorizedforSpecialManifest_Node0_action N_SetUserAuthorizedforSpecialManifest_Node0_action --> E_SetUserAuthorizedforSpecialManifest S_SetUserAuthorizedforSpecialManifest --> N_SetUserAuthorizedforSpecialManifest_Node0 N_SetUserAuthorizedforSpecialManifest_Node0 -- No --> E_SetUserAuthorizedforSpecialManifest
manifest authorization AND the
request action is SEND AND the user
s UTF-SPEC-MANI field equals S OR
the AEI train send flag is set to
YES"}:::decision N_SetUserAuthorizedforSpecialManifest_Node0_action["The system sets the user as
authorized for special manifest
creation"]:::main N_SetUserAuthorizedforSpecialManifest_Node0 -- Yes --> N_SetUserAuthorizedforSpecialManifest_Node0_action N_SetUserAuthorizedforSpecialManifest_Node0_action --> E_SetUserAuthorizedforSpecialManifest S_SetUserAuthorizedforSpecialManifest --> N_SetUserAuthorizedforSpecialManifest_Node0 N_SetUserAuthorizedforSpecialManifest_Node0 -- No --> E_SetUserAuthorizedforSpecialManifest
File: GCX003.cbl
GIVEN:
A user is processing a train request with send action
WHEN:
- The system validates special manifest authorization
- The request action is send and (the user's utf-spec-mani field equals 's' or the aei train send flag is set to yes)
THEN:
The system sets the user as authorized for special manifest creation
β Consolidated Acceptance Criteria
- The system validates special manifest authorization AND the request action is NOT SEND → the system continues processing without setting special manifest authorization status
- Cargo has release status and action type is SEND and user is not authorized for special manifests → generate authorization error message 43 and do not create detour manifest, otherwise if cargo has release status and action is SEND and user is authorized, generate message 23 and create detour spawn, or if cargo does not have release status, generate message 31
- The system has processed all required documentation checks → continue with normal cargo processing workflow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinueProcessing(["Start Step"])
E_ContinueProcessing(["End Step"])
N_ContinueProcessing_Node0{"The system validates special
manifest authorization AND the
request action is NOT SEND"}:::decision N_ContinueProcessing_Node0_action["The system continues processing
without setting special manifest
authorization status"]:::main N_ContinueProcessing_Node0 -- Yes --> N_ContinueProcessing_Node0_action N_ContinueProcessing_Node0_action --> E_ContinueProcessing S_ContinueProcessing --> N_ContinueProcessing_Node0 N_ContinueProcessing_Node1{"Cargo has release status and action
type is SEND and user is not
authorized for special manifests"}:::decision N_ContinueProcessing_Node1_action["Generate authorization error
message 43 and do not create detour
manifest, otherwise if cargo has
release status and action is SEND
and user is authorized, generate
message 23 and create detour spawn,
or if cargo does not have release
status, generate message 31"]:::main N_ContinueProcessing_Node1 -- Yes --> N_ContinueProcessing_Node1_action N_ContinueProcessing_Node1_action --> E_ContinueProcessing N_ContinueProcessing_Node0 -- No --> N_ContinueProcessing_Node1 N_ContinueProcessing_Node2{"The system has processed all
required documentation checks"}:::decision N_ContinueProcessing_Node2_action["Continue with normal cargo
processing workflow"]:::main N_ContinueProcessing_Node2 -- Yes --> N_ContinueProcessing_Node2_action N_ContinueProcessing_Node2_action --> E_ContinueProcessing N_ContinueProcessing_Node1 -- No --> N_ContinueProcessing_Node2 N_ContinueProcessing_Node2 -- No --> E_ContinueProcessing
manifest authorization AND the
request action is NOT SEND"}:::decision N_ContinueProcessing_Node0_action["The system continues processing
without setting special manifest
authorization status"]:::main N_ContinueProcessing_Node0 -- Yes --> N_ContinueProcessing_Node0_action N_ContinueProcessing_Node0_action --> E_ContinueProcessing S_ContinueProcessing --> N_ContinueProcessing_Node0 N_ContinueProcessing_Node1{"Cargo has release status and action
type is SEND and user is not
authorized for special manifests"}:::decision N_ContinueProcessing_Node1_action["Generate authorization error
message 43 and do not create detour
manifest, otherwise if cargo has
release status and action is SEND
and user is authorized, generate
message 23 and create detour spawn,
or if cargo does not have release
status, generate message 31"]:::main N_ContinueProcessing_Node1 -- Yes --> N_ContinueProcessing_Node1_action N_ContinueProcessing_Node1_action --> E_ContinueProcessing N_ContinueProcessing_Node0 -- No --> N_ContinueProcessing_Node1 N_ContinueProcessing_Node2{"The system has processed all
required documentation checks"}:::decision N_ContinueProcessing_Node2_action["Continue with normal cargo
processing workflow"]:::main N_ContinueProcessing_Node2 -- Yes --> N_ContinueProcessing_Node2_action N_ContinueProcessing_Node2_action --> E_ContinueProcessing N_ContinueProcessing_Node1 -- No --> N_ContinueProcessing_Node2 N_ContinueProcessing_Node2 -- No --> E_ContinueProcessing
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A user is processing a train request
WHEN:
- The system validates special manifest authorization
- The request action is not send
THEN:
The system continues processing without setting special manifest authorization status
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has default bond type and cargo is not created for IT and cargo does not have special manifest origin flag
WHEN:
- Cargo has release status
- Action type is send
- User is not authorized for special manifests
THEN:
- Generate authorization error message 43
- Do not create detour manifest, otherwise if cargo has release status
- Action is send
- User is authorized, generate message 23
- Create detour spawn, or if cargo does not have release status, generate message 31
File: GCX003.cbl
GIVEN:
All Mexico customs documentation validation is complete
WHEN:
The system has processed all required documentation checks
THEN:
Continue with normal cargo processing workflow
β Consolidated Acceptance Criteria
- The system checks the user's UTF special manifest authorization field → if UTF-SPEC-MANI is not equal to 'S', then set the user as not authorized for special manifest processing, otherwise allow the user to proceed with special manifest operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsUTFSPECMANIS(["Start Step"])
E_IsUTFSPECMANIS(["End Step"])
N_IsUTFSPECMANIS_Node0{"The system checks the user s UTF
special manifest authorization field"}:::decision N_IsUTFSPECMANIS_Node0_action["If UTF-SPEC-MANI is not equal to S
, then set the user as not
authorized for special manifest
processing, otherwise allow the user
to proceed with special manifest
operations"]:::main N_IsUTFSPECMANIS_Node0 -- Yes --> N_IsUTFSPECMANIS_Node0_action N_IsUTFSPECMANIS_Node0_action --> E_IsUTFSPECMANIS S_IsUTFSPECMANIS --> N_IsUTFSPECMANIS_Node0 N_IsUTFSPECMANIS_Node0 -- No --> E_IsUTFSPECMANIS
special manifest authorization field"}:::decision N_IsUTFSPECMANIS_Node0_action["If UTF-SPEC-MANI is not equal to S
, then set the user as not
authorized for special manifest
processing, otherwise allow the user
to proceed with special manifest
operations"]:::main N_IsUTFSPECMANIS_Node0 -- Yes --> N_IsUTFSPECMANIS_Node0_action N_IsUTFSPECMANIS_Node0_action --> E_IsUTFSPECMANIS S_IsUTFSPECMANIS --> N_IsUTFSPECMANIS_Node0 N_IsUTFSPECMANIS_Node0 -- No --> E_IsUTFSPECMANIS
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A train request is being processed AND the report has no errors AND the request action is SEND AND the request is not an AEI train send
WHEN:
The system checks the user's UTF special manifest authorization field
THEN:
If UTF-SPEC-MANI is not equal to 'S', then set the user as not authorized for special manifest processing, otherwise allow the user to proceed with special manifest operations
β Consolidated Acceptance Criteria
- If the current report error status → if the report has no errors, proceed to check request action type, otherwise skip the authorization validation process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReportHasNoErrors(["Start Step"])
E_ReportHasNoErrors(["End Step"])
N_ReportHasNoErrors_Node0{"The system evaluates the current
report error status"}:::decision N_ReportHasNoErrors_Node0_action["If the report has no errors,
proceed to check request action
type, otherwise skip the
authorization validation process"]:::exclusion N_ReportHasNoErrors_Node0 -- Yes -->|Alternative| N_ReportHasNoErrors_Node0_action N_ReportHasNoErrors_Node0_action --> E_ReportHasNoErrors S_ReportHasNoErrors --> N_ReportHasNoErrors_Node0 N_ReportHasNoErrors_Node0 -- No --> E_ReportHasNoErrors
report error status"}:::decision N_ReportHasNoErrors_Node0_action["If the report has no errors,
proceed to check request action
type, otherwise skip the
authorization validation process"]:::exclusion N_ReportHasNoErrors_Node0 -- Yes -->|Alternative| N_ReportHasNoErrors_Node0_action N_ReportHasNoErrors_Node0_action --> E_ReportHasNoErrors S_ReportHasNoErrors --> N_ReportHasNoErrors_Node0 N_ReportHasNoErrors_Node0 -- No --> E_ReportHasNoErrors
File: GCX003.cbl
GIVEN:
A train request is being processed for special manifest authorization
WHEN:
The system evaluates the current report error status
THEN:
If the report has no errors, proceed to check request action type, otherwise skip the authorization validation process
β Consolidated Acceptance Criteria
- If the request action type → if the request action is SEND, proceed to check UTF special manifest authorization, otherwise skip the authorization validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RequestActionisSEND(["Start Step"])
E_RequestActionisSEND(["End Step"])
N_RequestActionisSEND_Node0{"The system evaluates the request
action type"}:::decision N_RequestActionisSEND_Node0_action["If the request action is SEND,
proceed to check UTF special
manifest authorization, otherwise
skip the authorization validation"]:::main N_RequestActionisSEND_Node0 -- Yes --> N_RequestActionisSEND_Node0_action N_RequestActionisSEND_Node0_action --> E_RequestActionisSEND S_RequestActionisSEND --> N_RequestActionisSEND_Node0 N_RequestActionisSEND_Node0 -- No --> E_RequestActionisSEND
action type"}:::decision N_RequestActionisSEND_Node0_action["If the request action is SEND,
proceed to check UTF special
manifest authorization, otherwise
skip the authorization validation"]:::main N_RequestActionisSEND_Node0 -- Yes --> N_RequestActionisSEND_Node0_action N_RequestActionisSEND_Node0_action --> E_RequestActionisSEND S_RequestActionisSEND --> N_RequestActionisSEND_Node0 N_RequestActionisSEND_Node0 -- No --> E_RequestActionisSEND
File: GCX003.cbl
GIVEN:
A train request is being processed AND the report has no errors
WHEN:
The system evaluates the request action type
THEN:
If the request action is SEND, proceed to check UTF special manifest authorization, otherwise skip the authorization validation
β Consolidated Acceptance Criteria
- The system checks the AEI train send status → if AEI train send is NO, set the user as not authorized for special manifest, otherwise allow the user to proceed as authorized
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AEITrainSendNO(["Start Step"])
E_AEITrainSendNO(["End Step"])
N_AEITrainSendNO_Node0{"The system checks the AEI train
send status"}:::decision N_AEITrainSendNO_Node0_action["If AEI train send is NO, set the
user as not authorized for special
manifest, otherwise allow the user
to proceed as authorized"]:::main N_AEITrainSendNO_Node0 -- Yes --> N_AEITrainSendNO_Node0_action N_AEITrainSendNO_Node0_action --> E_AEITrainSendNO S_AEITrainSendNO --> N_AEITrainSendNO_Node0 N_AEITrainSendNO_Node0 -- No --> E_AEITrainSendNO
send status"}:::decision N_AEITrainSendNO_Node0_action["If AEI train send is NO, set the
user as not authorized for special
manifest, otherwise allow the user
to proceed as authorized"]:::main N_AEITrainSendNO_Node0 -- Yes --> N_AEITrainSendNO_Node0_action N_AEITrainSendNO_Node0_action --> E_AEITrainSendNO S_AEITrainSendNO --> N_AEITrainSendNO_Node0 N_AEITrainSendNO_Node0 -- No --> E_AEITrainSendNO
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A train request is being processed AND the report has no errors AND the request action is SEND AND the user does not have UTF special manifest authorization
WHEN:
The system checks the AEI train send status
THEN:
If AEI train send is NO, set the user as not authorized for special manifest, otherwise allow the user to proceed as authorized
β Consolidated Acceptance Criteria
- The system checks if cargo exists and has Transport Export (TE) bond type → processing continues only if cargo is found and bond type is TE, otherwise port change processing is skipped
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoFoundwithTEBondType(["Start Step"])
E_CargoFoundwithTEBondType(["End Step"])
N_CargoFoundwithTEBondType_Node0{"The system checks if cargo exists
and has Transport Export TE bond
type"}:::decision N_CargoFoundwithTEBondType_Node0_action["Processing continues only if cargo
is found and bond type is TE,
otherwise port change processing is
skipped"]:::main N_CargoFoundwithTEBondType_Node0 -- Yes --> N_CargoFoundwithTEBondType_Node0_action N_CargoFoundwithTEBondType_Node0_action --> E_CargoFoundwithTEBondType S_CargoFoundwithTEBondType --> N_CargoFoundwithTEBondType_Node0 N_CargoFoundwithTEBondType_Node0 -- No --> E_CargoFoundwithTEBondType
and has Transport Export TE bond
type"}:::decision N_CargoFoundwithTEBondType_Node0_action["Processing continues only if cargo
is found and bond type is TE,
otherwise port change processing is
skipped"]:::main N_CargoFoundwithTEBondType_Node0 -- Yes --> N_CargoFoundwithTEBondType_Node0_action N_CargoFoundwithTEBondType_Node0_action --> E_CargoFoundwithTEBondType S_CargoFoundwithTEBondType --> N_CargoFoundwithTEBondType_Node0 N_CargoFoundwithTEBondType_Node0 -- No --> E_CargoFoundwithTEBondType
File: GCX003.cbl
GIVEN:
A cargo record is being processed for port change validation
WHEN:
- The system checks if cargo exists
- Has transport export (te) bond type
THEN:
- Processing continues only if cargo is found
- Bond type is te, otherwise port change processing is skipped
β Consolidated Acceptance Criteria
- The system checks the TR Created for IT field → port change processing continues only if TR Created for IT field is empty (spaces), otherwise processing is skipped
- The system checks the TR created for IT field → diversion processing continues only if TR created for IT field is spaces (not already created), otherwise processing is skipped
- The system checks if a TR record was previously created for IT purposes → if TR was already created for IT (field is not spaces), skip port change processing and exit
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TRCreatedforITSpaces(["Start Step"])
E_TRCreatedforITSpaces(["End Step"])
N_TRCreatedforITSpaces_Node0{"The system checks the TR Created
for IT field"}:::decision N_TRCreatedforITSpaces_Node0_action["Port change processing continues
only if TR Created for IT field is
empty spaces, otherwise processing
is skipped"]:::main N_TRCreatedforITSpaces_Node0 -- Yes --> N_TRCreatedforITSpaces_Node0_action N_TRCreatedforITSpaces_Node0_action --> E_TRCreatedforITSpaces S_TRCreatedforITSpaces --> N_TRCreatedforITSpaces_Node0 N_TRCreatedforITSpaces_Node1{"The system checks the TR created
for IT field"}:::decision N_TRCreatedforITSpaces_Node1_action["Diversion processing continues only
if TR created for IT field is spaces
not already created, otherwise
processing is skipped"]:::main N_TRCreatedforITSpaces_Node1 -- Yes --> N_TRCreatedforITSpaces_Node1_action N_TRCreatedforITSpaces_Node1_action --> E_TRCreatedforITSpaces N_TRCreatedforITSpaces_Node0 -- No --> N_TRCreatedforITSpaces_Node1 N_TRCreatedforITSpaces_Node2{"The system checks if a TR record
was previously created for IT
purposes"}:::decision N_TRCreatedforITSpaces_Node2_action["If TR was already created for IT
field is not spaces, skip port
change processing and exit"]:::main N_TRCreatedforITSpaces_Node2 -- Yes --> N_TRCreatedforITSpaces_Node2_action N_TRCreatedforITSpaces_Node2_action --> E_TRCreatedforITSpaces N_TRCreatedforITSpaces_Node1 -- No --> N_TRCreatedforITSpaces_Node2 N_TRCreatedforITSpaces_Node2 -- No --> E_TRCreatedforITSpaces
for IT field"}:::decision N_TRCreatedforITSpaces_Node0_action["Port change processing continues
only if TR Created for IT field is
empty spaces, otherwise processing
is skipped"]:::main N_TRCreatedforITSpaces_Node0 -- Yes --> N_TRCreatedforITSpaces_Node0_action N_TRCreatedforITSpaces_Node0_action --> E_TRCreatedforITSpaces S_TRCreatedforITSpaces --> N_TRCreatedforITSpaces_Node0 N_TRCreatedforITSpaces_Node1{"The system checks the TR created
for IT field"}:::decision N_TRCreatedforITSpaces_Node1_action["Diversion processing continues only
if TR created for IT field is spaces
not already created, otherwise
processing is skipped"]:::main N_TRCreatedforITSpaces_Node1 -- Yes --> N_TRCreatedforITSpaces_Node1_action N_TRCreatedforITSpaces_Node1_action --> E_TRCreatedforITSpaces N_TRCreatedforITSpaces_Node0 -- No --> N_TRCreatedforITSpaces_Node1 N_TRCreatedforITSpaces_Node2{"The system checks if a TR record
was previously created for IT
purposes"}:::decision N_TRCreatedforITSpaces_Node2_action["If TR was already created for IT
field is not spaces, skip port
change processing and exit"]:::main N_TRCreatedforITSpaces_Node2 -- Yes --> N_TRCreatedforITSpaces_Node2_action N_TRCreatedforITSpaces_Node2_action --> E_TRCreatedforITSpaces N_TRCreatedforITSpaces_Node1 -- No --> N_TRCreatedforITSpaces_Node2 N_TRCreatedforITSpaces_Node2 -- No --> E_TRCreatedforITSpaces
File: GCX003.cbl
GIVEN:
A TE bond cargo is being evaluated for port change
WHEN:
The system checks the TR Created for IT field
THEN:
Port change processing continues only if TR Created for IT field is empty (spaces), otherwise processing is skipped
File: GCX003.cbl
GIVEN:
Cargo with TR bond type exists
WHEN:
The system checks the TR created for IT field
THEN:
Diversion processing continues only if TR created for IT field is spaces (not already created), otherwise processing is skipped
File: GCX003.cbl
GIVEN:
A TE bond cargo is being processed for port change
WHEN:
The system checks if a TR record was previously created for IT purposes
THEN:
- If tr was already created for it (field is not spaces), skip port change processing
- Exit
β Consolidated Acceptance Criteria
- The system compares cargo short description with export status value → port change processing continues only if cargo status does not equal export status, otherwise processing is skipped
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoStatusExportStatus(["Start Step"])
E_CargoStatusExportStatus(["End Step"])
N_CargoStatusExportStatus_Node0{"The system compares cargo short
description with export status value"}:::decision N_CargoStatusExportStatus_Node0_action["Port change processing continues
only if cargo status does not equal
export status, otherwise processing
is skipped"]:::main N_CargoStatusExportStatus_Node0 -- Yes --> N_CargoStatusExportStatus_Node0_action N_CargoStatusExportStatus_Node0_action --> E_CargoStatusExportStatus S_CargoStatusExportStatus --> N_CargoStatusExportStatus_Node0 N_CargoStatusExportStatus_Node0 -- No --> E_CargoStatusExportStatus
description with export status value"}:::decision N_CargoStatusExportStatus_Node0_action["Port change processing continues
only if cargo status does not equal
export status, otherwise processing
is skipped"]:::main N_CargoStatusExportStatus_Node0 -- Yes --> N_CargoStatusExportStatus_Node0_action N_CargoStatusExportStatus_Node0_action --> E_CargoStatusExportStatus S_CargoStatusExportStatus --> N_CargoStatusExportStatus_Node0 N_CargoStatusExportStatus_Node0 -- No --> E_CargoStatusExportStatus
File: GCX003.cbl
GIVEN:
A TE bond cargo with empty TR Created for IT field is being processed
WHEN:
The system compares cargo short description with export status value
THEN:
Port change processing continues only if cargo status does not equal export status, otherwise processing is skipped
β Consolidated Acceptance Criteria
- The system checks if cargo is billed as CPRS → port change processing continues only if cargo is billed as CPRS, otherwise processing is skipped
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoBilledasCPRS(["Start Step"])
E_CargoBilledasCPRS(["End Step"])
N_CargoBilledasCPRS_Node0{"The system checks if cargo is
billed as CPRS"}:::decision N_CargoBilledasCPRS_Node0_action["Port change processing continues
only if cargo is billed as CPRS,
otherwise processing is skipped"]:::main N_CargoBilledasCPRS_Node0 -- Yes --> N_CargoBilledasCPRS_Node0_action N_CargoBilledasCPRS_Node0_action --> E_CargoBilledasCPRS S_CargoBilledasCPRS --> N_CargoBilledasCPRS_Node0 N_CargoBilledasCPRS_Node0 -- No --> E_CargoBilledasCPRS
billed as CPRS"}:::decision N_CargoBilledasCPRS_Node0_action["Port change processing continues
only if cargo is billed as CPRS,
otherwise processing is skipped"]:::main N_CargoBilledasCPRS_Node0 -- Yes --> N_CargoBilledasCPRS_Node0_action N_CargoBilledasCPRS_Node0_action --> E_CargoBilledasCPRS S_CargoBilledasCPRS --> N_CargoBilledasCPRS_Node0 N_CargoBilledasCPRS_Node0 -- No --> E_CargoBilledasCPRS
File: GCX003.cbl
GIVEN:
A TE bond cargo that meets previous validation criteria is being processed
WHEN:
The system checks if cargo is billed as CPRS
THEN:
Port change processing continues only if cargo is billed as CPRS, otherwise processing is skipped
β Consolidated Acceptance Criteria
- The system compares cargo Location ID1 with current station code → port change processing is triggered only if Location ID1 does not match current station code, otherwise processing is skipped
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LocationID1CurrentStation(["Start Step"])
E_LocationID1CurrentStation(["End Step"])
N_LocationID1CurrentStation_Node0{"The system compares cargo Location
ID1 with current station code"}:::decision N_LocationID1CurrentStation_Node0_action["Port change processing is triggered
only if Location ID1 does not match
current station code, otherwise
processing is skipped"]:::main N_LocationID1CurrentStation_Node0 -- Yes --> N_LocationID1CurrentStation_Node0_action N_LocationID1CurrentStation_Node0_action --> E_LocationID1CurrentStation S_LocationID1CurrentStation --> N_LocationID1CurrentStation_Node0 N_LocationID1CurrentStation_Node0 -- No --> E_LocationID1CurrentStation
ID1 with current station code"}:::decision N_LocationID1CurrentStation_Node0_action["Port change processing is triggered
only if Location ID1 does not match
current station code, otherwise
processing is skipped"]:::main N_LocationID1CurrentStation_Node0 -- Yes --> N_LocationID1CurrentStation_Node0_action N_LocationID1CurrentStation_Node0_action --> E_LocationID1CurrentStation S_LocationID1CurrentStation --> N_LocationID1CurrentStation_Node0 N_LocationID1CurrentStation_Node0 -- No --> E_LocationID1CurrentStation
File: GCX003.cbl
GIVEN:
A TE bond cargo that is billed as CPRS is being processed
WHEN:
The system compares cargo Location ID1 with current station code
THEN:
Port change processing is triggered only if Location ID1 does not match current station code, otherwise processing is skipped
β Consolidated Acceptance Criteria
- The request action is REPORT → generate port change warning message (Message 19) with station information and add to report without creating special manifest
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RequestActionREPORT(["Start Step"])
E_RequestActionREPORT(["End Step"])
N_RequestActionREPORT_Node0{"The request action is REPORT"}:::decision
N_RequestActionREPORT_Node0_action["Generate port change warning
message Message 19 with station
information and add to report
without creating special manifest"]:::main N_RequestActionREPORT_Node0 -- Yes --> N_RequestActionREPORT_Node0_action N_RequestActionREPORT_Node0_action --> E_RequestActionREPORT S_RequestActionREPORT --> N_RequestActionREPORT_Node0 N_RequestActionREPORT_Node0 -- No --> E_RequestActionREPORT
message Message 19 with station
information and add to report
without creating special manifest"]:::main N_RequestActionREPORT_Node0 -- Yes --> N_RequestActionREPORT_Node0_action N_RequestActionREPORT_Node0_action --> E_RequestActionREPORT S_RequestActionREPORT --> N_RequestActionREPORT_Node0 N_RequestActionREPORT_Node0 -- No --> E_RequestActionREPORT
File: GCX003.cbl
GIVEN:
A TE bond cargo requires port change processing due to location mismatch
WHEN:
The request action is REPORT
THEN:
- Generate port change warning message (message 19) with station information
- Add to report without creating special manifest
β Consolidated Acceptance Criteria
- The system checks if request action is SEND → proceed to authorization validation if action is SEND, otherwise skip port change processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RequestActionSEND(["Start Step"])
E_RequestActionSEND(["End Step"])
N_RequestActionSEND_Node0{"The system checks if request action
is SEND"}:::decision N_RequestActionSEND_Node0_action["Proceed to authorization validation
if action is SEND, otherwise skip
port change processing"]:::main N_RequestActionSEND_Node0 -- Yes --> N_RequestActionSEND_Node0_action N_RequestActionSEND_Node0_action --> E_RequestActionSEND S_RequestActionSEND --> N_RequestActionSEND_Node0 N_RequestActionSEND_Node0 -- No --> E_RequestActionSEND
is SEND"}:::decision N_RequestActionSEND_Node0_action["Proceed to authorization validation
if action is SEND, otherwise skip
port change processing"]:::main N_RequestActionSEND_Node0 -- Yes --> N_RequestActionSEND_Node0_action N_RequestActionSEND_Node0_action --> E_RequestActionSEND S_RequestActionSEND --> N_RequestActionSEND_Node0 N_RequestActionSEND_Node0 -- No --> E_RequestActionSEND
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A TE bond cargo requires port change processing and request action is not REPORT
WHEN:
The system checks if request action is SEND
THEN:
Proceed to authorization validation if action is SEND, otherwise skip port change processing
β Consolidated Acceptance Criteria
- The system generates port change notification → create port change notification message (Message 20) and add to report
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GeneratePortChangeNotificationMessage(["Start Step"])
E_GeneratePortChangeNotificationMessage(["End Step"])
N_GeneratePortChangeNotificationMessage_Node0{"The system generates port change
notification"}:::decision N_GeneratePortChangeNotificationMessage_Node0_action["Create port change notification
message Message 20 and add to report"]:::main N_GeneratePortChangeNotificationMessage_Node0 -- Yes --> N_GeneratePortChangeNotificationMessage_Node0_action N_GeneratePortChangeNotificationMessage_Node0_action --> E_GeneratePortChangeNotificationMessage S_GeneratePortChangeNotificationMessage --> N_GeneratePortChangeNotificationMessage_Node0 N_GeneratePortChangeNotificationMessage_Node0 -- No --> E_GeneratePortChangeNotificationMessage
notification"}:::decision N_GeneratePortChangeNotificationMessage_Node0_action["Create port change notification
message Message 20 and add to report"]:::main N_GeneratePortChangeNotificationMessage_Node0 -- Yes --> N_GeneratePortChangeNotificationMessage_Node0_action N_GeneratePortChangeNotificationMessage_Node0_action --> E_GeneratePortChangeNotificationMessage S_GeneratePortChangeNotificationMessage --> N_GeneratePortChangeNotificationMessage_Node0 N_GeneratePortChangeNotificationMessage_Node0 -- No --> E_GeneratePortChangeNotificationMessage
File: GCX003.cbl
GIVEN:
A TE bond cargo requires port change and user is authorized for special manifests
WHEN:
The system generates port change notification
THEN:
Create port change notification message (Message 20) and add to report
β Consolidated Acceptance Criteria
- The system sets processing flags → set port change spawn flag to TRUE to trigger special manifest creation
- The system prepares to create a special manifest for the port change → set the port change spawn flag to true to trigger special manifest creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPortChangeSpawnFlag(["Start Step"])
E_SetPortChangeSpawnFlag(["End Step"])
N_SetPortChangeSpawnFlag_Node0{"The system sets processing flags"}:::decision
N_SetPortChangeSpawnFlag_Node0_action["Set port change spawn flag to TRUE
to trigger special manifest creation"]:::main N_SetPortChangeSpawnFlag_Node0 -- Yes --> N_SetPortChangeSpawnFlag_Node0_action N_SetPortChangeSpawnFlag_Node0_action --> E_SetPortChangeSpawnFlag S_SetPortChangeSpawnFlag --> N_SetPortChangeSpawnFlag_Node0 N_SetPortChangeSpawnFlag_Node1{"The system prepares to create a
special manifest for the port change"}:::decision N_SetPortChangeSpawnFlag_Node1_action["Set the port change spawn flag to
true to trigger special manifest
creation"]:::main N_SetPortChangeSpawnFlag_Node1 -- Yes --> N_SetPortChangeSpawnFlag_Node1_action N_SetPortChangeSpawnFlag_Node1_action --> E_SetPortChangeSpawnFlag N_SetPortChangeSpawnFlag_Node0 -- No --> N_SetPortChangeSpawnFlag_Node1 N_SetPortChangeSpawnFlag_Node1 -- No --> E_SetPortChangeSpawnFlag
to trigger special manifest creation"]:::main N_SetPortChangeSpawnFlag_Node0 -- Yes --> N_SetPortChangeSpawnFlag_Node0_action N_SetPortChangeSpawnFlag_Node0_action --> E_SetPortChangeSpawnFlag S_SetPortChangeSpawnFlag --> N_SetPortChangeSpawnFlag_Node0 N_SetPortChangeSpawnFlag_Node1{"The system prepares to create a
special manifest for the port change"}:::decision N_SetPortChangeSpawnFlag_Node1_action["Set the port change spawn flag to
true to trigger special manifest
creation"]:::main N_SetPortChangeSpawnFlag_Node1 -- Yes --> N_SetPortChangeSpawnFlag_Node1_action N_SetPortChangeSpawnFlag_Node1_action --> E_SetPortChangeSpawnFlag N_SetPortChangeSpawnFlag_Node0 -- No --> N_SetPortChangeSpawnFlag_Node1 N_SetPortChangeSpawnFlag_Node1 -- No --> E_SetPortChangeSpawnFlag
File: GCX003.cbl
GIVEN:
Port change notification has been generated for authorized user
WHEN:
The system sets processing flags
THEN:
Set port change spawn flag to TRUE to trigger special manifest creation
File: GCX003.cbl
GIVEN:
Port change processing message has been generated for authorized user
WHEN:
The system prepares to create a special manifest for the port change
THEN:
Set the port change spawn flag to true to trigger special manifest creation
β Consolidated Acceptance Criteria
- The system creates special manifest request → execute special manifest creation process (Z870-CREATE-SPECIAL-MANIFEST) to generate required documentation for port change
- The system initiates special manifest creation → the system should create a special manifest request through the special manifest creation process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateSpecialManifestRequest(["Start Step"])
E_CreateSpecialManifestRequest(["End Step"])
N_CreateSpecialManifestRequest_Node0{"The system creates special manifest
request"}:::decision N_CreateSpecialManifestRequest_Node0_action["Execute special manifest creation
process Z870-CREATE-SPECIAL-MANIFEST
to generate required documentation
for port change"]:::main N_CreateSpecialManifestRequest_Node0 -- Yes --> N_CreateSpecialManifestRequest_Node0_action N_CreateSpecialManifestRequest_Node0_action --> E_CreateSpecialManifestRequest S_CreateSpecialManifestRequest --> N_CreateSpecialManifestRequest_Node0 N_CreateSpecialManifestRequest_Node1{"The system initiates special
manifest creation"}:::decision N_CreateSpecialManifestRequest_Node1_action["The system should create a special
manifest request through the special
manifest creation process"]:::main N_CreateSpecialManifestRequest_Node1 -- Yes --> N_CreateSpecialManifestRequest_Node1_action N_CreateSpecialManifestRequest_Node1_action --> E_CreateSpecialManifestRequest N_CreateSpecialManifestRequest_Node0 -- No --> N_CreateSpecialManifestRequest_Node1 N_CreateSpecialManifestRequest_Node1 -- No --> E_CreateSpecialManifestRequest
request"}:::decision N_CreateSpecialManifestRequest_Node0_action["Execute special manifest creation
process Z870-CREATE-SPECIAL-MANIFEST
to generate required documentation
for port change"]:::main N_CreateSpecialManifestRequest_Node0 -- Yes --> N_CreateSpecialManifestRequest_Node0_action N_CreateSpecialManifestRequest_Node0_action --> E_CreateSpecialManifestRequest S_CreateSpecialManifestRequest --> N_CreateSpecialManifestRequest_Node0 N_CreateSpecialManifestRequest_Node1{"The system initiates special
manifest creation"}:::decision N_CreateSpecialManifestRequest_Node1_action["The system should create a special
manifest request through the special
manifest creation process"]:::main N_CreateSpecialManifestRequest_Node1 -- Yes --> N_CreateSpecialManifestRequest_Node1_action N_CreateSpecialManifestRequest_Node1_action --> E_CreateSpecialManifestRequest N_CreateSpecialManifestRequest_Node0 -- No --> N_CreateSpecialManifestRequest_Node1 N_CreateSpecialManifestRequest_Node1 -- No --> E_CreateSpecialManifestRequest
File: GCX003.cbl
GIVEN:
Port change spawn flag has been set for TE bond cargo
WHEN:
The system creates special manifest request
THEN:
Execute special manifest creation process (Z870-CREATE-SPECIAL-MANIFEST) to generate required documentation for port change
File: GCX003.cbl
GIVEN:
A US-US detour spawn flag is set
WHEN:
The system initiates special manifest creation
THEN:
The system should create a special manifest request through the special manifest creation process
β Consolidated Acceptance Criteria
- The system checks if cargo exists and has TR bond type → processing continues only if cargo is found and bond type is TR, otherwise diversion processing is skipped
- The system checks the cargo bond type code → if cargo has bond type 'US-CAN-US' and is not flagged with special USMX TR processing, proceed with TR bond detour processing, otherwise skip TR bond processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoFoundwithTRBondType(["Start Step"])
E_CargoFoundwithTRBondType(["End Step"])
N_CargoFoundwithTRBondType_Node0{"The system checks if cargo exists
and has TR bond type"}:::decision N_CargoFoundwithTRBondType_Node0_action["Processing continues only if cargo
is found and bond type is TR,
otherwise diversion processing is
skipped"]:::main N_CargoFoundwithTRBondType_Node0 -- Yes --> N_CargoFoundwithTRBondType_Node0_action N_CargoFoundwithTRBondType_Node0_action --> E_CargoFoundwithTRBondType S_CargoFoundwithTRBondType --> N_CargoFoundwithTRBondType_Node0 N_CargoFoundwithTRBondType_Node1{"The system checks the cargo bond
type code"}:::decision N_CargoFoundwithTRBondType_Node1_action["If cargo has bond type US-CAN-US
and is not flagged with special USMX
TR processing, proceed with TR bond
detour processing, otherwise skip TR
bond processing"]:::main N_CargoFoundwithTRBondType_Node1 -- Yes --> N_CargoFoundwithTRBondType_Node1_action N_CargoFoundwithTRBondType_Node1_action --> E_CargoFoundwithTRBondType N_CargoFoundwithTRBondType_Node0 -- No --> N_CargoFoundwithTRBondType_Node1 N_CargoFoundwithTRBondType_Node1 -- No --> E_CargoFoundwithTRBondType
and has TR bond type"}:::decision N_CargoFoundwithTRBondType_Node0_action["Processing continues only if cargo
is found and bond type is TR,
otherwise diversion processing is
skipped"]:::main N_CargoFoundwithTRBondType_Node0 -- Yes --> N_CargoFoundwithTRBondType_Node0_action N_CargoFoundwithTRBondType_Node0_action --> E_CargoFoundwithTRBondType S_CargoFoundwithTRBondType --> N_CargoFoundwithTRBondType_Node0 N_CargoFoundwithTRBondType_Node1{"The system checks the cargo bond
type code"}:::decision N_CargoFoundwithTRBondType_Node1_action["If cargo has bond type US-CAN-US
and is not flagged with special USMX
TR processing, proceed with TR bond
detour processing, otherwise skip TR
bond processing"]:::main N_CargoFoundwithTRBondType_Node1 -- Yes --> N_CargoFoundwithTRBondType_Node1_action N_CargoFoundwithTRBondType_Node1_action --> E_CargoFoundwithTRBondType N_CargoFoundwithTRBondType_Node0 -- No --> N_CargoFoundwithTRBondType_Node1 N_CargoFoundwithTRBondType_Node1 -- No --> E_CargoFoundwithTRBondType
File: GCX003.cbl
GIVEN:
A cargo record is being processed for TR bond diversion
WHEN:
- The system checks if cargo exists
- Has tr bond type
THEN:
- Processing continues only if cargo is found
- Bond type is tr, otherwise diversion processing is skipped
File: GCX003.cbl
GIVEN:
A cargo record is being processed for detour evaluation
WHEN:
The system checks the cargo bond type code
THEN:
If cargo has bond type 'US-CAN-US' and is not flagged with special USMX TR processing, proceed with TR bond detour processing, otherwise skip TR bond processing
β Consolidated Acceptance Criteria
- The system checks the cargo short description status → diversion processing continues only if cargo status equals release status, otherwise processing is skipped
- The system compares the cargo short description with the release status constant → if cargo short description equals the release status value, proceed with action-based processing, otherwise skip TR bond detour processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoStatusRelease(["Start Step"])
E_CargoStatusRelease(["End Step"])
N_CargoStatusRelease_Node0{"The system checks the cargo short
description status"}:::decision N_CargoStatusRelease_Node0_action["Diversion processing continues only
if cargo status equals release
status, otherwise processing is
skipped"]:::main N_CargoStatusRelease_Node0 -- Yes --> N_CargoStatusRelease_Node0_action N_CargoStatusRelease_Node0_action --> E_CargoStatusRelease S_CargoStatusRelease --> N_CargoStatusRelease_Node0 N_CargoStatusRelease_Node1{"The system compares the cargo short
description with the release status
constant"}:::decision N_CargoStatusRelease_Node1_action["If cargo short description equals
the release status value, proceed
with action-based processing,
otherwise skip TR bond detour
processing"]:::main N_CargoStatusRelease_Node1 -- Yes --> N_CargoStatusRelease_Node1_action N_CargoStatusRelease_Node1_action --> E_CargoStatusRelease N_CargoStatusRelease_Node0 -- No --> N_CargoStatusRelease_Node1 N_CargoStatusRelease_Node1 -- No --> E_CargoStatusRelease
description status"}:::decision N_CargoStatusRelease_Node0_action["Diversion processing continues only
if cargo status equals release
status, otherwise processing is
skipped"]:::main N_CargoStatusRelease_Node0 -- Yes --> N_CargoStatusRelease_Node0_action N_CargoStatusRelease_Node0_action --> E_CargoStatusRelease S_CargoStatusRelease --> N_CargoStatusRelease_Node0 N_CargoStatusRelease_Node1{"The system compares the cargo short
description with the release status
constant"}:::decision N_CargoStatusRelease_Node1_action["If cargo short description equals
the release status value, proceed
with action-based processing,
otherwise skip TR bond detour
processing"]:::main N_CargoStatusRelease_Node1 -- Yes --> N_CargoStatusRelease_Node1_action N_CargoStatusRelease_Node1_action --> E_CargoStatusRelease N_CargoStatusRelease_Node0 -- No --> N_CargoStatusRelease_Node1 N_CargoStatusRelease_Node1 -- No --> E_CargoStatusRelease
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo with TR bond type exists and TR has not been created for IT
WHEN:
The system checks the cargo short description status
THEN:
Diversion processing continues only if cargo status equals release status, otherwise processing is skipped
File: GCX003.cbl
GIVEN:
TR bond cargo with blank TR created flag is being processed
WHEN:
The system compares the cargo short description with the release status constant
THEN:
If cargo short description equals the release status value, proceed with action-based processing, otherwise skip TR bond detour processing
β Consolidated Acceptance Criteria
- The system processes the diversion for reporting → message 18 is generated indicating TR bond diversion detected and added to report lines
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateMessage18TRBondDiversionReport(["Start Step"])
E_GenerateMessage18TRBondDiversionReport(["End Step"])
N_GenerateMessage18TRBondDiversionReport_Node0{"The system processes the diversion
for reporting"}:::decision N_GenerateMessage18TRBondDiversionReport_Node0_action["Message 18 is generated indicating
TR bond diversion detected and added
to report lines"]:::main N_GenerateMessage18TRBondDiversionReport_Node0 -- Yes --> N_GenerateMessage18TRBondDiversionReport_Node0_action N_GenerateMessage18TRBondDiversionReport_Node0_action --> E_GenerateMessage18TRBondDiversionReport S_GenerateMessage18TRBondDiversionReport --> N_GenerateMessage18TRBondDiversionReport_Node0 N_GenerateMessage18TRBondDiversionReport_Node0 -- No --> E_GenerateMessage18TRBondDiversionReport
for reporting"}:::decision N_GenerateMessage18TRBondDiversionReport_Node0_action["Message 18 is generated indicating
TR bond diversion detected and added
to report lines"]:::main N_GenerateMessage18TRBondDiversionReport_Node0 -- Yes --> N_GenerateMessage18TRBondDiversionReport_Node0_action N_GenerateMessage18TRBondDiversionReport_Node0_action --> E_GenerateMessage18TRBondDiversionReport S_GenerateMessage18TRBondDiversionReport --> N_GenerateMessage18TRBondDiversionReport_Node0 N_GenerateMessage18TRBondDiversionReport_Node0 -- No --> E_GenerateMessage18TRBondDiversionReport
File: GCX003.cbl
GIVEN:
Cargo qualifies for TR bond diversion and request action is REPORT
WHEN:
The system processes the diversion for reporting
THEN:
- Message 18 is generated indicating tr bond diversion detected
- Added to report lines
β Consolidated Acceptance Criteria
- The system checks user authorization for special manifest creation → if user is not authorized, generate error message 43; if authorized, proceed with manifest creation
- The system validates user authorization for special manifests → if user is not authorized, generate error message 43 and report message, otherwise proceed with special manifest creation
- The system checks if the user is authorized for special manifest creation → if not authorized, generate authorization error message and exit; if authorized, proceed with port change processing
- The system validates user special manifest authorization → if user is not authorized, generate authorization error message; if authorized, proceed with manifest creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UserAuthorizedforSpecialManifest(["Start Step"])
E_UserAuthorizedforSpecialManifest(["End Step"])
N_UserAuthorizedforSpecialManifest_Node0{"The system checks user
authorization for special manifest
creation"}:::decision N_UserAuthorizedforSpecialManifest_Node0_action["If user is not authorized, generate
error message 43 if authorized,
proceed with manifest creation"]:::main N_UserAuthorizedforSpecialManifest_Node0 -- Yes --> N_UserAuthorizedforSpecialManifest_Node0_action N_UserAuthorizedforSpecialManifest_Node0_action --> E_UserAuthorizedforSpecialManifest S_UserAuthorizedforSpecialManifest --> N_UserAuthorizedforSpecialManifest_Node0 N_UserAuthorizedforSpecialManifest_Node1{"The system validates user
authorization for special manifests"}:::decision N_UserAuthorizedforSpecialManifest_Node1_action["If user is not authorized, generate
error message 43 and report message,
otherwise proceed with special
manifest creation"]:::main N_UserAuthorizedforSpecialManifest_Node1 -- Yes --> N_UserAuthorizedforSpecialManifest_Node1_action N_UserAuthorizedforSpecialManifest_Node1_action --> E_UserAuthorizedforSpecialManifest N_UserAuthorizedforSpecialManifest_Node0 -- No --> N_UserAuthorizedforSpecialManifest_Node1 N_UserAuthorizedforSpecialManifest_Node2{"The system checks if the user is
authorized for special manifest
creation"}:::decision N_UserAuthorizedforSpecialManifest_Node2_action["If not authorized, generate
authorization error message and exit
if authorized, proceed with port
change processing"]:::main N_UserAuthorizedforSpecialManifest_Node2 -- Yes --> N_UserAuthorizedforSpecialManifest_Node2_action N_UserAuthorizedforSpecialManifest_Node2_action --> E_UserAuthorizedforSpecialManifest N_UserAuthorizedforSpecialManifest_Node1 -- No --> N_UserAuthorizedforSpecialManifest_Node2 N_UserAuthorizedforSpecialManifest_Node3{"The system validates user special
manifest authorization"}:::decision N_UserAuthorizedforSpecialManifest_Node3_action["If user is not authorized, generate
authorization error message if
authorized, proceed with manifest
creation"]:::main N_UserAuthorizedforSpecialManifest_Node3 -- Yes --> N_UserAuthorizedforSpecialManifest_Node3_action N_UserAuthorizedforSpecialManifest_Node3_action --> E_UserAuthorizedforSpecialManifest N_UserAuthorizedforSpecialManifest_Node2 -- No --> N_UserAuthorizedforSpecialManifest_Node3 N_UserAuthorizedforSpecialManifest_Node3 -- No --> E_UserAuthorizedforSpecialManifest
authorization for special manifest
creation"}:::decision N_UserAuthorizedforSpecialManifest_Node0_action["If user is not authorized, generate
error message 43 if authorized,
proceed with manifest creation"]:::main N_UserAuthorizedforSpecialManifest_Node0 -- Yes --> N_UserAuthorizedforSpecialManifest_Node0_action N_UserAuthorizedforSpecialManifest_Node0_action --> E_UserAuthorizedforSpecialManifest S_UserAuthorizedforSpecialManifest --> N_UserAuthorizedforSpecialManifest_Node0 N_UserAuthorizedforSpecialManifest_Node1{"The system validates user
authorization for special manifests"}:::decision N_UserAuthorizedforSpecialManifest_Node1_action["If user is not authorized, generate
error message 43 and report message,
otherwise proceed with special
manifest creation"]:::main N_UserAuthorizedforSpecialManifest_Node1 -- Yes --> N_UserAuthorizedforSpecialManifest_Node1_action N_UserAuthorizedforSpecialManifest_Node1_action --> E_UserAuthorizedforSpecialManifest N_UserAuthorizedforSpecialManifest_Node0 -- No --> N_UserAuthorizedforSpecialManifest_Node1 N_UserAuthorizedforSpecialManifest_Node2{"The system checks if the user is
authorized for special manifest
creation"}:::decision N_UserAuthorizedforSpecialManifest_Node2_action["If not authorized, generate
authorization error message and exit
if authorized, proceed with port
change processing"]:::main N_UserAuthorizedforSpecialManifest_Node2 -- Yes --> N_UserAuthorizedforSpecialManifest_Node2_action N_UserAuthorizedforSpecialManifest_Node2_action --> E_UserAuthorizedforSpecialManifest N_UserAuthorizedforSpecialManifest_Node1 -- No --> N_UserAuthorizedforSpecialManifest_Node2 N_UserAuthorizedforSpecialManifest_Node3{"The system validates user special
manifest authorization"}:::decision N_UserAuthorizedforSpecialManifest_Node3_action["If user is not authorized, generate
authorization error message if
authorized, proceed with manifest
creation"]:::main N_UserAuthorizedforSpecialManifest_Node3 -- Yes --> N_UserAuthorizedforSpecialManifest_Node3_action N_UserAuthorizedforSpecialManifest_Node3_action --> E_UserAuthorizedforSpecialManifest N_UserAuthorizedforSpecialManifest_Node2 -- No --> N_UserAuthorizedforSpecialManifest_Node3 N_UserAuthorizedforSpecialManifest_Node3 -- No --> E_UserAuthorizedforSpecialManifest
File: GCX003.cbl
GIVEN:
Cargo qualifies for TR bond diversion and request action is SEND
WHEN:
The system checks user authorization for special manifest creation
THEN:
If user is not authorized, generate error message 43; if authorized, proceed with manifest creation
File: GCX003.cbl
GIVEN:
A special manifest creation is required for detour processing
WHEN:
The system validates user authorization for special manifests
THEN:
- If user is not authorized, generate error message 43
- Report message, otherwise proceed with special manifest creation
File: GCX003.cbl
GIVEN:
A port location mismatch is detected and the request action is SEND
WHEN:
The system checks if the user is authorized for special manifest creation
THEN:
- If not authorized, generate authorization error message
- Exit; if authorized, proceed with port change processing
File: GCX003.cbl
GIVEN:
A SEND request for border clearance cargo requiring special manifest
WHEN:
The system validates user special manifest authorization
THEN:
If user is not authorized, generate authorization error message; if authorized, proceed with manifest creation
β Consolidated Acceptance Criteria
- The system validates user permissions → message 43 is generated indicating user is not authorized for special manifest creation and processing continues without manifest creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateMessage43NotAuthorizedError(["Start Step"])
E_GenerateMessage43NotAuthorizedError(["End Step"])
N_GenerateMessage43NotAuthorizedError_Node0{"The system validates user
permissions"}:::decision N_GenerateMessage43NotAuthorizedError_Node0_action["Message 43 is generated indicating
user is not authorized for special
manifest creation and processing
continues without manifest creation"]:::main N_GenerateMessage43NotAuthorizedError_Node0 -- Yes --> N_GenerateMessage43NotAuthorizedError_Node0_action N_GenerateMessage43NotAuthorizedError_Node0_action --> E_GenerateMessage43NotAuthorizedError S_GenerateMessage43NotAuthorizedError --> N_GenerateMessage43NotAuthorizedError_Node0 N_GenerateMessage43NotAuthorizedError_Node0 -- No --> E_GenerateMessage43NotAuthorizedError
permissions"}:::decision N_GenerateMessage43NotAuthorizedError_Node0_action["Message 43 is generated indicating
user is not authorized for special
manifest creation and processing
continues without manifest creation"]:::main N_GenerateMessage43NotAuthorizedError_Node0 -- Yes --> N_GenerateMessage43NotAuthorizedError_Node0_action N_GenerateMessage43NotAuthorizedError_Node0_action --> E_GenerateMessage43NotAuthorizedError S_GenerateMessage43NotAuthorizedError --> N_GenerateMessage43NotAuthorizedError_Node0 N_GenerateMessage43NotAuthorizedError_Node0 -- No --> E_GenerateMessage43NotAuthorizedError
File: GCX003.cbl
GIVEN:
User attempts to send TR bond diversion but lacks special manifest authorization
WHEN:
The system validates user permissions
THEN:
- Message 43 is generated indicating user is not authorized for special manifest creation
- Processing continues without manifest creation
β Consolidated Acceptance Criteria
- The system processes the send request → message 23 is generated confirming TR bond diversion will be sent and special manifest creation is initiated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateMessage23TRBondDiversionSend(["Start Step"])
E_GenerateMessage23TRBondDiversionSend(["End Step"])
N_GenerateMessage23TRBondDiversionSend_Node0{"The system processes the send
request"}:::decision N_GenerateMessage23TRBondDiversionSend_Node0_action["Message 23 is generated confirming
TR bond diversion will be sent and
special manifest creation is
initiated"]:::main N_GenerateMessage23TRBondDiversionSend_Node0 -- Yes --> N_GenerateMessage23TRBondDiversionSend_Node0_action N_GenerateMessage23TRBondDiversionSend_Node0_action --> E_GenerateMessage23TRBondDiversionSend S_GenerateMessage23TRBondDiversionSend --> N_GenerateMessage23TRBondDiversionSend_Node0 N_GenerateMessage23TRBondDiversionSend_Node0 -- No --> E_GenerateMessage23TRBondDiversionSend
request"}:::decision N_GenerateMessage23TRBondDiversionSend_Node0_action["Message 23 is generated confirming
TR bond diversion will be sent and
special manifest creation is
initiated"]:::main N_GenerateMessage23TRBondDiversionSend_Node0 -- Yes --> N_GenerateMessage23TRBondDiversionSend_Node0_action N_GenerateMessage23TRBondDiversionSend_Node0_action --> E_GenerateMessage23TRBondDiversionSend S_GenerateMessage23TRBondDiversionSend --> N_GenerateMessage23TRBondDiversionSend_Node0 N_GenerateMessage23TRBondDiversionSend_Node0 -- No --> E_GenerateMessage23TRBondDiversionSend
File: GCX003.cbl
GIVEN:
User is authorized to create special manifests for TR bond diversion
WHEN:
The system processes the send request
THEN:
- Message 23 is generated confirming tr bond diversion will be sent
- Special manifest creation is initiated
β Consolidated Acceptance Criteria
- The system prepares for special manifest creation → detour spawn flag is set to trigger subsequent special manifest processing workflow
- The system prepares for special manifest processing → set the detour spawn flag to true to trigger subsequent special manifest creation workflow
- The system prepares for manifest generation → set the detour spawn flag to TRUE to trigger special manifest processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDetourSpawnFlag(["Start Step"])
E_SetDetourSpawnFlag(["End Step"])
N_SetDetourSpawnFlag_Node0{"The system prepares for special
manifest creation"}:::decision N_SetDetourSpawnFlag_Node0_action["Detour spawn flag is set to trigger
subsequent special manifest
processing workflow"]:::main N_SetDetourSpawnFlag_Node0 -- Yes --> N_SetDetourSpawnFlag_Node0_action N_SetDetourSpawnFlag_Node0_action --> E_SetDetourSpawnFlag S_SetDetourSpawnFlag --> N_SetDetourSpawnFlag_Node0 N_SetDetourSpawnFlag_Node1{"The system prepares for special
manifest processing"}:::decision N_SetDetourSpawnFlag_Node1_action["Set the detour spawn flag to true
to trigger subsequent special
manifest creation workflow"]:::main N_SetDetourSpawnFlag_Node1 -- Yes --> N_SetDetourSpawnFlag_Node1_action N_SetDetourSpawnFlag_Node1_action --> E_SetDetourSpawnFlag N_SetDetourSpawnFlag_Node0 -- No --> N_SetDetourSpawnFlag_Node1 N_SetDetourSpawnFlag_Node2{"The system prepares for manifest
generation"}:::decision N_SetDetourSpawnFlag_Node2_action["Set the detour spawn flag to TRUE
to trigger special manifest
processing"]:::main N_SetDetourSpawnFlag_Node2 -- Yes --> N_SetDetourSpawnFlag_Node2_action N_SetDetourSpawnFlag_Node2_action --> E_SetDetourSpawnFlag N_SetDetourSpawnFlag_Node1 -- No --> N_SetDetourSpawnFlag_Node2 N_SetDetourSpawnFlag_Node2 -- No --> E_SetDetourSpawnFlag
manifest creation"}:::decision N_SetDetourSpawnFlag_Node0_action["Detour spawn flag is set to trigger
subsequent special manifest
processing workflow"]:::main N_SetDetourSpawnFlag_Node0 -- Yes --> N_SetDetourSpawnFlag_Node0_action N_SetDetourSpawnFlag_Node0_action --> E_SetDetourSpawnFlag S_SetDetourSpawnFlag --> N_SetDetourSpawnFlag_Node0 N_SetDetourSpawnFlag_Node1{"The system prepares for special
manifest processing"}:::decision N_SetDetourSpawnFlag_Node1_action["Set the detour spawn flag to true
to trigger subsequent special
manifest creation workflow"]:::main N_SetDetourSpawnFlag_Node1 -- Yes --> N_SetDetourSpawnFlag_Node1_action N_SetDetourSpawnFlag_Node1_action --> E_SetDetourSpawnFlag N_SetDetourSpawnFlag_Node0 -- No --> N_SetDetourSpawnFlag_Node1 N_SetDetourSpawnFlag_Node2{"The system prepares for manifest
generation"}:::decision N_SetDetourSpawnFlag_Node2_action["Set the detour spawn flag to TRUE
to trigger special manifest
processing"]:::main N_SetDetourSpawnFlag_Node2 -- Yes --> N_SetDetourSpawnFlag_Node2_action N_SetDetourSpawnFlag_Node2_action --> E_SetDetourSpawnFlag N_SetDetourSpawnFlag_Node1 -- No --> N_SetDetourSpawnFlag_Node2 N_SetDetourSpawnFlag_Node2 -- No --> E_SetDetourSpawnFlag
File: GCX003.cbl
GIVEN:
Authorized TR bond diversion send request is being processed
WHEN:
The system prepares for special manifest creation
THEN:
Detour spawn flag is set to trigger subsequent special manifest processing workflow
File: GCX003.cbl
GIVEN:
TR bond special manifest creation is authorized and initiated
WHEN:
The system prepares for special manifest processing
THEN:
Set the detour spawn flag to true to trigger subsequent special manifest creation workflow
File: GCX003.cbl
GIVEN:
An authorized special manifest creation for border clearance
WHEN:
The system prepares for manifest generation
THEN:
Set the detour spawn flag to TRUE to trigger special manifest processing
β Consolidated Acceptance Criteria
- The system initiates special manifest creation → special manifest creation process is invoked to handle the TR bond diversion with appropriate cargo and equipment details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateSpecialManifestforTRDiversion(["Start Step"])
E_CreateSpecialManifestforTRDiversion(["End Step"])
N_CreateSpecialManifestforTRDiversion_Node0{"The system initiates special
manifest creation"}:::decision N_CreateSpecialManifestforTRDiversion_Node0_action["Special manifest creation process
is invoked to handle the TR bond
diversion with appropriate cargo and
equipment details"]:::main N_CreateSpecialManifestforTRDiversion_Node0 -- Yes --> N_CreateSpecialManifestforTRDiversion_Node0_action N_CreateSpecialManifestforTRDiversion_Node0_action --> E_CreateSpecialManifestforTRDiversion S_CreateSpecialManifestforTRDiversion --> N_CreateSpecialManifestforTRDiversion_Node0 N_CreateSpecialManifestforTRDiversion_Node0 -- No --> E_CreateSpecialManifestforTRDiversion
manifest creation"}:::decision N_CreateSpecialManifestforTRDiversion_Node0_action["Special manifest creation process
is invoked to handle the TR bond
diversion with appropriate cargo and
equipment details"]:::main N_CreateSpecialManifestforTRDiversion_Node0 -- Yes --> N_CreateSpecialManifestforTRDiversion_Node0_action N_CreateSpecialManifestforTRDiversion_Node0_action --> E_CreateSpecialManifestforTRDiversion S_CreateSpecialManifestforTRDiversion --> N_CreateSpecialManifestforTRDiversion_Node0 N_CreateSpecialManifestforTRDiversion_Node0 -- No --> E_CreateSpecialManifestforTRDiversion
File: GCX003.cbl
GIVEN:
Detour spawn flag is set for TR bond diversion
WHEN:
The system initiates special manifest creation
THEN:
- Special manifest creation process is invoked to handle the tr bond diversion with appropriate cargo
- Equipment details
β Consolidated Acceptance Criteria
- The request action is REPORT → generate message 24 for IT export reporting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateITExportReportMessage(["Start Step"])
E_GenerateITExportReportMessage(["End Step"])
N_GenerateITExportReportMessage_Node0{"The request action is REPORT"}:::decision
N_GenerateITExportReportMessage_Node0_action["Generate message 24 for IT export
reporting"]:::main N_GenerateITExportReportMessage_Node0 -- Yes --> N_GenerateITExportReportMessage_Node0_action N_GenerateITExportReportMessage_Node0_action --> E_GenerateITExportReportMessage S_GenerateITExportReportMessage --> N_GenerateITExportReportMessage_Node0 N_GenerateITExportReportMessage_Node0 -- No --> E_GenerateITExportReportMessage
reporting"]:::main N_GenerateITExportReportMessage_Node0 -- Yes --> N_GenerateITExportReportMessage_Node0_action N_GenerateITExportReportMessage_Node0_action --> E_GenerateITExportReportMessage S_GenerateITExportReportMessage --> N_GenerateITExportReportMessage_Node0 N_GenerateITExportReportMessage_Node0 -- No --> E_GenerateITExportReportMessage
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
IT bond cargo exists with TR-CREATED-FOR-IT not equal to 'Y' AND special manifest original flag is not set
WHEN:
The request action is REPORT
THEN:
Generate message 24 for IT export reporting
β Consolidated Acceptance Criteria
- The request action is SEND AND user is authorized for special manifests → set diversion spawn flag to TRUE, generate message 20, and perform special manifest creation process
- Train crossing port (GCSTBRT-SC-US-STAT-CODE-X) differs from cargo location (GCUSRT-P401-LOCATION-ID) and action is send → create diversion special manifest, generate message 20, and spawn GCX101 process with diversion flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateTRDiversionSpecialManifest(["Start Step"])
E_CreateTRDiversionSpecialManifest(["End Step"])
N_CreateTRDiversionSpecialManifest_Node0{"The request action is SEND AND user
is authorized for special manifests"}:::decision N_CreateTRDiversionSpecialManifest_Node0_action["Set diversion spawn flag to TRUE,
generate message 20, and perform
special manifest creation process"]:::main N_CreateTRDiversionSpecialManifest_Node0 -- Yes --> N_CreateTRDiversionSpecialManifest_Node0_action N_CreateTRDiversionSpecialManifest_Node0_action --> E_CreateTRDiversionSpecialManifest S_CreateTRDiversionSpecialManifest --> N_CreateTRDiversionSpecialManifest_Node0 N_CreateTRDiversionSpecialManifest_Node1{"Train crossing port
GCSTBRT-SC-US-STAT-CODE-X differs
from cargo location
GCUSRT-P401-LOCATION-ID and action
is send"}:::decision N_CreateTRDiversionSpecialManifest_Node1_action["Create diversion special manifest,
generate message 20, and spawn
GCX101 process with diversion flag"]:::main N_CreateTRDiversionSpecialManifest_Node1 -- Yes --> N_CreateTRDiversionSpecialManifest_Node1_action N_CreateTRDiversionSpecialManifest_Node1_action --> E_CreateTRDiversionSpecialManifest N_CreateTRDiversionSpecialManifest_Node0 -- No --> N_CreateTRDiversionSpecialManifest_Node1 N_CreateTRDiversionSpecialManifest_Node1 -- No --> E_CreateTRDiversionSpecialManifest
is authorized for special manifests"}:::decision N_CreateTRDiversionSpecialManifest_Node0_action["Set diversion spawn flag to TRUE,
generate message 20, and perform
special manifest creation process"]:::main N_CreateTRDiversionSpecialManifest_Node0 -- Yes --> N_CreateTRDiversionSpecialManifest_Node0_action N_CreateTRDiversionSpecialManifest_Node0_action --> E_CreateTRDiversionSpecialManifest S_CreateTRDiversionSpecialManifest --> N_CreateTRDiversionSpecialManifest_Node0 N_CreateTRDiversionSpecialManifest_Node1{"Train crossing port
GCSTBRT-SC-US-STAT-CODE-X differs
from cargo location
GCUSRT-P401-LOCATION-ID and action
is send"}:::decision N_CreateTRDiversionSpecialManifest_Node1_action["Create diversion special manifest,
generate message 20, and spawn
GCX101 process with diversion flag"]:::main N_CreateTRDiversionSpecialManifest_Node1 -- Yes --> N_CreateTRDiversionSpecialManifest_Node1_action N_CreateTRDiversionSpecialManifest_Node1_action --> E_CreateTRDiversionSpecialManifest N_CreateTRDiversionSpecialManifest_Node0 -- No --> N_CreateTRDiversionSpecialManifest_Node1 N_CreateTRDiversionSpecialManifest_Node1 -- No --> E_CreateTRDiversionSpecialManifest
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is found with TR bond type AND cargo location ID does not match train crossing port
WHEN:
- The request action is send
- User is authorized for special manifests
THEN:
Set diversion spawn flag to TRUE, generate message 20, and perform special manifest creation process
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has TR bond type and BOL type is not '15' and train origin is not spaces
WHEN:
Train crossing port (GCSTBRT-SC-US-STAT-CODE-X) differs from cargo location (GCUSRT-P401-LOCATION-ID) and action is send
THEN:
Create diversion special manifest, generate message 20, and spawn GCX101 process with diversion flag
β Consolidated Acceptance Criteria
- The request action is REPORT → generate message 19 with station code information for TR bond diversion reporting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateTRDiversionReportMessage(["Start Step"])
E_GenerateTRDiversionReportMessage(["End Step"])
N_GenerateTRDiversionReportMessage_Node0{"The request action is REPORT"}:::decision
N_GenerateTRDiversionReportMessage_Node0_action["Generate message 19 with station
code information for TR bond
diversion reporting"]:::main N_GenerateTRDiversionReportMessage_Node0 -- Yes --> N_GenerateTRDiversionReportMessage_Node0_action N_GenerateTRDiversionReportMessage_Node0_action --> E_GenerateTRDiversionReportMessage S_GenerateTRDiversionReportMessage --> N_GenerateTRDiversionReportMessage_Node0 N_GenerateTRDiversionReportMessage_Node0 -- No --> E_GenerateTRDiversionReportMessage
code information for TR bond
diversion reporting"]:::main N_GenerateTRDiversionReportMessage_Node0 -- Yes --> N_GenerateTRDiversionReportMessage_Node0_action N_GenerateTRDiversionReportMessage_Node0_action --> E_GenerateTRDiversionReportMessage S_GenerateTRDiversionReportMessage --> N_GenerateTRDiversionReportMessage_Node0 N_GenerateTRDiversionReportMessage_Node0 -- No --> E_GenerateTRDiversionReportMessage
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is found with TR bond type AND cargo location ID does not match train crossing port
WHEN:
The request action is REPORT
THEN:
Generate message 19 with station code information for TR bond diversion reporting
β Consolidated Acceptance Criteria
- The request action is SEND AND user is authorized for special manifests → set port change spawn flag to TRUE, generate message 20, and perform special manifest creation process
- The request action is SEND and cargo location does not match crossing port → the system should generate message 20, create report line, and set port change spawn flag for GCX101 processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateTEPortChangeSpecialManifest(["Start Step"])
E_CreateTEPortChangeSpecialManifest(["End Step"])
N_CreateTEPortChangeSpecialManifest_Node0{"The request action is SEND AND user
is authorized for special manifests"}:::decision N_CreateTEPortChangeSpecialManifest_Node0_action["Set port change spawn flag to TRUE,
generate message 20, and perform
special manifest creation process"]:::main N_CreateTEPortChangeSpecialManifest_Node0 -- Yes --> N_CreateTEPortChangeSpecialManifest_Node0_action N_CreateTEPortChangeSpecialManifest_Node0_action --> E_CreateTEPortChangeSpecialManifest S_CreateTEPortChangeSpecialManifest --> N_CreateTEPortChangeSpecialManifest_Node0 N_CreateTEPortChangeSpecialManifest_Node1{"The request action is SEND and
cargo location does not match
crossing port"}:::decision N_CreateTEPortChangeSpecialManifest_Node1_action["The system should generate message
20, create report line, and set port
change spawn flag for GCX101
processing"]:::main N_CreateTEPortChangeSpecialManifest_Node1 -- Yes --> N_CreateTEPortChangeSpecialManifest_Node1_action N_CreateTEPortChangeSpecialManifest_Node1_action --> E_CreateTEPortChangeSpecialManifest N_CreateTEPortChangeSpecialManifest_Node0 -- No --> N_CreateTEPortChangeSpecialManifest_Node1 N_CreateTEPortChangeSpecialManifest_Node1 -- No --> E_CreateTEPortChangeSpecialManifest
is authorized for special manifests"}:::decision N_CreateTEPortChangeSpecialManifest_Node0_action["Set port change spawn flag to TRUE,
generate message 20, and perform
special manifest creation process"]:::main N_CreateTEPortChangeSpecialManifest_Node0 -- Yes --> N_CreateTEPortChangeSpecialManifest_Node0_action N_CreateTEPortChangeSpecialManifest_Node0_action --> E_CreateTEPortChangeSpecialManifest S_CreateTEPortChangeSpecialManifest --> N_CreateTEPortChangeSpecialManifest_Node0 N_CreateTEPortChangeSpecialManifest_Node1{"The request action is SEND and
cargo location does not match
crossing port"}:::decision N_CreateTEPortChangeSpecialManifest_Node1_action["The system should generate message
20, create report line, and set port
change spawn flag for GCX101
processing"]:::main N_CreateTEPortChangeSpecialManifest_Node1 -- Yes --> N_CreateTEPortChangeSpecialManifest_Node1_action N_CreateTEPortChangeSpecialManifest_Node1_action --> E_CreateTEPortChangeSpecialManifest N_CreateTEPortChangeSpecialManifest_Node0 -- No --> N_CreateTEPortChangeSpecialManifest_Node1 N_CreateTEPortChangeSpecialManifest_Node1 -- No --> E_CreateTEPortChangeSpecialManifest
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is found with TE bond type AND TR-CREATED-FOR-IT is SPACES AND cargo status is not export AND cargo is billed as CPRS AND cargo location ID1 does not match train crossing port
WHEN:
- The request action is send
- User is authorized for special manifests
THEN:
Set port change spawn flag to TRUE, generate message 20, and perform special manifest creation process
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
TE cargo has location mismatch and user is authorized for special manifests
WHEN:
- The request action is send
- Cargo location does not match crossing port
THEN:
The system should generate message 20, create report line, and set port change spawn flag for GCX101 processing
β Consolidated Acceptance Criteria
- The request action is REPORT → generate message 19 with station code information for TE bond port change reporting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateTEPortChangeReportMessage(["Start Step"])
E_GenerateTEPortChangeReportMessage(["End Step"])
N_GenerateTEPortChangeReportMessage_Node0{"The request action is REPORT"}:::decision
N_GenerateTEPortChangeReportMessage_Node0_action["Generate message 19 with station
code information for TE bond port
change reporting"]:::main N_GenerateTEPortChangeReportMessage_Node0 -- Yes --> N_GenerateTEPortChangeReportMessage_Node0_action N_GenerateTEPortChangeReportMessage_Node0_action --> E_GenerateTEPortChangeReportMessage S_GenerateTEPortChangeReportMessage --> N_GenerateTEPortChangeReportMessage_Node0 N_GenerateTEPortChangeReportMessage_Node0 -- No --> E_GenerateTEPortChangeReportMessage
code information for TE bond port
change reporting"]:::main N_GenerateTEPortChangeReportMessage_Node0 -- Yes --> N_GenerateTEPortChangeReportMessage_Node0_action N_GenerateTEPortChangeReportMessage_Node0_action --> E_GenerateTEPortChangeReportMessage S_GenerateTEPortChangeReportMessage --> N_GenerateTEPortChangeReportMessage_Node0 N_GenerateTEPortChangeReportMessage_Node0 -- No --> E_GenerateTEPortChangeReportMessage
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is found with TE bond type AND TR-CREATED-FOR-IT is SPACES AND cargo status is not export AND cargo is billed as CPRS AND cargo location ID1 does not match train crossing port
WHEN:
The request action is REPORT
THEN:
Generate message 19 with station code information for TE bond port change reporting
β Consolidated Acceptance Criteria
- The request action is SEND AND user is authorized for special manifests → set US-US detour spawn flag to TRUE, generate message 23, and perform special manifest creation process
- The system creates a US-US detour special manifest → generate message 23, set US-US detour spawn flag, and invoke special manifest creation process
- The request action is SEND and waybill found with no cargo for US origin and destination → the system should generate message 23, create report line, and set US-US detour spawn flag for GCX101 processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateUSUSDetourSpecialManifest(["Start Step"])
E_CreateUSUSDetourSpecialManifest(["End Step"])
N_CreateUSUSDetourSpecialManifest_Node0{"The request action is SEND AND user
is authorized for special manifests"}:::decision N_CreateUSUSDetourSpecialManifest_Node0_action["Set US-US detour spawn flag to
TRUE, generate message 23, and
perform special manifest creation
process"]:::main N_CreateUSUSDetourSpecialManifest_Node0 -- Yes --> N_CreateUSUSDetourSpecialManifest_Node0_action N_CreateUSUSDetourSpecialManifest_Node0_action --> E_CreateUSUSDetourSpecialManifest S_CreateUSUSDetourSpecialManifest --> N_CreateUSUSDetourSpecialManifest_Node0 N_CreateUSUSDetourSpecialManifest_Node1{"The system creates a US-US detour
special manifest"}:::decision N_CreateUSUSDetourSpecialManifest_Node1_action["Generate message 23, set US-US
detour spawn flag, and invoke
special manifest creation process"]:::main N_CreateUSUSDetourSpecialManifest_Node1 -- Yes --> N_CreateUSUSDetourSpecialManifest_Node1_action N_CreateUSUSDetourSpecialManifest_Node1_action --> E_CreateUSUSDetourSpecialManifest N_CreateUSUSDetourSpecialManifest_Node0 -- No --> N_CreateUSUSDetourSpecialManifest_Node1 N_CreateUSUSDetourSpecialManifest_Node2{"The request action is SEND and
waybill found with no cargo for US
origin and destination"}:::decision N_CreateUSUSDetourSpecialManifest_Node2_action["The system should generate message
23, create report line, and set
US-US detour spawn flag for GCX101
processing"]:::main N_CreateUSUSDetourSpecialManifest_Node2 -- Yes --> N_CreateUSUSDetourSpecialManifest_Node2_action N_CreateUSUSDetourSpecialManifest_Node2_action --> E_CreateUSUSDetourSpecialManifest N_CreateUSUSDetourSpecialManifest_Node1 -- No --> N_CreateUSUSDetourSpecialManifest_Node2 N_CreateUSUSDetourSpecialManifest_Node2 -- No --> E_CreateUSUSDetourSpecialManifest
is authorized for special manifests"}:::decision N_CreateUSUSDetourSpecialManifest_Node0_action["Set US-US detour spawn flag to
TRUE, generate message 23, and
perform special manifest creation
process"]:::main N_CreateUSUSDetourSpecialManifest_Node0 -- Yes --> N_CreateUSUSDetourSpecialManifest_Node0_action N_CreateUSUSDetourSpecialManifest_Node0_action --> E_CreateUSUSDetourSpecialManifest S_CreateUSUSDetourSpecialManifest --> N_CreateUSUSDetourSpecialManifest_Node0 N_CreateUSUSDetourSpecialManifest_Node1{"The system creates a US-US detour
special manifest"}:::decision N_CreateUSUSDetourSpecialManifest_Node1_action["Generate message 23, set US-US
detour spawn flag, and invoke
special manifest creation process"]:::main N_CreateUSUSDetourSpecialManifest_Node1 -- Yes --> N_CreateUSUSDetourSpecialManifest_Node1_action N_CreateUSUSDetourSpecialManifest_Node1_action --> E_CreateUSUSDetourSpecialManifest N_CreateUSUSDetourSpecialManifest_Node0 -- No --> N_CreateUSUSDetourSpecialManifest_Node1 N_CreateUSUSDetourSpecialManifest_Node2{"The request action is SEND and
waybill found with no cargo for US
origin and destination"}:::decision N_CreateUSUSDetourSpecialManifest_Node2_action["The system should generate message
23, create report line, and set
US-US detour spawn flag for GCX101
processing"]:::main N_CreateUSUSDetourSpecialManifest_Node2 -- Yes --> N_CreateUSUSDetourSpecialManifest_Node2_action N_CreateUSUSDetourSpecialManifest_Node2_action --> E_CreateUSUSDetourSpecialManifest N_CreateUSUSDetourSpecialManifest_Node1 -- No --> N_CreateUSUSDetourSpecialManifest_Node2 N_CreateUSUSDetourSpecialManifest_Node2 -- No --> E_CreateUSUSDetourSpecialManifest
File: GCX003.cbl
GIVEN:
Waybill is found with no cargo AND origin and destination are both US states AND equipment is loaded or has residue weight with ER found
WHEN:
- The request action is send
- User is authorized for special manifests
THEN:
Set US-US detour spawn flag to TRUE, generate message 23, and perform special manifest creation process
File: GCX003.cbl
GIVEN:
User is authorized and US-US detour is required and action is SEND
WHEN:
The system creates a US-US detour special manifest
THEN:
Generate message 23, set US-US detour spawn flag, and invoke special manifest creation process
File: GCX003.cbl
GIVEN:
US domestic cargo requires detour processing and user is authorized for special manifests
WHEN:
- The request action is send
- Waybill found with no cargo for us origin
- Destination
THEN:
The system should generate message 23, create report line, and set US-US detour spawn flag for GCX101 processing
β Consolidated Acceptance Criteria
- The request action is REPORT → generate message 18 for US-US movement detour reporting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateUSUSDetourReportMessage(["Start Step"])
E_GenerateUSUSDetourReportMessage(["End Step"])
N_GenerateUSUSDetourReportMessage_Node0{"The request action is REPORT"}:::decision
N_GenerateUSUSDetourReportMessage_Node0_action["Generate message 18 for US-US
movement detour reporting"]:::main N_GenerateUSUSDetourReportMessage_Node0 -- Yes --> N_GenerateUSUSDetourReportMessage_Node0_action N_GenerateUSUSDetourReportMessage_Node0_action --> E_GenerateUSUSDetourReportMessage S_GenerateUSUSDetourReportMessage --> N_GenerateUSUSDetourReportMessage_Node0 N_GenerateUSUSDetourReportMessage_Node0 -- No --> E_GenerateUSUSDetourReportMessage
movement detour reporting"]:::main N_GenerateUSUSDetourReportMessage_Node0 -- Yes --> N_GenerateUSUSDetourReportMessage_Node0_action N_GenerateUSUSDetourReportMessage_Node0_action --> E_GenerateUSUSDetourReportMessage S_GenerateUSUSDetourReportMessage --> N_GenerateUSUSDetourReportMessage_Node0 N_GenerateUSUSDetourReportMessage_Node0 -- No --> E_GenerateUSUSDetourReportMessage
File: GCX003.cbl
GIVEN:
Waybill is found with no cargo AND origin and destination are both US states AND equipment is loaded or has residue weight with ER found
WHEN:
The request action is REPORT
THEN:
Generate message 18 for US-US movement detour reporting
β Consolidated Acceptance Criteria
- The request action is SEND AND user is authorized for special manifests → set 88-TR detour spawn flag to TRUE, generate message 23, and perform special manifest creation process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateUSMexicoExportSpecialManifest(["Start Step"])
E_CreateUSMexicoExportSpecialManifest(["End Step"])
N_CreateUSMexicoExportSpecialManifest_Node0{"The request action is SEND AND user
is authorized for special manifests"}:::decision N_CreateUSMexicoExportSpecialManifest_Node0_action["Set 88-TR detour spawn flag to
TRUE, generate message 23, and
perform special manifest creation
process"]:::main N_CreateUSMexicoExportSpecialManifest_Node0 -- Yes --> N_CreateUSMexicoExportSpecialManifest_Node0_action N_CreateUSMexicoExportSpecialManifest_Node0_action --> E_CreateUSMexicoExportSpecialManifest S_CreateUSMexicoExportSpecialManifest --> N_CreateUSMexicoExportSpecialManifest_Node0 N_CreateUSMexicoExportSpecialManifest_Node0 -- No --> E_CreateUSMexicoExportSpecialManifest
is authorized for special manifests"}:::decision N_CreateUSMexicoExportSpecialManifest_Node0_action["Set 88-TR detour spawn flag to
TRUE, generate message 23, and
perform special manifest creation
process"]:::main N_CreateUSMexicoExportSpecialManifest_Node0 -- Yes --> N_CreateUSMexicoExportSpecialManifest_Node0_action N_CreateUSMexicoExportSpecialManifest_Node0_action --> E_CreateUSMexicoExportSpecialManifest S_CreateUSMexicoExportSpecialManifest --> N_CreateUSMexicoExportSpecialManifest_Node0 N_CreateUSMexicoExportSpecialManifest_Node0 -- No --> E_CreateUSMexicoExportSpecialManifest
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is found with export type AND origin-destination country codes are 'USMX' AND special manifest flag is SPACES AND not at Laredo TX station
WHEN:
- The request action is send
- User is authorized for special manifests
THEN:
Set 88-TR detour spawn flag to TRUE, generate message 23, and perform special manifest creation process
β Consolidated Acceptance Criteria
- The request action is REPORT → generate message 50 for US-Mexico export reporting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateUSMexicoExportReportMessage(["Start Step"])
E_GenerateUSMexicoExportReportMessage(["End Step"])
N_GenerateUSMexicoExportReportMessage_Node0{"The request action is REPORT"}:::decision
N_GenerateUSMexicoExportReportMessage_Node0_action["Generate message 50 for US-Mexico
export reporting"]:::main N_GenerateUSMexicoExportReportMessage_Node0 -- Yes --> N_GenerateUSMexicoExportReportMessage_Node0_action N_GenerateUSMexicoExportReportMessage_Node0_action --> E_GenerateUSMexicoExportReportMessage S_GenerateUSMexicoExportReportMessage --> N_GenerateUSMexicoExportReportMessage_Node0 N_GenerateUSMexicoExportReportMessage_Node0 -- No --> E_GenerateUSMexicoExportReportMessage
export reporting"]:::main N_GenerateUSMexicoExportReportMessage_Node0 -- Yes --> N_GenerateUSMexicoExportReportMessage_Node0_action N_GenerateUSMexicoExportReportMessage_Node0_action --> E_GenerateUSMexicoExportReportMessage S_GenerateUSMexicoExportReportMessage --> N_GenerateUSMexicoExportReportMessage_Node0 N_GenerateUSMexicoExportReportMessage_Node0 -- No --> E_GenerateUSMexicoExportReportMessage
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is found with export type AND origin-destination country codes are 'USMX' AND special manifest flag is SPACES AND not at Laredo TX station
WHEN:
The request action is REPORT
THEN:
Generate message 50 for US-Mexico export reporting
β Consolidated Acceptance Criteria
- Cargo status equals release status AND request action is SEND AND user is authorized for special manifests → set detour spawn flag to TRUE, generate message 23, and perform special manifest creation process
- The system creates a border clearance special manifest → generate message 23, set detour spawn flag, and invoke special manifest creation process
- TR was not created for IT (GCUSRT-TR-CREATED-FOR-IT = SPACES) and cargo status equals release status and special manifest original flag is not set → create detour special manifest, generate message 23, and spawn GCX101 process with detour flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateBorderClearanceSpecialManifest(["Start Step"])
E_CreateBorderClearanceSpecialManifest(["End Step"])
N_CreateBorderClearanceSpecialManifest_Node0{"Cargo status equals release status
AND request action is SEND AND user
is authorized for special manifests"}:::decision N_CreateBorderClearanceSpecialManifest_Node0_action["Set detour spawn flag to TRUE,
generate message 23, and perform
special manifest creation process"]:::main N_CreateBorderClearanceSpecialManifest_Node0 -- Yes --> N_CreateBorderClearanceSpecialManifest_Node0_action N_CreateBorderClearanceSpecialManifest_Node0_action --> E_CreateBorderClearanceSpecialManifest S_CreateBorderClearanceSpecialManifest --> N_CreateBorderClearanceSpecialManifest_Node0 N_CreateBorderClearanceSpecialManifest_Node1{"The system creates a border
clearance special manifest"}:::decision N_CreateBorderClearanceSpecialManifest_Node1_action["Generate message 23, set detour
spawn flag, and invoke special
manifest creation process"]:::main N_CreateBorderClearanceSpecialManifest_Node1 -- Yes --> N_CreateBorderClearanceSpecialManifest_Node1_action N_CreateBorderClearanceSpecialManifest_Node1_action --> E_CreateBorderClearanceSpecialManifest N_CreateBorderClearanceSpecialManifest_Node0 -- No --> N_CreateBorderClearanceSpecialManifest_Node1 N_CreateBorderClearanceSpecialManifest_Node2{"TR was not created for IT
GCUSRT-TR-CREATED-FOR-IT SPACES and
cargo status equals release status
and special manifest original flag
is not set"}:::decision N_CreateBorderClearanceSpecialManifest_Node2_action["Create detour special manifest,
generate message 23, and spawn
GCX101 process with detour flag"]:::main N_CreateBorderClearanceSpecialManifest_Node2 -- Yes --> N_CreateBorderClearanceSpecialManifest_Node2_action N_CreateBorderClearanceSpecialManifest_Node2_action --> E_CreateBorderClearanceSpecialManifest N_CreateBorderClearanceSpecialManifest_Node1 -- No --> N_CreateBorderClearanceSpecialManifest_Node2 N_CreateBorderClearanceSpecialManifest_Node2 -- No --> E_CreateBorderClearanceSpecialManifest
AND request action is SEND AND user
is authorized for special manifests"}:::decision N_CreateBorderClearanceSpecialManifest_Node0_action["Set detour spawn flag to TRUE,
generate message 23, and perform
special manifest creation process"]:::main N_CreateBorderClearanceSpecialManifest_Node0 -- Yes --> N_CreateBorderClearanceSpecialManifest_Node0_action N_CreateBorderClearanceSpecialManifest_Node0_action --> E_CreateBorderClearanceSpecialManifest S_CreateBorderClearanceSpecialManifest --> N_CreateBorderClearanceSpecialManifest_Node0 N_CreateBorderClearanceSpecialManifest_Node1{"The system creates a border
clearance special manifest"}:::decision N_CreateBorderClearanceSpecialManifest_Node1_action["Generate message 23, set detour
spawn flag, and invoke special
manifest creation process"]:::main N_CreateBorderClearanceSpecialManifest_Node1 -- Yes --> N_CreateBorderClearanceSpecialManifest_Node1_action N_CreateBorderClearanceSpecialManifest_Node1_action --> E_CreateBorderClearanceSpecialManifest N_CreateBorderClearanceSpecialManifest_Node0 -- No --> N_CreateBorderClearanceSpecialManifest_Node1 N_CreateBorderClearanceSpecialManifest_Node2{"TR was not created for IT
GCUSRT-TR-CREATED-FOR-IT SPACES and
cargo status equals release status
and special manifest original flag
is not set"}:::decision N_CreateBorderClearanceSpecialManifest_Node2_action["Create detour special manifest,
generate message 23, and spawn
GCX101 process with detour flag"]:::main N_CreateBorderClearanceSpecialManifest_Node2 -- Yes --> N_CreateBorderClearanceSpecialManifest_Node2_action N_CreateBorderClearanceSpecialManifest_Node2_action --> E_CreateBorderClearanceSpecialManifest N_CreateBorderClearanceSpecialManifest_Node1 -- No --> N_CreateBorderClearanceSpecialManifest_Node2 N_CreateBorderClearanceSpecialManifest_Node2 -- No --> E_CreateBorderClearanceSpecialManifest
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is found with default type AND TR-CREATED-FOR-IT is SPACES AND special manifest original flag is not set
WHEN:
- Cargo status equals release status
- Request action is send
- User is authorized for special manifests
THEN:
Set detour spawn flag to TRUE, generate message 23, and perform special manifest creation process
File: GCX003.cbl
GIVEN:
User is authorized and border clearance release status is valid and action is SEND
WHEN:
The system creates a border clearance special manifest
THEN:
Generate message 23, set detour spawn flag, and invoke special manifest creation process
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is found and has default bond type (88-GCUSRT-M1109-DEFAULT is true)
WHEN:
- Tr was not created for it (gcusrt-tr-created-for-it = spaces) and cargo status equals release status
- Special manifest original flag is not set
THEN:
Create detour special manifest, generate message 23, and spawn GCX101 process with detour flag
β Consolidated Acceptance Criteria
- Cargo status does not equal release status → generate message 31 for invalid cargo status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateInvalidStatusMessage(["Start Step"])
E_GenerateInvalidStatusMessage(["End Step"])
N_GenerateInvalidStatusMessage_Node0{"Cargo status does not equal release
status"}:::decision N_GenerateInvalidStatusMessage_Node0_action["Generate message 31 for invalid
cargo status"]:::main N_GenerateInvalidStatusMessage_Node0 -- Yes --> N_GenerateInvalidStatusMessage_Node0_action N_GenerateInvalidStatusMessage_Node0_action --> E_GenerateInvalidStatusMessage S_GenerateInvalidStatusMessage --> N_GenerateInvalidStatusMessage_Node0 N_GenerateInvalidStatusMessage_Node0 -- No --> E_GenerateInvalidStatusMessage
status"}:::decision N_GenerateInvalidStatusMessage_Node0_action["Generate message 31 for invalid
cargo status"]:::main N_GenerateInvalidStatusMessage_Node0 -- Yes --> N_GenerateInvalidStatusMessage_Node0_action N_GenerateInvalidStatusMessage_Node0_action --> E_GenerateInvalidStatusMessage S_GenerateInvalidStatusMessage --> N_GenerateInvalidStatusMessage_Node0 N_GenerateInvalidStatusMessage_Node0 -- No --> E_GenerateInvalidStatusMessage
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is found with default type AND TR-CREATED-FOR-IT is SPACES AND special manifest original flag is not set
WHEN:
Cargo status does not equal release status
THEN:
Generate message 31 for invalid cargo status
β Consolidated Acceptance Criteria
- Special manifest creation is triggered → set high-values security byte, set 'US' record type code, set border code from station crossing port, set border name from station name, and set CCN from cargo CCN key
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSpecialManifestParameters(["Start Step"])
E_SetSpecialManifestParameters(["End Step"])
N_SetSpecialManifestParameters_Node0{"Special manifest creation is
triggered"}:::decision N_SetSpecialManifestParameters_Node0_action["Set high-values security byte, set
US record type code, set border code
from station crossing port, set
border name from station name, and
set CCN from cargo CCN key"]:::main N_SetSpecialManifestParameters_Node0 -- Yes --> N_SetSpecialManifestParameters_Node0_action N_SetSpecialManifestParameters_Node0_action --> E_SetSpecialManifestParameters S_SetSpecialManifestParameters --> N_SetSpecialManifestParameters_Node0 N_SetSpecialManifestParameters_Node0 -- No --> E_SetSpecialManifestParameters
triggered"}:::decision N_SetSpecialManifestParameters_Node0_action["Set high-values security byte, set
US record type code, set border code
from station crossing port, set
border name from station name, and
set CCN from cargo CCN key"]:::main N_SetSpecialManifestParameters_Node0 -- Yes --> N_SetSpecialManifestParameters_Node0_action N_SetSpecialManifestParameters_Node0_action --> E_SetSpecialManifestParameters S_SetSpecialManifestParameters --> N_SetSpecialManifestParameters_Node0 N_SetSpecialManifestParameters_Node0 -- No --> E_SetSpecialManifestParameters
File: GCX003.cbl
GIVEN:
A special manifest needs to be created for any cargo type
WHEN:
Special manifest creation is triggered
THEN:
Set high-values security byte, set 'US' record type code, set border code from station crossing port, set border name from station name, and set CCN from cargo CCN key
β Consolidated Acceptance Criteria
- Evaluating spawn type flags → set diversion flag for diversion spawn, set IT export flag for IT export spawn, set change port flag for port change spawn, set IT export flag for detour spawn, set US-US detour flag for US-US detour spawn, or set export TR flag for 88-TR detour spawn
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineManifestType(["Start Step"])
E_DetermineManifestType(["End Step"])
N_DetermineManifestType_Node0{"Evaluating spawn type flags"}:::decision
N_DetermineManifestType_Node0_action["Set diversion flag for diversion
spawn, set IT export flag for IT
export spawn, set change port flag
for port change spawn, set IT export
flag for detour spawn, set US-US
detour flag for US-US detour spawn,
or set export TR flag for 88-TR
detour spawn"]:::main N_DetermineManifestType_Node0 -- Yes --> N_DetermineManifestType_Node0_action N_DetermineManifestType_Node0_action --> E_DetermineManifestType S_DetermineManifestType --> N_DetermineManifestType_Node0 N_DetermineManifestType_Node0 -- No --> E_DetermineManifestType
spawn, set IT export flag for IT
export spawn, set change port flag
for port change spawn, set IT export
flag for detour spawn, set US-US
detour flag for US-US detour spawn,
or set export TR flag for 88-TR
detour spawn"]:::main N_DetermineManifestType_Node0 -- Yes --> N_DetermineManifestType_Node0_action N_DetermineManifestType_Node0_action --> E_DetermineManifestType S_DetermineManifestType --> N_DetermineManifestType_Node0 N_DetermineManifestType_Node0 -- No --> E_DetermineManifestType
File: GCX003.cbl
GIVEN:
Special manifest parameters are configured
WHEN:
Evaluating spawn type flags
THEN:
Set diversion flag for diversion spawn, set IT export flag for IT export spawn, set change port flag for port change spawn, set IT export flag for detour spawn, set US-US detour flag for US-US detour spawn, or set export TR flag for 88-TR detour spawn
β Consolidated Acceptance Criteria
- Setting equipment and waybill information → set equipment ID from current equipment ID, set waybill number from cargo waybill index, and set waybill date from cargo waybill date index
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentandWaybillInformation(["Start Step"])
E_SetEquipmentandWaybillInformation(["End Step"])
N_SetEquipmentandWaybillInformation_Node0{"Setting equipment and waybill
information"}:::decision N_SetEquipmentandWaybillInformation_Node0_action["Set equipment ID from current
equipment ID, set waybill number
from cargo waybill index, and set
waybill date from cargo waybill date
index"]:::main N_SetEquipmentandWaybillInformation_Node0 -- Yes --> N_SetEquipmentandWaybillInformation_Node0_action N_SetEquipmentandWaybillInformation_Node0_action --> E_SetEquipmentandWaybillInformation S_SetEquipmentandWaybillInformation --> N_SetEquipmentandWaybillInformation_Node0 N_SetEquipmentandWaybillInformation_Node0 -- No --> E_SetEquipmentandWaybillInformation
information"}:::decision N_SetEquipmentandWaybillInformation_Node0_action["Set equipment ID from current
equipment ID, set waybill number
from cargo waybill index, and set
waybill date from cargo waybill date
index"]:::main N_SetEquipmentandWaybillInformation_Node0 -- Yes --> N_SetEquipmentandWaybillInformation_Node0_action N_SetEquipmentandWaybillInformation_Node0_action --> E_SetEquipmentandWaybillInformation S_SetEquipmentandWaybillInformation --> N_SetEquipmentandWaybillInformation_Node0 N_SetEquipmentandWaybillInformation_Node0 -- No --> E_SetEquipmentandWaybillInformation
File: GCX003.cbl
GIVEN:
Special manifest type is determined
WHEN:
- Setting equipment
- Waybill information
THEN:
Set equipment ID from current equipment ID, set waybill number from cargo waybill index, and set waybill date from cargo waybill date index
β Consolidated Acceptance Criteria
- Queuing manifest for processing → increment report spawn count by 1 and store special manifest input parameters in working storage spawn table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QueueSpecialManifestforProcessing(["Start Step"])
E_QueueSpecialManifestforProcessing(["End Step"])
N_QueueSpecialManifestforProcessing_Node0{"Queuing manifest for processing"}:::decision
N_QueueSpecialManifestforProcessing_Node0_action["Increment report spawn count by 1
and store special manifest input
parameters in working storage spawn
table"]:::main N_QueueSpecialManifestforProcessing_Node0 -- Yes --> N_QueueSpecialManifestforProcessing_Node0_action N_QueueSpecialManifestforProcessing_Node0_action --> E_QueueSpecialManifestforProcessing S_QueueSpecialManifestforProcessing --> N_QueueSpecialManifestforProcessing_Node0 N_QueueSpecialManifestforProcessing_Node0 -- No --> E_QueueSpecialManifestforProcessing
and store special manifest input
parameters in working storage spawn
table"]:::main N_QueueSpecialManifestforProcessing_Node0 -- Yes --> N_QueueSpecialManifestforProcessing_Node0_action N_QueueSpecialManifestforProcessing_Node0_action --> E_QueueSpecialManifestforProcessing S_QueueSpecialManifestforProcessing --> N_QueueSpecialManifestforProcessing_Node0 N_QueueSpecialManifestforProcessing_Node0 -- No --> E_QueueSpecialManifestforProcessing
File: GCX003.cbl
GIVEN:
Special manifest is fully configured with all required parameters
WHEN:
Queuing manifest for processing
THEN:
- Increment report spawn count by 1
- Store special manifest input parameters in working storage spawn table
β Consolidated Acceptance Criteria
- The system checks the user's special manifest authorization flag in the user security table → if the user's special manifest flag is not 'S' and the request is not an AEI train send, then set the user not authorized for special manifest flag to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckUserSpecialManifestAuthorizationFlag(["Start Step"])
E_CheckUserSpecialManifestAuthorizationFlag(["End Step"])
N_CheckUserSpecialManifestAuthorizationFlag_Node0{"The system checks the user s
special manifest authorization flag
in the user security table"}:::decision N_CheckUserSpecialManifestAuthorizationFlag_Node0_action["If the user s special manifest flag
is not S and the request is not an
AEI train send, then set the user
not authorized for special manifest
flag to true"]:::main N_CheckUserSpecialManifestAuthorizationFlag_Node0 -- Yes --> N_CheckUserSpecialManifestAuthorizationFlag_Node0_action N_CheckUserSpecialManifestAuthorizationFlag_Node0_action --> E_CheckUserSpecialManifestAuthorizationFlag S_CheckUserSpecialManifestAuthorizationFlag --> N_CheckUserSpecialManifestAuthorizationFlag_Node0 N_CheckUserSpecialManifestAuthorizationFlag_Node0 -- No --> E_CheckUserSpecialManifestAuthorizationFlag
special manifest authorization flag
in the user security table"}:::decision N_CheckUserSpecialManifestAuthorizationFlag_Node0_action["If the user s special manifest flag
is not S and the request is not an
AEI train send, then set the user
not authorized for special manifest
flag to true"]:::main N_CheckUserSpecialManifestAuthorizationFlag_Node0 -- Yes --> N_CheckUserSpecialManifestAuthorizationFlag_Node0_action N_CheckUserSpecialManifestAuthorizationFlag_Node0_action --> E_CheckUserSpecialManifestAuthorizationFlag S_CheckUserSpecialManifestAuthorizationFlag --> N_CheckUserSpecialManifestAuthorizationFlag_Node0 N_CheckUserSpecialManifestAuthorizationFlag_Node0 -- No --> E_CheckUserSpecialManifestAuthorizationFlag
File: GCX003.cbl
GIVEN:
A user is processing a non-AEI train request and user security check is complete
WHEN:
The system checks the user's special manifest authorization flag in the user security table
THEN:
If the user's special manifest flag is not 'S' and the request is not an AEI train send, then set the user not authorized for special manifest flag to true
β Consolidated Acceptance Criteria
- The system processes the cargo for special manifest requirements → if user is authorized for special manifests or action is not SEND, then create special manifest and generate message 23 or 24, otherwise generate authorization error message 43
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BondTypeRequiresSpecialManifest(["Start Step"])
E_BondTypeRequiresSpecialManifest(["End Step"])
N_BondTypeRequiresSpecialManifest_Node0{"The system processes the cargo for
special manifest requirements"}:::decision N_BondTypeRequiresSpecialManifest_Node0_action["If user is authorized for special
manifests or action is not SEND,
then create special manifest and
generate message 23 or 24, otherwise
generate authorization error message
43"]:::main N_BondTypeRequiresSpecialManifest_Node0 -- Yes --> N_BondTypeRequiresSpecialManifest_Node0_action N_BondTypeRequiresSpecialManifest_Node0_action --> E_BondTypeRequiresSpecialManifest S_BondTypeRequiresSpecialManifest --> N_BondTypeRequiresSpecialManifest_Node0 N_BondTypeRequiresSpecialManifest_Node0 -- No --> E_BondTypeRequiresSpecialManifest
special manifest requirements"}:::decision N_BondTypeRequiresSpecialManifest_Node0_action["If user is authorized for special
manifests or action is not SEND,
then create special manifest and
generate message 23 or 24, otherwise
generate authorization error message
43"]:::main N_BondTypeRequiresSpecialManifest_Node0 -- Yes --> N_BondTypeRequiresSpecialManifest_Node0_action N_BondTypeRequiresSpecialManifest_Node0_action --> E_BondTypeRequiresSpecialManifest S_BondTypeRequiresSpecialManifest --> N_BondTypeRequiresSpecialManifest_Node0 N_BondTypeRequiresSpecialManifest_Node0 -- No --> E_BondTypeRequiresSpecialManifest
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is found with IT bond type and cargo is not already created for IT and cargo does not have special manifest origin flag set
WHEN:
The system processes the cargo for special manifest requirements
THEN:
- If user is authorized for special manifests or action is not send, then create special manifest
- Generate message 23 or 24, otherwise generate authorization error message 43
β Consolidated Acceptance Criteria
- The action type is SEND and user is not authorized for special manifests → generate authorization error message 43 and do not create port change manifest, otherwise if action is SEND and user is authorized, generate message 20 and create port change spawn
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ActionTypeisSEND(["Start Step"])
E_ActionTypeisSEND(["End Step"])
N_ActionTypeisSEND_Node0{"The action type is SEND and user is
not authorized for special manifests"}:::decision N_ActionTypeisSEND_Node0_action["Generate authorization error
message 43 and do not create port
change manifest, otherwise if action
is SEND and user is authorized,
generate message 20 and create port
change spawn"]:::main N_ActionTypeisSEND_Node0 -- Yes --> N_ActionTypeisSEND_Node0_action N_ActionTypeisSEND_Node0_action --> E_ActionTypeisSEND S_ActionTypeisSEND --> N_ActionTypeisSEND_Node0 N_ActionTypeisSEND_Node0 -- No --> E_ActionTypeisSEND
not authorized for special manifests"}:::decision N_ActionTypeisSEND_Node0_action["Generate authorization error
message 43 and do not create port
change manifest, otherwise if action
is SEND and user is authorized,
generate message 20 and create port
change spawn"]:::main N_ActionTypeisSEND_Node0 -- Yes --> N_ActionTypeisSEND_Node0_action N_ActionTypeisSEND_Node0_action --> E_ActionTypeisSEND S_ActionTypeisSEND --> N_ActionTypeisSEND_Node0 N_ActionTypeisSEND_Node0 -- No --> E_ActionTypeisSEND
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has TE bond type and cargo is not created for IT and cargo location does not match train crossing port and user is processing the cargo
WHEN:
- The action type is send
- User is not authorized for special manifests
THEN:
- Generate authorization error message 43
- Do not create port change manifest, otherwise if action is send
- User is authorized, generate message 20
- Create port change spawn
β Consolidated Acceptance Criteria
- Cargo does not have special manifest flag and action type is SEND and user is not authorized for special manifests → generate authorization error message 43 and do not create special manifest, otherwise if action is SEND and user is authorized, generate message 23 and create 88-TR detour spawn, or if cargo has special manifest flag, generate message 31
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EndAuthorizationCheck(["Start Step"])
E_EndAuthorizationCheck(["End Step"])
N_EndAuthorizationCheck_Node0{"Cargo does not have special
manifest flag and action type is
SEND and user is not authorized for
special manifests"}:::decision N_EndAuthorizationCheck_Node0_action["Generate authorization error
message 43 and do not create special
manifest, otherwise if action is
SEND and user is authorized,
generate message 23 and create 88-TR
detour spawn, or if cargo has
special manifest flag, generate
message 31"]:::main N_EndAuthorizationCheck_Node0 -- Yes --> N_EndAuthorizationCheck_Node0_action N_EndAuthorizationCheck_Node0_action --> E_EndAuthorizationCheck S_EndAuthorizationCheck --> N_EndAuthorizationCheck_Node0 N_EndAuthorizationCheck_Node0 -- No --> E_EndAuthorizationCheck
manifest flag and action type is
SEND and user is not authorized for
special manifests"}:::decision N_EndAuthorizationCheck_Node0_action["Generate authorization error
message 43 and do not create special
manifest, otherwise if action is
SEND and user is authorized,
generate message 23 and create 88-TR
detour spawn, or if cargo has
special manifest flag, generate
message 31"]:::main N_EndAuthorizationCheck_Node0 -- Yes --> N_EndAuthorizationCheck_Node0_action N_EndAuthorizationCheck_Node0_action --> E_EndAuthorizationCheck S_EndAuthorizationCheck --> N_EndAuthorizationCheck_Node0 N_EndAuthorizationCheck_Node0 -- No --> E_EndAuthorizationCheck
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has export bond type and cargo does not have special 88 flag and origin-destination country codes are US-Mexico and train crossing port is not Laredo Texas station
WHEN:
- Cargo does not have special manifest flag
- Action type is send
- User is not authorized for special manifests
THEN:
- Generate authorization error message 43
- Do not create special manifest, otherwise if action is send
- User is authorized, generate message 23
- Create 88-tr detour spawn, or if cargo has special manifest flag, generate message 31
β Consolidated Acceptance Criteria
- The cargo has IT bond type AND the special manifest original flag is set → set IT export spawn flag and trigger special manifest creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ITBondType(["Start Step"])
E_ITBondType(["End Step"])
N_ITBondType_Node0{"The cargo has IT bond type AND the
special manifest original flag is
set"}:::decision N_ITBondType_Node0_action["Set IT export spawn flag and
trigger special manifest creation"]:::main N_ITBondType_Node0 -- Yes --> N_ITBondType_Node0_action N_ITBondType_Node0_action --> E_ITBondType S_ITBondType --> N_ITBondType_Node0 N_ITBondType_Node0 -- No --> E_ITBondType
special manifest original flag is
set"}:::decision N_ITBondType_Node0_action["Set IT export spawn flag and
trigger special manifest creation"]:::main N_ITBondType_Node0 -- Yes --> N_ITBondType_Node0_action N_ITBondType_Node0_action --> E_ITBondType S_ITBondType --> N_ITBondType_Node0 N_ITBondType_Node0 -- No --> E_ITBondType
File: GCX003.cbl
GIVEN:
A cargo record exists with bond type and special manifest flags
WHEN:
- The cargo has it bond type
- The special manifest original flag is set
THEN:
- Set it export spawn flag
- Trigger special manifest creation
β Consolidated Acceptance Criteria
- The cargo has TE bond type AND the special manifest special flag is set → set TE port change spawn flag and trigger special manifest creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TEBondType(["Start Step"])
E_TEBondType(["End Step"])
N_TEBondType_Node0{"The cargo has TE bond type AND the
special manifest special flag is set"}:::decision N_TEBondType_Node0_action["Set TE port change spawn flag and
trigger special manifest creation"]:::main N_TEBondType_Node0 -- Yes --> N_TEBondType_Node0_action N_TEBondType_Node0_action --> E_TEBondType S_TEBondType --> N_TEBondType_Node0 N_TEBondType_Node0 -- No --> E_TEBondType
special manifest special flag is set"}:::decision N_TEBondType_Node0_action["Set TE port change spawn flag and
trigger special manifest creation"]:::main N_TEBondType_Node0 -- Yes --> N_TEBondType_Node0_action N_TEBondType_Node0_action --> E_TEBondType S_TEBondType --> N_TEBondType_Node0 N_TEBondType_Node0 -- No --> E_TEBondType
File: GCX003.cbl
GIVEN:
A cargo record exists with bond type and special manifest flags
WHEN:
- The cargo has te bond type
- The special manifest special flag is set
THEN:
- Set te port change spawn flag
- Trigger special manifest creation
β Consolidated Acceptance Criteria
- The cargo is export type AND has USMX country codes AND has special 88 flag set → set 88 TR detour spawn flag and trigger special manifest creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExportBondwithUSMXRoute(["Start Step"])
E_ExportBondwithUSMXRoute(["End Step"])
N_ExportBondwithUSMXRoute_Node0{"The cargo is export type AND has
USMX country codes AND has special
88 flag set"}:::decision N_ExportBondwithUSMXRoute_Node0_action["Set 88 TR detour spawn flag and
trigger special manifest creation"]:::main N_ExportBondwithUSMXRoute_Node0 -- Yes --> N_ExportBondwithUSMXRoute_Node0_action N_ExportBondwithUSMXRoute_Node0_action --> E_ExportBondwithUSMXRoute S_ExportBondwithUSMXRoute --> N_ExportBondwithUSMXRoute_Node0 N_ExportBondwithUSMXRoute_Node0 -- No --> E_ExportBondwithUSMXRoute
USMX country codes AND has special
88 flag set"}:::decision N_ExportBondwithUSMXRoute_Node0_action["Set 88 TR detour spawn flag and
trigger special manifest creation"]:::main N_ExportBondwithUSMXRoute_Node0 -- Yes --> N_ExportBondwithUSMXRoute_Node0_action N_ExportBondwithUSMXRoute_Node0_action --> E_ExportBondwithUSMXRoute S_ExportBondwithUSMXRoute --> N_ExportBondwithUSMXRoute_Node0 N_ExportBondwithUSMXRoute_Node0 -- No --> E_ExportBondwithUSMXRoute
File: GCX003.cbl
GIVEN:
A cargo record exists with export bond type and routing information
WHEN:
- The cargo is export type
- Has usmx country codes
- Has special 88 flag set
THEN:
- Set 88 tr detour spawn flag
- Trigger special manifest creation
β Consolidated Acceptance Criteria
- The cargo has US-Canada-US bond type AND has special TR flag set → set TR detour spawn flag and trigger special manifest creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_USCANUSBondwithSpecialTRFlag(["Start Step"])
E_USCANUSBondwithSpecialTRFlag(["End Step"])
N_USCANUSBondwithSpecialTRFlag_Node0{"The cargo has US-Canada-US bond
type AND has special TR flag set"}:::decision N_USCANUSBondwithSpecialTRFlag_Node0_action["Set TR detour spawn flag and
trigger special manifest creation"]:::main N_USCANUSBondwithSpecialTRFlag_Node0 -- Yes --> N_USCANUSBondwithSpecialTRFlag_Node0_action N_USCANUSBondwithSpecialTRFlag_Node0_action --> E_USCANUSBondwithSpecialTRFlag S_USCANUSBondwithSpecialTRFlag --> N_USCANUSBondwithSpecialTRFlag_Node0 N_USCANUSBondwithSpecialTRFlag_Node0 -- No --> E_USCANUSBondwithSpecialTRFlag
type AND has special TR flag set"}:::decision N_USCANUSBondwithSpecialTRFlag_Node0_action["Set TR detour spawn flag and
trigger special manifest creation"]:::main N_USCANUSBondwithSpecialTRFlag_Node0 -- Yes --> N_USCANUSBondwithSpecialTRFlag_Node0_action N_USCANUSBondwithSpecialTRFlag_Node0_action --> E_USCANUSBondwithSpecialTRFlag S_USCANUSBondwithSpecialTRFlag --> N_USCANUSBondwithSpecialTRFlag_Node0 N_USCANUSBondwithSpecialTRFlag_Node0 -- No --> E_USCANUSBondwithSpecialTRFlag
File: GCX003.cbl
GIVEN:
A cargo record exists with bond type and special flags
WHEN:
- The cargo has us-canada-us bond type
- Has special tr flag set
THEN:
- Set tr detour spawn flag
- Trigger special manifest creation
β Consolidated Acceptance Criteria
- The cargo has default bond type → set detour spawn flag and trigger special manifest creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DefaultBondType(["Start Step"])
E_DefaultBondType(["End Step"])
N_DefaultBondType_Node0{"The cargo has default bond type"}:::decision
N_DefaultBondType_Node0_action["Set detour spawn flag and trigger
special manifest creation"]:::main N_DefaultBondType_Node0 -- Yes --> N_DefaultBondType_Node0_action N_DefaultBondType_Node0_action --> E_DefaultBondType S_DefaultBondType --> N_DefaultBondType_Node0 N_DefaultBondType_Node0 -- No --> E_DefaultBondType
special manifest creation"]:::main N_DefaultBondType_Node0 -- Yes --> N_DefaultBondType_Node0_action N_DefaultBondType_Node0_action --> E_DefaultBondType S_DefaultBondType --> N_DefaultBondType_Node0 N_DefaultBondType_Node0 -- No --> E_DefaultBondType
File: GCX003.cbl
GIVEN:
A cargo record exists with bond type classification
WHEN:
The cargo has default bond type
THEN:
- Set detour spawn flag
- Trigger special manifest creation
β Consolidated Acceptance Criteria
- The waybill represents original US-US domestic movement → set US-US detour spawn flag and trigger special manifest creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_OriginalUSUSMovement(["Start Step"])
E_OriginalUSUSMovement(["End Step"])
N_OriginalUSUSMovement_Node0{"The waybill represents original
US-US domestic movement"}:::decision N_OriginalUSUSMovement_Node0_action["Set US-US detour spawn flag and
trigger special manifest creation"]:::main N_OriginalUSUSMovement_Node0 -- Yes --> N_OriginalUSUSMovement_Node0_action N_OriginalUSUSMovement_Node0_action --> E_OriginalUSUSMovement S_OriginalUSUSMovement --> N_OriginalUSUSMovement_Node0 N_OriginalUSUSMovement_Node0 -- No --> E_OriginalUSUSMovement
US-US domestic movement"}:::decision N_OriginalUSUSMovement_Node0_action["Set US-US detour spawn flag and
trigger special manifest creation"]:::main N_OriginalUSUSMovement_Node0 -- Yes --> N_OriginalUSUSMovement_Node0_action N_OriginalUSUSMovement_Node0_action --> E_OriginalUSUSMovement S_OriginalUSUSMovement --> N_OriginalUSUSMovement_Node0 N_OriginalUSUSMovement_Node0 -- No --> E_OriginalUSUSMovement
File: GCX003.cbl
GIVEN:
A waybill exists without associated cargo and movement type information
WHEN:
The waybill represents original US-US domestic movement
THEN:
- Set us-us detour spawn flag
- Trigger special manifest creation
β Consolidated Acceptance Criteria
- The manifest type is determined to be diversion → set diversion flag in manifest record and populate equipment ID, waybill number, and waybill date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDiversionTypeinManifest(["Start Step"])
E_SetDiversionTypeinManifest(["End Step"])
N_SetDiversionTypeinManifest_Node0{"The manifest type is determined to
be diversion"}:::decision N_SetDiversionTypeinManifest_Node0_action["Set diversion flag in manifest
record and populate equipment ID,
waybill number, and waybill date"]:::main N_SetDiversionTypeinManifest_Node0 -- Yes --> N_SetDiversionTypeinManifest_Node0_action N_SetDiversionTypeinManifest_Node0_action --> E_SetDiversionTypeinManifest S_SetDiversionTypeinManifest --> N_SetDiversionTypeinManifest_Node0 N_SetDiversionTypeinManifest_Node0 -- No --> E_SetDiversionTypeinManifest
be diversion"}:::decision N_SetDiversionTypeinManifest_Node0_action["Set diversion flag in manifest
record and populate equipment ID,
waybill number, and waybill date"]:::main N_SetDiversionTypeinManifest_Node0 -- Yes --> N_SetDiversionTypeinManifest_Node0_action N_SetDiversionTypeinManifest_Node0_action --> E_SetDiversionTypeinManifest S_SetDiversionTypeinManifest --> N_SetDiversionTypeinManifest_Node0 N_SetDiversionTypeinManifest_Node0 -- No --> E_SetDiversionTypeinManifest
File: GCX003.cbl
GIVEN:
A special manifest record needs to be created for diversion processing
WHEN:
The manifest type is determined to be diversion
THEN:
- Set diversion flag in manifest record
- Populate equipment id, waybill number, and waybill date
β Consolidated Acceptance Criteria
- The manifest type is determined to be IT export → set IT export flag in manifest record and populate equipment ID, waybill number, and waybill date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetITExportTypeinManifest(["Start Step"])
E_SetITExportTypeinManifest(["End Step"])
N_SetITExportTypeinManifest_Node0{"The manifest type is determined to
be IT export"}:::decision N_SetITExportTypeinManifest_Node0_action["Set IT export flag in manifest
record and populate equipment ID,
waybill number, and waybill date"]:::main N_SetITExportTypeinManifest_Node0 -- Yes --> N_SetITExportTypeinManifest_Node0_action N_SetITExportTypeinManifest_Node0_action --> E_SetITExportTypeinManifest S_SetITExportTypeinManifest --> N_SetITExportTypeinManifest_Node0 N_SetITExportTypeinManifest_Node0 -- No --> E_SetITExportTypeinManifest
be IT export"}:::decision N_SetITExportTypeinManifest_Node0_action["Set IT export flag in manifest
record and populate equipment ID,
waybill number, and waybill date"]:::main N_SetITExportTypeinManifest_Node0 -- Yes --> N_SetITExportTypeinManifest_Node0_action N_SetITExportTypeinManifest_Node0_action --> E_SetITExportTypeinManifest S_SetITExportTypeinManifest --> N_SetITExportTypeinManifest_Node0 N_SetITExportTypeinManifest_Node0 -- No --> E_SetITExportTypeinManifest
File: GCX003.cbl
GIVEN:
A special manifest record needs to be created for IT export processing
WHEN:
The manifest type is determined to be IT export
THEN:
- Set it export flag in manifest record
- Populate equipment id, waybill number, and waybill date
β Consolidated Acceptance Criteria
- The manifest type is determined to be port change → set port change flag in manifest record and populate equipment ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPortChangeTypeinManifest(["Start Step"])
E_SetPortChangeTypeinManifest(["End Step"])
N_SetPortChangeTypeinManifest_Node0{"The manifest type is determined to
be port change"}:::decision N_SetPortChangeTypeinManifest_Node0_action["Set port change flag in manifest
record and populate equipment ID"]:::main N_SetPortChangeTypeinManifest_Node0 -- Yes --> N_SetPortChangeTypeinManifest_Node0_action N_SetPortChangeTypeinManifest_Node0_action --> E_SetPortChangeTypeinManifest S_SetPortChangeTypeinManifest --> N_SetPortChangeTypeinManifest_Node0 N_SetPortChangeTypeinManifest_Node0 -- No --> E_SetPortChangeTypeinManifest
be port change"}:::decision N_SetPortChangeTypeinManifest_Node0_action["Set port change flag in manifest
record and populate equipment ID"]:::main N_SetPortChangeTypeinManifest_Node0 -- Yes --> N_SetPortChangeTypeinManifest_Node0_action N_SetPortChangeTypeinManifest_Node0_action --> E_SetPortChangeTypeinManifest S_SetPortChangeTypeinManifest --> N_SetPortChangeTypeinManifest_Node0 N_SetPortChangeTypeinManifest_Node0 -- No --> E_SetPortChangeTypeinManifest
File: GCX003.cbl
GIVEN:
A special manifest record needs to be created for port change processing
WHEN:
The manifest type is determined to be port change
THEN:
- Set port change flag in manifest record
- Populate equipment id
β Consolidated Acceptance Criteria
- The manifest type is determined to be export TR → set export TR flag in manifest record and populate equipment ID, waybill number, and waybill date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetExportTRTypeinManifest(["Start Step"])
E_SetExportTRTypeinManifest(["End Step"])
N_SetExportTRTypeinManifest_Node0{"The manifest type is determined to
be export TR"}:::decision N_SetExportTRTypeinManifest_Node0_action["Set export TR flag in manifest
record and populate equipment ID,
waybill number, and waybill date"]:::main N_SetExportTRTypeinManifest_Node0 -- Yes --> N_SetExportTRTypeinManifest_Node0_action N_SetExportTRTypeinManifest_Node0_action --> E_SetExportTRTypeinManifest S_SetExportTRTypeinManifest --> N_SetExportTRTypeinManifest_Node0 N_SetExportTRTypeinManifest_Node0 -- No --> E_SetExportTRTypeinManifest
be export TR"}:::decision N_SetExportTRTypeinManifest_Node0_action["Set export TR flag in manifest
record and populate equipment ID,
waybill number, and waybill date"]:::main N_SetExportTRTypeinManifest_Node0 -- Yes --> N_SetExportTRTypeinManifest_Node0_action N_SetExportTRTypeinManifest_Node0_action --> E_SetExportTRTypeinManifest S_SetExportTRTypeinManifest --> N_SetExportTRTypeinManifest_Node0 N_SetExportTRTypeinManifest_Node0 -- No --> E_SetExportTRTypeinManifest
File: GCX003.cbl
GIVEN:
A special manifest record needs to be created for export TR processing
WHEN:
The manifest type is determined to be export TR
THEN:
- Set export tr flag in manifest record
- Populate equipment id, waybill number, and waybill date
β Consolidated Acceptance Criteria
- The manifest type is determined to be US-US detour → set US-US detour flag in manifest record, clear CCN field, and populate equipment ID, waybill number, and waybill date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetUSUSDetourTypeinManifest(["Start Step"])
E_SetUSUSDetourTypeinManifest(["End Step"])
N_SetUSUSDetourTypeinManifest_Node0{"The manifest type is determined to
be US-US detour"}:::decision N_SetUSUSDetourTypeinManifest_Node0_action["Set US-US detour flag in manifest
record, clear CCN field, and
populate equipment ID, waybill
number, and waybill date"]:::main N_SetUSUSDetourTypeinManifest_Node0 -- Yes --> N_SetUSUSDetourTypeinManifest_Node0_action N_SetUSUSDetourTypeinManifest_Node0_action --> E_SetUSUSDetourTypeinManifest S_SetUSUSDetourTypeinManifest --> N_SetUSUSDetourTypeinManifest_Node0 N_SetUSUSDetourTypeinManifest_Node0 -- No --> E_SetUSUSDetourTypeinManifest
be US-US detour"}:::decision N_SetUSUSDetourTypeinManifest_Node0_action["Set US-US detour flag in manifest
record, clear CCN field, and
populate equipment ID, waybill
number, and waybill date"]:::main N_SetUSUSDetourTypeinManifest_Node0 -- Yes --> N_SetUSUSDetourTypeinManifest_Node0_action N_SetUSUSDetourTypeinManifest_Node0_action --> E_SetUSUSDetourTypeinManifest S_SetUSUSDetourTypeinManifest --> N_SetUSUSDetourTypeinManifest_Node0 N_SetUSUSDetourTypeinManifest_Node0 -- No --> E_SetUSUSDetourTypeinManifest
File: GCX003.cbl
GIVEN:
A special manifest record needs to be created for US-US detour processing
WHEN:
The manifest type is determined to be US-US detour
THEN:
Set US-US detour flag in manifest record, clear CCN field, and populate equipment ID, waybill number, and waybill date
β Consolidated Acceptance Criteria
- Border and country code information is available → populate manifest with border code, border name, origin country, and destination country codes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddBorderandCountryCodes(["Start Step"])
E_AddBorderandCountryCodes(["End Step"])
N_AddBorderandCountryCodes_Node0{"Border and country code information
is available"}:::decision N_AddBorderandCountryCodes_Node0_action["Populate manifest with border code,
border name, origin country, and
destination country codes"]:::main N_AddBorderandCountryCodes_Node0 -- Yes --> N_AddBorderandCountryCodes_Node0_action N_AddBorderandCountryCodes_Node0_action --> E_AddBorderandCountryCodes S_AddBorderandCountryCodes --> N_AddBorderandCountryCodes_Node0 N_AddBorderandCountryCodes_Node0 -- No --> E_AddBorderandCountryCodes
is available"}:::decision N_AddBorderandCountryCodes_Node0_action["Populate manifest with border code,
border name, origin country, and
destination country codes"]:::main N_AddBorderandCountryCodes_Node0 -- Yes --> N_AddBorderandCountryCodes_Node0_action N_AddBorderandCountryCodes_Node0_action --> E_AddBorderandCountryCodes S_AddBorderandCountryCodes --> N_AddBorderandCountryCodes_Node0 N_AddBorderandCountryCodes_Node0 -- No --> E_AddBorderandCountryCodes
File: GCX003.cbl
GIVEN:
A special manifest record is being configured with routing information
WHEN:
- Border
- Country code information is available
THEN:
Populate manifest with border code, border name, origin country, and destination country codes
β Consolidated Acceptance Criteria
- The manifest is ready for processing → add manifest to GCX101 spawn table and increment spawn counter for batch processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QueueManifestforProcessing(["Start Step"])
E_QueueManifestforProcessing(["End Step"])
N_QueueManifestforProcessing_Node0{"The manifest is ready for
processing"}:::decision N_QueueManifestforProcessing_Node0_action["Add manifest to GCX101 spawn table
and increment spawn counter for
batch processing"]:::main N_QueueManifestforProcessing_Node0 -- Yes --> N_QueueManifestforProcessing_Node0_action N_QueueManifestforProcessing_Node0_action --> E_QueueManifestforProcessing S_QueueManifestforProcessing --> N_QueueManifestforProcessing_Node0 N_QueueManifestforProcessing_Node0 -- No --> E_QueueManifestforProcessing
processing"}:::decision N_QueueManifestforProcessing_Node0_action["Add manifest to GCX101 spawn table
and increment spawn counter for
batch processing"]:::main N_QueueManifestforProcessing_Node0 -- Yes --> N_QueueManifestforProcessing_Node0_action N_QueueManifestforProcessing_Node0_action --> E_QueueManifestforProcessing S_QueueManifestforProcessing --> N_QueueManifestforProcessing_Node0 N_QueueManifestforProcessing_Node0 -- No --> E_QueueManifestforProcessing
File: GCX003.cbl
GIVEN:
A special manifest record has been fully configured with all required information
WHEN:
The manifest is ready for processing
THEN:
- Add manifest to gcx101 spawn table
- Increment spawn counter for batch processing
β Consolidated Acceptance Criteria
- The cargo status is pending, deleted, or in error state → generate cargo status error message and halt processing for this cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCargoPending(["Start Step"])
E_IsCargoPending(["End Step"])
N_IsCargoPending_Node0{"The cargo status is pending,
deleted, or in error state"}:::decision N_IsCargoPending_Node0_action["Generate cargo status error message
and halt processing for this cargo"]:::exclusion N_IsCargoPending_Node0 -- Yes -->|Alternative| N_IsCargoPending_Node0_action N_IsCargoPending_Node0_action --> E_IsCargoPending S_IsCargoPending --> N_IsCargoPending_Node0 N_IsCargoPending_Node0 -- No --> E_IsCargoPending
deleted, or in error state"}:::decision N_IsCargoPending_Node0_action["Generate cargo status error message
and halt processing for this cargo"]:::exclusion N_IsCargoPending_Node0 -- Yes -->|Alternative| N_IsCargoPending_Node0_action N_IsCargoPending_Node0_action --> E_IsCargoPending S_IsCargoPending --> N_IsCargoPending_Node0 N_IsCargoPending_Node0 -- No --> E_IsCargoPending
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record exists and is not empty residue or empty equipment
WHEN:
The cargo status is pending, deleted, or in error state
THEN:
- Generate cargo status error message
- Halt processing for this cargo
β Consolidated Acceptance Criteria
- The cargo has TR bond type and the cargo status description indicates export status → generate TR bond export error message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsTRBondwithExportStatus(["Start Step"])
E_IsTRBondwithExportStatus(["End Step"])
N_IsTRBondwithExportStatus_Node0{"The cargo has TR bond type and the
cargo status description indicates
export status"}:::decision N_IsTRBondwithExportStatus_Node0_action["Generate TR bond export error
message"]:::main N_IsTRBondwithExportStatus_Node0 -- Yes --> N_IsTRBondwithExportStatus_Node0_action N_IsTRBondwithExportStatus_Node0_action --> E_IsTRBondwithExportStatus S_IsTRBondwithExportStatus --> N_IsTRBondwithExportStatus_Node0 N_IsTRBondwithExportStatus_Node0 -- No --> E_IsTRBondwithExportStatus
cargo status description indicates
export status"}:::decision N_IsTRBondwithExportStatus_Node0_action["Generate TR bond export error
message"]:::main N_IsTRBondwithExportStatus_Node0 -- Yes --> N_IsTRBondwithExportStatus_Node0_action N_IsTRBondwithExportStatus_Node0_action --> E_IsTRBondwithExportStatus S_IsTRBondwithExportStatus --> N_IsTRBondwithExportStatus_Node0 N_IsTRBondwithExportStatus_Node0 -- No --> E_IsTRBondwithExportStatus
File: GCX003.cbl
GIVEN:
Cargo has been found and passed initial status checks
WHEN:
- The cargo has tr bond type
- The cargo status description indicates export status
THEN:
Generate TR bond export error message
β Consolidated Acceptance Criteria
- The train crossing port does not match the cargo location ID → generate MT bond location error message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsMTBondatWrongLocation(["Start Step"])
E_IsMTBondatWrongLocation(["End Step"])
N_IsMTBondatWrongLocation_Node0{"The train crossing port does not
match the cargo location ID"}:::decision N_IsMTBondatWrongLocation_Node0_action["Generate MT bond location error
message"]:::main N_IsMTBondatWrongLocation_Node0 -- Yes --> N_IsMTBondatWrongLocation_Node0_action N_IsMTBondatWrongLocation_Node0_action --> E_IsMTBondatWrongLocation S_IsMTBondatWrongLocation --> N_IsMTBondatWrongLocation_Node0 N_IsMTBondatWrongLocation_Node0 -- No --> E_IsMTBondatWrongLocation
match the cargo location ID"}:::decision N_IsMTBondatWrongLocation_Node0_action["Generate MT bond location error
message"]:::main N_IsMTBondatWrongLocation_Node0 -- Yes --> N_IsMTBondatWrongLocation_Node0_action N_IsMTBondatWrongLocation_Node0_action --> E_IsMTBondatWrongLocation S_IsMTBondatWrongLocation --> N_IsMTBondatWrongLocation_Node0 N_IsMTBondatWrongLocation_Node0 -- No --> E_IsMTBondatWrongLocation
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has MT bond type and vessel name is not 'TRAIN' or spaces
WHEN:
The train crossing port does not match the cargo location ID
THEN:
Generate MT bond location error message
β Consolidated Acceptance Criteria
- The vessel name does not have 'T' in position 23 → generate TE bond vessel error message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsTEBondwithWrongVessel(["Start Step"])
E_IsTEBondwithWrongVessel(["End Step"])
N_IsTEBondwithWrongVessel_Node0{"The vessel name does not have T in
position 23"}:::decision N_IsTEBondwithWrongVessel_Node0_action["Generate TE bond vessel error
message"]:::main N_IsTEBondwithWrongVessel_Node0 -- Yes --> N_IsTEBondwithWrongVessel_Node0_action N_IsTEBondwithWrongVessel_Node0_action --> E_IsTEBondwithWrongVessel S_IsTEBondwithWrongVessel --> N_IsTEBondwithWrongVessel_Node0 N_IsTEBondwithWrongVessel_Node0 -- No --> E_IsTEBondwithWrongVessel
position 23"}:::decision N_IsTEBondwithWrongVessel_Node0_action["Generate TE bond vessel error
message"]:::main N_IsTEBondwithWrongVessel_Node0 -- Yes --> N_IsTEBondwithWrongVessel_Node0_action N_IsTEBondwithWrongVessel_Node0_action --> E_IsTEBondwithWrongVessel S_IsTEBondwithWrongVessel --> N_IsTEBondwithWrongVessel_Node0 N_IsTEBondwithWrongVessel_Node0 -- No --> E_IsTEBondwithWrongVessel
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has TE bond type
WHEN:
The vessel name does not have 'T' in position 23
THEN:
Generate TE bond vessel error message
β Consolidated Acceptance Criteria
- The vessel name is not 'TRAIN' → generate vessel type error message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsNonTEMTBondwithWrongVessel(["Start Step"])
E_IsNonTEMTBondwithWrongVessel(["End Step"])
N_IsNonTEMTBondwithWrongVessel_Node0{"The vessel name is not TRAIN"}:::decision
N_IsNonTEMTBondwithWrongVessel_Node0_action["Generate vessel type error message"]:::main
N_IsNonTEMTBondwithWrongVessel_Node0 -- Yes --> N_IsNonTEMTBondwithWrongVessel_Node0_action
N_IsNonTEMTBondwithWrongVessel_Node0_action --> E_IsNonTEMTBondwithWrongVessel
S_IsNonTEMTBondwithWrongVessel --> N_IsNonTEMTBondwithWrongVessel_Node0
N_IsNonTEMTBondwithWrongVessel_Node0 -- No --> E_IsNonTEMTBondwithWrongVessel
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo does not have TE or MT bond type
WHEN:
The vessel name is not 'TRAIN'
THEN:
Generate vessel type error message
β Consolidated Acceptance Criteria
- The train crossing port is Laredo TX station → perform DSP hold status checks and documentation validations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCargoatLaredoStation(["Start Step"])
E_IsCargoatLaredoStation(["End Step"])
N_IsCargoatLaredoStation_Node0{"The train crossing port is Laredo
TX station"}:::decision N_IsCargoatLaredoStation_Node0_action["Perform DSP hold status checks and
documentation validations"]:::main N_IsCargoatLaredoStation_Node0 -- Yes --> N_IsCargoatLaredoStation_Node0_action N_IsCargoatLaredoStation_Node0_action --> E_IsCargoatLaredoStation S_IsCargoatLaredoStation --> N_IsCargoatLaredoStation_Node0 N_IsCargoatLaredoStation_Node0 -- No --> E_IsCargoatLaredoStation
TX station"}:::decision N_IsCargoatLaredoStation_Node0_action["Perform DSP hold status checks and
documentation validations"]:::main N_IsCargoatLaredoStation_Node0 -- Yes --> N_IsCargoatLaredoStation_Node0_action N_IsCargoatLaredoStation_Node0_action --> E_IsCargoatLaredoStation S_IsCargoatLaredoStation --> N_IsCargoatLaredoStation_Node0 N_IsCargoatLaredoStation_Node0 -- No --> E_IsCargoatLaredoStation
File: GCX003.cbl
GIVEN:
Cargo has been found and passed bond validation checks
WHEN:
The train crossing port is Laredo TX station
THEN:
- Perform dsp hold status checks
- Documentation validations
β Consolidated Acceptance Criteria
- DSP hold is also applied to the cargo → generate DSP hold error message for border hold cargo
- The cargo description indicates border hold status → generate border hold error message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsBorderHoldStatus(["Start Step"])
E_IsBorderHoldStatus(["End Step"])
N_IsBorderHoldStatus_Node0{"DSP hold is also applied to the
cargo"}:::decision N_IsBorderHoldStatus_Node0_action["Generate DSP hold error message for
border hold cargo"]:::main N_IsBorderHoldStatus_Node0 -- Yes --> N_IsBorderHoldStatus_Node0_action N_IsBorderHoldStatus_Node0_action --> E_IsBorderHoldStatus S_IsBorderHoldStatus --> N_IsBorderHoldStatus_Node0 N_IsBorderHoldStatus_Node1{"The cargo description indicates
border hold status"}:::decision N_IsBorderHoldStatus_Node1_action["Generate border hold error message"]:::main N_IsBorderHoldStatus_Node1 -- Yes --> N_IsBorderHoldStatus_Node1_action N_IsBorderHoldStatus_Node1_action --> E_IsBorderHoldStatus N_IsBorderHoldStatus_Node0 -- No --> N_IsBorderHoldStatus_Node1 N_IsBorderHoldStatus_Node1 -- No --> E_IsBorderHoldStatus
cargo"}:::decision N_IsBorderHoldStatus_Node0_action["Generate DSP hold error message for
border hold cargo"]:::main N_IsBorderHoldStatus_Node0 -- Yes --> N_IsBorderHoldStatus_Node0_action N_IsBorderHoldStatus_Node0_action --> E_IsBorderHoldStatus S_IsBorderHoldStatus --> N_IsBorderHoldStatus_Node0 N_IsBorderHoldStatus_Node1{"The cargo description indicates
border hold status"}:::decision N_IsBorderHoldStatus_Node1_action["Generate border hold error message"]:::main N_IsBorderHoldStatus_Node1 -- Yes --> N_IsBorderHoldStatus_Node1_action N_IsBorderHoldStatus_Node1_action --> E_IsBorderHoldStatus N_IsBorderHoldStatus_Node0 -- No --> N_IsBorderHoldStatus_Node1 N_IsBorderHoldStatus_Node1 -- No --> E_IsBorderHoldStatus
File: GCX003.cbl
GIVEN:
Cargo is being processed at Laredo station and cargo description indicates border hold status
WHEN:
DSP hold is also applied to the cargo
THEN:
Generate DSP hold error message for border hold cargo
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is being processed at Laredo station and DSP hold is not applied
WHEN:
The cargo description indicates border hold status
THEN:
Generate border hold error message
β Consolidated Acceptance Criteria
- DSP hold is applied to the cargo → generate DSP hold warning message
- The system checks DSP hold application → if DSP hold is applied, generate message 52 for hold at border with DSP hold
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsDSPHoldApplied(["Start Step"])
E_IsDSPHoldApplied(["End Step"])
N_IsDSPHoldApplied_Node0{"DSP hold is applied to the cargo"}:::decision
N_IsDSPHoldApplied_Node0_action["Generate DSP hold warning message"]:::main
N_IsDSPHoldApplied_Node0 -- Yes --> N_IsDSPHoldApplied_Node0_action
N_IsDSPHoldApplied_Node0_action --> E_IsDSPHoldApplied
S_IsDSPHoldApplied --> N_IsDSPHoldApplied_Node0
N_IsDSPHoldApplied_Node1{"The system checks DSP hold
application"}:::decision N_IsDSPHoldApplied_Node1_action["If DSP hold is applied, generate
message 52 for hold at border with
DSP hold"]:::main N_IsDSPHoldApplied_Node1 -- Yes --> N_IsDSPHoldApplied_Node1_action N_IsDSPHoldApplied_Node1_action --> E_IsDSPHoldApplied N_IsDSPHoldApplied_Node0 -- No --> N_IsDSPHoldApplied_Node1 N_IsDSPHoldApplied_Node1 -- No --> E_IsDSPHoldApplied
application"}:::decision N_IsDSPHoldApplied_Node1_action["If DSP hold is applied, generate
message 52 for hold at border with
DSP hold"]:::main N_IsDSPHoldApplied_Node1 -- Yes --> N_IsDSPHoldApplied_Node1_action N_IsDSPHoldApplied_Node1_action --> E_IsDSPHoldApplied N_IsDSPHoldApplied_Node0 -- No --> N_IsDSPHoldApplied_Node1 N_IsDSPHoldApplied_Node1 -- No --> E_IsDSPHoldApplied
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is being processed at Laredo station and does not have border hold status
WHEN:
DSP hold is applied to the cargo
THEN:
Generate DSP hold warning message
File: GCX003.cbl
GIVEN:
Cargo has hold at border status
WHEN:
The system checks DSP hold application
THEN:
If DSP hold is applied, generate message 52 for hold at border with DSP hold
β Consolidated Acceptance Criteria
- FEN reference number qualifier is not found in the segment data → generate FEN missing warning message
- The system validates FEN documentation presence → if FEN documentation is not found, generate message 46 for missing FEN documentation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsFENDocumentationMissing(["Start Step"])
E_IsFENDocumentationMissing(["End Step"])
N_IsFENDocumentationMissing_Node0{"FEN reference number qualifier is
not found in the segment data"}:::decision N_IsFENDocumentationMissing_Node0_action["Generate FEN missing warning
message"]:::main N_IsFENDocumentationMissing_Node0 -- Yes --> N_IsFENDocumentationMissing_Node0_action N_IsFENDocumentationMissing_Node0_action --> E_IsFENDocumentationMissing S_IsFENDocumentationMissing --> N_IsFENDocumentationMissing_Node0 N_IsFENDocumentationMissing_Node1{"The system validates FEN
documentation presence"}:::decision N_IsFENDocumentationMissing_Node1_action["If FEN documentation is not found,
generate message 46 for missing FEN
documentation"]:::main N_IsFENDocumentationMissing_Node1 -- Yes --> N_IsFENDocumentationMissing_Node1_action N_IsFENDocumentationMissing_Node1_action --> E_IsFENDocumentationMissing N_IsFENDocumentationMissing_Node0 -- No --> N_IsFENDocumentationMissing_Node1 N_IsFENDocumentationMissing_Node1 -- No --> E_IsFENDocumentationMissing
not found in the segment data"}:::decision N_IsFENDocumentationMissing_Node0_action["Generate FEN missing warning
message"]:::main N_IsFENDocumentationMissing_Node0 -- Yes --> N_IsFENDocumentationMissing_Node0_action N_IsFENDocumentationMissing_Node0_action --> E_IsFENDocumentationMissing S_IsFENDocumentationMissing --> N_IsFENDocumentationMissing_Node0 N_IsFENDocumentationMissing_Node1{"The system validates FEN
documentation presence"}:::decision N_IsFENDocumentationMissing_Node1_action["If FEN documentation is not found,
generate message 46 for missing FEN
documentation"]:::main N_IsFENDocumentationMissing_Node1 -- Yes --> N_IsFENDocumentationMissing_Node1_action N_IsFENDocumentationMissing_Node1_action --> E_IsFENDocumentationMissing N_IsFENDocumentationMissing_Node0 -- No --> N_IsFENDocumentationMissing_Node1 N_IsFENDocumentationMissing_Node1 -- No --> E_IsFENDocumentationMissing
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is being processed at Laredo station and segment 02 data is available
WHEN:
FEN reference number qualifier is not found in the segment data
THEN:
Generate FEN missing warning message
File: GCX003.cbl
GIVEN:
All hold status conditions have been processed
WHEN:
The system validates FEN documentation presence
THEN:
If FEN documentation is not found, generate message 46 for missing FEN documentation
β Consolidated Acceptance Criteria
- KCM reference number qualifier is not found in the segment data → generate KCM missing warning message
- The system validates KCM documentation presence → if KCM documentation is not found, generate message 47 for missing KCM documentation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsKCMDocumentationMissing(["Start Step"])
E_IsKCMDocumentationMissing(["End Step"])
N_IsKCMDocumentationMissing_Node0{"KCM reference number qualifier is
not found in the segment data"}:::decision N_IsKCMDocumentationMissing_Node0_action["Generate KCM missing warning
message"]:::main N_IsKCMDocumentationMissing_Node0 -- Yes --> N_IsKCMDocumentationMissing_Node0_action N_IsKCMDocumentationMissing_Node0_action --> E_IsKCMDocumentationMissing S_IsKCMDocumentationMissing --> N_IsKCMDocumentationMissing_Node0 N_IsKCMDocumentationMissing_Node1{"The system validates KCM
documentation presence"}:::decision N_IsKCMDocumentationMissing_Node1_action["If KCM documentation is not found,
generate message 47 for missing KCM
documentation"]:::main N_IsKCMDocumentationMissing_Node1 -- Yes --> N_IsKCMDocumentationMissing_Node1_action N_IsKCMDocumentationMissing_Node1_action --> E_IsKCMDocumentationMissing N_IsKCMDocumentationMissing_Node0 -- No --> N_IsKCMDocumentationMissing_Node1 N_IsKCMDocumentationMissing_Node1 -- No --> E_IsKCMDocumentationMissing
not found in the segment data"}:::decision N_IsKCMDocumentationMissing_Node0_action["Generate KCM missing warning
message"]:::main N_IsKCMDocumentationMissing_Node0 -- Yes --> N_IsKCMDocumentationMissing_Node0_action N_IsKCMDocumentationMissing_Node0_action --> E_IsKCMDocumentationMissing S_IsKCMDocumentationMissing --> N_IsKCMDocumentationMissing_Node0 N_IsKCMDocumentationMissing_Node1{"The system validates KCM
documentation presence"}:::decision N_IsKCMDocumentationMissing_Node1_action["If KCM documentation is not found,
generate message 47 for missing KCM
documentation"]:::main N_IsKCMDocumentationMissing_Node1 -- Yes --> N_IsKCMDocumentationMissing_Node1_action N_IsKCMDocumentationMissing_Node1_action --> E_IsKCMDocumentationMissing N_IsKCMDocumentationMissing_Node0 -- No --> N_IsKCMDocumentationMissing_Node1 N_IsKCMDocumentationMissing_Node1 -- No --> E_IsKCMDocumentationMissing
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is being processed at Laredo station and segment 02 data is available
WHEN:
KCM reference number qualifier is not found in the segment data
THEN:
Generate KCM missing warning message
File: GCX003.cbl
GIVEN:
FEN documentation validation is complete
WHEN:
The system validates KCM documentation presence
THEN:
If KCM documentation is not found, generate message 47 for missing KCM documentation
β Consolidated Acceptance Criteria
- The cargo bill type code equals '15' → set the cargo information message to 'PPR 7512 15 US-CA-US'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPaper7512USCAUSMessage(["Start Step"])
E_SetPaper7512USCAUSMessage(["End Step"])
N_SetPaper7512USCAUSMessage_Node0{"The cargo bill type code equals 15"}:::decision
N_SetPaper7512USCAUSMessage_Node0_action["Set the cargo information message
to PPR 7512 15 US-CA-US"]:::main N_SetPaper7512USCAUSMessage_Node0 -- Yes --> N_SetPaper7512USCAUSMessage_Node0_action N_SetPaper7512USCAUSMessage_Node0_action --> E_SetPaper7512USCAUSMessage S_SetPaper7512USCAUSMessage --> N_SetPaper7512USCAUSMessage_Node0 N_SetPaper7512USCAUSMessage_Node0 -- No --> E_SetPaper7512USCAUSMessage
to PPR 7512 15 US-CA-US"]:::main N_SetPaper7512USCAUSMessage_Node0 -- Yes --> N_SetPaper7512USCAUSMessage_Node0_action N_SetPaper7512USCAUSMessage_Node0_action --> E_SetPaper7512USCAUSMessage S_SetPaper7512USCAUSMessage --> N_SetPaper7512USCAUSMessage_Node0 N_SetPaper7512USCAUSMessage_Node0 -- No --> E_SetPaper7512USCAUSMessage
File: GCX003.cbl
GIVEN:
Cargo is found and has valid bill type information
WHEN:
The cargo bill type code equals '15'
THEN:
Set the cargo information message to 'PPR 7512 15 US-CA-US'
β Consolidated Acceptance Criteria
- The in-bond type code is 'IT' or 'IE' → format cargo information as 'AMS' followed by the in-bond type code and bond number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatAMSBondMessagewithBondNumber(["Start Step"])
E_FormatAMSBondMessagewithBondNumber(["End Step"])
N_FormatAMSBondMessagewithBondNumber_Node0{"The in-bond type code is IT or IE"}:::decision
N_FormatAMSBondMessagewithBondNumber_Node0_action["Format cargo information as AMS
followed by the in-bond type code
and bond number"]:::main N_FormatAMSBondMessagewithBondNumber_Node0 -- Yes --> N_FormatAMSBondMessagewithBondNumber_Node0_action N_FormatAMSBondMessagewithBondNumber_Node0_action --> E_FormatAMSBondMessagewithBondNumber S_FormatAMSBondMessagewithBondNumber --> N_FormatAMSBondMessagewithBondNumber_Node0 N_FormatAMSBondMessagewithBondNumber_Node0 -- No --> E_FormatAMSBondMessagewithBondNumber
followed by the in-bond type code
and bond number"]:::main N_FormatAMSBondMessagewithBondNumber_Node0 -- Yes --> N_FormatAMSBondMessagewithBondNumber_Node0_action N_FormatAMSBondMessagewithBondNumber_Node0_action --> E_FormatAMSBondMessagewithBondNumber S_FormatAMSBondMessagewithBondNumber --> N_FormatAMSBondMessagewithBondNumber_Node0 N_FormatAMSBondMessagewithBondNumber_Node0 -- No --> E_FormatAMSBondMessagewithBondNumber
File: GCX003.cbl
GIVEN:
Cargo is found with in-bond type code and bond number information available
WHEN:
The in-bond type code is 'IT' or 'IE'
THEN:
- Format cargo information as 'ams' followed by the in-bond type code
- Bond number
β Consolidated Acceptance Criteria
- The in-bond type code is 'TE', 'TR', or 'MT' → format cargo information as 'AMS 7512' followed by the in-bond type code and bond number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatAMS7512BondMessagewithBondNumber(["Start Step"])
E_FormatAMS7512BondMessagewithBondNumber(["End Step"])
N_FormatAMS7512BondMessagewithBondNumber_Node0{"The in-bond type code is TE , TR ,
or MT"}:::decision N_FormatAMS7512BondMessagewithBondNumber_Node0_action["Format cargo information as AMS
7512 followed by the in-bond type
code and bond number"]:::main N_FormatAMS7512BondMessagewithBondNumber_Node0 -- Yes --> N_FormatAMS7512BondMessagewithBondNumber_Node0_action N_FormatAMS7512BondMessagewithBondNumber_Node0_action --> E_FormatAMS7512BondMessagewithBondNumber S_FormatAMS7512BondMessagewithBondNumber --> N_FormatAMS7512BondMessagewithBondNumber_Node0 N_FormatAMS7512BondMessagewithBondNumber_Node0 -- No --> E_FormatAMS7512BondMessagewithBondNumber
or MT"}:::decision N_FormatAMS7512BondMessagewithBondNumber_Node0_action["Format cargo information as AMS
7512 followed by the in-bond type
code and bond number"]:::main N_FormatAMS7512BondMessagewithBondNumber_Node0 -- Yes --> N_FormatAMS7512BondMessagewithBondNumber_Node0_action N_FormatAMS7512BondMessagewithBondNumber_Node0_action --> E_FormatAMS7512BondMessagewithBondNumber S_FormatAMS7512BondMessagewithBondNumber --> N_FormatAMS7512BondMessagewithBondNumber_Node0 N_FormatAMS7512BondMessagewithBondNumber_Node0 -- No --> E_FormatAMS7512BondMessagewithBondNumber
File: GCX003.cbl
GIVEN:
Cargo is found with in-bond type code and bond number information available
WHEN:
The in-bond type code is 'TE', 'TR', or 'MT'
THEN:
- Format cargo information as 'ams 7512' followed by the in-bond type code
- Bond number
β Consolidated Acceptance Criteria
- The cargo is classified as empty equipment or empty residue → set cargo information to 'EMPTY', set load/empty indicator to 'E', and adjust equipment counters from loaded to empty
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyDefaultBillTypeProcessing(["Start Step"])
E_ApplyDefaultBillTypeProcessing(["End Step"])
N_ApplyDefaultBillTypeProcessing_Node0{"The cargo is classified as empty
equipment or empty residue"}:::decision N_ApplyDefaultBillTypeProcessing_Node0_action["Set cargo information to EMPTY ,
set loadempty indicator to E , and
adjust equipment counters from
loaded to empty"]:::main N_ApplyDefaultBillTypeProcessing_Node0 -- Yes --> N_ApplyDefaultBillTypeProcessing_Node0_action N_ApplyDefaultBillTypeProcessing_Node0_action --> E_ApplyDefaultBillTypeProcessing S_ApplyDefaultBillTypeProcessing --> N_ApplyDefaultBillTypeProcessing_Node0 N_ApplyDefaultBillTypeProcessing_Node0 -- No --> E_ApplyDefaultBillTypeProcessing
equipment or empty residue"}:::decision N_ApplyDefaultBillTypeProcessing_Node0_action["Set cargo information to EMPTY ,
set loadempty indicator to E , and
adjust equipment counters from
loaded to empty"]:::main N_ApplyDefaultBillTypeProcessing_Node0 -- Yes --> N_ApplyDefaultBillTypeProcessing_Node0_action N_ApplyDefaultBillTypeProcessing_Node0_action --> E_ApplyDefaultBillTypeProcessing S_ApplyDefaultBillTypeProcessing --> N_ApplyDefaultBillTypeProcessing_Node0 N_ApplyDefaultBillTypeProcessing_Node0 -- No --> E_ApplyDefaultBillTypeProcessing
File: GCX003.cbl
GIVEN:
Cargo is found with bill type information
WHEN:
The cargo is classified as empty equipment or empty residue
THEN:
Set cargo information to 'EMPTY', set load/empty indicator to 'E', and adjust equipment counters from loaded to empty
β Consolidated Acceptance Criteria
- No specific bill type formatting rules apply and segment data contains valid information → extract and format cargo description from segment data into the cargo information field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AcceptBillType(["Start Step"])
E_AcceptBillType(["End Step"])
N_AcceptBillType_Node0{"No specific bill type formatting
rules apply and segment data
contains valid information"}:::decision N_AcceptBillType_Node0_action["Extract and format cargo
description from segment data into
the cargo information field"]:::main N_AcceptBillType_Node0 -- Yes --> N_AcceptBillType_Node0_action N_AcceptBillType_Node0_action --> E_AcceptBillType S_AcceptBillType --> N_AcceptBillType_Node0 N_AcceptBillType_Node0 -- No --> E_AcceptBillType
rules apply and segment data
contains valid information"}:::decision N_AcceptBillType_Node0_action["Extract and format cargo
description from segment data into
the cargo information field"]:::main N_AcceptBillType_Node0 -- Yes --> N_AcceptBillType_Node0_action N_AcceptBillType_Node0_action --> E_AcceptBillType S_AcceptBillType --> N_AcceptBillType_Node0 N_AcceptBillType_Node0 -- No --> E_AcceptBillType
File: GCX003.cbl
GIVEN:
Cargo is found and segment 07 data is available and cargo information is currently blank
WHEN:
- No specific bill type formatting rules apply
- Segment data contains valid information
THEN:
- Extract
- Format cargo description from segment data into the cargo information field
β Consolidated Acceptance Criteria
- The equipment is marked as loaded AND no waybill is found AND the equipment is not an SBU Van unit → generate error message MSG-TEN indicating missing waybill for loaded equipment
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateErrorMessageMissingWaybillforLoadedEquipment(["Start Step"])
E_GenerateErrorMessageMissingWaybillforLoadedEquipment(["End Step"])
N_GenerateErrorMessageMissingWaybillforLoadedEquipment_Node0{"The equipment is marked as loaded
AND no waybill is found AND the
equipment is not an SBU Van unit"}:::decision N_GenerateErrorMessageMissingWaybillforLoadedEquipment_Node0_action["Generate error message MSG-TEN
indicating missing waybill for
loaded equipment"]:::main N_GenerateErrorMessageMissingWaybillforLoadedEquipment_Node0 -- Yes --> N_GenerateErrorMessageMissingWaybillforLoadedEquipment_Node0_action N_GenerateErrorMessageMissingWaybillforLoadedEquipment_Node0_action --> E_GenerateErrorMessageMissingWaybillforLoadedEquipment S_GenerateErrorMessageMissingWaybillforLoadedEquipment --> N_GenerateErrorMessageMissingWaybillforLoadedEquipment_Node0 N_GenerateErrorMessageMissingWaybillforLoadedEquipment_Node0 -- No --> E_GenerateErrorMessageMissingWaybillforLoadedEquipment
AND no waybill is found AND the
equipment is not an SBU Van unit"}:::decision N_GenerateErrorMessageMissingWaybillforLoadedEquipment_Node0_action["Generate error message MSG-TEN
indicating missing waybill for
loaded equipment"]:::main N_GenerateErrorMessageMissingWaybillforLoadedEquipment_Node0 -- Yes --> N_GenerateErrorMessageMissingWaybillforLoadedEquipment_Node0_action N_GenerateErrorMessageMissingWaybillforLoadedEquipment_Node0_action --> E_GenerateErrorMessageMissingWaybillforLoadedEquipment S_GenerateErrorMessageMissingWaybillforLoadedEquipment --> N_GenerateErrorMessageMissingWaybillforLoadedEquipment_Node0 N_GenerateErrorMessageMissingWaybillforLoadedEquipment_Node0 -- No --> E_GenerateErrorMessageMissingWaybillforLoadedEquipment
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
An equipment item is being processed for a train manifest
WHEN:
- The equipment is marked as loaded
- No waybill is found
- The equipment is not an sbu van unit
THEN:
Generate error message MSG-TEN indicating missing waybill for loaded equipment
β Consolidated Acceptance Criteria
- No cargo records are found for the equipment AND the equipment is marked as loaded AND the equipment is not a conveying car AND the equipment is not an idler car → generate error message MSG-FIFTEEN indicating missing cargo records for loaded equipment with waybill and date information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateErrorMessageMissingCargoforLoadedEquipment(["Start Step"])
E_GenerateErrorMessageMissingCargoforLoadedEquipment(["End Step"])
N_GenerateErrorMessageMissingCargoforLoadedEquipment_Node0{"No cargo records are found for the
equipment AND the equipment is
marked as loaded AND the equipment
is not a conveying car AND the
equipment is not an idler car"}:::decision N_GenerateErrorMessageMissingCargoforLoadedEquipment_Node0_action["Generate error message MSG-FIFTEEN
indicating missing cargo records for
loaded equipment with waybill and
date information"]:::main N_GenerateErrorMessageMissingCargoforLoadedEquipment_Node0 -- Yes --> N_GenerateErrorMessageMissingCargoforLoadedEquipment_Node0_action N_GenerateErrorMessageMissingCargoforLoadedEquipment_Node0_action --> E_GenerateErrorMessageMissingCargoforLoadedEquipment S_GenerateErrorMessageMissingCargoforLoadedEquipment --> N_GenerateErrorMessageMissingCargoforLoadedEquipment_Node0 N_GenerateErrorMessageMissingCargoforLoadedEquipment_Node0 -- No --> E_GenerateErrorMessageMissingCargoforLoadedEquipment
equipment AND the equipment is
marked as loaded AND the equipment
is not a conveying car AND the
equipment is not an idler car"}:::decision N_GenerateErrorMessageMissingCargoforLoadedEquipment_Node0_action["Generate error message MSG-FIFTEEN
indicating missing cargo records for
loaded equipment with waybill and
date information"]:::main N_GenerateErrorMessageMissingCargoforLoadedEquipment_Node0 -- Yes --> N_GenerateErrorMessageMissingCargoforLoadedEquipment_Node0_action N_GenerateErrorMessageMissingCargoforLoadedEquipment_Node0_action --> E_GenerateErrorMessageMissingCargoforLoadedEquipment S_GenerateErrorMessageMissingCargoforLoadedEquipment --> N_GenerateErrorMessageMissingCargoforLoadedEquipment_Node0 N_GenerateErrorMessageMissingCargoforLoadedEquipment_Node0 -- No --> E_GenerateErrorMessageMissingCargoforLoadedEquipment
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
An equipment item has an associated waybill
WHEN:
- No cargo records are found for the equipment
- The equipment is marked as loaded
- The equipment is not a conveying car
- The equipment is not an idler car
THEN:
- Generate error message msg-fifteen indicating missing cargo records for loaded equipment with waybill
- Date information
β Consolidated Acceptance Criteria
- The equipment load/empty indicator shows the equipment is empty → skip cargo validation checks and mark equipment validation as passed
- The equipment is classified as an SBU Van unit → exempt the equipment from waybill requirement validation and mark validation as passed
- The equipment is classified as a conveying car → exempt the equipment from cargo record requirement validation and mark validation as passed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentValidationPassed(["Start Step"])
E_EquipmentValidationPassed(["End Step"])
N_EquipmentValidationPassed_Node0{"The equipment loadempty indicator
shows the equipment is empty"}:::decision N_EquipmentValidationPassed_Node0_action["Skip cargo validation checks and
mark equipment validation as passed"]:::main N_EquipmentValidationPassed_Node0 -- Yes --> N_EquipmentValidationPassed_Node0_action N_EquipmentValidationPassed_Node0_action --> E_EquipmentValidationPassed S_EquipmentValidationPassed --> N_EquipmentValidationPassed_Node0 N_EquipmentValidationPassed_Node1{"The equipment is classified as an
SBU Van unit"}:::decision N_EquipmentValidationPassed_Node1_action["Exempt the equipment from waybill
requirement validation and mark
validation as passed"]:::main N_EquipmentValidationPassed_Node1 -- Yes --> N_EquipmentValidationPassed_Node1_action N_EquipmentValidationPassed_Node1_action --> E_EquipmentValidationPassed N_EquipmentValidationPassed_Node0 -- No --> N_EquipmentValidationPassed_Node1 N_EquipmentValidationPassed_Node2{"The equipment is classified as a
conveying car"}:::decision N_EquipmentValidationPassed_Node2_action["Exempt the equipment from cargo
record requirement validation and
mark validation as passed"]:::main N_EquipmentValidationPassed_Node2 -- Yes --> N_EquipmentValidationPassed_Node2_action N_EquipmentValidationPassed_Node2_action --> E_EquipmentValidationPassed N_EquipmentValidationPassed_Node1 -- No --> N_EquipmentValidationPassed_Node2 N_EquipmentValidationPassed_Node2 -- No --> E_EquipmentValidationPassed
shows the equipment is empty"}:::decision N_EquipmentValidationPassed_Node0_action["Skip cargo validation checks and
mark equipment validation as passed"]:::main N_EquipmentValidationPassed_Node0 -- Yes --> N_EquipmentValidationPassed_Node0_action N_EquipmentValidationPassed_Node0_action --> E_EquipmentValidationPassed S_EquipmentValidationPassed --> N_EquipmentValidationPassed_Node0 N_EquipmentValidationPassed_Node1{"The equipment is classified as an
SBU Van unit"}:::decision N_EquipmentValidationPassed_Node1_action["Exempt the equipment from waybill
requirement validation and mark
validation as passed"]:::main N_EquipmentValidationPassed_Node1 -- Yes --> N_EquipmentValidationPassed_Node1_action N_EquipmentValidationPassed_Node1_action --> E_EquipmentValidationPassed N_EquipmentValidationPassed_Node0 -- No --> N_EquipmentValidationPassed_Node1 N_EquipmentValidationPassed_Node2{"The equipment is classified as a
conveying car"}:::decision N_EquipmentValidationPassed_Node2_action["Exempt the equipment from cargo
record requirement validation and
mark validation as passed"]:::main N_EquipmentValidationPassed_Node2 -- Yes --> N_EquipmentValidationPassed_Node2_action N_EquipmentValidationPassed_Node2_action --> E_EquipmentValidationPassed N_EquipmentValidationPassed_Node1 -- No --> N_EquipmentValidationPassed_Node2 N_EquipmentValidationPassed_Node2 -- No --> E_EquipmentValidationPassed
File: GCX003.cbl
GIVEN:
An equipment item is being processed for cargo validation
WHEN:
The equipment load/empty indicator shows the equipment is empty
THEN:
- Skip cargo validation checks
- Mark equipment validation as passed
File: GCX003.cbl
GIVEN:
An equipment item is marked as loaded but has no waybill
WHEN:
The equipment is classified as an SBU Van unit
THEN:
- Exempt the equipment from waybill requirement validation
- Mark validation as passed
File: GCX003.cbl
GIVEN:
An equipment item has a waybill but no cargo records are found
WHEN:
The equipment is classified as a conveying car
THEN:
- Exempt the equipment from cargo record requirement validation
- Mark validation as passed
β Consolidated Acceptance Criteria
- The system checks for cargo existence → if no cargo is found, skip Mexico customs documentation validation and continue with next processing step
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCargoFound(["Start Step"])
E_IsCargoFound(["End Step"])
N_IsCargoFound_Node0{"The system checks for cargo
existence"}:::decision N_IsCargoFound_Node0_action["If no cargo is found, skip Mexico
customs documentation validation and
continue with next processing step"]:::main N_IsCargoFound_Node0 -- Yes --> N_IsCargoFound_Node0_action N_IsCargoFound_Node0_action --> E_IsCargoFound S_IsCargoFound --> N_IsCargoFound_Node0 N_IsCargoFound_Node0 -- No --> E_IsCargoFound
existence"}:::decision N_IsCargoFound_Node0_action["If no cargo is found, skip Mexico
customs documentation validation and
continue with next processing step"]:::main N_IsCargoFound_Node0 -- Yes --> N_IsCargoFound_Node0_action N_IsCargoFound_Node0_action --> E_IsCargoFound S_IsCargoFound --> N_IsCargoFound_Node0 N_IsCargoFound_Node0 -- No --> E_IsCargoFound
File: GCX003.cbl
GIVEN:
A cargo processing request is being evaluated
WHEN:
The system checks for cargo existence
THEN:
- If no cargo is found, skip mexico customs documentation validation
- Continue with next processing step
β Consolidated Acceptance Criteria
- If the train crossing station → if the crossing station is not Laredo TX, skip Mexico customs documentation validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsTrainOriginLaredoTXStation(["Start Step"])
E_IsTrainOriginLaredoTXStation(["End Step"])
N_IsTrainOriginLaredoTXStation_Node0{"The system evaluates the train
crossing station"}:::decision N_IsTrainOriginLaredoTXStation_Node0_action["If the crossing station is not
Laredo TX, skip Mexico customs
documentation validation"]:::main N_IsTrainOriginLaredoTXStation_Node0 -- Yes --> N_IsTrainOriginLaredoTXStation_Node0_action N_IsTrainOriginLaredoTXStation_Node0_action --> E_IsTrainOriginLaredoTXStation S_IsTrainOriginLaredoTXStation --> N_IsTrainOriginLaredoTXStation_Node0 N_IsTrainOriginLaredoTXStation_Node0 -- No --> E_IsTrainOriginLaredoTXStation
crossing station"}:::decision N_IsTrainOriginLaredoTXStation_Node0_action["If the crossing station is not
Laredo TX, skip Mexico customs
documentation validation"]:::main N_IsTrainOriginLaredoTXStation_Node0 -- Yes --> N_IsTrainOriginLaredoTXStation_Node0_action N_IsTrainOriginLaredoTXStation_Node0_action --> E_IsTrainOriginLaredoTXStation S_IsTrainOriginLaredoTXStation --> N_IsTrainOriginLaredoTXStation_Node0 N_IsTrainOriginLaredoTXStation_Node0 -- No --> E_IsTrainOriginLaredoTXStation
File: GCX003.cbl
GIVEN:
Cargo is found and being processed
WHEN:
The system evaluates the train crossing station
THEN:
If the crossing station is not Laredo TX, skip Mexico customs documentation validation
β Consolidated Acceptance Criteria
- The system checks for segment 02 reference data availability → if segment 02 data is not found or empty, skip Mexico customs documentation validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsSegment02DataFound(["Start Step"])
E_IsSegment02DataFound(["End Step"])
N_IsSegment02DataFound_Node0{"The system checks for segment 02
reference data availability"}:::decision N_IsSegment02DataFound_Node0_action["If segment 02 data is not found or
empty, skip Mexico customs
documentation validation"]:::main N_IsSegment02DataFound_Node0 -- Yes --> N_IsSegment02DataFound_Node0_action N_IsSegment02DataFound_Node0_action --> E_IsSegment02DataFound S_IsSegment02DataFound --> N_IsSegment02DataFound_Node0 N_IsSegment02DataFound_Node0 -- No --> E_IsSegment02DataFound
reference data availability"}:::decision N_IsSegment02DataFound_Node0_action["If segment 02 data is not found or
empty, skip Mexico customs
documentation validation"]:::main N_IsSegment02DataFound_Node0 -- Yes --> N_IsSegment02DataFound_Node0_action N_IsSegment02DataFound_Node0_action --> E_IsSegment02DataFound S_IsSegment02DataFound --> N_IsSegment02DataFound_Node0 N_IsSegment02DataFound_Node0 -- No --> E_IsSegment02DataFound
File: GCX003.cbl
GIVEN:
Cargo is found and train origin is Laredo TX station
WHEN:
The system checks for segment 02 reference data availability
THEN:
If segment 02 data is not found or empty, skip Mexico customs documentation validation
β Consolidated Acceptance Criteria
- The system begins Mexico customs documentation validation → set FEN documentation flag to not found and KCM documentation flag to not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeFENandKCMFlagsasNotFound(["Start Step"])
E_InitializeFENandKCMFlagsasNotFound(["End Step"])
N_InitializeFENandKCMFlagsasNotFound_Node0{"The system begins Mexico customs
documentation validation"}:::decision N_InitializeFENandKCMFlagsasNotFound_Node0_action["Set FEN documentation flag to not
found and KCM documentation flag to
not found"]:::main N_InitializeFENandKCMFlagsasNotFound_Node0 -- Yes --> N_InitializeFENandKCMFlagsasNotFound_Node0_action N_InitializeFENandKCMFlagsasNotFound_Node0_action --> E_InitializeFENandKCMFlagsasNotFound S_InitializeFENandKCMFlagsasNotFound --> N_InitializeFENandKCMFlagsasNotFound_Node0 N_InitializeFENandKCMFlagsasNotFound_Node0 -- No --> E_InitializeFENandKCMFlagsasNotFound
documentation validation"}:::decision N_InitializeFENandKCMFlagsasNotFound_Node0_action["Set FEN documentation flag to not
found and KCM documentation flag to
not found"]:::main N_InitializeFENandKCMFlagsasNotFound_Node0 -- Yes --> N_InitializeFENandKCMFlagsasNotFound_Node0_action N_InitializeFENandKCMFlagsasNotFound_Node0_action --> E_InitializeFENandKCMFlagsasNotFound S_InitializeFENandKCMFlagsasNotFound --> N_InitializeFENandKCMFlagsasNotFound_Node0 N_InitializeFENandKCMFlagsasNotFound_Node0 -- No --> E_InitializeFENandKCMFlagsasNotFound
File: GCX003.cbl
GIVEN:
Segment 02 data is available for processing
WHEN:
The system begins Mexico customs documentation validation
THEN:
- Set fen documentation flag to not found
- Kcm documentation flag to not found
β Consolidated Acceptance Criteria
- A reference number qualifier equals 'FEN' → check if the corresponding reference number value is not empty
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReferenceNumberQualifierFEN(["Start Step"])
E_ReferenceNumberQualifierFEN(["End Step"])
N_ReferenceNumberQualifierFEN_Node0{"A reference number qualifier equals
FEN"}:::decision N_ReferenceNumberQualifierFEN_Node0_action["Check if the corresponding
reference number value is not empty"]:::main N_ReferenceNumberQualifierFEN_Node0 -- Yes --> N_ReferenceNumberQualifierFEN_Node0_action N_ReferenceNumberQualifierFEN_Node0_action --> E_ReferenceNumberQualifierFEN S_ReferenceNumberQualifierFEN --> N_ReferenceNumberQualifierFEN_Node0 N_ReferenceNumberQualifierFEN_Node0 -- No --> E_ReferenceNumberQualifierFEN
FEN"}:::decision N_ReferenceNumberQualifierFEN_Node0_action["Check if the corresponding
reference number value is not empty"]:::main N_ReferenceNumberQualifierFEN_Node0 -- Yes --> N_ReferenceNumberQualifierFEN_Node0_action N_ReferenceNumberQualifierFEN_Node0_action --> E_ReferenceNumberQualifierFEN S_ReferenceNumberQualifierFEN --> N_ReferenceNumberQualifierFEN_Node0 N_ReferenceNumberQualifierFEN_Node0 -- No --> E_ReferenceNumberQualifierFEN
File: GCX003.cbl
GIVEN:
System is processing segment 02 reference numbers
WHEN:
A reference number qualifier equals 'FEN'
THEN:
Check if the corresponding reference number value is not empty
β Consolidated Acceptance Criteria
- The system validates the reference number value → if the reference number is not empty or low-values, set FEN found flag to true
- The system validates the reference number value → if the reference number is not empty or low-values, set KCM found flag to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReferenceNumberNotEmpty(["Start Step"])
E_ReferenceNumberNotEmpty(["End Step"])
N_ReferenceNumberNotEmpty_Node0{"The system validates the reference
number value"}:::decision N_ReferenceNumberNotEmpty_Node0_action["If the reference number is not
empty or low-values, set FEN found
flag to true"]:::main N_ReferenceNumberNotEmpty_Node0 -- Yes --> N_ReferenceNumberNotEmpty_Node0_action N_ReferenceNumberNotEmpty_Node0_action --> E_ReferenceNumberNotEmpty S_ReferenceNumberNotEmpty --> N_ReferenceNumberNotEmpty_Node0 N_ReferenceNumberNotEmpty_Node1{"The system validates the reference
number value"}:::decision N_ReferenceNumberNotEmpty_Node1_action["If the reference number is not
empty or low-values, set KCM found
flag to true"]:::main N_ReferenceNumberNotEmpty_Node1 -- Yes --> N_ReferenceNumberNotEmpty_Node1_action N_ReferenceNumberNotEmpty_Node1_action --> E_ReferenceNumberNotEmpty N_ReferenceNumberNotEmpty_Node0 -- No --> N_ReferenceNumberNotEmpty_Node1 N_ReferenceNumberNotEmpty_Node1 -- No --> E_ReferenceNumberNotEmpty
number value"}:::decision N_ReferenceNumberNotEmpty_Node0_action["If the reference number is not
empty or low-values, set FEN found
flag to true"]:::main N_ReferenceNumberNotEmpty_Node0 -- Yes --> N_ReferenceNumberNotEmpty_Node0_action N_ReferenceNumberNotEmpty_Node0_action --> E_ReferenceNumberNotEmpty S_ReferenceNumberNotEmpty --> N_ReferenceNumberNotEmpty_Node0 N_ReferenceNumberNotEmpty_Node1{"The system validates the reference
number value"}:::decision N_ReferenceNumberNotEmpty_Node1_action["If the reference number is not
empty or low-values, set KCM found
flag to true"]:::main N_ReferenceNumberNotEmpty_Node1 -- Yes --> N_ReferenceNumberNotEmpty_Node1_action N_ReferenceNumberNotEmpty_Node1_action --> E_ReferenceNumberNotEmpty N_ReferenceNumberNotEmpty_Node0 -- No --> N_ReferenceNumberNotEmpty_Node1 N_ReferenceNumberNotEmpty_Node1 -- No --> E_ReferenceNumberNotEmpty
File: GCX003.cbl
GIVEN:
A reference number qualifier is identified as 'FEN'
WHEN:
The system validates the reference number value
THEN:
If the reference number is not empty or low-values, set FEN found flag to true
File: GCX003.cbl
GIVEN:
A reference number qualifier is identified as 'KCM'
WHEN:
The system validates the reference number value
THEN:
If the reference number is not empty or low-values, set KCM found flag to true
β Consolidated Acceptance Criteria
- The system processes the FEN documentation → set the FEN found flag to indicate required documentation is present
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFENFoundFlag(["Start Step"])
E_SetFENFoundFlag(["End Step"])
N_SetFENFoundFlag_Node0{"The system processes the FEN
documentation"}:::decision N_SetFENFoundFlag_Node0_action["Set the FEN found flag to indicate
required documentation is present"]:::main N_SetFENFoundFlag_Node0 -- Yes --> N_SetFENFoundFlag_Node0_action N_SetFENFoundFlag_Node0_action --> E_SetFENFoundFlag S_SetFENFoundFlag --> N_SetFENFoundFlag_Node0 N_SetFENFoundFlag_Node0 -- No --> E_SetFENFoundFlag
documentation"}:::decision N_SetFENFoundFlag_Node0_action["Set the FEN found flag to indicate
required documentation is present"]:::main N_SetFENFoundFlag_Node0 -- Yes --> N_SetFENFoundFlag_Node0_action N_SetFENFoundFlag_Node0_action --> E_SetFENFoundFlag S_SetFENFoundFlag --> N_SetFENFoundFlag_Node0 N_SetFENFoundFlag_Node0 -- No --> E_SetFENFoundFlag
File: GCX003.cbl
GIVEN:
FEN reference qualifier is found with valid reference number value
WHEN:
The system processes the FEN documentation
THEN:
Set the FEN found flag to indicate required documentation is present
β Consolidated Acceptance Criteria
- A reference number qualifier equals 'KCM' → check if the corresponding reference number value is not empty
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReferenceNumberQualifierKCM(["Start Step"])
E_ReferenceNumberQualifierKCM(["End Step"])
N_ReferenceNumberQualifierKCM_Node0{"A reference number qualifier equals
KCM"}:::decision N_ReferenceNumberQualifierKCM_Node0_action["Check if the corresponding
reference number value is not empty"]:::main N_ReferenceNumberQualifierKCM_Node0 -- Yes --> N_ReferenceNumberQualifierKCM_Node0_action N_ReferenceNumberQualifierKCM_Node0_action --> E_ReferenceNumberQualifierKCM S_ReferenceNumberQualifierKCM --> N_ReferenceNumberQualifierKCM_Node0 N_ReferenceNumberQualifierKCM_Node0 -- No --> E_ReferenceNumberQualifierKCM
KCM"}:::decision N_ReferenceNumberQualifierKCM_Node0_action["Check if the corresponding
reference number value is not empty"]:::main N_ReferenceNumberQualifierKCM_Node0 -- Yes --> N_ReferenceNumberQualifierKCM_Node0_action N_ReferenceNumberQualifierKCM_Node0_action --> E_ReferenceNumberQualifierKCM S_ReferenceNumberQualifierKCM --> N_ReferenceNumberQualifierKCM_Node0 N_ReferenceNumberQualifierKCM_Node0 -- No --> E_ReferenceNumberQualifierKCM
File: GCX003.cbl
GIVEN:
System is processing segment 02 reference numbers
WHEN:
A reference number qualifier equals 'KCM'
THEN:
Check if the corresponding reference number value is not empty
β Consolidated Acceptance Criteria
- The system processes the KCM documentation → set the KCM found flag to indicate required documentation is present
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetKCMFoundFlag(["Start Step"])
E_SetKCMFoundFlag(["End Step"])
N_SetKCMFoundFlag_Node0{"The system processes the KCM
documentation"}:::decision N_SetKCMFoundFlag_Node0_action["Set the KCM found flag to indicate
required documentation is present"]:::main N_SetKCMFoundFlag_Node0 -- Yes --> N_SetKCMFoundFlag_Node0_action N_SetKCMFoundFlag_Node0_action --> E_SetKCMFoundFlag S_SetKCMFoundFlag --> N_SetKCMFoundFlag_Node0 N_SetKCMFoundFlag_Node0 -- No --> E_SetKCMFoundFlag
documentation"}:::decision N_SetKCMFoundFlag_Node0_action["Set the KCM found flag to indicate
required documentation is present"]:::main N_SetKCMFoundFlag_Node0 -- Yes --> N_SetKCMFoundFlag_Node0_action N_SetKCMFoundFlag_Node0_action --> E_SetKCMFoundFlag S_SetKCMFoundFlag --> N_SetKCMFoundFlag_Node0 N_SetKCMFoundFlag_Node0 -- No --> E_SetKCMFoundFlag
File: GCX003.cbl
GIVEN:
KCM reference qualifier is found with valid reference number value
WHEN:
The system processes the KCM documentation
THEN:
Set the KCM found flag to indicate required documentation is present
β Consolidated Acceptance Criteria
- Current reference number processing is complete → if more reference numbers exist, continue processing next reference number, otherwise proceed to documentation validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreReferenceNumbers(["Start Step"])
E_MoreReferenceNumbers(["End Step"])
N_MoreReferenceNumbers_Node0{"Current reference number processing
is complete"}:::decision N_MoreReferenceNumbers_Node0_action["If more reference numbers exist,
continue processing next reference
number, otherwise proceed to
documentation validation"]:::main N_MoreReferenceNumbers_Node0 -- Yes --> N_MoreReferenceNumbers_Node0_action N_MoreReferenceNumbers_Node0_action --> E_MoreReferenceNumbers S_MoreReferenceNumbers --> N_MoreReferenceNumbers_Node0 N_MoreReferenceNumbers_Node0 -- No --> E_MoreReferenceNumbers
is complete"}:::decision N_MoreReferenceNumbers_Node0_action["If more reference numbers exist,
continue processing next reference
number, otherwise proceed to
documentation validation"]:::main N_MoreReferenceNumbers_Node0 -- Yes --> N_MoreReferenceNumbers_Node0_action N_MoreReferenceNumbers_Node0_action --> E_MoreReferenceNumbers S_MoreReferenceNumbers --> N_MoreReferenceNumbers_Node0 N_MoreReferenceNumbers_Node0 -- No --> E_MoreReferenceNumbers
File: GCX003.cbl
GIVEN:
System is processing segment 02 reference numbers
WHEN:
Current reference number processing is complete
THEN:
If more reference numbers exist, continue processing next reference number, otherwise proceed to documentation validation
β Consolidated Acceptance Criteria
- If cargo status conditions → if cargo short description equals hold at border status, check for DSP hold application
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCargoHoldatBorderStatus(["Start Step"])
E_IsCargoHoldatBorderStatus(["End Step"])
N_IsCargoHoldatBorderStatus_Node0{"The system evaluates cargo status
conditions"}:::decision N_IsCargoHoldatBorderStatus_Node0_action["If cargo short description equals
hold at border status, check for DSP
hold application"]:::main N_IsCargoHoldatBorderStatus_Node0 -- Yes --> N_IsCargoHoldatBorderStatus_Node0_action N_IsCargoHoldatBorderStatus_Node0_action --> E_IsCargoHoldatBorderStatus S_IsCargoHoldatBorderStatus --> N_IsCargoHoldatBorderStatus_Node0 N_IsCargoHoldatBorderStatus_Node0 -- No --> E_IsCargoHoldatBorderStatus
conditions"}:::decision N_IsCargoHoldatBorderStatus_Node0_action["If cargo short description equals
hold at border status, check for DSP
hold application"]:::main N_IsCargoHoldatBorderStatus_Node0 -- Yes --> N_IsCargoHoldatBorderStatus_Node0_action N_IsCargoHoldatBorderStatus_Node0_action --> E_IsCargoHoldatBorderStatus S_IsCargoHoldatBorderStatus --> N_IsCargoHoldatBorderStatus_Node0 N_IsCargoHoldatBorderStatus_Node0 -- No --> E_IsCargoHoldatBorderStatus
File: GCX003.cbl
GIVEN:
All reference numbers have been processed
WHEN:
The system evaluates cargo status conditions
THEN:
If cargo short description equals hold at border status, check for DSP hold application
β Consolidated Acceptance Criteria
- The system processes the combined hold conditions → generate message 52 indicating hold at border status with DSP hold applied
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateMessage52HoldatBorderwithDSPHold(["Start Step"])
E_GenerateMessage52HoldatBorderwithDSPHold(["End Step"])
N_GenerateMessage52HoldatBorderwithDSPHold_Node0{"The system processes the combined
hold conditions"}:::decision N_GenerateMessage52HoldatBorderwithDSPHold_Node0_action["Generate message 52 indicating hold
at border status with DSP hold
applied"]:::main N_GenerateMessage52HoldatBorderwithDSPHold_Node0 -- Yes --> N_GenerateMessage52HoldatBorderwithDSPHold_Node0_action N_GenerateMessage52HoldatBorderwithDSPHold_Node0_action --> E_GenerateMessage52HoldatBorderwithDSPHold S_GenerateMessage52HoldatBorderwithDSPHold --> N_GenerateMessage52HoldatBorderwithDSPHold_Node0 N_GenerateMessage52HoldatBorderwithDSPHold_Node0 -- No --> E_GenerateMessage52HoldatBorderwithDSPHold
hold conditions"}:::decision N_GenerateMessage52HoldatBorderwithDSPHold_Node0_action["Generate message 52 indicating hold
at border status with DSP hold
applied"]:::main N_GenerateMessage52HoldatBorderwithDSPHold_Node0 -- Yes --> N_GenerateMessage52HoldatBorderwithDSPHold_Node0_action N_GenerateMessage52HoldatBorderwithDSPHold_Node0_action --> E_GenerateMessage52HoldatBorderwithDSPHold S_GenerateMessage52HoldatBorderwithDSPHold --> N_GenerateMessage52HoldatBorderwithDSPHold_Node0 N_GenerateMessage52HoldatBorderwithDSPHold_Node0 -- No --> E_GenerateMessage52HoldatBorderwithDSPHold
File: GCX003.cbl
GIVEN:
Cargo has hold at border status and DSP hold is applied
WHEN:
The system processes the combined hold conditions
THEN:
Generate message 52 indicating hold at border status with DSP hold applied
β Consolidated Acceptance Criteria
- The system checks for DSP hold application → if DSP hold is applied, generate message 49 for DSP hold applied
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsDSPHoldAppliedOnly(["Start Step"])
E_IsDSPHoldAppliedOnly(["End Step"])
N_IsDSPHoldAppliedOnly_Node0{"The system checks for DSP hold
application"}:::decision N_IsDSPHoldAppliedOnly_Node0_action["If DSP hold is applied, generate
message 49 for DSP hold applied"]:::main N_IsDSPHoldAppliedOnly_Node0 -- Yes --> N_IsDSPHoldAppliedOnly_Node0_action N_IsDSPHoldAppliedOnly_Node0_action --> E_IsDSPHoldAppliedOnly S_IsDSPHoldAppliedOnly --> N_IsDSPHoldAppliedOnly_Node0 N_IsDSPHoldAppliedOnly_Node0 -- No --> E_IsDSPHoldAppliedOnly
application"}:::decision N_IsDSPHoldAppliedOnly_Node0_action["If DSP hold is applied, generate
message 49 for DSP hold applied"]:::main N_IsDSPHoldAppliedOnly_Node0 -- Yes --> N_IsDSPHoldAppliedOnly_Node0_action N_IsDSPHoldAppliedOnly_Node0_action --> E_IsDSPHoldAppliedOnly S_IsDSPHoldAppliedOnly --> N_IsDSPHoldAppliedOnly_Node0 N_IsDSPHoldAppliedOnly_Node0 -- No --> E_IsDSPHoldAppliedOnly
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo does not have hold at border status
WHEN:
The system checks for DSP hold application
THEN:
If DSP hold is applied, generate message 49 for DSP hold applied
β Consolidated Acceptance Criteria
- The system processes the DSP hold condition → generate message 49 indicating DSP hold is applied
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateMessage49DSPHoldApplied(["Start Step"])
E_GenerateMessage49DSPHoldApplied(["End Step"])
N_GenerateMessage49DSPHoldApplied_Node0{"The system processes the DSP hold
condition"}:::decision N_GenerateMessage49DSPHoldApplied_Node0_action["Generate message 49 indicating DSP
hold is applied"]:::main N_GenerateMessage49DSPHoldApplied_Node0 -- Yes --> N_GenerateMessage49DSPHoldApplied_Node0_action N_GenerateMessage49DSPHoldApplied_Node0_action --> E_GenerateMessage49DSPHoldApplied S_GenerateMessage49DSPHoldApplied --> N_GenerateMessage49DSPHoldApplied_Node0 N_GenerateMessage49DSPHoldApplied_Node0 -- No --> E_GenerateMessage49DSPHoldApplied
condition"}:::decision N_GenerateMessage49DSPHoldApplied_Node0_action["Generate message 49 indicating DSP
hold is applied"]:::main N_GenerateMessage49DSPHoldApplied_Node0 -- Yes --> N_GenerateMessage49DSPHoldApplied_Node0_action N_GenerateMessage49DSPHoldApplied_Node0_action --> E_GenerateMessage49DSPHoldApplied S_GenerateMessage49DSPHoldApplied --> N_GenerateMessage49DSPHoldApplied_Node0 N_GenerateMessage49DSPHoldApplied_Node0 -- No --> E_GenerateMessage49DSPHoldApplied
File: GCX003.cbl
GIVEN:
Cargo has DSP hold applied but no hold at border status
WHEN:
The system processes the DSP hold condition
THEN:
Generate message 49 indicating DSP hold is applied
β Consolidated Acceptance Criteria
- If the hold at border condition → generate message 48 for hold at border status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsHoldatBorderStatusOnly(["Start Step"])
E_IsHoldatBorderStatusOnly(["End Step"])
N_IsHoldatBorderStatusOnly_Node0{"The system evaluates the hold at
border condition"}:::decision N_IsHoldatBorderStatusOnly_Node0_action["Generate message 48 for hold at
border status"]:::main N_IsHoldatBorderStatusOnly_Node0 -- Yes --> N_IsHoldatBorderStatusOnly_Node0_action N_IsHoldatBorderStatusOnly_Node0_action --> E_IsHoldatBorderStatusOnly S_IsHoldatBorderStatusOnly --> N_IsHoldatBorderStatusOnly_Node0 N_IsHoldatBorderStatusOnly_Node0 -- No --> E_IsHoldatBorderStatusOnly
border condition"}:::decision N_IsHoldatBorderStatusOnly_Node0_action["Generate message 48 for hold at
border status"]:::main N_IsHoldatBorderStatusOnly_Node0 -- Yes --> N_IsHoldatBorderStatusOnly_Node0_action N_IsHoldatBorderStatusOnly_Node0_action --> E_IsHoldatBorderStatusOnly S_IsHoldatBorderStatusOnly --> N_IsHoldatBorderStatusOnly_Node0 N_IsHoldatBorderStatusOnly_Node0 -- No --> E_IsHoldatBorderStatusOnly
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has hold at border status but DSP hold is not applied
WHEN:
The system evaluates the hold at border condition
THEN:
Generate message 48 for hold at border status
β Consolidated Acceptance Criteria
- The system processes the hold at border condition → generate message 48 indicating hold at border status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateMessage48HoldatBorderStatus(["Start Step"])
E_GenerateMessage48HoldatBorderStatus(["End Step"])
N_GenerateMessage48HoldatBorderStatus_Node0{"The system processes the hold at
border condition"}:::decision N_GenerateMessage48HoldatBorderStatus_Node0_action["Generate message 48 indicating hold
at border status"]:::main N_GenerateMessage48HoldatBorderStatus_Node0 -- Yes --> N_GenerateMessage48HoldatBorderStatus_Node0_action N_GenerateMessage48HoldatBorderStatus_Node0_action --> E_GenerateMessage48HoldatBorderStatus S_GenerateMessage48HoldatBorderStatus --> N_GenerateMessage48HoldatBorderStatus_Node0 N_GenerateMessage48HoldatBorderStatus_Node0 -- No --> E_GenerateMessage48HoldatBorderStatus
border condition"}:::decision N_GenerateMessage48HoldatBorderStatus_Node0_action["Generate message 48 indicating hold
at border status"]:::main N_GenerateMessage48HoldatBorderStatus_Node0 -- Yes --> N_GenerateMessage48HoldatBorderStatus_Node0_action N_GenerateMessage48HoldatBorderStatus_Node0_action --> E_GenerateMessage48HoldatBorderStatus S_GenerateMessage48HoldatBorderStatus --> N_GenerateMessage48HoldatBorderStatus_Node0 N_GenerateMessage48HoldatBorderStatus_Node0 -- No --> E_GenerateMessage48HoldatBorderStatus
File: GCX003.cbl
GIVEN:
Cargo has hold at border status but no DSP hold applied
WHEN:
The system processes the hold at border condition
THEN:
Generate message 48 indicating hold at border status
β Consolidated Acceptance Criteria
- The system validates Mexico customs documentation requirements → generate message 46 indicating FEN documentation is required
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateMessage46FENDocumentationRequired(["Start Step"])
E_GenerateMessage46FENDocumentationRequired(["End Step"])
N_GenerateMessage46FENDocumentationRequired_Node0{"The system validates Mexico customs
documentation requirements"}:::decision N_GenerateMessage46FENDocumentationRequired_Node0_action["Generate message 46 indicating FEN
documentation is required"]:::main N_GenerateMessage46FENDocumentationRequired_Node0 -- Yes --> N_GenerateMessage46FENDocumentationRequired_Node0_action N_GenerateMessage46FENDocumentationRequired_Node0_action --> E_GenerateMessage46FENDocumentationRequired S_GenerateMessage46FENDocumentationRequired --> N_GenerateMessage46FENDocumentationRequired_Node0 N_GenerateMessage46FENDocumentationRequired_Node0 -- No --> E_GenerateMessage46FENDocumentationRequired
documentation requirements"}:::decision N_GenerateMessage46FENDocumentationRequired_Node0_action["Generate message 46 indicating FEN
documentation is required"]:::main N_GenerateMessage46FENDocumentationRequired_Node0 -- Yes --> N_GenerateMessage46FENDocumentationRequired_Node0_action N_GenerateMessage46FENDocumentationRequired_Node0_action --> E_GenerateMessage46FENDocumentationRequired S_GenerateMessage46FENDocumentationRequired --> N_GenerateMessage46FENDocumentationRequired_Node0 N_GenerateMessage46FENDocumentationRequired_Node0 -- No --> E_GenerateMessage46FENDocumentationRequired
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
FEN documentation is not found in cargo data
WHEN:
The system validates Mexico customs documentation requirements
THEN:
Generate message 46 indicating FEN documentation is required
β Consolidated Acceptance Criteria
- The system validates Mexico customs documentation requirements → generate message 47 indicating KCM documentation is required
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateMessage47KCMDocumentationRequired(["Start Step"])
E_GenerateMessage47KCMDocumentationRequired(["End Step"])
N_GenerateMessage47KCMDocumentationRequired_Node0{"The system validates Mexico customs
documentation requirements"}:::decision N_GenerateMessage47KCMDocumentationRequired_Node0_action["Generate message 47 indicating KCM
documentation is required"]:::main N_GenerateMessage47KCMDocumentationRequired_Node0 -- Yes --> N_GenerateMessage47KCMDocumentationRequired_Node0_action N_GenerateMessage47KCMDocumentationRequired_Node0_action --> E_GenerateMessage47KCMDocumentationRequired S_GenerateMessage47KCMDocumentationRequired --> N_GenerateMessage47KCMDocumentationRequired_Node0 N_GenerateMessage47KCMDocumentationRequired_Node0 -- No --> E_GenerateMessage47KCMDocumentationRequired
documentation requirements"}:::decision N_GenerateMessage47KCMDocumentationRequired_Node0_action["Generate message 47 indicating KCM
documentation is required"]:::main N_GenerateMessage47KCMDocumentationRequired_Node0 -- Yes --> N_GenerateMessage47KCMDocumentationRequired_Node0_action N_GenerateMessage47KCMDocumentationRequired_Node0_action --> E_GenerateMessage47KCMDocumentationRequired S_GenerateMessage47KCMDocumentationRequired --> N_GenerateMessage47KCMDocumentationRequired_Node0 N_GenerateMessage47KCMDocumentationRequired_Node0 -- No --> E_GenerateMessage47KCMDocumentationRequired
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
KCM documentation is not found in cargo data
WHEN:
The system validates Mexico customs documentation requirements
THEN:
Generate message 47 indicating KCM documentation is required
β Consolidated Acceptance Criteria
- The system processes TE bond detour requirements → execute TE bond specific detour processing logic including port change validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TEBondDetourProcessing(["Start Step"])
E_TEBondDetourProcessing(["End Step"])
N_TEBondDetourProcessing_Node0{"The system processes TE bond detour
requirements"}:::decision N_TEBondDetourProcessing_Node0_action["Execute TE bond specific detour
processing logic including port
change validation"]:::main N_TEBondDetourProcessing_Node0 -- Yes --> N_TEBondDetourProcessing_Node0_action N_TEBondDetourProcessing_Node0_action --> E_TEBondDetourProcessing S_TEBondDetourProcessing --> N_TEBondDetourProcessing_Node0 N_TEBondDetourProcessing_Node0 -- No --> E_TEBondDetourProcessing
requirements"}:::decision N_TEBondDetourProcessing_Node0_action["Execute TE bond specific detour
processing logic including port
change validation"]:::main N_TEBondDetourProcessing_Node0 -- Yes --> N_TEBondDetourProcessing_Node0_action N_TEBondDetourProcessing_Node0_action --> E_TEBondDetourProcessing S_TEBondDetourProcessing --> N_TEBondDetourProcessing_Node0 N_TEBondDetourProcessing_Node0 -- No --> E_TEBondDetourProcessing
File: GCX003.cbl
GIVEN:
Cargo is found and bond type is Transport Export (TE)
WHEN:
The system processes TE bond detour requirements
THEN:
Execute TE bond specific detour processing logic including port change validation
β Consolidated Acceptance Criteria
- The system processes TR bond detour requirements → execute TR bond specific detour processing logic including release status validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TRBondDetourProcessing(["Start Step"])
E_TRBondDetourProcessing(["End Step"])
N_TRBondDetourProcessing_Node0{"The system processes TR bond detour
requirements"}:::decision N_TRBondDetourProcessing_Node0_action["Execute TR bond specific detour
processing logic including release
status validation"]:::main N_TRBondDetourProcessing_Node0 -- Yes --> N_TRBondDetourProcessing_Node0_action N_TRBondDetourProcessing_Node0_action --> E_TRBondDetourProcessing S_TRBondDetourProcessing --> N_TRBondDetourProcessing_Node0 N_TRBondDetourProcessing_Node0 -- No --> E_TRBondDetourProcessing
requirements"}:::decision N_TRBondDetourProcessing_Node0_action["Execute TR bond specific detour
processing logic including release
status validation"]:::main N_TRBondDetourProcessing_Node0 -- Yes --> N_TRBondDetourProcessing_Node0_action N_TRBondDetourProcessing_Node0_action --> E_TRBondDetourProcessing S_TRBondDetourProcessing --> N_TRBondDetourProcessing_Node0 N_TRBondDetourProcessing_Node0 -- No --> E_TRBondDetourProcessing
File: GCX003.cbl
GIVEN:
Cargo is found and bond type is Transit (TR)
WHEN:
The system processes TR bond detour requirements
THEN:
Execute TR bond specific detour processing logic including release status validation
β Consolidated Acceptance Criteria
- The system processes border clearance detour requirements → execute border clearance specific detour processing logic including release status validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BorderClearanceDetourProcessing(["Start Step"])
E_BorderClearanceDetourProcessing(["End Step"])
N_BorderClearanceDetourProcessing_Node0{"The system processes border
clearance detour requirements"}:::decision N_BorderClearanceDetourProcessing_Node0_action["Execute border clearance specific
detour processing logic including
release status validation"]:::main N_BorderClearanceDetourProcessing_Node0 -- Yes --> N_BorderClearanceDetourProcessing_Node0_action N_BorderClearanceDetourProcessing_Node0_action --> E_BorderClearanceDetourProcessing S_BorderClearanceDetourProcessing --> N_BorderClearanceDetourProcessing_Node0 N_BorderClearanceDetourProcessing_Node0 -- No --> E_BorderClearanceDetourProcessing
clearance detour requirements"}:::decision N_BorderClearanceDetourProcessing_Node0_action["Execute border clearance specific
detour processing logic including
release status validation"]:::main N_BorderClearanceDetourProcessing_Node0 -- Yes --> N_BorderClearanceDetourProcessing_Node0_action N_BorderClearanceDetourProcessing_Node0_action --> E_BorderClearanceDetourProcessing S_BorderClearanceDetourProcessing --> N_BorderClearanceDetourProcessing_Node0 N_BorderClearanceDetourProcessing_Node0 -- No --> E_BorderClearanceDetourProcessing
File: GCX003.cbl
GIVEN:
Cargo is found and requires border clearance processing
WHEN:
The system processes border clearance detour requirements
THEN:
Execute border clearance specific detour processing logic including release status validation
β Consolidated Acceptance Criteria
- The system processes US-Mexico export detour requirements → execute US-Mexico export specific detour processing logic including special manifest validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_USMexicoExportDetourProcessing(["Start Step"])
E_USMexicoExportDetourProcessing(["End Step"])
N_USMexicoExportDetourProcessing_Node0{"The system processes US-Mexico
export detour requirements"}:::decision N_USMexicoExportDetourProcessing_Node0_action["Execute US-Mexico export specific
detour processing logic including
special manifest validation"]:::main N_USMexicoExportDetourProcessing_Node0 -- Yes --> N_USMexicoExportDetourProcessing_Node0_action N_USMexicoExportDetourProcessing_Node0_action --> E_USMexicoExportDetourProcessing S_USMexicoExportDetourProcessing --> N_USMexicoExportDetourProcessing_Node0 N_USMexicoExportDetourProcessing_Node0 -- No --> E_USMexicoExportDetourProcessing
export detour requirements"}:::decision N_USMexicoExportDetourProcessing_Node0_action["Execute US-Mexico export specific
detour processing logic including
special manifest validation"]:::main N_USMexicoExportDetourProcessing_Node0 -- Yes --> N_USMexicoExportDetourProcessing_Node0_action N_USMexicoExportDetourProcessing_Node0_action --> E_USMexicoExportDetourProcessing S_USMexicoExportDetourProcessing --> N_USMexicoExportDetourProcessing_Node0 N_USMexicoExportDetourProcessing_Node0 -- No --> E_USMexicoExportDetourProcessing
File: GCX003.cbl
GIVEN:
Cargo is found and is US to Mexico export type
WHEN:
The system processes US-Mexico export detour requirements
THEN:
Execute US-Mexico export specific detour processing logic including special manifest validation
β Consolidated Acceptance Criteria
- The system processes US-US movement detour requirements → execute US domestic movement specific detour processing logic
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_OriginalUSUSMovementDetourProcessing(["Start Step"])
E_OriginalUSUSMovementDetourProcessing(["End Step"])
N_OriginalUSUSMovementDetourProcessing_Node0{"The system processes US-US movement
detour requirements"}:::decision N_OriginalUSUSMovementDetourProcessing_Node0_action["Execute US domestic movement
specific detour processing logic"]:::main N_OriginalUSUSMovementDetourProcessing_Node0 -- Yes --> N_OriginalUSUSMovementDetourProcessing_Node0_action N_OriginalUSUSMovementDetourProcessing_Node0_action --> E_OriginalUSUSMovementDetourProcessing S_OriginalUSUSMovementDetourProcessing --> N_OriginalUSUSMovementDetourProcessing_Node0 N_OriginalUSUSMovementDetourProcessing_Node0 -- No --> E_OriginalUSUSMovementDetourProcessing
detour requirements"}:::decision N_OriginalUSUSMovementDetourProcessing_Node0_action["Execute US domestic movement
specific detour processing logic"]:::main N_OriginalUSUSMovementDetourProcessing_Node0 -- Yes --> N_OriginalUSUSMovementDetourProcessing_Node0_action N_OriginalUSUSMovementDetourProcessing_Node0_action --> E_OriginalUSUSMovementDetourProcessing S_OriginalUSUSMovementDetourProcessing --> N_OriginalUSUSMovementDetourProcessing_Node0 N_OriginalUSUSMovementDetourProcessing_Node0 -- No --> E_OriginalUSUSMovementDetourProcessing
File: GCX003.cbl
GIVEN:
No cargo is found or cargo requires US domestic movement processing
WHEN:
The system processes US-US movement detour requirements
THEN:
Execute US domestic movement specific detour processing logic
β Consolidated Acceptance Criteria
- The system checks if cargo location does not match the train crossing port → if locations do not match, require port change processing, otherwise skip port change
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TEBondPortChangeRequired(["Start Step"])
E_TEBondPortChangeRequired(["End Step"])
N_TEBondPortChangeRequired_Node0{"The system checks if cargo location
does not match the train crossing
port"}:::decision N_TEBondPortChangeRequired_Node0_action["If locations do not match, require
port change processing, otherwise
skip port change"]:::main N_TEBondPortChangeRequired_Node0 -- Yes --> N_TEBondPortChangeRequired_Node0_action N_TEBondPortChangeRequired_Node0_action --> E_TEBondPortChangeRequired S_TEBondPortChangeRequired --> N_TEBondPortChangeRequired_Node0 N_TEBondPortChangeRequired_Node0 -- No --> E_TEBondPortChangeRequired
does not match the train crossing
port"}:::decision N_TEBondPortChangeRequired_Node0_action["If locations do not match, require
port change processing, otherwise
skip port change"]:::main N_TEBondPortChangeRequired_Node0 -- Yes --> N_TEBondPortChangeRequired_Node0_action N_TEBondPortChangeRequired_Node0_action --> E_TEBondPortChangeRequired S_TEBondPortChangeRequired --> N_TEBondPortChangeRequired_Node0 N_TEBondPortChangeRequired_Node0 -- No --> E_TEBondPortChangeRequired
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Transport Export cargo is being processed and cargo is not created for IT and cargo status is not export and cargo is billed as CPRS
WHEN:
The system checks if cargo location does not match the train crossing port
THEN:
If locations do not match, require port change processing, otherwise skip port change
β Consolidated Acceptance Criteria
- The system creates a port change special manifest → generate message 20, set port change spawn flag, and invoke special manifest creation process
- Cargo location (GCUSRT-M1203-LOCATION-ID1) differs from train crossing port (GCSTBRT-SC-US-STAT-CODE-X) and action is send and user is authorized for special manifests → create port change special manifest, generate message 20, and spawn GCX101 process with port change flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreatePortChangeSpecialManifest(["Start Step"])
E_CreatePortChangeSpecialManifest(["End Step"])
N_CreatePortChangeSpecialManifest_Node0{"The system creates a port change
special manifest"}:::decision N_CreatePortChangeSpecialManifest_Node0_action["Generate message 20, set port
change spawn flag, and invoke
special manifest creation process"]:::main N_CreatePortChangeSpecialManifest_Node0 -- Yes --> N_CreatePortChangeSpecialManifest_Node0_action N_CreatePortChangeSpecialManifest_Node0_action --> E_CreatePortChangeSpecialManifest S_CreatePortChangeSpecialManifest --> N_CreatePortChangeSpecialManifest_Node0 N_CreatePortChangeSpecialManifest_Node1{"Cargo location
GCUSRT-M1203-LOCATION-ID1 differs
from train crossing port
GCSTBRT-SC-US-STAT-CODE-X and action
is send and user is authorized for
special manifests"}:::decision N_CreatePortChangeSpecialManifest_Node1_action["Create port change special
manifest, generate message 20, and
spawn GCX101 process with port
change flag"]:::main N_CreatePortChangeSpecialManifest_Node1 -- Yes --> N_CreatePortChangeSpecialManifest_Node1_action N_CreatePortChangeSpecialManifest_Node1_action --> E_CreatePortChangeSpecialManifest N_CreatePortChangeSpecialManifest_Node0 -- No --> N_CreatePortChangeSpecialManifest_Node1 N_CreatePortChangeSpecialManifest_Node1 -- No --> E_CreatePortChangeSpecialManifest
special manifest"}:::decision N_CreatePortChangeSpecialManifest_Node0_action["Generate message 20, set port
change spawn flag, and invoke
special manifest creation process"]:::main N_CreatePortChangeSpecialManifest_Node0 -- Yes --> N_CreatePortChangeSpecialManifest_Node0_action N_CreatePortChangeSpecialManifest_Node0_action --> E_CreatePortChangeSpecialManifest S_CreatePortChangeSpecialManifest --> N_CreatePortChangeSpecialManifest_Node0 N_CreatePortChangeSpecialManifest_Node1{"Cargo location
GCUSRT-M1203-LOCATION-ID1 differs
from train crossing port
GCSTBRT-SC-US-STAT-CODE-X and action
is send and user is authorized for
special manifests"}:::decision N_CreatePortChangeSpecialManifest_Node1_action["Create port change special
manifest, generate message 20, and
spawn GCX101 process with port
change flag"]:::main N_CreatePortChangeSpecialManifest_Node1 -- Yes --> N_CreatePortChangeSpecialManifest_Node1_action N_CreatePortChangeSpecialManifest_Node1_action --> E_CreatePortChangeSpecialManifest N_CreatePortChangeSpecialManifest_Node0 -- No --> N_CreatePortChangeSpecialManifest_Node1 N_CreatePortChangeSpecialManifest_Node1 -- No --> E_CreatePortChangeSpecialManifest
File: GCX003.cbl
GIVEN:
User is authorized and port change is required for TE bond cargo and action is SEND
WHEN:
The system creates a port change special manifest
THEN:
Generate message 20, set port change spawn flag, and invoke special manifest creation process
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has TE bond type and TR was not created for IT and cargo status is not export and cargo is billed as CPRS
WHEN:
- Cargo location (gcusrt-m1203-location-id1) differs from train crossing port (gcstbrt-sc-us-stat-code-x) and action is send
- User is authorized for special manifests
THEN:
Create port change special manifest, generate message 20, and spawn GCX101 process with port change flag
β Consolidated Acceptance Criteria
- The system checks if cargo status equals release status → if status matches release, proceed with TR detour processing, otherwise skip
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TRBondReleaseStatusCheck(["Start Step"])
E_TRBondReleaseStatusCheck(["End Step"])
N_TRBondReleaseStatusCheck_Node0{"The system checks if cargo status
equals release status"}:::decision N_TRBondReleaseStatusCheck_Node0_action["If status matches release, proceed
with TR detour processing, otherwise
skip"]:::main N_TRBondReleaseStatusCheck_Node0 -- Yes --> N_TRBondReleaseStatusCheck_Node0_action N_TRBondReleaseStatusCheck_Node0_action --> E_TRBondReleaseStatusCheck S_TRBondReleaseStatusCheck --> N_TRBondReleaseStatusCheck_Node0 N_TRBondReleaseStatusCheck_Node0 -- No --> E_TRBondReleaseStatusCheck
equals release status"}:::decision N_TRBondReleaseStatusCheck_Node0_action["If status matches release, proceed
with TR detour processing, otherwise
skip"]:::main N_TRBondReleaseStatusCheck_Node0 -- Yes --> N_TRBondReleaseStatusCheck_Node0_action N_TRBondReleaseStatusCheck_Node0_action --> E_TRBondReleaseStatusCheck S_TRBondReleaseStatusCheck --> N_TRBondReleaseStatusCheck_Node0 N_TRBondReleaseStatusCheck_Node0 -- No --> E_TRBondReleaseStatusCheck
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Transit bond cargo is being processed and cargo is not created for IT
WHEN:
The system checks if cargo status equals release status
THEN:
If status matches release, proceed with TR detour processing, otherwise skip
β Consolidated Acceptance Criteria
- The system creates a TR detour special manifest → generate message 23, set detour spawn flag, and invoke special manifest creation process
- The request action is SEND and cargo has release status → the system should generate message 23, create report line, and set detour spawn flag for GCX101 processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateTRDetourSpecialManifest(["Start Step"])
E_CreateTRDetourSpecialManifest(["End Step"])
N_CreateTRDetourSpecialManifest_Node0{"The system creates a TR detour
special manifest"}:::decision N_CreateTRDetourSpecialManifest_Node0_action["Generate message 23, set detour
spawn flag, and invoke special
manifest creation process"]:::main N_CreateTRDetourSpecialManifest_Node0 -- Yes --> N_CreateTRDetourSpecialManifest_Node0_action N_CreateTRDetourSpecialManifest_Node0_action --> E_CreateTRDetourSpecialManifest S_CreateTRDetourSpecialManifest --> N_CreateTRDetourSpecialManifest_Node0 N_CreateTRDetourSpecialManifest_Node1{"The request action is SEND and
cargo has release status"}:::decision N_CreateTRDetourSpecialManifest_Node1_action["The system should generate message
23, create report line, and set
detour spawn flag for GCX101
processing"]:::main N_CreateTRDetourSpecialManifest_Node1 -- Yes --> N_CreateTRDetourSpecialManifest_Node1_action N_CreateTRDetourSpecialManifest_Node1_action --> E_CreateTRDetourSpecialManifest N_CreateTRDetourSpecialManifest_Node0 -- No --> N_CreateTRDetourSpecialManifest_Node1 N_CreateTRDetourSpecialManifest_Node1 -- No --> E_CreateTRDetourSpecialManifest
special manifest"}:::decision N_CreateTRDetourSpecialManifest_Node0_action["Generate message 23, set detour
spawn flag, and invoke special
manifest creation process"]:::main N_CreateTRDetourSpecialManifest_Node0 -- Yes --> N_CreateTRDetourSpecialManifest_Node0_action N_CreateTRDetourSpecialManifest_Node0_action --> E_CreateTRDetourSpecialManifest S_CreateTRDetourSpecialManifest --> N_CreateTRDetourSpecialManifest_Node0 N_CreateTRDetourSpecialManifest_Node1{"The request action is SEND and
cargo has release status"}:::decision N_CreateTRDetourSpecialManifest_Node1_action["The system should generate message
23, create report line, and set
detour spawn flag for GCX101
processing"]:::main N_CreateTRDetourSpecialManifest_Node1 -- Yes --> N_CreateTRDetourSpecialManifest_Node1_action N_CreateTRDetourSpecialManifest_Node1_action --> E_CreateTRDetourSpecialManifest N_CreateTRDetourSpecialManifest_Node0 -- No --> N_CreateTRDetourSpecialManifest_Node1 N_CreateTRDetourSpecialManifest_Node1 -- No --> E_CreateTRDetourSpecialManifest
File: GCX003.cbl
GIVEN:
User is authorized and TR bond release status is valid and action is SEND
WHEN:
The system creates a TR detour special manifest
THEN:
Generate message 23, set detour spawn flag, and invoke special manifest creation process
File: GCX003.cbl
GIVEN:
TR cargo requires detour processing and user is authorized for special manifests
WHEN:
- The request action is send
- Cargo has release status
THEN:
The system should generate message 23, create report line, and set detour spawn flag for GCX101 processing
β Consolidated Acceptance Criteria
- The system checks cargo release status → if status equals release, proceed with border clearance detour, if invalid status generate message 31, otherwise skip
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BorderClearanceReleaseStatusCheck(["Start Step"])
E_BorderClearanceReleaseStatusCheck(["End Step"])
N_BorderClearanceReleaseStatusCheck_Node0{"The system checks cargo release
status"}:::decision N_BorderClearanceReleaseStatusCheck_Node0_action["If status equals release, proceed
with border clearance detour, if
invalid status generate message 31,
otherwise skip"]:::main N_BorderClearanceReleaseStatusCheck_Node0 -- Yes --> N_BorderClearanceReleaseStatusCheck_Node0_action N_BorderClearanceReleaseStatusCheck_Node0_action --> E_BorderClearanceReleaseStatusCheck S_BorderClearanceReleaseStatusCheck --> N_BorderClearanceReleaseStatusCheck_Node0 N_BorderClearanceReleaseStatusCheck_Node0 -- No --> E_BorderClearanceReleaseStatusCheck
status"}:::decision N_BorderClearanceReleaseStatusCheck_Node0_action["If status equals release, proceed
with border clearance detour, if
invalid status generate message 31,
otherwise skip"]:::main N_BorderClearanceReleaseStatusCheck_Node0 -- Yes --> N_BorderClearanceReleaseStatusCheck_Node0_action N_BorderClearanceReleaseStatusCheck_Node0_action --> E_BorderClearanceReleaseStatusCheck S_BorderClearanceReleaseStatusCheck --> N_BorderClearanceReleaseStatusCheck_Node0 N_BorderClearanceReleaseStatusCheck_Node0 -- No --> E_BorderClearanceReleaseStatusCheck
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Border clearance cargo is being processed and cargo is not created for IT
WHEN:
The system checks cargo release status
THEN:
If status equals release, proceed with border clearance detour, if invalid status generate message 31, otherwise skip
β Consolidated Acceptance Criteria
- The system checks if special manifest field is empty → if special manifest is empty, proceed with export detour processing, otherwise skip
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_USMXExportSpecialManifestCheck(["Start Step"])
E_USMXExportSpecialManifestCheck(["End Step"])
N_USMXExportSpecialManifestCheck_Node0{"The system checks if special
manifest field is empty"}:::decision N_USMXExportSpecialManifestCheck_Node0_action["If special manifest is empty,
proceed with export detour
processing, otherwise skip"]:::main N_USMXExportSpecialManifestCheck_Node0 -- Yes --> N_USMXExportSpecialManifestCheck_Node0_action N_USMXExportSpecialManifestCheck_Node0_action --> E_USMXExportSpecialManifestCheck S_USMXExportSpecialManifestCheck --> N_USMXExportSpecialManifestCheck_Node0 N_USMXExportSpecialManifestCheck_Node0 -- No --> E_USMXExportSpecialManifestCheck
manifest field is empty"}:::decision N_USMXExportSpecialManifestCheck_Node0_action["If special manifest is empty,
proceed with export detour
processing, otherwise skip"]:::main N_USMXExportSpecialManifestCheck_Node0 -- Yes --> N_USMXExportSpecialManifestCheck_Node0_action N_USMXExportSpecialManifestCheck_Node0_action --> E_USMXExportSpecialManifestCheck S_USMXExportSpecialManifestCheck --> N_USMXExportSpecialManifestCheck_Node0 N_USMXExportSpecialManifestCheck_Node0 -- No --> E_USMXExportSpecialManifestCheck
File: GCX003.cbl
GIVEN:
US-Mexico export cargo is being processed
WHEN:
The system checks if special manifest field is empty
THEN:
If special manifest is empty, proceed with export detour processing, otherwise skip
β Consolidated Acceptance Criteria
- The system creates a US-Mexico export special manifest → generate message 23, set 88-TR detour spawn flag, and invoke special manifest creation process
- Special manifest flag is spaces (GCUSRT-USMX-SPECIAL-MFST = SPACES) and does not have special 88 flag → create 88 TR detour special manifest, generate message 23, and spawn GCX101 process with 88 TR detour flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateUSMXExportSpecialManifest(["Start Step"])
E_CreateUSMXExportSpecialManifest(["End Step"])
N_CreateUSMXExportSpecialManifest_Node0{"The system creates a US-Mexico
export special manifest"}:::decision N_CreateUSMXExportSpecialManifest_Node0_action["Generate message 23, set 88-TR
detour spawn flag, and invoke
special manifest creation process"]:::main N_CreateUSMXExportSpecialManifest_Node0 -- Yes --> N_CreateUSMXExportSpecialManifest_Node0_action N_CreateUSMXExportSpecialManifest_Node0_action --> E_CreateUSMXExportSpecialManifest S_CreateUSMXExportSpecialManifest --> N_CreateUSMXExportSpecialManifest_Node0 N_CreateUSMXExportSpecialManifest_Node1{"Special manifest flag is spaces
GCUSRT-USMX-SPECIAL-MFST SPACES and
does not have special 88 flag"}:::decision N_CreateUSMXExportSpecialManifest_Node1_action["Create 88 TR detour special
manifest, generate message 23, and
spawn GCX101 process with 88 TR
detour flag"]:::main N_CreateUSMXExportSpecialManifest_Node1 -- Yes --> N_CreateUSMXExportSpecialManifest_Node1_action N_CreateUSMXExportSpecialManifest_Node1_action --> E_CreateUSMXExportSpecialManifest N_CreateUSMXExportSpecialManifest_Node0 -- No --> N_CreateUSMXExportSpecialManifest_Node1 N_CreateUSMXExportSpecialManifest_Node1 -- No --> E_CreateUSMXExportSpecialManifest
export special manifest"}:::decision N_CreateUSMXExportSpecialManifest_Node0_action["Generate message 23, set 88-TR
detour spawn flag, and invoke
special manifest creation process"]:::main N_CreateUSMXExportSpecialManifest_Node0 -- Yes --> N_CreateUSMXExportSpecialManifest_Node0_action N_CreateUSMXExportSpecialManifest_Node0_action --> E_CreateUSMXExportSpecialManifest S_CreateUSMXExportSpecialManifest --> N_CreateUSMXExportSpecialManifest_Node0 N_CreateUSMXExportSpecialManifest_Node1{"Special manifest flag is spaces
GCUSRT-USMX-SPECIAL-MFST SPACES and
does not have special 88 flag"}:::decision N_CreateUSMXExportSpecialManifest_Node1_action["Create 88 TR detour special
manifest, generate message 23, and
spawn GCX101 process with 88 TR
detour flag"]:::main N_CreateUSMXExportSpecialManifest_Node1 -- Yes --> N_CreateUSMXExportSpecialManifest_Node1_action N_CreateUSMXExportSpecialManifest_Node1_action --> E_CreateUSMXExportSpecialManifest N_CreateUSMXExportSpecialManifest_Node0 -- No --> N_CreateUSMXExportSpecialManifest_Node1 N_CreateUSMXExportSpecialManifest_Node1 -- No --> E_CreateUSMXExportSpecialManifest
File: GCX003.cbl
GIVEN:
User is authorized and US-Mexico export requires special manifest and action is SEND
WHEN:
The system creates a US-Mexico export special manifest
THEN:
Generate message 23, set 88-TR detour spawn flag, and invoke special manifest creation process
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is found and has export bond type (88-GCUSRT-M1109-EXPORT is true) and country codes equal 'USMX' and station is not Laredo
WHEN:
Special manifest flag is spaces (GCUSRT-USMX-SPECIAL-MFST = SPACES) and does not have special 88 flag
THEN:
Create 88 TR detour special manifest, generate message 23, and spawn GCX101 process with 88 TR detour flag
β Consolidated Acceptance Criteria
- The cargo is classified as empty equipment (M1109 BOL type) or empty residue → skip detour processing and continue with normal flow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EmptyEquipmentorEmptyResidue(["Start Step"])
E_EmptyEquipmentorEmptyResidue(["End Step"])
N_EmptyEquipmentorEmptyResidue_Node0{"The cargo is classified as empty
equipment M1109 BOL type or empty
residue"}:::decision N_EmptyEquipmentorEmptyResidue_Node0_action["Skip detour processing and continue
with normal flow"]:::main N_EmptyEquipmentorEmptyResidue_Node0 -- Yes --> N_EmptyEquipmentorEmptyResidue_Node0_action N_EmptyEquipmentorEmptyResidue_Node0_action --> E_EmptyEquipmentorEmptyResidue S_EmptyEquipmentorEmptyResidue --> N_EmptyEquipmentorEmptyResidue_Node0 N_EmptyEquipmentorEmptyResidue_Node0 -- No --> E_EmptyEquipmentorEmptyResidue
equipment M1109 BOL type or empty
residue"}:::decision N_EmptyEquipmentorEmptyResidue_Node0_action["Skip detour processing and continue
with normal flow"]:::main N_EmptyEquipmentorEmptyResidue_Node0 -- Yes --> N_EmptyEquipmentorEmptyResidue_Node0_action N_EmptyEquipmentorEmptyResidue_Node0_action --> E_EmptyEquipmentorEmptyResidue S_EmptyEquipmentorEmptyResidue --> N_EmptyEquipmentorEmptyResidue_Node0 N_EmptyEquipmentorEmptyResidue_Node0 -- No --> E_EmptyEquipmentorEmptyResidue
File: GCX003.cbl
GIVEN:
A cargo record exists for the equipment
WHEN:
The cargo is classified as empty equipment (M1109 BOL type) or empty residue
THEN:
- Skip detour processing
- Continue with normal flow
β Consolidated Acceptance Criteria
- The cargo does not have special manifest original flag OR TR created for IT flag is set → trigger TE bond port change processing through detour mechanism
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TriggerTEBondPortChangeProcessing(["Start Step"])
E_TriggerTEBondPortChangeProcessing(["End Step"])
N_TriggerTEBondPortChangeProcessing_Node0{"The cargo does not have special
manifest original flag OR TR created
for IT flag is set"}:::decision N_TriggerTEBondPortChangeProcessing_Node0_action["Trigger TE bond port change
processing through detour mechanism"]:::main N_TriggerTEBondPortChangeProcessing_Node0 -- Yes --> N_TriggerTEBondPortChangeProcessing_Node0_action N_TriggerTEBondPortChangeProcessing_Node0_action --> E_TriggerTEBondPortChangeProcessing S_TriggerTEBondPortChangeProcessing --> N_TriggerTEBondPortChangeProcessing_Node0 N_TriggerTEBondPortChangeProcessing_Node0 -- No --> E_TriggerTEBondPortChangeProcessing
manifest original flag OR TR created
for IT flag is set"}:::decision N_TriggerTEBondPortChangeProcessing_Node0_action["Trigger TE bond port change
processing through detour mechanism"]:::main N_TriggerTEBondPortChangeProcessing_Node0 -- Yes --> N_TriggerTEBondPortChangeProcessing_Node0_action N_TriggerTEBondPortChangeProcessing_Node0_action --> E_TriggerTEBondPortChangeProcessing S_TriggerTEBondPortChangeProcessing --> N_TriggerTEBondPortChangeProcessing_Node0 N_TriggerTEBondPortChangeProcessing_Node0 -- No --> E_TriggerTEBondPortChangeProcessing
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has TE (Transport Export) bond type and cargo is found
WHEN:
The cargo does not have special manifest original flag OR TR created for IT flag is set
THEN:
Trigger TE bond port change processing through detour mechanism
β Consolidated Acceptance Criteria
- TR created for IT flag is spaces (not set) AND cargo status equals release status → trigger TR bond diversion processing through detour mechanism
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TriggerTRBondDiversionProcessing(["Start Step"])
E_TriggerTRBondDiversionProcessing(["End Step"])
N_TriggerTRBondDiversionProcessing_Node0{"TR created for IT flag is spaces
not set AND cargo status equals
release status"}:::decision N_TriggerTRBondDiversionProcessing_Node0_action["Trigger TR bond diversion
processing through detour mechanism"]:::main N_TriggerTRBondDiversionProcessing_Node0 -- Yes --> N_TriggerTRBondDiversionProcessing_Node0_action N_TriggerTRBondDiversionProcessing_Node0_action --> E_TriggerTRBondDiversionProcessing S_TriggerTRBondDiversionProcessing --> N_TriggerTRBondDiversionProcessing_Node0 N_TriggerTRBondDiversionProcessing_Node0 -- No --> E_TriggerTRBondDiversionProcessing
not set AND cargo status equals
release status"}:::decision N_TriggerTRBondDiversionProcessing_Node0_action["Trigger TR bond diversion
processing through detour mechanism"]:::main N_TriggerTRBondDiversionProcessing_Node0 -- Yes --> N_TriggerTRBondDiversionProcessing_Node0_action N_TriggerTRBondDiversionProcessing_Node0_action --> E_TriggerTRBondDiversionProcessing S_TriggerTRBondDiversionProcessing --> N_TriggerTRBondDiversionProcessing_Node0 N_TriggerTRBondDiversionProcessing_Node0 -- No --> E_TriggerTRBondDiversionProcessing
File: GCX003.cbl
GIVEN:
Cargo has US-Canada-US bond type or Default bond type and cargo is found
WHEN:
TR created for IT flag is spaces (not set) AND cargo status equals release status
THEN:
Trigger TR bond diversion processing through detour mechanism
β Consolidated Acceptance Criteria
- Origin-destination country codes equal 'USMX' AND current station is not Laredo TX station → trigger US-Mexico export detour processing through detour mechanism
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TriggerUSMXExportDetourProcessing(["Start Step"])
E_TriggerUSMXExportDetourProcessing(["End Step"])
N_TriggerUSMXExportDetourProcessing_Node0{"Origin-destination country codes
equal USMX AND current station is
not Laredo TX station"}:::decision N_TriggerUSMXExportDetourProcessing_Node0_action["Trigger US-Mexico export detour
processing through detour mechanism"]:::main N_TriggerUSMXExportDetourProcessing_Node0 -- Yes --> N_TriggerUSMXExportDetourProcessing_Node0_action N_TriggerUSMXExportDetourProcessing_Node0_action --> E_TriggerUSMXExportDetourProcessing S_TriggerUSMXExportDetourProcessing --> N_TriggerUSMXExportDetourProcessing_Node0 N_TriggerUSMXExportDetourProcessing_Node0 -- No --> E_TriggerUSMXExportDetourProcessing
equal USMX AND current station is
not Laredo TX station"}:::decision N_TriggerUSMXExportDetourProcessing_Node0_action["Trigger US-Mexico export detour
processing through detour mechanism"]:::main N_TriggerUSMXExportDetourProcessing_Node0 -- Yes --> N_TriggerUSMXExportDetourProcessing_Node0_action N_TriggerUSMXExportDetourProcessing_Node0_action --> E_TriggerUSMXExportDetourProcessing S_TriggerUSMXExportDetourProcessing --> N_TriggerUSMXExportDetourProcessing_Node0 N_TriggerUSMXExportDetourProcessing_Node0 -- No --> E_TriggerUSMXExportDetourProcessing
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has Export bond type and cargo is found
WHEN:
Origin-destination country codes equal 'USMX' AND current station is not Laredo TX station
THEN:
Trigger US-Mexico export detour processing through detour mechanism
β Consolidated Acceptance Criteria
- Origin province state is US AND destination province state is US AND equipment is loaded AND equipment is not a conveying car → trigger original US-US movement detour processing through detour mechanism
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TriggerOriginalUSUSMovementDetourProcessing(["Start Step"])
E_TriggerOriginalUSUSMovementDetourProcessing(["End Step"])
N_TriggerOriginalUSUSMovementDetourProcessing_Node0{"Origin province state is US AND
destination province state is US AND
equipment is loaded AND equipment is
not a conveying car"}:::decision N_TriggerOriginalUSUSMovementDetourProcessing_Node0_action["Trigger original US-US movement
detour processing through detour
mechanism"]:::main N_TriggerOriginalUSUSMovementDetourProcessing_Node0 -- Yes --> N_TriggerOriginalUSUSMovementDetourProcessing_Node0_action N_TriggerOriginalUSUSMovementDetourProcessing_Node0_action --> E_TriggerOriginalUSUSMovementDetourProcessing S_TriggerOriginalUSUSMovementDetourProcessing --> N_TriggerOriginalUSUSMovementDetourProcessing_Node0 N_TriggerOriginalUSUSMovementDetourProcessing_Node0 -- No --> E_TriggerOriginalUSUSMovementDetourProcessing
destination province state is US AND
equipment is loaded AND equipment is
not a conveying car"}:::decision N_TriggerOriginalUSUSMovementDetourProcessing_Node0_action["Trigger original US-US movement
detour processing through detour
mechanism"]:::main N_TriggerOriginalUSUSMovementDetourProcessing_Node0 -- Yes --> N_TriggerOriginalUSUSMovementDetourProcessing_Node0_action N_TriggerOriginalUSUSMovementDetourProcessing_Node0_action --> E_TriggerOriginalUSUSMovementDetourProcessing S_TriggerOriginalUSUSMovementDetourProcessing --> N_TriggerOriginalUSUSMovementDetourProcessing_Node0 N_TriggerOriginalUSUSMovementDetourProcessing_Node0 -- No --> E_TriggerOriginalUSUSMovementDetourProcessing
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
No cargo is found for the equipment
WHEN:
- Origin province state is us
- Destination province state is us
- Equipment is loaded
- Equipment is not a conveying car
THEN:
Trigger original US-US movement detour processing through detour mechanism
β Consolidated Acceptance Criteria
- None of the detour trigger conditions are met (empty cargo, special manifests, bond mismatches, or routing issues) → continue with normal cargo processing without invoking detour procedures
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NoDetourRequired(["Start Step"])
E_NoDetourRequired(["End Step"])
N_NoDetourRequired_Node0{"None of the detour trigger
conditions are met empty cargo,
special manifests, bond mismatches,
or routing issues"}:::decision N_NoDetourRequired_Node0_action["Continue with normal cargo
processing without invoking detour
procedures"]:::main N_NoDetourRequired_Node0 -- Yes --> N_NoDetourRequired_Node0_action N_NoDetourRequired_Node0_action --> E_NoDetourRequired S_NoDetourRequired --> N_NoDetourRequired_Node0 N_NoDetourRequired_Node0 -- No --> E_NoDetourRequired
conditions are met empty cargo,
special manifests, bond mismatches,
or routing issues"}:::decision N_NoDetourRequired_Node0_action["Continue with normal cargo
processing without invoking detour
procedures"]:::main N_NoDetourRequired_Node0 -- Yes --> N_NoDetourRequired_Node0_action N_NoDetourRequired_Node0_action --> E_NoDetourRequired S_NoDetourRequired --> N_NoDetourRequired_Node0 N_NoDetourRequired_Node0 -- No --> E_NoDetourRequired
File: GCX003.cbl
GIVEN:
Cargo and equipment information is available for processing
WHEN:
None of the detour trigger conditions are met (empty cargo, special manifests, bond mismatches, or routing issues)
THEN:
Continue with normal cargo processing without invoking detour procedures
β Consolidated Acceptance Criteria
- The cargo BOL type code indicates empty equipment (M1109 empty equipment condition) → the equipment should be processed as empty equipment cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsEquipmentMarkedasEmpty(["Start Step"])
E_IsEquipmentMarkedasEmpty(["End Step"])
N_IsEquipmentMarkedasEmpty_Node0{"The cargo BOL type code indicates
empty equipment M1109 empty
equipment condition"}:::decision N_IsEquipmentMarkedasEmpty_Node0_action["The equipment should be processed
as empty equipment cargo"]:::main N_IsEquipmentMarkedasEmpty_Node0 -- Yes --> N_IsEquipmentMarkedasEmpty_Node0_action N_IsEquipmentMarkedasEmpty_Node0_action --> E_IsEquipmentMarkedasEmpty S_IsEquipmentMarkedasEmpty --> N_IsEquipmentMarkedasEmpty_Node0 N_IsEquipmentMarkedasEmpty_Node0 -- No --> E_IsEquipmentMarkedasEmpty
empty equipment M1109 empty
equipment condition"}:::decision N_IsEquipmentMarkedasEmpty_Node0_action["The equipment should be processed
as empty equipment cargo"]:::main N_IsEquipmentMarkedasEmpty_Node0 -- Yes --> N_IsEquipmentMarkedasEmpty_Node0_action N_IsEquipmentMarkedasEmpty_Node0_action --> E_IsEquipmentMarkedasEmpty S_IsEquipmentMarkedasEmpty --> N_IsEquipmentMarkedasEmpty_Node0 N_IsEquipmentMarkedasEmpty_Node0 -- No --> E_IsEquipmentMarkedasEmpty
File: GCX003.cbl
GIVEN:
A cargo record exists for the equipment
WHEN:
The cargo BOL type code indicates empty equipment (M1109 empty equipment condition)
THEN:
The equipment should be processed as empty equipment cargo
β Consolidated Acceptance Criteria
- The cargo BOL type code indicates empty residue (M1109 empty residue condition) → the equipment should be processed as empty residue cargo
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckEquipmentLoadIndicator(["Start Step"])
E_CheckEquipmentLoadIndicator(["End Step"])
N_CheckEquipmentLoadIndicator_Node0{"The cargo BOL type code indicates
empty residue M1109 empty residue
condition"}:::decision N_CheckEquipmentLoadIndicator_Node0_action["The equipment should be processed
as empty residue cargo"]:::main N_CheckEquipmentLoadIndicator_Node0 -- Yes --> N_CheckEquipmentLoadIndicator_Node0_action N_CheckEquipmentLoadIndicator_Node0_action --> E_CheckEquipmentLoadIndicator S_CheckEquipmentLoadIndicator --> N_CheckEquipmentLoadIndicator_Node0 N_CheckEquipmentLoadIndicator_Node0 -- No --> E_CheckEquipmentLoadIndicator
empty residue M1109 empty residue
condition"}:::decision N_CheckEquipmentLoadIndicator_Node0_action["The equipment should be processed
as empty residue cargo"]:::main N_CheckEquipmentLoadIndicator_Node0 -- Yes --> N_CheckEquipmentLoadIndicator_Node0_action N_CheckEquipmentLoadIndicator_Node0_action --> E_CheckEquipmentLoadIndicator S_CheckEquipmentLoadIndicator --> N_CheckEquipmentLoadIndicator_Node0 N_CheckEquipmentLoadIndicator_Node0 -- No --> E_CheckEquipmentLoadIndicator
File: GCX003.cbl
GIVEN:
A cargo record exists for the equipment
WHEN:
The cargo BOL type code indicates empty residue (M1109 empty residue condition)
THEN:
The equipment should be processed as empty residue cargo
β Consolidated Acceptance Criteria
- The residue weight is greater than 7000 pounds → the car should be flagged for special residue handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateResidueWeightThreshold(["Start Step"])
E_ValidateResidueWeightThreshold(["End Step"])
N_ValidateResidueWeightThreshold_Node0{"The residue weight is greater than
7000 pounds"}:::decision N_ValidateResidueWeightThreshold_Node0_action["The car should be flagged for
special residue handling"]:::main N_ValidateResidueWeightThreshold_Node0 -- Yes --> N_ValidateResidueWeightThreshold_Node0_action N_ValidateResidueWeightThreshold_Node0_action --> E_ValidateResidueWeightThreshold S_ValidateResidueWeightThreshold --> N_ValidateResidueWeightThreshold_Node0 N_ValidateResidueWeightThreshold_Node0 -- No --> E_ValidateResidueWeightThreshold
7000 pounds"}:::decision N_ValidateResidueWeightThreshold_Node0_action["The car should be flagged for
special residue handling"]:::main N_ValidateResidueWeightThreshold_Node0 -- Yes --> N_ValidateResidueWeightThreshold_Node0_action N_ValidateResidueWeightThreshold_Node0_action --> E_ValidateResidueWeightThreshold S_ValidateResidueWeightThreshold --> N_ValidateResidueWeightThreshold_Node0 N_ValidateResidueWeightThreshold_Node0 -- No --> E_ValidateResidueWeightThreshold
File: GCX003.cbl
GIVEN:
An empty car has residue weight and special handling codes are present
WHEN:
The residue weight is greater than 7000 pounds
THEN:
The car should be flagged for special residue handling
β Consolidated Acceptance Criteria
- The origin-destination country codes equal 'CAMX' or 'MXCA' → empty equipment error message should be skipped and processing should continue
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RouteCAMXorMXCA(["Start Step"])
E_RouteCAMXorMXCA(["End Step"])
N_RouteCAMXorMXCA_Node0{"The origin-destination country
codes equal CAMX or MXCA"}:::decision N_RouteCAMXorMXCA_Node0_action["Empty equipment error message
should be skipped and processing
should continue"]:::main N_RouteCAMXorMXCA_Node0 -- Yes --> N_RouteCAMXorMXCA_Node0_action N_RouteCAMXorMXCA_Node0_action --> E_RouteCAMXorMXCA S_RouteCAMXorMXCA --> N_RouteCAMXorMXCA_Node0 N_RouteCAMXorMXCA_Node0 -- No --> E_RouteCAMXorMXCA
codes equal CAMX or MXCA"}:::decision N_RouteCAMXorMXCA_Node0_action["Empty equipment error message
should be skipped and processing
should continue"]:::main N_RouteCAMXorMXCA_Node0 -- Yes --> N_RouteCAMXorMXCA_Node0_action N_RouteCAMXorMXCA_Node0_action --> E_RouteCAMXorMXCA S_RouteCAMXorMXCA --> N_RouteCAMXorMXCA_Node0 N_RouteCAMXorMXCA_Node0 -- No --> E_RouteCAMXorMXCA
File: GCX003.cbl
GIVEN:
Equipment has empty equipment cargo and origin-destination country codes are available
WHEN:
The origin-destination country codes equal 'CAMX' or 'MXCA'
THEN:
- Empty equipment error message should be skipped
- Processing should continue
β Consolidated Acceptance Criteria
- The cargo is found and marked as empty equipment → error message 27 (empty equipment message) should be generated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateEmptyEquipmentErrorMessage(["Start Step"])
E_GenerateEmptyEquipmentErrorMessage(["End Step"])
N_GenerateEmptyEquipmentErrorMessage_Node0{"The cargo is found and marked as
empty equipment"}:::decision N_GenerateEmptyEquipmentErrorMessage_Node0_action["Error message 27 empty equipment
message should be generated"]:::main N_GenerateEmptyEquipmentErrorMessage_Node0 -- Yes --> N_GenerateEmptyEquipmentErrorMessage_Node0_action N_GenerateEmptyEquipmentErrorMessage_Node0_action --> E_GenerateEmptyEquipmentErrorMessage S_GenerateEmptyEquipmentErrorMessage --> N_GenerateEmptyEquipmentErrorMessage_Node0 N_GenerateEmptyEquipmentErrorMessage_Node0 -- No --> E_GenerateEmptyEquipmentErrorMessage
empty equipment"}:::decision N_GenerateEmptyEquipmentErrorMessage_Node0_action["Error message 27 empty equipment
message should be generated"]:::main N_GenerateEmptyEquipmentErrorMessage_Node0 -- Yes --> N_GenerateEmptyEquipmentErrorMessage_Node0_action N_GenerateEmptyEquipmentErrorMessage_Node0_action --> E_GenerateEmptyEquipmentErrorMessage S_GenerateEmptyEquipmentErrorMessage --> N_GenerateEmptyEquipmentErrorMessage_Node0 N_GenerateEmptyEquipmentErrorMessage_Node0 -- No --> E_GenerateEmptyEquipmentErrorMessage
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Equipment has empty equipment cargo and route is not Canada-Mexico or Mexico-Canada
WHEN:
- The cargo is found
- Marked as empty equipment
THEN:
Error message 27 (empty equipment message) should be generated
β Consolidated Acceptance Criteria
- The equipment type is container and current load indicator is 'L' (loaded) → the load indicator should be changed to 'E' (empty), container loaded count should be decremented by 1, and container empty count should be incremented by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentasEmpty(["Start Step"])
E_SetEquipmentasEmpty(["End Step"])
N_SetEquipmentasEmpty_Node0{"The equipment type is container and
current load indicator is L loaded"}:::decision N_SetEquipmentasEmpty_Node0_action["The load indicator should be
changed to E empty, container loaded
count should be decremented by 1,
and container empty count should be
incremented by 1"]:::main N_SetEquipmentasEmpty_Node0 -- Yes --> N_SetEquipmentasEmpty_Node0_action N_SetEquipmentasEmpty_Node0_action --> E_SetEquipmentasEmpty S_SetEquipmentasEmpty --> N_SetEquipmentasEmpty_Node0 N_SetEquipmentasEmpty_Node0 -- No --> E_SetEquipmentasEmpty
current load indicator is L loaded"}:::decision N_SetEquipmentasEmpty_Node0_action["The load indicator should be
changed to E empty, container loaded
count should be decremented by 1,
and container empty count should be
incremented by 1"]:::main N_SetEquipmentasEmpty_Node0 -- Yes --> N_SetEquipmentasEmpty_Node0_action N_SetEquipmentasEmpty_Node0_action --> E_SetEquipmentasEmpty S_SetEquipmentasEmpty --> N_SetEquipmentasEmpty_Node0 N_SetEquipmentasEmpty_Node0 -- No --> E_SetEquipmentasEmpty
File: GCX003.cbl
GIVEN:
Equipment is determined to be empty (either empty equipment or empty residue)
WHEN:
- The equipment type is container
- Current load indicator is 'l' (loaded)
THEN:
The load indicator should be changed to 'E' (empty), container loaded count should be decremented by 1, and container empty count should be incremented by 1
β Consolidated Acceptance Criteria
- The current load indicator is 'L' (loaded) → the load indicator should be changed to 'E' (empty), car loaded count should be decremented by 1, and car empty count should be incremented by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateLoadEmptyCounters(["Start Step"])
E_UpdateLoadEmptyCounters(["End Step"])
N_UpdateLoadEmptyCounters_Node0{"The current load indicator is L
loaded"}:::decision N_UpdateLoadEmptyCounters_Node0_action["The load indicator should be
changed to E empty, car loaded count
should be decremented by 1, and car
empty count should be incremented by
1"]:::main N_UpdateLoadEmptyCounters_Node0 -- Yes --> N_UpdateLoadEmptyCounters_Node0_action N_UpdateLoadEmptyCounters_Node0_action --> E_UpdateLoadEmptyCounters S_UpdateLoadEmptyCounters --> N_UpdateLoadEmptyCounters_Node0 N_UpdateLoadEmptyCounters_Node0 -- No --> E_UpdateLoadEmptyCounters
loaded"}:::decision N_UpdateLoadEmptyCounters_Node0_action["The load indicator should be
changed to E empty, car loaded count
should be decremented by 1, and car
empty count should be incremented by
1"]:::main N_UpdateLoadEmptyCounters_Node0 -- Yes --> N_UpdateLoadEmptyCounters_Node0_action N_UpdateLoadEmptyCounters_Node0_action --> E_UpdateLoadEmptyCounters S_UpdateLoadEmptyCounters --> N_UpdateLoadEmptyCounters_Node0 N_UpdateLoadEmptyCounters_Node0 -- No --> E_UpdateLoadEmptyCounters
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Equipment is determined to be empty and equipment type is not container
WHEN:
The current load indicator is 'L' (loaded)
THEN:
The load indicator should be changed to 'E' (empty), car loaded count should be decremented by 1, and car empty count should be incremented by 1
β Consolidated Acceptance Criteria
- The cargo type is empty equipment or empty residue → the equipment information field should be set to 'EMPTY' and load/empty indicator should be set to 'E'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatEquipmentInfoField(["Start Step"])
E_FormatEquipmentInfoField(["End Step"])
N_FormatEquipmentInfoField_Node0{"The cargo type is empty equipment
or empty residue"}:::decision N_FormatEquipmentInfoField_Node0_action["The equipment information field
should be set to EMPTY and loadempty
indicator should be set to E"]:::main N_FormatEquipmentInfoField_Node0 -- Yes --> N_FormatEquipmentInfoField_Node0_action N_FormatEquipmentInfoField_Node0_action --> E_FormatEquipmentInfoField S_FormatEquipmentInfoField --> N_FormatEquipmentInfoField_Node0 N_FormatEquipmentInfoField_Node0 -- No --> E_FormatEquipmentInfoField
or empty residue"}:::decision N_FormatEquipmentInfoField_Node0_action["The equipment information field
should be set to EMPTY and loadempty
indicator should be set to E"]:::main N_FormatEquipmentInfoField_Node0 -- Yes --> N_FormatEquipmentInfoField_Node0_action N_FormatEquipmentInfoField_Node0_action --> E_FormatEquipmentInfoField S_FormatEquipmentInfoField --> N_FormatEquipmentInfoField_Node0 N_FormatEquipmentInfoField_Node0 -- No --> E_FormatEquipmentInfoField
File: GCX003.cbl
GIVEN:
Equipment is validated as empty equipment or empty residue
WHEN:
The cargo type is empty equipment or empty residue
THEN:
The equipment information field should be set to 'EMPTY' and load/empty indicator should be set to 'E'
β Consolidated Acceptance Criteria
- The system begins to check for empty residue codes → the ER indicator should be set to 'N' as the default value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeERIndicatortoN(["Start Step"])
E_InitializeERIndicatortoN(["End Step"])
N_InitializeERIndicatortoN_Node0{"The system begins to check for
empty residue codes"}:::decision N_InitializeERIndicatortoN_Node0_action["The ER indicator should be set to N
as the default value"]:::main N_InitializeERIndicatortoN_Node0 -- Yes --> N_InitializeERIndicatortoN_Node0_action N_InitializeERIndicatortoN_Node0_action --> E_InitializeERIndicatortoN S_InitializeERIndicatortoN --> N_InitializeERIndicatortoN_Node0 N_InitializeERIndicatortoN_Node0 -- No --> E_InitializeERIndicatortoN
empty residue codes"}:::decision N_InitializeERIndicatortoN_Node0_action["The ER indicator should be set to N
as the default value"]:::main N_InitializeERIndicatortoN_Node0 -- Yes --> N_InitializeERIndicatortoN_Node0_action N_InitializeERIndicatortoN_Node0_action --> E_InitializeERIndicatortoN S_InitializeERIndicatortoN --> N_InitializeERIndicatortoN_Node0 N_InitializeERIndicatortoN_Node0 -- No --> E_InitializeERIndicatortoN
File: GCX003.cbl
GIVEN:
Special handling code processing is starting
WHEN:
The system begins to check for empty residue codes
THEN:
The ER indicator should be set to 'N' as the default value
β Consolidated Acceptance Criteria
- The equipment load indicator is 'E' for empty AND the residue weight is greater than 0 → the system should proceed with special handling code array processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifEquipmentisEmptyANDResidueWeight0(["Start Step"])
E_CheckifEquipmentisEmptyANDResidueWeight0(["End Step"])
N_CheckifEquipmentisEmptyANDResidueWeight0_Node0{"The equipment load indicator is E
for empty AND the residue weight is
greater than 0"}:::decision N_CheckifEquipmentisEmptyANDResidueWeight0_Node0_action["The system should proceed with
special handling code array
processing"]:::main N_CheckifEquipmentisEmptyANDResidueWeight0_Node0 -- Yes --> N_CheckifEquipmentisEmptyANDResidueWeight0_Node0_action N_CheckifEquipmentisEmptyANDResidueWeight0_Node0_action --> E_CheckifEquipmentisEmptyANDResidueWeight0 S_CheckifEquipmentisEmptyANDResidueWeight0 --> N_CheckifEquipmentisEmptyANDResidueWeight0_Node0 N_CheckifEquipmentisEmptyANDResidueWeight0_Node0 -- No --> E_CheckifEquipmentisEmptyANDResidueWeight0
for empty AND the residue weight is
greater than 0"}:::decision N_CheckifEquipmentisEmptyANDResidueWeight0_Node0_action["The system should proceed with
special handling code array
processing"]:::main N_CheckifEquipmentisEmptyANDResidueWeight0_Node0 -- Yes --> N_CheckifEquipmentisEmptyANDResidueWeight0_Node0_action N_CheckifEquipmentisEmptyANDResidueWeight0_Node0_action --> E_CheckifEquipmentisEmptyANDResidueWeight0 S_CheckifEquipmentisEmptyANDResidueWeight0 --> N_CheckifEquipmentisEmptyANDResidueWeight0_Node0 N_CheckifEquipmentisEmptyANDResidueWeight0_Node0 -- No --> E_CheckifEquipmentisEmptyANDResidueWeight0
File: GCX003.cbl
GIVEN:
Equipment has load/empty status and residue weight information
WHEN:
- The equipment load indicator is 'e' for empty
- The residue weight is greater than 0
THEN:
The system should proceed with special handling code array processing
β Consolidated Acceptance Criteria
- The system starts processing the special handling codes array → the system should initialize array processing from position 1 and set loop control variables
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StartLoopThroughSpecialHandlingCodesArray(["Start Step"])
E_StartLoopThroughSpecialHandlingCodesArray(["End Step"])
N_StartLoopThroughSpecialHandlingCodesArray_Node0{"The system starts processing the
special handling codes array"}:::decision N_StartLoopThroughSpecialHandlingCodesArray_Node0_action["The system should initialize array
processing from position 1 and set
loop control variables"]:::main N_StartLoopThroughSpecialHandlingCodesArray_Node0 -- Yes --> N_StartLoopThroughSpecialHandlingCodesArray_Node0_action N_StartLoopThroughSpecialHandlingCodesArray_Node0_action --> E_StartLoopThroughSpecialHandlingCodesArray S_StartLoopThroughSpecialHandlingCodesArray --> N_StartLoopThroughSpecialHandlingCodesArray_Node0 N_StartLoopThroughSpecialHandlingCodesArray_Node0 -- No --> E_StartLoopThroughSpecialHandlingCodesArray
special handling codes array"}:::decision N_StartLoopThroughSpecialHandlingCodesArray_Node0_action["The system should initialize array
processing from position 1 and set
loop control variables"]:::main N_StartLoopThroughSpecialHandlingCodesArray_Node0 -- Yes --> N_StartLoopThroughSpecialHandlingCodesArray_Node0_action N_StartLoopThroughSpecialHandlingCodesArray_Node0_action --> E_StartLoopThroughSpecialHandlingCodesArray S_StartLoopThroughSpecialHandlingCodesArray --> N_StartLoopThroughSpecialHandlingCodesArray_Node0 N_StartLoopThroughSpecialHandlingCodesArray_Node0 -- No --> E_StartLoopThroughSpecialHandlingCodesArray
File: GCX003.cbl
GIVEN:
Equipment qualifies for special handling code processing with empty status and residue weight
WHEN:
The system starts processing the special handling codes array
THEN:
- The system should initialize array processing from position 1
- Set loop control variables
β Consolidated Acceptance Criteria
- The current array position is less than or equal to 7 AND ER found flag is not set to true → the system should continue processing the next code in the array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreCodesinArrayANDERNotFound(["Start Step"])
E_MoreCodesinArrayANDERNotFound(["End Step"])
N_MoreCodesinArrayANDERNotFound_Node0{"The current array position is less
than or equal to 7 AND ER found flag
is not set to true"}:::decision N_MoreCodesinArrayANDERNotFound_Node0_action["The system should continue
processing the next code in the
array"]:::main N_MoreCodesinArrayANDERNotFound_Node0 -- Yes --> N_MoreCodesinArrayANDERNotFound_Node0_action N_MoreCodesinArrayANDERNotFound_Node0_action --> E_MoreCodesinArrayANDERNotFound S_MoreCodesinArrayANDERNotFound --> N_MoreCodesinArrayANDERNotFound_Node0 N_MoreCodesinArrayANDERNotFound_Node0 -- No --> E_MoreCodesinArrayANDERNotFound
than or equal to 7 AND ER found flag
is not set to true"}:::decision N_MoreCodesinArrayANDERNotFound_Node0_action["The system should continue
processing the next code in the
array"]:::main N_MoreCodesinArrayANDERNotFound_Node0 -- Yes --> N_MoreCodesinArrayANDERNotFound_Node0_action N_MoreCodesinArrayANDERNotFound_Node0_action --> E_MoreCodesinArrayANDERNotFound S_MoreCodesinArrayANDERNotFound --> N_MoreCodesinArrayANDERNotFound_Node0 N_MoreCodesinArrayANDERNotFound_Node0 -- No --> E_MoreCodesinArrayANDERNotFound
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Special handling codes array processing is in progress
WHEN:
- The current array position is less than or equal to 7
- Er found flag is not set to true
THEN:
The system should continue processing the next code in the array
β Consolidated Acceptance Criteria
- The system needs to examine the next special handling code → the system should retrieve the special handling code from the current array position
- The system processes each special handling code in the array up to position 8 and finds a code matching the ER threshold code → the system sets the empty residue found flag to true and continues processing remaining codes in the array
- The system begins processing special handling codes → the system sets empty residue indicator to 'N' and initializes array position counter SUB1 to 1
- The system processes array positions and the current position SUB1 reaches or exceeds 8 → the system stops processing and exits the special handling code loop
- The system completes processing the current code regardless of whether it matches ER threshold code → the system increments the array position counter SUB1 by 1 to move to the next code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetNextSpecialHandlingCodefromArrayPosition(["Start Step"])
E_GetNextSpecialHandlingCodefromArrayPosition(["End Step"])
N_GetNextSpecialHandlingCodefromArrayPosition_Node0{"The system needs to examine the
next special handling code"}:::decision N_GetNextSpecialHandlingCodefromArrayPosition_Node0_action["The system should retrieve the
special handling code from the
current array position"]:::main N_GetNextSpecialHandlingCodefromArrayPosition_Node0 -- Yes --> N_GetNextSpecialHandlingCodefromArrayPosition_Node0_action N_GetNextSpecialHandlingCodefromArrayPosition_Node0_action --> E_GetNextSpecialHandlingCodefromArrayPosition S_GetNextSpecialHandlingCodefromArrayPosition --> N_GetNextSpecialHandlingCodefromArrayPosition_Node0 N_GetNextSpecialHandlingCodefromArrayPosition_Node1{"The system processes each special
handling code in the array up to
position 8 and finds a code matching
the ER threshold code"}:::decision N_GetNextSpecialHandlingCodefromArrayPosition_Node1_action["The system sets the empty residue
found flag to true and continues
processing remaining codes in the
array"]:::main N_GetNextSpecialHandlingCodefromArrayPosition_Node1 -- Yes --> N_GetNextSpecialHandlingCodefromArrayPosition_Node1_action N_GetNextSpecialHandlingCodefromArrayPosition_Node1_action --> E_GetNextSpecialHandlingCodefromArrayPosition N_GetNextSpecialHandlingCodefromArrayPosition_Node0 -- No --> N_GetNextSpecialHandlingCodefromArrayPosition_Node1 N_GetNextSpecialHandlingCodefromArrayPosition_Node2{"The system begins processing
special handling codes"}:::decision N_GetNextSpecialHandlingCodefromArrayPosition_Node2_action["The system sets empty residue
indicator to N and initializes array
position counter SUB1 to 1"]:::main N_GetNextSpecialHandlingCodefromArrayPosition_Node2 -- Yes --> N_GetNextSpecialHandlingCodefromArrayPosition_Node2_action N_GetNextSpecialHandlingCodefromArrayPosition_Node2_action --> E_GetNextSpecialHandlingCodefromArrayPosition N_GetNextSpecialHandlingCodefromArrayPosition_Node1 -- No --> N_GetNextSpecialHandlingCodefromArrayPosition_Node2 N_GetNextSpecialHandlingCodefromArrayPosition_Node3{"The system processes array
positions and the current position
SUB1 reaches or exceeds 8"}:::decision N_GetNextSpecialHandlingCodefromArrayPosition_Node3_action["The system stops processing and
exits the special handling code loop"]:::main N_GetNextSpecialHandlingCodefromArrayPosition_Node3 -- Yes --> N_GetNextSpecialHandlingCodefromArrayPosition_Node3_action N_GetNextSpecialHandlingCodefromArrayPosition_Node3_action --> E_GetNextSpecialHandlingCodefromArrayPosition N_GetNextSpecialHandlingCodefromArrayPosition_Node2 -- No --> N_GetNextSpecialHandlingCodefromArrayPosition_Node3 N_GetNextSpecialHandlingCodefromArrayPosition_Node4{"The system completes processing the
current code regardless of whether
it matches ER threshold code"}:::decision N_GetNextSpecialHandlingCodefromArrayPosition_Node4_action["The system increments the array
position counter SUB1 by 1 to move
to the next code"]:::main N_GetNextSpecialHandlingCodefromArrayPosition_Node4 -- Yes --> N_GetNextSpecialHandlingCodefromArrayPosition_Node4_action N_GetNextSpecialHandlingCodefromArrayPosition_Node4_action --> E_GetNextSpecialHandlingCodefromArrayPosition N_GetNextSpecialHandlingCodefromArrayPosition_Node3 -- No --> N_GetNextSpecialHandlingCodefromArrayPosition_Node4 N_GetNextSpecialHandlingCodefromArrayPosition_Node4 -- No --> E_GetNextSpecialHandlingCodefromArrayPosition
next special handling code"}:::decision N_GetNextSpecialHandlingCodefromArrayPosition_Node0_action["The system should retrieve the
special handling code from the
current array position"]:::main N_GetNextSpecialHandlingCodefromArrayPosition_Node0 -- Yes --> N_GetNextSpecialHandlingCodefromArrayPosition_Node0_action N_GetNextSpecialHandlingCodefromArrayPosition_Node0_action --> E_GetNextSpecialHandlingCodefromArrayPosition S_GetNextSpecialHandlingCodefromArrayPosition --> N_GetNextSpecialHandlingCodefromArrayPosition_Node0 N_GetNextSpecialHandlingCodefromArrayPosition_Node1{"The system processes each special
handling code in the array up to
position 8 and finds a code matching
the ER threshold code"}:::decision N_GetNextSpecialHandlingCodefromArrayPosition_Node1_action["The system sets the empty residue
found flag to true and continues
processing remaining codes in the
array"]:::main N_GetNextSpecialHandlingCodefromArrayPosition_Node1 -- Yes --> N_GetNextSpecialHandlingCodefromArrayPosition_Node1_action N_GetNextSpecialHandlingCodefromArrayPosition_Node1_action --> E_GetNextSpecialHandlingCodefromArrayPosition N_GetNextSpecialHandlingCodefromArrayPosition_Node0 -- No --> N_GetNextSpecialHandlingCodefromArrayPosition_Node1 N_GetNextSpecialHandlingCodefromArrayPosition_Node2{"The system begins processing
special handling codes"}:::decision N_GetNextSpecialHandlingCodefromArrayPosition_Node2_action["The system sets empty residue
indicator to N and initializes array
position counter SUB1 to 1"]:::main N_GetNextSpecialHandlingCodefromArrayPosition_Node2 -- Yes --> N_GetNextSpecialHandlingCodefromArrayPosition_Node2_action N_GetNextSpecialHandlingCodefromArrayPosition_Node2_action --> E_GetNextSpecialHandlingCodefromArrayPosition N_GetNextSpecialHandlingCodefromArrayPosition_Node1 -- No --> N_GetNextSpecialHandlingCodefromArrayPosition_Node2 N_GetNextSpecialHandlingCodefromArrayPosition_Node3{"The system processes array
positions and the current position
SUB1 reaches or exceeds 8"}:::decision N_GetNextSpecialHandlingCodefromArrayPosition_Node3_action["The system stops processing and
exits the special handling code loop"]:::main N_GetNextSpecialHandlingCodefromArrayPosition_Node3 -- Yes --> N_GetNextSpecialHandlingCodefromArrayPosition_Node3_action N_GetNextSpecialHandlingCodefromArrayPosition_Node3_action --> E_GetNextSpecialHandlingCodefromArrayPosition N_GetNextSpecialHandlingCodefromArrayPosition_Node2 -- No --> N_GetNextSpecialHandlingCodefromArrayPosition_Node3 N_GetNextSpecialHandlingCodefromArrayPosition_Node4{"The system completes processing the
current code regardless of whether
it matches ER threshold code"}:::decision N_GetNextSpecialHandlingCodefromArrayPosition_Node4_action["The system increments the array
position counter SUB1 by 1 to move
to the next code"]:::main N_GetNextSpecialHandlingCodefromArrayPosition_Node4 -- Yes --> N_GetNextSpecialHandlingCodefromArrayPosition_Node4_action N_GetNextSpecialHandlingCodefromArrayPosition_Node4_action --> E_GetNextSpecialHandlingCodefromArrayPosition N_GetNextSpecialHandlingCodefromArrayPosition_Node3 -- No --> N_GetNextSpecialHandlingCodefromArrayPosition_Node4 N_GetNextSpecialHandlingCodefromArrayPosition_Node4 -- No --> E_GetNextSpecialHandlingCodefromArrayPosition
File: GCX003.cbl
GIVEN:
Array iteration is continuing and current position is valid
WHEN:
The system needs to examine the next special handling code
THEN:
The system should retrieve the special handling code from the current array position
File: GCX003.cbl
GIVEN:
A shipment has commodity data with special handling codes array and residue weight is greater than 0 and equipment is marked as empty
WHEN:
- The system processes each special handling code in the array up to position 8
- Finds a code matching the er threshold code
THEN:
- The system sets the empty residue found flag to true
- Continues processing remaining codes in the array
File: GCX003.cbl
GIVEN:
A shipment requires special handling code processing for empty residue detection
WHEN:
The system begins processing special handling codes
THEN:
The system sets empty residue indicator to 'N' and initializes array position counter SUB1 to 1
File: GCX003.cbl
GIVEN:
Special handling codes are being processed from an array with maximum 8 positions
WHEN:
- The system processes array positions
- The current position sub1 reaches or exceeds 8
THEN:
- The system stops processing
- Exits the special handling code loop
File: GCX003.cbl
GIVEN:
A special handling code has been processed at the current array position
WHEN:
The system completes processing the current code regardless of whether it matches ER threshold code
THEN:
The system increments the array position counter SUB1 by 1 to move to the next code
β Consolidated Acceptance Criteria
- The special handling code equals 'ER' → the system should identify this as an empty residue threshold code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCodeERThresholdCode(["Start Step"])
E_IsCodeERThresholdCode(["End Step"])
N_IsCodeERThresholdCode_Node0{"The special handling code equals ER"}:::decision
N_IsCodeERThresholdCode_Node0_action["The system should identify this as
an empty residue threshold code"]:::main N_IsCodeERThresholdCode_Node0 -- Yes --> N_IsCodeERThresholdCode_Node0_action N_IsCodeERThresholdCode_Node0_action --> E_IsCodeERThresholdCode S_IsCodeERThresholdCode --> N_IsCodeERThresholdCode_Node0 N_IsCodeERThresholdCode_Node0 -- No --> E_IsCodeERThresholdCode
an empty residue threshold code"]:::main N_IsCodeERThresholdCode_Node0 -- Yes --> N_IsCodeERThresholdCode_Node0_action N_IsCodeERThresholdCode_Node0_action --> E_IsCodeERThresholdCode S_IsCodeERThresholdCode --> N_IsCodeERThresholdCode_Node0 N_IsCodeERThresholdCode_Node0 -- No --> E_IsCodeERThresholdCode
File: GCX003.cbl
GIVEN:
A special handling code has been retrieved from the array
WHEN:
The special handling code equals 'ER'
THEN:
The system should identify this as an empty residue threshold code
β Consolidated Acceptance Criteria
- The empty residue threshold code is detected → the system should set the ER found flag to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetERFoundFlagtoTRUE(["Start Step"])
E_SetERFoundFlagtoTRUE(["End Step"])
N_SetERFoundFlagtoTRUE_Node0{"The empty residue threshold code is
detected"}:::decision N_SetERFoundFlagtoTRUE_Node0_action["The system should set the ER found
flag to true"]:::main N_SetERFoundFlagtoTRUE_Node0 -- Yes --> N_SetERFoundFlagtoTRUE_Node0_action N_SetERFoundFlagtoTRUE_Node0_action --> E_SetERFoundFlagtoTRUE S_SetERFoundFlagtoTRUE --> N_SetERFoundFlagtoTRUE_Node0 N_SetERFoundFlagtoTRUE_Node0 -- No --> E_SetERFoundFlagtoTRUE
detected"}:::decision N_SetERFoundFlagtoTRUE_Node0_action["The system should set the ER found
flag to true"]:::main N_SetERFoundFlagtoTRUE_Node0 -- Yes --> N_SetERFoundFlagtoTRUE_Node0_action N_SetERFoundFlagtoTRUE_Node0_action --> E_SetERFoundFlagtoTRUE S_SetERFoundFlagtoTRUE --> N_SetERFoundFlagtoTRUE_Node0 N_SetERFoundFlagtoTRUE_Node0 -- No --> E_SetERFoundFlagtoTRUE
File: GCX003.cbl
GIVEN:
The current special handling code equals 'ER'
WHEN:
The empty residue threshold code is detected
THEN:
The system should set the ER found flag to true
β Consolidated Acceptance Criteria
- The system needs to move to the next array position → the array position counter should be incremented by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementArrayPositionCounter(["Start Step"])
E_IncrementArrayPositionCounter(["End Step"])
N_IncrementArrayPositionCounter_Node0{"The system needs to move to the
next array position"}:::decision N_IncrementArrayPositionCounter_Node0_action["The array position counter should
be incremented by 1"]:::main N_IncrementArrayPositionCounter_Node0 -- Yes --> N_IncrementArrayPositionCounter_Node0_action N_IncrementArrayPositionCounter_Node0_action --> E_IncrementArrayPositionCounter S_IncrementArrayPositionCounter --> N_IncrementArrayPositionCounter_Node0 N_IncrementArrayPositionCounter_Node0 -- No --> E_IncrementArrayPositionCounter
next array position"}:::decision N_IncrementArrayPositionCounter_Node0_action["The array position counter should
be incremented by 1"]:::main N_IncrementArrayPositionCounter_Node0 -- Yes --> N_IncrementArrayPositionCounter_Node0_action N_IncrementArrayPositionCounter_Node0_action --> E_IncrementArrayPositionCounter S_IncrementArrayPositionCounter --> N_IncrementArrayPositionCounter_Node0 N_IncrementArrayPositionCounter_Node0 -- No --> E_IncrementArrayPositionCounter
File: GCX003.cbl
GIVEN:
Current special handling code has been processed
WHEN:
The system needs to move to the next array position
THEN:
The array position counter should be incremented by 1
β Consolidated Acceptance Criteria
- The ER found flag is evaluated → the system should determine the appropriate processing path based on whether ER was found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ERFound(["Start Step"])
E_ERFound(["End Step"])
N_ERFound_Node0{"The ER found flag is evaluated"}:::decision
N_ERFound_Node0_action["The system should determine the
appropriate processing path based on
whether ER was found"]:::main N_ERFound_Node0 -- Yes --> N_ERFound_Node0_action N_ERFound_Node0_action --> E_ERFound S_ERFound --> N_ERFound_Node0 N_ERFound_Node0 -- No --> E_ERFound
appropriate processing path based on
whether ER was found"]:::main N_ERFound_Node0 -- Yes --> N_ERFound_Node0_action N_ERFound_Node0_action --> E_ERFound S_ERFound --> N_ERFound_Node0 N_ERFound_Node0 -- No --> E_ERFound
File: GCX003.cbl
GIVEN:
Special handling codes array processing has completed
WHEN:
The ER found flag is evaluated
THEN:
The system should determine the appropriate processing path based on whether ER was found
β Consolidated Acceptance Criteria
- The ER found flag is true → the system should set the ER indicator to 'Y'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetERIndicatortoY(["Start Step"])
E_SetERIndicatortoY(["End Step"])
N_SetERIndicatortoY_Node0{"The ER found flag is true"}:::decision
N_SetERIndicatortoY_Node0_action["The system should set the ER
indicator to Y"]:::main N_SetERIndicatortoY_Node0 -- Yes --> N_SetERIndicatortoY_Node0_action N_SetERIndicatortoY_Node0_action --> E_SetERIndicatortoY S_SetERIndicatortoY --> N_SetERIndicatortoY_Node0 N_SetERIndicatortoY_Node0 -- No --> E_SetERIndicatortoY
indicator to Y"]:::main N_SetERIndicatortoY_Node0 -- Yes --> N_SetERIndicatortoY_Node0_action N_SetERIndicatortoY_Node0_action --> E_SetERIndicatortoY S_SetERIndicatortoY --> N_SetERIndicatortoY_Node0 N_SetERIndicatortoY_Node0 -- No --> E_SetERIndicatortoY
File: GCX003.cbl
GIVEN:
Empty residue threshold code 'ER' was found in the special handling codes array
WHEN:
The ER found flag is true
THEN:
The system should set the ER indicator to 'Y'
β Consolidated Acceptance Criteria
- The empty residue weight threshold value is less than or equal to 7 → the system should classify this as low-level empty residue threshold
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ERWeightThreshold7(["Start Step"])
E_ERWeightThreshold7(["End Step"])
N_ERWeightThreshold7_Node0{"The empty residue weight threshold
value is less than or equal to 7"}:::decision N_ERWeightThreshold7_Node0_action["The system should classify this as
low-level empty residue threshold"]:::main N_ERWeightThreshold7_Node0 -- Yes --> N_ERWeightThreshold7_Node0_action N_ERWeightThreshold7_Node0_action --> E_ERWeightThreshold7 S_ERWeightThreshold7 --> N_ERWeightThreshold7_Node0 N_ERWeightThreshold7_Node0 -- No --> E_ERWeightThreshold7
value is less than or equal to 7"}:::decision N_ERWeightThreshold7_Node0_action["The system should classify this as
low-level empty residue threshold"]:::main N_ERWeightThreshold7_Node0 -- Yes --> N_ERWeightThreshold7_Node0_action N_ERWeightThreshold7_Node0_action --> E_ERWeightThreshold7 S_ERWeightThreshold7 --> N_ERWeightThreshold7_Node0 N_ERWeightThreshold7_Node0 -- No --> E_ERWeightThreshold7
File: GCX003.cbl
GIVEN:
Empty residue processing is active
WHEN:
The empty residue weight threshold value is less than or equal to 7
THEN:
The system should classify this as low-level empty residue threshold
β Consolidated Acceptance Criteria
- The threshold level needs to be classified → the system should set the ER weight threshold LE7 flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetERWeightThresholdLE7Flag(["Start Step"])
E_SetERWeightThresholdLE7Flag(["End Step"])
N_SetERWeightThresholdLE7Flag_Node0{"The threshold level needs to be
classified"}:::decision N_SetERWeightThresholdLE7Flag_Node0_action["The system should set the ER weight
threshold LE7 flag"]:::main N_SetERWeightThresholdLE7Flag_Node0 -- Yes --> N_SetERWeightThresholdLE7Flag_Node0_action N_SetERWeightThresholdLE7Flag_Node0_action --> E_SetERWeightThresholdLE7Flag S_SetERWeightThresholdLE7Flag --> N_SetERWeightThresholdLE7Flag_Node0 N_SetERWeightThresholdLE7Flag_Node0 -- No --> E_SetERWeightThresholdLE7Flag
classified"}:::decision N_SetERWeightThresholdLE7Flag_Node0_action["The system should set the ER weight
threshold LE7 flag"]:::main N_SetERWeightThresholdLE7Flag_Node0 -- Yes --> N_SetERWeightThresholdLE7Flag_Node0_action N_SetERWeightThresholdLE7Flag_Node0_action --> E_SetERWeightThresholdLE7Flag S_SetERWeightThresholdLE7Flag --> N_SetERWeightThresholdLE7Flag_Node0 N_SetERWeightThresholdLE7Flag_Node0 -- No --> E_SetERWeightThresholdLE7Flag
File: GCX003.cbl
GIVEN:
Empty residue weight threshold is 7 or below
WHEN:
The threshold level needs to be classified
THEN:
The system should set the ER weight threshold LE7 flag
β Consolidated Acceptance Criteria
- The empty residue weight threshold value is greater than 7 → the system should classify this as high-level empty residue threshold
- The residue weight is greater than 7 units → set ER weight threshold greater than 7 flag for subsequent error message generation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ERWeightThreshold7(["Start Step"])
E_ERWeightThreshold7(["End Step"])
N_ERWeightThreshold7_Node0{"The empty residue weight threshold
value is greater than 7"}:::decision N_ERWeightThreshold7_Node0_action["The system should classify this as
high-level empty residue threshold"]:::main N_ERWeightThreshold7_Node0 -- Yes --> N_ERWeightThreshold7_Node0_action N_ERWeightThreshold7_Node0_action --> E_ERWeightThreshold7 S_ERWeightThreshold7 --> N_ERWeightThreshold7_Node0 N_ERWeightThreshold7_Node1{"The residue weight is greater than
7 units"}:::decision N_ERWeightThreshold7_Node1_action["Set ER weight threshold greater
than 7 flag for subsequent error
message generation"]:::main N_ERWeightThreshold7_Node1 -- Yes --> N_ERWeightThreshold7_Node1_action N_ERWeightThreshold7_Node1_action --> E_ERWeightThreshold7 N_ERWeightThreshold7_Node0 -- No --> N_ERWeightThreshold7_Node1 N_ERWeightThreshold7_Node1 -- No --> E_ERWeightThreshold7
value is greater than 7"}:::decision N_ERWeightThreshold7_Node0_action["The system should classify this as
high-level empty residue threshold"]:::main N_ERWeightThreshold7_Node0 -- Yes --> N_ERWeightThreshold7_Node0_action N_ERWeightThreshold7_Node0_action --> E_ERWeightThreshold7 S_ERWeightThreshold7 --> N_ERWeightThreshold7_Node0 N_ERWeightThreshold7_Node1{"The residue weight is greater than
7 units"}:::decision N_ERWeightThreshold7_Node1_action["Set ER weight threshold greater
than 7 flag for subsequent error
message generation"]:::main N_ERWeightThreshold7_Node1 -- Yes --> N_ERWeightThreshold7_Node1_action N_ERWeightThreshold7_Node1_action --> E_ERWeightThreshold7 N_ERWeightThreshold7_Node0 -- No --> N_ERWeightThreshold7_Node1 N_ERWeightThreshold7_Node1 -- No --> E_ERWeightThreshold7
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Empty residue processing is active and threshold is not LE7
WHEN:
The empty residue weight threshold value is greater than 7
THEN:
The system should classify this as high-level empty residue threshold
File: GCX003.cbl
GIVEN:
Equipment is empty with residue weight AND ER threshold code is found in special handling codes
WHEN:
The residue weight is greater than 7 units
THEN:
Set ER weight threshold greater than 7 flag for subsequent error message generation
β Consolidated Acceptance Criteria
- The threshold level needs to be classified as high-level → the system should set the ER weight threshold GT7 flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetERWeightThresholdGT7Flag(["Start Step"])
E_SetERWeightThresholdGT7Flag(["End Step"])
N_SetERWeightThresholdGT7Flag_Node0{"The threshold level needs to be
classified as high-level"}:::decision N_SetERWeightThresholdGT7Flag_Node0_action["The system should set the ER weight
threshold GT7 flag"]:::main N_SetERWeightThresholdGT7Flag_Node0 -- Yes --> N_SetERWeightThresholdGT7Flag_Node0_action N_SetERWeightThresholdGT7Flag_Node0_action --> E_SetERWeightThresholdGT7Flag S_SetERWeightThresholdGT7Flag --> N_SetERWeightThresholdGT7Flag_Node0 N_SetERWeightThresholdGT7Flag_Node0 -- No --> E_SetERWeightThresholdGT7Flag
classified as high-level"}:::decision N_SetERWeightThresholdGT7Flag_Node0_action["The system should set the ER weight
threshold GT7 flag"]:::main N_SetERWeightThresholdGT7Flag_Node0 -- Yes --> N_SetERWeightThresholdGT7Flag_Node0_action N_SetERWeightThresholdGT7Flag_Node0_action --> E_SetERWeightThresholdGT7Flag S_SetERWeightThresholdGT7Flag --> N_SetERWeightThresholdGT7Flag_Node0 N_SetERWeightThresholdGT7Flag_Node0 -- No --> E_SetERWeightThresholdGT7Flag
File: GCX003.cbl
GIVEN:
Empty residue weight threshold is above 7
WHEN:
The threshold level needs to be classified as high-level
THEN:
The system should set the ER weight threshold GT7 flag
β Consolidated Acceptance Criteria
- The system compares the cargo location ID with the station code → if the cargo location ID does not match the station code, proceed to release status check; otherwise, end detour processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PortChangeRequired(["Start Step"])
E_PortChangeRequired(["End Step"])
N_PortChangeRequired_Node0{"The system compares the cargo
location ID with the station code"}:::decision N_PortChangeRequired_Node0_action["If the cargo location ID does not
match the station code, proceed to
release status check otherwise, end
detour processing"]:::main N_PortChangeRequired_Node0 -- Yes --> N_PortChangeRequired_Node0_action N_PortChangeRequired_Node0_action --> E_PortChangeRequired S_PortChangeRequired --> N_PortChangeRequired_Node0 N_PortChangeRequired_Node0 -- No --> E_PortChangeRequired
location ID with the station code"}:::decision N_PortChangeRequired_Node0_action["If the cargo location ID does not
match the station code, proceed to
release status check otherwise, end
detour processing"]:::main N_PortChangeRequired_Node0 -- Yes --> N_PortChangeRequired_Node0_action N_PortChangeRequired_Node0_action --> E_PortChangeRequired S_PortChangeRequired --> N_PortChangeRequired_Node0 N_PortChangeRequired_Node0 -- No --> E_PortChangeRequired
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
TE bond cargo is being processed and cargo is not created for IT and cargo status is not export and cargo is billable as CPRS
WHEN:
The system compares the cargo location ID with the station code
THEN:
If the cargo location ID does not match the station code, proceed to release status check; otherwise, end detour processing
β Consolidated Acceptance Criteria
- The system checks the cargo release status → if cargo status is not export status and meets release criteria, proceed to user authorization check; otherwise, continue with standard processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReleaseStatusCheck(["Start Step"])
E_ReleaseStatusCheck(["End Step"])
N_ReleaseStatusCheck_Node0{"The system checks the cargo release
status"}:::decision N_ReleaseStatusCheck_Node0_action["If cargo status is not export
status and meets release criteria,
proceed to user authorization check
otherwise, continue with standard
processing"]:::main N_ReleaseStatusCheck_Node0 -- Yes --> N_ReleaseStatusCheck_Node0_action N_ReleaseStatusCheck_Node0_action --> E_ReleaseStatusCheck S_ReleaseStatusCheck --> N_ReleaseStatusCheck_Node0 N_ReleaseStatusCheck_Node0 -- No --> E_ReleaseStatusCheck
status"}:::decision N_ReleaseStatusCheck_Node0_action["If cargo status is not export
status and meets release criteria,
proceed to user authorization check
otherwise, continue with standard
processing"]:::main N_ReleaseStatusCheck_Node0 -- Yes --> N_ReleaseStatusCheck_Node0_action N_ReleaseStatusCheck_Node0_action --> E_ReleaseStatusCheck S_ReleaseStatusCheck --> N_ReleaseStatusCheck_Node0 N_ReleaseStatusCheck_Node0 -- No --> E_ReleaseStatusCheck
File: GCX003.cbl
GIVEN:
Cargo requires detour processing and port change conditions are met
WHEN:
The system checks the cargo release status
THEN:
- If cargo status is not export status
- Meets release criteria, proceed to user authorization check; otherwise, continue with standard processing
β Consolidated Acceptance Criteria
- The system validates user authorization for special manifests → if user is authorized for special manifests, proceed to request action type check; if user is not authorized, generate authorization error message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UserAuthorizationCheck(["Start Step"])
E_UserAuthorizationCheck(["End Step"])
N_UserAuthorizationCheck_Node0{"The system validates user
authorization for special manifests"}:::decision N_UserAuthorizationCheck_Node0_action["If user is authorized for special
manifests, proceed to request action
type check if user is not
authorized, generate authorization
error message"]:::main N_UserAuthorizationCheck_Node0 -- Yes --> N_UserAuthorizationCheck_Node0_action N_UserAuthorizationCheck_Node0_action --> E_UserAuthorizationCheck S_UserAuthorizationCheck --> N_UserAuthorizationCheck_Node0 N_UserAuthorizationCheck_Node0 -- No --> E_UserAuthorizationCheck
authorization for special manifests"}:::decision N_UserAuthorizationCheck_Node0_action["If user is authorized for special
manifests, proceed to request action
type check if user is not
authorized, generate authorization
error message"]:::main N_UserAuthorizationCheck_Node0 -- Yes --> N_UserAuthorizationCheck_Node0_action N_UserAuthorizationCheck_Node0_action --> E_UserAuthorizationCheck S_UserAuthorizationCheck --> N_UserAuthorizationCheck_Node0 N_UserAuthorizationCheck_Node0 -- No --> E_UserAuthorizationCheck
File: GCX003.cbl
GIVEN:
Detour processing requires special manifest creation
WHEN:
The system validates user authorization for special manifests
THEN:
If user is authorized for special manifests, proceed to request action type check; if user is not authorized, generate authorization error message
β Consolidated Acceptance Criteria
- The system creates a special manifest spawn → set appropriate manifest type flags and generate corresponding manifest based on detour classification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateSpecialManifestSpawn(["Start Step"])
E_CreateSpecialManifestSpawn(["End Step"])
N_CreateSpecialManifestSpawn_Node0{"The system creates a special
manifest spawn"}:::decision N_CreateSpecialManifestSpawn_Node0_action["Set appropriate manifest type flags
and generate corresponding manifest
based on detour classification"]:::main N_CreateSpecialManifestSpawn_Node0 -- Yes --> N_CreateSpecialManifestSpawn_Node0_action N_CreateSpecialManifestSpawn_Node0_action --> E_CreateSpecialManifestSpawn S_CreateSpecialManifestSpawn --> N_CreateSpecialManifestSpawn_Node0 N_CreateSpecialManifestSpawn_Node0 -- No --> E_CreateSpecialManifestSpawn
manifest spawn"}:::decision N_CreateSpecialManifestSpawn_Node0_action["Set appropriate manifest type flags
and generate corresponding manifest
based on detour classification"]:::main N_CreateSpecialManifestSpawn_Node0 -- Yes --> N_CreateSpecialManifestSpawn_Node0_action N_CreateSpecialManifestSpawn_Node0_action --> E_CreateSpecialManifestSpawn S_CreateSpecialManifestSpawn --> N_CreateSpecialManifestSpawn_Node0 N_CreateSpecialManifestSpawn_Node0 -- No --> E_CreateSpecialManifestSpawn
File: GCX003.cbl
GIVEN:
Request action is SEND and user is authorized
WHEN:
The system creates a special manifest spawn
THEN:
- Set appropriate manifest type flags
- Generate corresponding manifest based on detour classification
β Consolidated Acceptance Criteria
- The system processes the detour requirement → generate appropriate warning message indicating the detour condition without creating special manifest
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateWarningMessage(["Start Step"])
E_CreateWarningMessage(["End Step"])
N_CreateWarningMessage_Node0{"The system processes the detour
requirement"}:::decision N_CreateWarningMessage_Node0_action["Generate appropriate warning
message indicating the detour
condition without creating special
manifest"]:::main N_CreateWarningMessage_Node0 -- Yes --> N_CreateWarningMessage_Node0_action N_CreateWarningMessage_Node0_action --> E_CreateWarningMessage S_CreateWarningMessage --> N_CreateWarningMessage_Node0 N_CreateWarningMessage_Node0 -- No --> E_CreateWarningMessage
requirement"}:::decision N_CreateWarningMessage_Node0_action["Generate appropriate warning
message indicating the detour
condition without creating special
manifest"]:::main N_CreateWarningMessage_Node0 -- Yes --> N_CreateWarningMessage_Node0_action N_CreateWarningMessage_Node0_action --> E_CreateWarningMessage S_CreateWarningMessage --> N_CreateWarningMessage_Node0 N_CreateWarningMessage_Node0 -- No --> E_CreateWarningMessage
File: GCX003.cbl
GIVEN:
Request action is REPORT or user lacks special manifest authorization
WHEN:
The system processes the detour requirement
THEN:
Generate appropriate warning message indicating the detour condition without creating special manifest
β Consolidated Acceptance Criteria
- The system generates a port change manifest → create GCX101 spawn with port change flag set and include cargo details for manifest processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GeneratePortChangeManifest(["Start Step"])
E_GeneratePortChangeManifest(["End Step"])
N_GeneratePortChangeManifest_Node0{"The system generates a port change
manifest"}:::decision N_GeneratePortChangeManifest_Node0_action["Create GCX101 spawn with port
change flag set and include cargo
details for manifest processing"]:::main N_GeneratePortChangeManifest_Node0 -- Yes --> N_GeneratePortChangeManifest_Node0_action N_GeneratePortChangeManifest_Node0_action --> E_GeneratePortChangeManifest S_GeneratePortChangeManifest --> N_GeneratePortChangeManifest_Node0 N_GeneratePortChangeManifest_Node0 -- No --> E_GeneratePortChangeManifest
manifest"}:::decision N_GeneratePortChangeManifest_Node0_action["Create GCX101 spawn with port
change flag set and include cargo
details for manifest processing"]:::main N_GeneratePortChangeManifest_Node0 -- Yes --> N_GeneratePortChangeManifest_Node0_action N_GeneratePortChangeManifest_Node0_action --> E_GeneratePortChangeManifest S_GeneratePortChangeManifest --> N_GeneratePortChangeManifest_Node0 N_GeneratePortChangeManifest_Node0 -- No --> E_GeneratePortChangeManifest
File: GCX003.cbl
GIVEN:
TE bond cargo requires port change and user is authorized
WHEN:
The system generates a port change manifest
THEN:
- Create gcx101 spawn with port change flag set
- Include cargo details for manifest processing
β Consolidated Acceptance Criteria
- The system generates a TR bond detour manifest → create GCX101 spawn with detour flag set and include cargo and equipment details for manifest processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateTRBondDetourManifest(["Start Step"])
E_GenerateTRBondDetourManifest(["End Step"])
N_GenerateTRBondDetourManifest_Node0{"The system generates a TR bond
detour manifest"}:::decision N_GenerateTRBondDetourManifest_Node0_action["Create GCX101 spawn with detour
flag set and include cargo and
equipment details for manifest
processing"]:::main N_GenerateTRBondDetourManifest_Node0 -- Yes --> N_GenerateTRBondDetourManifest_Node0_action N_GenerateTRBondDetourManifest_Node0_action --> E_GenerateTRBondDetourManifest S_GenerateTRBondDetourManifest --> N_GenerateTRBondDetourManifest_Node0 N_GenerateTRBondDetourManifest_Node0 -- No --> E_GenerateTRBondDetourManifest
detour manifest"}:::decision N_GenerateTRBondDetourManifest_Node0_action["Create GCX101 spawn with detour
flag set and include cargo and
equipment details for manifest
processing"]:::main N_GenerateTRBondDetourManifest_Node0 -- Yes --> N_GenerateTRBondDetourManifest_Node0_action N_GenerateTRBondDetourManifest_Node0_action --> E_GenerateTRBondDetourManifest S_GenerateTRBondDetourManifest --> N_GenerateTRBondDetourManifest_Node0 N_GenerateTRBondDetourManifest_Node0 -- No --> E_GenerateTRBondDetourManifest
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
TR bond cargo is not created for IT and has release status
WHEN:
The system generates a TR bond detour manifest
THEN:
- Create gcx101 spawn with detour flag set
- Include cargo
- Equipment details for manifest processing
β Consolidated Acceptance Criteria
- The system generates a border clearance manifest → create GCX101 spawn with detour flag set for border clearance processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateBorderClearanceManifest(["Start Step"])
E_GenerateBorderClearanceManifest(["End Step"])
N_GenerateBorderClearanceManifest_Node0{"The system generates a border
clearance manifest"}:::decision N_GenerateBorderClearanceManifest_Node0_action["Create GCX101 spawn with detour
flag set for border clearance
processing"]:::main N_GenerateBorderClearanceManifest_Node0 -- Yes --> N_GenerateBorderClearanceManifest_Node0_action N_GenerateBorderClearanceManifest_Node0_action --> E_GenerateBorderClearanceManifest S_GenerateBorderClearanceManifest --> N_GenerateBorderClearanceManifest_Node0 N_GenerateBorderClearanceManifest_Node0 -- No --> E_GenerateBorderClearanceManifest
clearance manifest"}:::decision N_GenerateBorderClearanceManifest_Node0_action["Create GCX101 spawn with detour
flag set for border clearance
processing"]:::main N_GenerateBorderClearanceManifest_Node0 -- Yes --> N_GenerateBorderClearanceManifest_Node0_action N_GenerateBorderClearanceManifest_Node0_action --> E_GenerateBorderClearanceManifest S_GenerateBorderClearanceManifest --> N_GenerateBorderClearanceManifest_Node0 N_GenerateBorderClearanceManifest_Node0 -- No --> E_GenerateBorderClearanceManifest
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Default bond cargo is not created for IT and has release status
WHEN:
The system generates a border clearance manifest
THEN:
Create GCX101 spawn with detour flag set for border clearance processing
β Consolidated Acceptance Criteria
- The system generates a US-MX export manifest → create GCX101 spawn with export TR flag set for special manifest processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateUSMXExportManifest(["Start Step"])
E_GenerateUSMXExportManifest(["End Step"])
N_GenerateUSMXExportManifest_Node0{"The system generates a US-MX export
manifest"}:::decision N_GenerateUSMXExportManifest_Node0_action["Create GCX101 spawn with export TR
flag set for special manifest
processing"]:::main N_GenerateUSMXExportManifest_Node0 -- Yes --> N_GenerateUSMXExportManifest_Node0_action N_GenerateUSMXExportManifest_Node0_action --> E_GenerateUSMXExportManifest S_GenerateUSMXExportManifest --> N_GenerateUSMXExportManifest_Node0 N_GenerateUSMXExportManifest_Node0 -- No --> E_GenerateUSMXExportManifest
manifest"}:::decision N_GenerateUSMXExportManifest_Node0_action["Create GCX101 spawn with export TR
flag set for special manifest
processing"]:::main N_GenerateUSMXExportManifest_Node0 -- Yes --> N_GenerateUSMXExportManifest_Node0_action N_GenerateUSMXExportManifest_Node0_action --> E_GenerateUSMXExportManifest S_GenerateUSMXExportManifest --> N_GenerateUSMXExportManifest_Node0 N_GenerateUSMXExportManifest_Node0 -- No --> E_GenerateUSMXExportManifest
File: GCX003.cbl
GIVEN:
Export cargo with US-MX country codes at non-Laredo station and special manifest field is empty
WHEN:
The system generates a US-MX export manifest
THEN:
Create GCX101 spawn with export TR flag set for special manifest processing
β Consolidated Acceptance Criteria
- The system generates a US-US movement detour manifest → create GCX101 spawn with US-US detour flag set and include waybill details for manifest processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateUSUSDetourManifest(["Start Step"])
E_GenerateUSUSDetourManifest(["End Step"])
N_GenerateUSUSDetourManifest_Node0{"The system generates a US-US
movement detour manifest"}:::decision N_GenerateUSUSDetourManifest_Node0_action["Create GCX101 spawn with US-US
detour flag set and include waybill
details for manifest processing"]:::main N_GenerateUSUSDetourManifest_Node0 -- Yes --> N_GenerateUSUSDetourManifest_Node0_action N_GenerateUSUSDetourManifest_Node0_action --> E_GenerateUSUSDetourManifest S_GenerateUSUSDetourManifest --> N_GenerateUSUSDetourManifest_Node0 N_GenerateUSUSDetourManifest_Node0 -- No --> E_GenerateUSUSDetourManifest
movement detour manifest"}:::decision N_GenerateUSUSDetourManifest_Node0_action["Create GCX101 spawn with US-US
detour flag set and include waybill
details for manifest processing"]:::main N_GenerateUSUSDetourManifest_Node0 -- Yes --> N_GenerateUSUSDetourManifest_Node0_action N_GenerateUSUSDetourManifest_Node0_action --> E_GenerateUSUSDetourManifest S_GenerateUSUSDetourManifest --> N_GenerateUSUSDetourManifest_Node0 N_GenerateUSUSDetourManifest_Node0 -- No --> E_GenerateUSUSDetourManifest
File: GCX003.cbl
GIVEN:
Waybill is found but no cargo exists and origin and destination are both US states
WHEN:
The system generates a US-US movement detour manifest
THEN:
- Create gcx101 spawn with us-us detour flag set
- Include waybill details for manifest processing
β Consolidated Acceptance Criteria
- The system checks the cargo's in-bond type code → if the cargo is not TE (Transport Export) bond type, skip port change processing and exit
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsTEBondCargo(["Start Step"])
E_IsTEBondCargo(["End Step"])
N_IsTEBondCargo_Node0{"The system checks the cargo s
in-bond type code"}:::decision N_IsTEBondCargo_Node0_action["If the cargo is not TE Transport
Export bond type, skip port change
processing and exit"]:::main N_IsTEBondCargo_Node0 -- Yes --> N_IsTEBondCargo_Node0_action N_IsTEBondCargo_Node0_action --> E_IsTEBondCargo S_IsTEBondCargo --> N_IsTEBondCargo_Node0 N_IsTEBondCargo_Node0 -- No --> E_IsTEBondCargo
in-bond type code"}:::decision N_IsTEBondCargo_Node0_action["If the cargo is not TE Transport
Export bond type, skip port change
processing and exit"]:::main N_IsTEBondCargo_Node0 -- Yes --> N_IsTEBondCargo_Node0_action N_IsTEBondCargo_Node0_action --> E_IsTEBondCargo S_IsTEBondCargo --> N_IsTEBondCargo_Node0 N_IsTEBondCargo_Node0 -- No --> E_IsTEBondCargo
File: GCX003.cbl
GIVEN:
A cargo record is being processed for port change validation
WHEN:
The system checks the cargo's in-bond type code
THEN:
- If the cargo is not te (transport export) bond type, skip port change processing
- Exit
β Consolidated Acceptance Criteria
- The system checks the cargo's short description status → if the cargo status equals export status, skip port change processing and exit
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CargoStatusExport(["Start Step"])
E_CargoStatusExport(["End Step"])
N_CargoStatusExport_Node0{"The system checks the cargo s short
description status"}:::decision N_CargoStatusExport_Node0_action["If the cargo status equals export
status, skip port change processing
and exit"]:::main N_CargoStatusExport_Node0 -- Yes --> N_CargoStatusExport_Node0_action N_CargoStatusExport_Node0_action --> E_CargoStatusExport S_CargoStatusExport --> N_CargoStatusExport_Node0 N_CargoStatusExport_Node0 -- No --> E_CargoStatusExport
description status"}:::decision N_CargoStatusExport_Node0_action["If the cargo status equals export
status, skip port change processing
and exit"]:::main N_CargoStatusExport_Node0 -- Yes --> N_CargoStatusExport_Node0_action N_CargoStatusExport_Node0_action --> E_CargoStatusExport S_CargoStatusExport --> N_CargoStatusExport_Node0 N_CargoStatusExport_Node0 -- No --> E_CargoStatusExport
File: GCX003.cbl
GIVEN:
A TE bond cargo with no TR created for IT is being processed
WHEN:
The system checks the cargo's short description status
THEN:
- If the cargo status equals export status, skip port change processing
- Exit
β Consolidated Acceptance Criteria
- The system checks if the cargo is billed as CPRS → if the cargo is not billed as CPRS, skip port change processing and exit
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCPRSBill(["Start Step"])
E_IsCPRSBill(["End Step"])
N_IsCPRSBill_Node0{"The system checks if the cargo is
billed as CPRS"}:::decision N_IsCPRSBill_Node0_action["If the cargo is not billed as CPRS,
skip port change processing and exit"]:::main N_IsCPRSBill_Node0 -- Yes --> N_IsCPRSBill_Node0_action N_IsCPRSBill_Node0_action --> E_IsCPRSBill S_IsCPRSBill --> N_IsCPRSBill_Node0 N_IsCPRSBill_Node0 -- No --> E_IsCPRSBill
billed as CPRS"}:::decision N_IsCPRSBill_Node0_action["If the cargo is not billed as CPRS,
skip port change processing and exit"]:::main N_IsCPRSBill_Node0 -- Yes --> N_IsCPRSBill_Node0_action N_IsCPRSBill_Node0_action --> E_IsCPRSBill S_IsCPRSBill --> N_IsCPRSBill_Node0 N_IsCPRSBill_Node0 -- No --> E_IsCPRSBill
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A TE bond cargo that is not in export status and has no TR created for IT
WHEN:
The system checks if the cargo is billed as CPRS
THEN:
- If the cargo is not billed as cprs, skip port change processing
- Exit
β Consolidated Acceptance Criteria
- The system compares the cargo's location ID1 with the current station crossing port code → if the locations match, skip port change processing and exit; if they differ, proceed with port change handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LocationID1CurrentPort(["Start Step"])
E_LocationID1CurrentPort(["End Step"])
N_LocationID1CurrentPort_Node0{"The system compares the cargo s
location ID1 with the current
station crossing port code"}:::decision N_LocationID1CurrentPort_Node0_action["If the locations match, skip port
change processing and exit if they
differ, proceed with port change
handling"]:::main N_LocationID1CurrentPort_Node0 -- Yes --> N_LocationID1CurrentPort_Node0_action N_LocationID1CurrentPort_Node0_action --> E_LocationID1CurrentPort S_LocationID1CurrentPort --> N_LocationID1CurrentPort_Node0 N_LocationID1CurrentPort_Node0 -- No --> E_LocationID1CurrentPort
location ID1 with the current
station crossing port code"}:::decision N_LocationID1CurrentPort_Node0_action["If the locations match, skip port
change processing and exit if they
differ, proceed with port change
handling"]:::main N_LocationID1CurrentPort_Node0 -- Yes --> N_LocationID1CurrentPort_Node0_action N_LocationID1CurrentPort_Node0_action --> E_LocationID1CurrentPort S_LocationID1CurrentPort --> N_LocationID1CurrentPort_Node0 N_LocationID1CurrentPort_Node0 -- No --> E_LocationID1CurrentPort
File: GCX003.cbl
GIVEN:
A TE bond cargo that is CPRS billed and meets all previous validation criteria
WHEN:
The system compares the cargo's location ID1 with the current station crossing port code
THEN:
- If the locations match, skip port change processing
- Exit; if they differ, proceed with port change handling
β Consolidated Acceptance Criteria
- The request action is set to REPORT → generate message nineteen with the current station crossing port code and add the report line to output
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GeneratePortChangeWarningMessage(["Start Step"])
E_GeneratePortChangeWarningMessage(["End Step"])
N_GeneratePortChangeWarningMessage_Node0{"The request action is set to REPORT"}:::decision
N_GeneratePortChangeWarningMessage_Node0_action["Generate message nineteen with the
current station crossing port code
and add the report line to output"]:::main N_GeneratePortChangeWarningMessage_Node0 -- Yes --> N_GeneratePortChangeWarningMessage_Node0_action N_GeneratePortChangeWarningMessage_Node0_action --> E_GeneratePortChangeWarningMessage S_GeneratePortChangeWarningMessage --> N_GeneratePortChangeWarningMessage_Node0 N_GeneratePortChangeWarningMessage_Node0 -- No --> E_GeneratePortChangeWarningMessage
current station crossing port code
and add the report line to output"]:::main N_GeneratePortChangeWarningMessage_Node0 -- Yes --> N_GeneratePortChangeWarningMessage_Node0_action N_GeneratePortChangeWarningMessage_Node0_action --> E_GeneratePortChangeWarningMessage S_GeneratePortChangeWarningMessage --> N_GeneratePortChangeWarningMessage_Node0 N_GeneratePortChangeWarningMessage_Node0 -- No --> E_GeneratePortChangeWarningMessage
File: GCX003.cbl
GIVEN:
A port location mismatch is detected for TE bond cargo
WHEN:
The request action is set to REPORT
THEN:
- Generate message nineteen with the current station crossing port code
- Add the report line to output
β Consolidated Acceptance Criteria
- All validation criteria are met for port change processing → generate message twenty, add the report line to output, and prepare for special manifest creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GeneratePortChangeProcessingMessage(["Start Step"])
E_GeneratePortChangeProcessingMessage(["End Step"])
N_GeneratePortChangeProcessingMessage_Node0{"All validation criteria are met for
port change processing"}:::decision N_GeneratePortChangeProcessingMessage_Node0_action["Generate message twenty, add the
report line to output, and prepare
for special manifest creation"]:::main N_GeneratePortChangeProcessingMessage_Node0 -- Yes --> N_GeneratePortChangeProcessingMessage_Node0_action N_GeneratePortChangeProcessingMessage_Node0_action --> E_GeneratePortChangeProcessingMessage S_GeneratePortChangeProcessingMessage --> N_GeneratePortChangeProcessingMessage_Node0 N_GeneratePortChangeProcessingMessage_Node0 -- No --> E_GeneratePortChangeProcessingMessage
port change processing"}:::decision N_GeneratePortChangeProcessingMessage_Node0_action["Generate message twenty, add the
report line to output, and prepare
for special manifest creation"]:::main N_GeneratePortChangeProcessingMessage_Node0 -- Yes --> N_GeneratePortChangeProcessingMessage_Node0_action N_GeneratePortChangeProcessingMessage_Node0_action --> E_GeneratePortChangeProcessingMessage S_GeneratePortChangeProcessingMessage --> N_GeneratePortChangeProcessingMessage_Node0 N_GeneratePortChangeProcessingMessage_Node0 -- No --> E_GeneratePortChangeProcessingMessage
File: GCX003.cbl
GIVEN:
An authorized user is processing a port change with send action
WHEN:
All validation criteria are met for port change processing
THEN:
Generate message twenty, add the report line to output, and prepare for special manifest creation
β Consolidated Acceptance Criteria
- The system needs to create a special manifest for the port change → call the special manifest creation procedure to handle the port change scenario
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateSpecialManifestforPortChange(["Start Step"])
E_CreateSpecialManifestforPortChange(["End Step"])
N_CreateSpecialManifestforPortChange_Node0{"The system needs to create a
special manifest for the port change"}:::decision N_CreateSpecialManifestforPortChange_Node0_action["Call the special manifest creation
procedure to handle the port change
scenario"]:::main N_CreateSpecialManifestforPortChange_Node0 -- Yes --> N_CreateSpecialManifestforPortChange_Node0_action N_CreateSpecialManifestforPortChange_Node0_action --> E_CreateSpecialManifestforPortChange S_CreateSpecialManifestforPortChange --> N_CreateSpecialManifestforPortChange_Node0 N_CreateSpecialManifestforPortChange_Node0 -- No --> E_CreateSpecialManifestforPortChange
special manifest for the port change"}:::decision N_CreateSpecialManifestforPortChange_Node0_action["Call the special manifest creation
procedure to handle the port change
scenario"]:::main N_CreateSpecialManifestforPortChange_Node0 -- Yes --> N_CreateSpecialManifestforPortChange_Node0_action N_CreateSpecialManifestforPortChange_Node0_action --> E_CreateSpecialManifestforPortChange S_CreateSpecialManifestforPortChange --> N_CreateSpecialManifestforPortChange_Node0 N_CreateSpecialManifestforPortChange_Node0 -- No --> E_CreateSpecialManifestforPortChange
File: GCX003.cbl
GIVEN:
The port change spawn flag has been set to true
WHEN:
The system needs to create a special manifest for the port change
THEN:
Call the special manifest creation procedure to handle the port change scenario
β Consolidated Acceptance Criteria
- The system checks the TR created for IT flag → if the TR created for IT flag is blank (spaces), continue with TR bond detour processing, otherwise skip processing as TR already exists
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TRCreatedforITFlagSpaces(["Start Step"])
E_TRCreatedforITFlagSpaces(["End Step"])
N_TRCreatedforITFlagSpaces_Node0{"The system checks the TR created
for IT flag"}:::decision N_TRCreatedforITFlagSpaces_Node0_action["If the TR created for IT flag is
blank spaces, continue with TR bond
detour processing, otherwise skip
processing as TR already exists"]:::main N_TRCreatedforITFlagSpaces_Node0 -- Yes --> N_TRCreatedforITFlagSpaces_Node0_action N_TRCreatedforITFlagSpaces_Node0_action --> E_TRCreatedforITFlagSpaces S_TRCreatedforITFlagSpaces --> N_TRCreatedforITFlagSpaces_Node0 N_TRCreatedforITFlagSpaces_Node0 -- No --> E_TRCreatedforITFlagSpaces
for IT flag"}:::decision N_TRCreatedforITFlagSpaces_Node0_action["If the TR created for IT flag is
blank spaces, continue with TR bond
detour processing, otherwise skip
processing as TR already exists"]:::main N_TRCreatedforITFlagSpaces_Node0 -- Yes --> N_TRCreatedforITFlagSpaces_Node0_action N_TRCreatedforITFlagSpaces_Node0_action --> E_TRCreatedforITFlagSpaces S_TRCreatedforITFlagSpaces --> N_TRCreatedforITFlagSpaces_Node0 N_TRCreatedforITFlagSpaces_Node0 -- No --> E_TRCreatedforITFlagSpaces
File: GCX003.cbl
GIVEN:
Cargo with TR bond type is being evaluated for detour processing
WHEN:
The system checks the TR created for IT flag
THEN:
If the TR created for IT flag is blank (spaces), continue with TR bond detour processing, otherwise skip processing as TR already exists
β Consolidated Acceptance Criteria
- The system processes the TR bond detour for reporting → generate warning message 18 indicating TR bond detour detected and add report line to output
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateWarningMessage18(["Start Step"])
E_GenerateWarningMessage18(["End Step"])
N_GenerateWarningMessage18_Node0{"The system processes the TR bond
detour for reporting"}:::decision N_GenerateWarningMessage18_Node0_action["Generate warning message 18
indicating TR bond detour detected
and add report line to output"]:::main N_GenerateWarningMessage18_Node0 -- Yes --> N_GenerateWarningMessage18_Node0_action N_GenerateWarningMessage18_Node0_action --> E_GenerateWarningMessage18 S_GenerateWarningMessage18 --> N_GenerateWarningMessage18_Node0 N_GenerateWarningMessage18_Node0 -- No --> E_GenerateWarningMessage18
detour for reporting"}:::decision N_GenerateWarningMessage18_Node0_action["Generate warning message 18
indicating TR bond detour detected
and add report line to output"]:::main N_GenerateWarningMessage18_Node0 -- Yes --> N_GenerateWarningMessage18_Node0_action N_GenerateWarningMessage18_Node0_action --> E_GenerateWarningMessage18 S_GenerateWarningMessage18 --> N_GenerateWarningMessage18_Node0 N_GenerateWarningMessage18_Node0 -- No --> E_GenerateWarningMessage18
File: GCX003.cbl
GIVEN:
Request action is REPORT and TR bond detour conditions are met
WHEN:
The system processes the TR bond detour for reporting
THEN:
- Generate warning message 18 indicating tr bond detour detected
- Add report line to output
β Consolidated Acceptance Criteria
- The system attempts to create a special manifest → generate error message 43 for user not authorized for special manifests and add to report output
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateErrorMessage43(["Start Step"])
E_GenerateErrorMessage43(["End Step"])
N_GenerateErrorMessage43_Node0{"The system attempts to create a
special manifest"}:::decision N_GenerateErrorMessage43_Node0_action["Generate error message 43 for user
not authorized for special manifests
and add to report output"]:::main N_GenerateErrorMessage43_Node0 -- Yes --> N_GenerateErrorMessage43_Node0_action N_GenerateErrorMessage43_Node0_action --> E_GenerateErrorMessage43 S_GenerateErrorMessage43 --> N_GenerateErrorMessage43_Node0 N_GenerateErrorMessage43_Node0 -- No --> E_GenerateErrorMessage43
special manifest"}:::decision N_GenerateErrorMessage43_Node0_action["Generate error message 43 for user
not authorized for special manifests
and add to report output"]:::main N_GenerateErrorMessage43_Node0 -- Yes --> N_GenerateErrorMessage43_Node0_action N_GenerateErrorMessage43_Node0_action --> E_GenerateErrorMessage43 S_GenerateErrorMessage43 --> N_GenerateErrorMessage43_Node0 N_GenerateErrorMessage43_Node0 -- No --> E_GenerateErrorMessage43
File: GCX003.cbl
GIVEN:
A SEND request requires special manifest creation but user lacks authorization
WHEN:
The system attempts to create a special manifest
THEN:
- Generate error message 43 for user not authorized for special manifests
- Add to report output
β Consolidated Acceptance Criteria
- The system creates a TR bond special manifest → generate information message 23 indicating TR bond special manifest created, set detour spawn flag, and add report line to output
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateInformationMessage23(["Start Step"])
E_GenerateInformationMessage23(["End Step"])
N_GenerateInformationMessage23_Node0{"The system creates a TR bond
special manifest"}:::decision N_GenerateInformationMessage23_Node0_action["Generate information message 23
indicating TR bond special manifest
created, set detour spawn flag, and
add report line to output"]:::main N_GenerateInformationMessage23_Node0 -- Yes --> N_GenerateInformationMessage23_Node0_action N_GenerateInformationMessage23_Node0_action --> E_GenerateInformationMessage23 S_GenerateInformationMessage23 --> N_GenerateInformationMessage23_Node0 N_GenerateInformationMessage23_Node0 -- No --> E_GenerateInformationMessage23
special manifest"}:::decision N_GenerateInformationMessage23_Node0_action["Generate information message 23
indicating TR bond special manifest
created, set detour spawn flag, and
add report line to output"]:::main N_GenerateInformationMessage23_Node0 -- Yes --> N_GenerateInformationMessage23_Node0_action N_GenerateInformationMessage23_Node0_action --> E_GenerateInformationMessage23 S_GenerateInformationMessage23 --> N_GenerateInformationMessage23_Node0 N_GenerateInformationMessage23_Node0 -- No --> E_GenerateInformationMessage23
File: GCX003.cbl
GIVEN:
User is authorized for special manifests and SEND action is requested
WHEN:
The system creates a TR bond special manifest
THEN:
Generate information message 23 indicating TR bond special manifest created, set detour spawn flag, and add report line to output
β Consolidated Acceptance Criteria
- The system creates the special manifest entry → call special manifest creation procedure to generate appropriate manifest entry for the TR bond detour scenario
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateSpecialManifestEntry(["Start Step"])
E_CreateSpecialManifestEntry(["End Step"])
N_CreateSpecialManifestEntry_Node0{"The system creates the special
manifest entry"}:::decision N_CreateSpecialManifestEntry_Node0_action["Call special manifest creation
procedure to generate appropriate
manifest entry for the TR bond
detour scenario"]:::main N_CreateSpecialManifestEntry_Node0 -- Yes --> N_CreateSpecialManifestEntry_Node0_action N_CreateSpecialManifestEntry_Node0_action --> E_CreateSpecialManifestEntry S_CreateSpecialManifestEntry --> N_CreateSpecialManifestEntry_Node0 N_CreateSpecialManifestEntry_Node0 -- No --> E_CreateSpecialManifestEntry
manifest entry"}:::decision N_CreateSpecialManifestEntry_Node0_action["Call special manifest creation
procedure to generate appropriate
manifest entry for the TR bond
detour scenario"]:::main N_CreateSpecialManifestEntry_Node0 -- Yes --> N_CreateSpecialManifestEntry_Node0_action N_CreateSpecialManifestEntry_Node0_action --> E_CreateSpecialManifestEntry S_CreateSpecialManifestEntry --> N_CreateSpecialManifestEntry_Node0 N_CreateSpecialManifestEntry_Node0 -- No --> E_CreateSpecialManifestEntry
File: GCX003.cbl
GIVEN:
Detour spawn flag is set for TR bond processing
WHEN:
The system creates the special manifest entry
THEN:
Call special manifest creation procedure to generate appropriate manifest entry for the TR bond detour scenario
β Consolidated Acceptance Criteria
- The system checks the TR created for IT field → processing continues only if TR created for IT field is empty (SPACES)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifTRCreatedforITSPACES(["Start Step"])
E_CheckifTRCreatedforITSPACES(["End Step"])
N_CheckifTRCreatedforITSPACES_Node0{"The system checks the TR created
for IT field"}:::decision N_CheckifTRCreatedforITSPACES_Node0_action["Processing continues only if TR
created for IT field is empty SPACES"]:::main N_CheckifTRCreatedforITSPACES_Node0 -- Yes --> N_CheckifTRCreatedforITSPACES_Node0_action N_CheckifTRCreatedforITSPACES_Node0_action --> E_CheckifTRCreatedforITSPACES S_CheckifTRCreatedforITSPACES --> N_CheckifTRCreatedforITSPACES_Node0 N_CheckifTRCreatedforITSPACES_Node0 -- No --> E_CheckifTRCreatedforITSPACES
for IT field"}:::decision N_CheckifTRCreatedforITSPACES_Node0_action["Processing continues only if TR
created for IT field is empty SPACES"]:::main N_CheckifTRCreatedforITSPACES_Node0 -- Yes --> N_CheckifTRCreatedforITSPACES_Node0_action N_CheckifTRCreatedforITSPACES_Node0_action --> E_CheckifTRCreatedforITSPACES S_CheckifTRCreatedforITSPACES --> N_CheckifTRCreatedforITSPACES_Node0 N_CheckifTRCreatedforITSPACES_Node0 -- No --> E_CheckifTRCreatedforITSPACES
File: GCX003.cbl
GIVEN:
A cargo record exists with default manifest type
WHEN:
The system checks the TR created for IT field
THEN:
Processing continues only if TR created for IT field is empty (SPACES)
β Consolidated Acceptance Criteria
- If the cargo short description status → if status equals RELEASE, proceed with detour processing, otherwise generate invalid cargo status message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckCargoStatusDescription(["Start Step"])
E_CheckCargoStatusDescription(["End Step"])
N_CheckCargoStatusDescription_Node0{"The system evaluates the cargo
short description status"}:::decision N_CheckCargoStatusDescription_Node0_action["If status equals RELEASE, proceed
with detour processing, otherwise
generate invalid cargo status
message"]:::main N_CheckCargoStatusDescription_Node0 -- Yes --> N_CheckCargoStatusDescription_Node0_action N_CheckCargoStatusDescription_Node0_action --> E_CheckCargoStatusDescription S_CheckCargoStatusDescription --> N_CheckCargoStatusDescription_Node0 N_CheckCargoStatusDescription_Node0 -- No --> E_CheckCargoStatusDescription
short description status"}:::decision N_CheckCargoStatusDescription_Node0_action["If status equals RELEASE, proceed
with detour processing, otherwise
generate invalid cargo status
message"]:::main N_CheckCargoStatusDescription_Node0 -- Yes --> N_CheckCargoStatusDescription_Node0_action N_CheckCargoStatusDescription_Node0_action --> E_CheckCargoStatusDescription S_CheckCargoStatusDescription --> N_CheckCargoStatusDescription_Node0 N_CheckCargoStatusDescription_Node0 -- No --> E_CheckCargoStatusDescription
File: GCX003.cbl
GIVEN:
A cargo record with TR created for IT field as SPACES
WHEN:
The system evaluates the cargo short description status
THEN:
If status equals RELEASE, proceed with detour processing, otherwise generate invalid cargo status message
β Consolidated Acceptance Criteria
- The system processes the detour requirement → generate message 18 indicating detour required and add to report output
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateMessage18DetourReport(["Start Step"])
E_GenerateMessage18DetourReport(["End Step"])
N_GenerateMessage18DetourReport_Node0{"The system processes the detour
requirement"}:::decision N_GenerateMessage18DetourReport_Node0_action["Generate message 18 indicating
detour required and add to report
output"]:::main N_GenerateMessage18DetourReport_Node0 -- Yes --> N_GenerateMessage18DetourReport_Node0_action N_GenerateMessage18DetourReport_Node0_action --> E_GenerateMessage18DetourReport S_GenerateMessage18DetourReport --> N_GenerateMessage18DetourReport_Node0 N_GenerateMessage18DetourReport_Node0 -- No --> E_GenerateMessage18DetourReport
requirement"}:::decision N_GenerateMessage18DetourReport_Node0_action["Generate message 18 indicating
detour required and add to report
output"]:::main N_GenerateMessage18DetourReport_Node0 -- Yes --> N_GenerateMessage18DetourReport_Node0_action N_GenerateMessage18DetourReport_Node0_action --> E_GenerateMessage18DetourReport S_GenerateMessage18DetourReport --> N_GenerateMessage18DetourReport_Node0 N_GenerateMessage18DetourReport_Node0 -- No --> E_GenerateMessage18DetourReport
File: GCX003.cbl
GIVEN:
A request action type of REPORT for border clearance cargo
WHEN:
The system processes the detour requirement
THEN:
- Generate message 18 indicating detour required
- Add to report output
β Consolidated Acceptance Criteria
- The system validates authorization permissions → generate message 43 indicating user not authorized for special manifest and add to report output
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateMessage43NotAuthorized(["Start Step"])
E_GenerateMessage43NotAuthorized(["End Step"])
N_GenerateMessage43NotAuthorized_Node0{"The system validates authorization
permissions"}:::decision N_GenerateMessage43NotAuthorized_Node0_action["Generate message 43 indicating user
not authorized for special manifest
and add to report output"]:::main N_GenerateMessage43NotAuthorized_Node0 -- Yes --> N_GenerateMessage43NotAuthorized_Node0_action N_GenerateMessage43NotAuthorized_Node0_action --> E_GenerateMessage43NotAuthorized S_GenerateMessage43NotAuthorized --> N_GenerateMessage43NotAuthorized_Node0 N_GenerateMessage43NotAuthorized_Node0 -- No --> E_GenerateMessage43NotAuthorized
permissions"}:::decision N_GenerateMessage43NotAuthorized_Node0_action["Generate message 43 indicating user
not authorized for special manifest
and add to report output"]:::main N_GenerateMessage43NotAuthorized_Node0 -- Yes --> N_GenerateMessage43NotAuthorized_Node0_action N_GenerateMessage43NotAuthorized_Node0_action --> E_GenerateMessage43NotAuthorized S_GenerateMessage43NotAuthorized --> N_GenerateMessage43NotAuthorized_Node0 N_GenerateMessage43NotAuthorized_Node0 -- No --> E_GenerateMessage43NotAuthorized
File: GCX003.cbl
GIVEN:
A user without special manifest authorization attempting to send border clearance cargo
WHEN:
The system validates authorization permissions
THEN:
- Generate message 43 indicating user not authorized for special manifest
- Add to report output
β Consolidated Acceptance Criteria
- The system creates the special manifest → generate message 23 confirming special manifest creation and add to report output
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateMessage23SpecialManifestCreated(["Start Step"])
E_GenerateMessage23SpecialManifestCreated(["End Step"])
N_GenerateMessage23SpecialManifestCreated_Node0{"The system creates the special
manifest"}:::decision N_GenerateMessage23SpecialManifestCreated_Node0_action["Generate message 23 confirming
special manifest creation and add to
report output"]:::main N_GenerateMessage23SpecialManifestCreated_Node0 -- Yes --> N_GenerateMessage23SpecialManifestCreated_Node0_action N_GenerateMessage23SpecialManifestCreated_Node0_action --> E_GenerateMessage23SpecialManifestCreated S_GenerateMessage23SpecialManifestCreated --> N_GenerateMessage23SpecialManifestCreated_Node0 N_GenerateMessage23SpecialManifestCreated_Node0 -- No --> E_GenerateMessage23SpecialManifestCreated
manifest"}:::decision N_GenerateMessage23SpecialManifestCreated_Node0_action["Generate message 23 confirming
special manifest creation and add to
report output"]:::main N_GenerateMessage23SpecialManifestCreated_Node0 -- Yes --> N_GenerateMessage23SpecialManifestCreated_Node0_action N_GenerateMessage23SpecialManifestCreated_Node0_action --> E_GenerateMessage23SpecialManifestCreated S_GenerateMessage23SpecialManifestCreated --> N_GenerateMessage23SpecialManifestCreated_Node0 N_GenerateMessage23SpecialManifestCreated_Node0 -- No --> E_GenerateMessage23SpecialManifestCreated
File: GCX003.cbl
GIVEN:
An authorized user sending border clearance cargo requiring special manifest
WHEN:
The system creates the special manifest
THEN:
- Generate message 23 confirming special manifest creation
- Add to report output
β Consolidated Acceptance Criteria
- The system processes the special manifest requirement → call the special manifest creation procedure to generate the required documentation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateSpecialManifest(["Start Step"])
E_CreateSpecialManifest(["End Step"])
N_CreateSpecialManifest_Node0{"The system processes the special
manifest requirement"}:::decision N_CreateSpecialManifest_Node0_action["Call the special manifest creation
procedure to generate the required
documentation"]:::main N_CreateSpecialManifest_Node0 -- Yes --> N_CreateSpecialManifest_Node0_action N_CreateSpecialManifest_Node0_action --> E_CreateSpecialManifest S_CreateSpecialManifest --> N_CreateSpecialManifest_Node0 N_CreateSpecialManifest_Node0 -- No --> E_CreateSpecialManifest
manifest requirement"}:::decision N_CreateSpecialManifest_Node0_action["Call the special manifest creation
procedure to generate the required
documentation"]:::main N_CreateSpecialManifest_Node0 -- Yes --> N_CreateSpecialManifest_Node0_action N_CreateSpecialManifest_Node0_action --> E_CreateSpecialManifest S_CreateSpecialManifest --> N_CreateSpecialManifest_Node0 N_CreateSpecialManifest_Node0 -- No --> E_CreateSpecialManifest
File: GCX003.cbl
GIVEN:
A detour spawn flag set to TRUE for border clearance
WHEN:
The system processes the special manifest requirement
THEN:
Call the special manifest creation procedure to generate the required documentation
β Consolidated Acceptance Criteria
- The system validates cargo status for border clearance → generate message 31 indicating invalid cargo status and add to report output
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateMessage31InvalidCargoStatus(["Start Step"])
E_GenerateMessage31InvalidCargoStatus(["End Step"])
N_GenerateMessage31InvalidCargoStatus_Node0{"The system validates cargo status
for border clearance"}:::decision N_GenerateMessage31InvalidCargoStatus_Node0_action["Generate message 31 indicating
invalid cargo status and add to
report output"]:::main N_GenerateMessage31InvalidCargoStatus_Node0 -- Yes --> N_GenerateMessage31InvalidCargoStatus_Node0_action N_GenerateMessage31InvalidCargoStatus_Node0_action --> E_GenerateMessage31InvalidCargoStatus S_GenerateMessage31InvalidCargoStatus --> N_GenerateMessage31InvalidCargoStatus_Node0 N_GenerateMessage31InvalidCargoStatus_Node0 -- No --> E_GenerateMessage31InvalidCargoStatus
for border clearance"}:::decision N_GenerateMessage31InvalidCargoStatus_Node0_action["Generate message 31 indicating
invalid cargo status and add to
report output"]:::main N_GenerateMessage31InvalidCargoStatus_Node0 -- Yes --> N_GenerateMessage31InvalidCargoStatus_Node0_action N_GenerateMessage31InvalidCargoStatus_Node0_action --> E_GenerateMessage31InvalidCargoStatus S_GenerateMessage31InvalidCargoStatus --> N_GenerateMessage31InvalidCargoStatus_Node0 N_GenerateMessage31InvalidCargoStatus_Node0 -- No --> E_GenerateMessage31InvalidCargoStatus
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record with TR created for IT as SPACES but cargo status not equal to RELEASE
WHEN:
The system validates cargo status for border clearance
THEN:
- Generate message 31 indicating invalid cargo status
- Add to report output
β Consolidated Acceptance Criteria
- The system checks if waybill is found and no cargo is found → the system should proceed to US-US movement detour processing if both conditions are true, otherwise skip the processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WaybillFoundANDNoCargoFound(["Start Step"])
E_WaybillFoundANDNoCargoFound(["End Step"])
N_WaybillFoundANDNoCargoFound_Node0{"The system checks if waybill is
found and no cargo is found"}:::decision N_WaybillFoundANDNoCargoFound_Node0_action["The system should proceed to US-US
movement detour processing if both
conditions are true, otherwise skip
the processing"]:::main N_WaybillFoundANDNoCargoFound_Node0 -- Yes --> N_WaybillFoundANDNoCargoFound_Node0_action N_WaybillFoundANDNoCargoFound_Node0_action --> E_WaybillFoundANDNoCargoFound S_WaybillFoundANDNoCargoFound --> N_WaybillFoundANDNoCargoFound_Node0 N_WaybillFoundANDNoCargoFound_Node0 -- No --> E_WaybillFoundANDNoCargoFound
found and no cargo is found"}:::decision N_WaybillFoundANDNoCargoFound_Node0_action["The system should proceed to US-US
movement detour processing if both
conditions are true, otherwise skip
the processing"]:::main N_WaybillFoundANDNoCargoFound_Node0 -- Yes --> N_WaybillFoundANDNoCargoFound_Node0_action N_WaybillFoundANDNoCargoFound_Node0_action --> E_WaybillFoundANDNoCargoFound S_WaybillFoundANDNoCargoFound --> N_WaybillFoundANDNoCargoFound_Node0 N_WaybillFoundANDNoCargoFound_Node0 -- No --> E_WaybillFoundANDNoCargoFound
File: GCX003.cbl
GIVEN:
A waybill processing scenario exists
WHEN:
- The system checks if waybill is found
- No cargo is found
THEN:
The system should proceed to US-US movement detour processing if both conditions are true, otherwise skip the processing
β Consolidated Acceptance Criteria
- The system processes the detour for reporting → the system should generate warning message 18 indicating that an original US-US movement detour is required
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateWarningMessage18OriginalUSUSMovementDetourRequired(["Start Step"])
E_GenerateWarningMessage18OriginalUSUSMovementDetourRequired(["End Step"])
N_GenerateWarningMessage18OriginalUSUSMovementDetourRequired_Node0{"The system processes the detour for
reporting"}:::decision N_GenerateWarningMessage18OriginalUSUSMovementDetourRequired_Node0_action["The system should generate warning
message 18 indicating that an
original US-US movement detour is
required"]:::main N_GenerateWarningMessage18OriginalUSUSMovementDetourRequired_Node0 -- Yes --> N_GenerateWarningMessage18OriginalUSUSMovementDetourRequired_Node0_action N_GenerateWarningMessage18OriginalUSUSMovementDetourRequired_Node0_action --> E_GenerateWarningMessage18OriginalUSUSMovementDetourRequired S_GenerateWarningMessage18OriginalUSUSMovementDetourRequired --> N_GenerateWarningMessage18OriginalUSUSMovementDetourRequired_Node0 N_GenerateWarningMessage18OriginalUSUSMovementDetourRequired_Node0 -- No --> E_GenerateWarningMessage18OriginalUSUSMovementDetourRequired
reporting"}:::decision N_GenerateWarningMessage18OriginalUSUSMovementDetourRequired_Node0_action["The system should generate warning
message 18 indicating that an
original US-US movement detour is
required"]:::main N_GenerateWarningMessage18OriginalUSUSMovementDetourRequired_Node0 -- Yes --> N_GenerateWarningMessage18OriginalUSUSMovementDetourRequired_Node0_action N_GenerateWarningMessage18OriginalUSUSMovementDetourRequired_Node0_action --> E_GenerateWarningMessage18OriginalUSUSMovementDetourRequired S_GenerateWarningMessage18OriginalUSUSMovementDetourRequired --> N_GenerateWarningMessage18OriginalUSUSMovementDetourRequired_Node0 N_GenerateWarningMessage18OriginalUSUSMovementDetourRequired_Node0 -- No --> E_GenerateWarningMessage18OriginalUSUSMovementDetourRequired
File: GCX003.cbl
GIVEN:
A US-US movement detour scenario exists and request action is REPORT
WHEN:
The system processes the detour for reporting
THEN:
The system should generate warning message 18 indicating that an original US-US movement detour is required
β Consolidated Acceptance Criteria
- The system processes the unauthorized special manifest request → the system should generate error message 43 indicating the user is not authorized for special manifests
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateErrorMessage43UserNotAuthorizedforSpecialManifests(["Start Step"])
E_GenerateErrorMessage43UserNotAuthorizedforSpecialManifests(["End Step"])
N_GenerateErrorMessage43UserNotAuthorizedforSpecialManifests_Node0{"The system processes the
unauthorized special manifest
request"}:::decision N_GenerateErrorMessage43UserNotAuthorizedforSpecialManifests_Node0_action["The system should generate error
message 43 indicating the user is
not authorized for special manifests"]:::main N_GenerateErrorMessage43UserNotAuthorizedforSpecialManifests_Node0 -- Yes --> N_GenerateErrorMessage43UserNotAuthorizedforSpecialManifests_Node0_action N_GenerateErrorMessage43UserNotAuthorizedforSpecialManifests_Node0_action --> E_GenerateErrorMessage43UserNotAuthorizedforSpecialManifests S_GenerateErrorMessage43UserNotAuthorizedforSpecialManifests --> N_GenerateErrorMessage43UserNotAuthorizedforSpecialManifests_Node0 N_GenerateErrorMessage43UserNotAuthorizedforSpecialManifests_Node0 -- No --> E_GenerateErrorMessage43UserNotAuthorizedforSpecialManifests
unauthorized special manifest
request"}:::decision N_GenerateErrorMessage43UserNotAuthorizedforSpecialManifests_Node0_action["The system should generate error
message 43 indicating the user is
not authorized for special manifests"]:::main N_GenerateErrorMessage43UserNotAuthorizedforSpecialManifests_Node0 -- Yes --> N_GenerateErrorMessage43UserNotAuthorizedforSpecialManifests_Node0_action N_GenerateErrorMessage43UserNotAuthorizedforSpecialManifests_Node0_action --> E_GenerateErrorMessage43UserNotAuthorizedforSpecialManifests S_GenerateErrorMessage43UserNotAuthorizedforSpecialManifests --> N_GenerateErrorMessage43UserNotAuthorizedforSpecialManifests_Node0 N_GenerateErrorMessage43UserNotAuthorizedforSpecialManifests_Node0 -- No --> E_GenerateErrorMessage43UserNotAuthorizedforSpecialManifests
File: GCX003.cbl
GIVEN:
A US-US movement detour scenario exists with SEND action and user lacks special manifest authorization
WHEN:
The system processes the unauthorized special manifest request
THEN:
The system should generate error message 43 indicating the user is not authorized for special manifests
β Consolidated Acceptance Criteria
- The system processes the authorized special manifest request → the system should generate success message 23 indicating that a special manifest will be created
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateSuccessMessage23SpecialManifestWillBeCreated(["Start Step"])
E_GenerateSuccessMessage23SpecialManifestWillBeCreated(["End Step"])
N_GenerateSuccessMessage23SpecialManifestWillBeCreated_Node0{"The system processes the authorized
special manifest request"}:::decision N_GenerateSuccessMessage23SpecialManifestWillBeCreated_Node0_action["The system should generate success
message 23 indicating that a special
manifest will be created"]:::main N_GenerateSuccessMessage23SpecialManifestWillBeCreated_Node0 -- Yes --> N_GenerateSuccessMessage23SpecialManifestWillBeCreated_Node0_action N_GenerateSuccessMessage23SpecialManifestWillBeCreated_Node0_action --> E_GenerateSuccessMessage23SpecialManifestWillBeCreated S_GenerateSuccessMessage23SpecialManifestWillBeCreated --> N_GenerateSuccessMessage23SpecialManifestWillBeCreated_Node0 N_GenerateSuccessMessage23SpecialManifestWillBeCreated_Node0 -- No --> E_GenerateSuccessMessage23SpecialManifestWillBeCreated
special manifest request"}:::decision N_GenerateSuccessMessage23SpecialManifestWillBeCreated_Node0_action["The system should generate success
message 23 indicating that a special
manifest will be created"]:::main N_GenerateSuccessMessage23SpecialManifestWillBeCreated_Node0 -- Yes --> N_GenerateSuccessMessage23SpecialManifestWillBeCreated_Node0_action N_GenerateSuccessMessage23SpecialManifestWillBeCreated_Node0_action --> E_GenerateSuccessMessage23SpecialManifestWillBeCreated S_GenerateSuccessMessage23SpecialManifestWillBeCreated --> N_GenerateSuccessMessage23SpecialManifestWillBeCreated_Node0 N_GenerateSuccessMessage23SpecialManifestWillBeCreated_Node0 -- No --> E_GenerateSuccessMessage23SpecialManifestWillBeCreated
File: GCX003.cbl
GIVEN:
A US-US movement detour scenario exists with SEND action and user has special manifest authorization
WHEN:
The system processes the authorized special manifest request
THEN:
The system should generate success message 23 indicating that a special manifest will be created
β Consolidated Acceptance Criteria
- The system processes the detour request → the system should set the US-US detour spawn flag to trigger subsequent special manifest processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetUSUSDetourSpawnFlag(["Start Step"])
E_SetUSUSDetourSpawnFlag(["End Step"])
N_SetUSUSDetourSpawnFlag_Node0{"The system processes the detour
request"}:::decision N_SetUSUSDetourSpawnFlag_Node0_action["The system should set the US-US
detour spawn flag to trigger
subsequent special manifest
processing"]:::main N_SetUSUSDetourSpawnFlag_Node0 -- Yes --> N_SetUSUSDetourSpawnFlag_Node0_action N_SetUSUSDetourSpawnFlag_Node0_action --> E_SetUSUSDetourSpawnFlag S_SetUSUSDetourSpawnFlag --> N_SetUSUSDetourSpawnFlag_Node0 N_SetUSUSDetourSpawnFlag_Node0 -- No --> E_SetUSUSDetourSpawnFlag
request"}:::decision N_SetUSUSDetourSpawnFlag_Node0_action["The system should set the US-US
detour spawn flag to trigger
subsequent special manifest
processing"]:::main N_SetUSUSDetourSpawnFlag_Node0 -- Yes --> N_SetUSUSDetourSpawnFlag_Node0_action N_SetUSUSDetourSpawnFlag_Node0_action --> E_SetUSUSDetourSpawnFlag S_SetUSUSDetourSpawnFlag --> N_SetUSUSDetourSpawnFlag_Node0 N_SetUSUSDetourSpawnFlag_Node0 -- No --> E_SetUSUSDetourSpawnFlag
File: GCX003.cbl
GIVEN:
A US-US movement detour scenario requires special manifest creation
WHEN:
The system processes the detour request
THEN:
The system should set the US-US detour spawn flag to trigger subsequent special manifest processing
β Consolidated Acceptance Criteria
- Processing US-Mexico export detour and bill type code is checked → continue processing only if bill type code equals Export type 88, otherwise skip processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckExportBillType88(["Start Step"])
E_CheckExportBillType88(["End Step"])
N_CheckExportBillType88_Node0{"Processing US-Mexico export detour
and bill type code is checked"}:::decision N_CheckExportBillType88_Node0_action["Continue processing only if bill
type code equals Export type 88,
otherwise skip processing"]:::main N_CheckExportBillType88_Node0 -- Yes --> N_CheckExportBillType88_Node0_action N_CheckExportBillType88_Node0_action --> E_CheckExportBillType88 S_CheckExportBillType88 --> N_CheckExportBillType88_Node0 N_CheckExportBillType88_Node0 -- No --> E_CheckExportBillType88
and bill type code is checked"}:::decision N_CheckExportBillType88_Node0_action["Continue processing only if bill
type code equals Export type 88,
otherwise skip processing"]:::main N_CheckExportBillType88_Node0 -- Yes --> N_CheckExportBillType88_Node0_action N_CheckExportBillType88_Node0_action --> E_CheckExportBillType88 S_CheckExportBillType88 --> N_CheckExportBillType88_Node0 N_CheckExportBillType88_Node0 -- No --> E_CheckExportBillType88
File: GCX003.cbl
GIVEN:
A cargo record exists with bill type code
WHEN:
- Processing us-mexico export detour
- Bill type code is checked
THEN:
Continue processing only if bill type code equals Export type 88, otherwise skip processing
β Consolidated Acceptance Criteria
- Processing export detour for bill type 88 → continue processing only if origin-destination country codes equal 'USMX', otherwise skip processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckUSMXCountryCodes(["Start Step"])
E_CheckUSMXCountryCodes(["End Step"])
N_CheckUSMXCountryCodes_Node0{"Processing export detour for bill
type 88"}:::decision N_CheckUSMXCountryCodes_Node0_action["Continue processing only if
origin-destination country codes
equal USMX , otherwise skip
processing"]:::main N_CheckUSMXCountryCodes_Node0 -- Yes --> N_CheckUSMXCountryCodes_Node0_action N_CheckUSMXCountryCodes_Node0_action --> E_CheckUSMXCountryCodes S_CheckUSMXCountryCodes --> N_CheckUSMXCountryCodes_Node0 N_CheckUSMXCountryCodes_Node0 -- No --> E_CheckUSMXCountryCodes
type 88"}:::decision N_CheckUSMXCountryCodes_Node0_action["Continue processing only if
origin-destination country codes
equal USMX , otherwise skip
processing"]:::main N_CheckUSMXCountryCodes_Node0 -- Yes --> N_CheckUSMXCountryCodes_Node0_action N_CheckUSMXCountryCodes_Node0_action --> E_CheckUSMXCountryCodes S_CheckUSMXCountryCodes --> N_CheckUSMXCountryCodes_Node0 N_CheckUSMXCountryCodes_Node0 -- No --> E_CheckUSMXCountryCodes
File: GCX003.cbl
GIVEN:
Origin and destination country codes are available
WHEN:
Processing export detour for bill type 88
THEN:
Continue processing only if origin-destination country codes equal 'USMX', otherwise skip processing
β Consolidated Acceptance Criteria
- Checking special manifest requirements → continue processing if special 88 manifest flag is set, otherwise check if special manifest field is empty
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckSpecial88ManifestFlag(["Start Step"])
E_CheckSpecial88ManifestFlag(["End Step"])
N_CheckSpecial88ManifestFlag_Node0{"Checking special manifest
requirements"}:::decision N_CheckSpecial88ManifestFlag_Node0_action["Continue processing if special 88
manifest flag is set, otherwise
check if special manifest field is
empty"]:::main N_CheckSpecial88ManifestFlag_Node0 -- Yes --> N_CheckSpecial88ManifestFlag_Node0_action N_CheckSpecial88ManifestFlag_Node0_action --> E_CheckSpecial88ManifestFlag S_CheckSpecial88ManifestFlag --> N_CheckSpecial88ManifestFlag_Node0 N_CheckSpecial88ManifestFlag_Node0 -- No --> E_CheckSpecial88ManifestFlag
requirements"}:::decision N_CheckSpecial88ManifestFlag_Node0_action["Continue processing if special 88
manifest flag is set, otherwise
check if special manifest field is
empty"]:::main N_CheckSpecial88ManifestFlag_Node0 -- Yes --> N_CheckSpecial88ManifestFlag_Node0_action N_CheckSpecial88ManifestFlag_Node0_action --> E_CheckSpecial88ManifestFlag S_CheckSpecial88ManifestFlag --> N_CheckSpecial88ManifestFlag_Node0 N_CheckSpecial88ManifestFlag_Node0 -- No --> E_CheckSpecial88ManifestFlag
File: GCX003.cbl
GIVEN:
A cargo record with US-Mexico export type 88
WHEN:
Checking special manifest requirements
THEN:
Continue processing if special 88 manifest flag is set, otherwise check if special manifest field is empty
β Consolidated Acceptance Criteria
- Processing US-Mexico export detour with special 88 manifest → continue processing only if station is not Laredo TX, otherwise skip detour processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckNotLaredoStation(["Start Step"])
E_CheckNotLaredoStation(["End Step"])
N_CheckNotLaredoStation_Node0{"Processing US-Mexico export detour
with special 88 manifest"}:::decision N_CheckNotLaredoStation_Node0_action["Continue processing only if station
is not Laredo TX, otherwise skip
detour processing"]:::main N_CheckNotLaredoStation_Node0 -- Yes --> N_CheckNotLaredoStation_Node0_action N_CheckNotLaredoStation_Node0_action --> E_CheckNotLaredoStation S_CheckNotLaredoStation --> N_CheckNotLaredoStation_Node0 N_CheckNotLaredoStation_Node0 -- No --> E_CheckNotLaredoStation
with special 88 manifest"}:::decision N_CheckNotLaredoStation_Node0_action["Continue processing only if station
is not Laredo TX, otherwise skip
detour processing"]:::main N_CheckNotLaredoStation_Node0 -- Yes --> N_CheckNotLaredoStation_Node0_action N_CheckNotLaredoStation_Node0_action --> E_CheckNotLaredoStation S_CheckNotLaredoStation --> N_CheckNotLaredoStation_Node0 N_CheckNotLaredoStation_Node0 -- No --> E_CheckNotLaredoStation
File: GCX003.cbl
GIVEN:
A train crossing port station code
WHEN:
Processing US-Mexico export detour with special 88 manifest
THEN:
Continue processing only if station is not Laredo TX, otherwise skip detour processing
β Consolidated Acceptance Criteria
- Special manifest field is checked → continue with detour processing if special manifest field is empty (spaces), otherwise skip processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckSpecialManifestEmpty(["Start Step"])
E_CheckSpecialManifestEmpty(["End Step"])
N_CheckSpecialManifestEmpty_Node0{"Special manifest field is checked"}:::decision
N_CheckSpecialManifestEmpty_Node0_action["Continue with detour processing if
special manifest field is empty
spaces, otherwise skip processing"]:::main N_CheckSpecialManifestEmpty_Node0 -- Yes --> N_CheckSpecialManifestEmpty_Node0_action N_CheckSpecialManifestEmpty_Node0_action --> E_CheckSpecialManifestEmpty S_CheckSpecialManifestEmpty --> N_CheckSpecialManifestEmpty_Node0 N_CheckSpecialManifestEmpty_Node0 -- No --> E_CheckSpecialManifestEmpty
special manifest field is empty
spaces, otherwise skip processing"]:::main N_CheckSpecialManifestEmpty_Node0 -- Yes --> N_CheckSpecialManifestEmpty_Node0_action N_CheckSpecialManifestEmpty_Node0_action --> E_CheckSpecialManifestEmpty S_CheckSpecialManifestEmpty --> N_CheckSpecialManifestEmpty_Node0 N_CheckSpecialManifestEmpty_Node0 -- No --> E_CheckSpecialManifestEmpty
File: GCX003.cbl
GIVEN:
A cargo record for US-Mexico export processing
WHEN:
Special manifest field is checked
THEN:
Continue with detour processing if special manifest field is empty (spaces), otherwise skip processing
β Consolidated Acceptance Criteria
- Request action type is 'REPORT' → generate message 50 and add to report without creating special manifest
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateReportMessage50(["Start Step"])
E_GenerateReportMessage50(["End Step"])
N_GenerateReportMessage50_Node0{"Request action type is REPORT"}:::decision
N_GenerateReportMessage50_Node0_action["Generate message 50 and add to
report without creating special
manifest"]:::main N_GenerateReportMessage50_Node0 -- Yes --> N_GenerateReportMessage50_Node0_action N_GenerateReportMessage50_Node0_action --> E_GenerateReportMessage50 S_GenerateReportMessage50 --> N_GenerateReportMessage50_Node0 N_GenerateReportMessage50_Node0 -- No --> E_GenerateReportMessage50
report without creating special
manifest"]:::main N_GenerateReportMessage50_Node0 -- Yes --> N_GenerateReportMessage50_Node0_action N_GenerateReportMessage50_Node0_action --> E_GenerateReportMessage50 S_GenerateReportMessage50 --> N_GenerateReportMessage50_Node0 N_GenerateReportMessage50_Node0 -- No --> E_GenerateReportMessage50
File: GCX003.cbl
GIVEN:
A valid US-Mexico export detour scenario with empty special manifest
WHEN:
Request action type is 'REPORT'
THEN:
- Generate message 50
- Add to report without creating special manifest
β Consolidated Acceptance Criteria
- User is not authorized for special manifests → generate warning message 43 and skip special manifest creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateWarningMessage43UserNotAuthorized(["Start Step"])
E_GenerateWarningMessage43UserNotAuthorized(["End Step"])
N_GenerateWarningMessage43UserNotAuthorized_Node0{"User is not authorized for special
manifests"}:::decision N_GenerateWarningMessage43UserNotAuthorized_Node0_action["Generate warning message 43 and
skip special manifest creation"]:::main N_GenerateWarningMessage43UserNotAuthorized_Node0 -- Yes --> N_GenerateWarningMessage43UserNotAuthorized_Node0_action N_GenerateWarningMessage43UserNotAuthorized_Node0_action --> E_GenerateWarningMessage43UserNotAuthorized S_GenerateWarningMessage43UserNotAuthorized --> N_GenerateWarningMessage43UserNotAuthorized_Node0 N_GenerateWarningMessage43UserNotAuthorized_Node0 -- No --> E_GenerateWarningMessage43UserNotAuthorized
manifests"}:::decision N_GenerateWarningMessage43UserNotAuthorized_Node0_action["Generate warning message 43 and
skip special manifest creation"]:::main N_GenerateWarningMessage43UserNotAuthorized_Node0 -- Yes --> N_GenerateWarningMessage43UserNotAuthorized_Node0_action N_GenerateWarningMessage43UserNotAuthorized_Node0_action --> E_GenerateWarningMessage43UserNotAuthorized S_GenerateWarningMessage43UserNotAuthorized --> N_GenerateWarningMessage43UserNotAuthorized_Node0 N_GenerateWarningMessage43UserNotAuthorized_Node0 -- No --> E_GenerateWarningMessage43UserNotAuthorized
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A send action request for US-Mexico export detour and user authorization status
WHEN:
User is not authorized for special manifests
THEN:
- Generate warning message 43
- Skip special manifest creation
β Consolidated Acceptance Criteria
- User has special manifest authorization → generate message 23, set 88-TR detour spawn flag, and create special manifest
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateSpecialManifestMessage23(["Start Step"])
E_GenerateSpecialManifestMessage23(["End Step"])
N_GenerateSpecialManifestMessage23_Node0{"User has special manifest
authorization"}:::decision N_GenerateSpecialManifestMessage23_Node0_action["Generate message 23, set 88-TR
detour spawn flag, and create
special manifest"]:::main N_GenerateSpecialManifestMessage23_Node0 -- Yes --> N_GenerateSpecialManifestMessage23_Node0_action N_GenerateSpecialManifestMessage23_Node0_action --> E_GenerateSpecialManifestMessage23 S_GenerateSpecialManifestMessage23 --> N_GenerateSpecialManifestMessage23_Node0 N_GenerateSpecialManifestMessage23_Node0 -- No --> E_GenerateSpecialManifestMessage23
authorization"}:::decision N_GenerateSpecialManifestMessage23_Node0_action["Generate message 23, set 88-TR
detour spawn flag, and create
special manifest"]:::main N_GenerateSpecialManifestMessage23_Node0 -- Yes --> N_GenerateSpecialManifestMessage23_Node0_action N_GenerateSpecialManifestMessage23_Node0_action --> E_GenerateSpecialManifestMessage23 S_GenerateSpecialManifestMessage23 --> N_GenerateSpecialManifestMessage23_Node0 N_GenerateSpecialManifestMessage23_Node0 -- No --> E_GenerateSpecialManifestMessage23
File: GCX003.cbl
GIVEN:
A send action request for US-Mexico export detour with authorized user
WHEN:
User has special manifest authorization
THEN:
Generate message 23, set 88-TR detour spawn flag, and create special manifest
β Consolidated Acceptance Criteria
- Cargo status is invalid for US-Mexico export processing → generate error message 31 indicating invalid cargo status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateErrorMessage31InvalidStatus(["Start Step"])
E_GenerateErrorMessage31InvalidStatus(["End Step"])
N_GenerateErrorMessage31InvalidStatus_Node0{"Cargo status is invalid for
US-Mexico export processing"}:::decision N_GenerateErrorMessage31InvalidStatus_Node0_action["Generate error message 31
indicating invalid cargo status"]:::exclusion N_GenerateErrorMessage31InvalidStatus_Node0 -- Yes -->|Alternative| N_GenerateErrorMessage31InvalidStatus_Node0_action N_GenerateErrorMessage31InvalidStatus_Node0_action --> E_GenerateErrorMessage31InvalidStatus S_GenerateErrorMessage31InvalidStatus --> N_GenerateErrorMessage31InvalidStatus_Node0 N_GenerateErrorMessage31InvalidStatus_Node0 -- No --> E_GenerateErrorMessage31InvalidStatus
US-Mexico export processing"}:::decision N_GenerateErrorMessage31InvalidStatus_Node0_action["Generate error message 31
indicating invalid cargo status"]:::exclusion N_GenerateErrorMessage31InvalidStatus_Node0 -- Yes -->|Alternative| N_GenerateErrorMessage31InvalidStatus_Node0_action N_GenerateErrorMessage31InvalidStatus_Node0_action --> E_GenerateErrorMessage31InvalidStatus S_GenerateErrorMessage31InvalidStatus --> N_GenerateErrorMessage31InvalidStatus_Node0 N_GenerateErrorMessage31InvalidStatus_Node0 -- No --> E_GenerateErrorMessage31InvalidStatus
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record that doesn't meet export type 88 criteria
WHEN:
Cargo status is invalid for US-Mexico export processing
THEN:
Generate error message 31 indicating invalid cargo status
β Consolidated Acceptance Criteria
- The system searches the state-country reference table for the origin state code → if the origin state is found in the table, set the origin country code from the table entry, otherwise set the origin country code to spaces
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchStateCountryReferenceTableforOrigin(["Start Step"])
E_SearchStateCountryReferenceTableforOrigin(["End Step"])
N_SearchStateCountryReferenceTableforOrigin_Node0{"The system searches the
state-country reference table for
the origin state code"}:::decision N_SearchStateCountryReferenceTableforOrigin_Node0_action["If the origin state is found in the
table, set the origin country code
from the table entry, otherwise set
the origin country code to spaces"]:::main N_SearchStateCountryReferenceTableforOrigin_Node0 -- Yes --> N_SearchStateCountryReferenceTableforOrigin_Node0_action N_SearchStateCountryReferenceTableforOrigin_Node0_action --> E_SearchStateCountryReferenceTableforOrigin S_SearchStateCountryReferenceTableforOrigin --> N_SearchStateCountryReferenceTableforOrigin_Node0 N_SearchStateCountryReferenceTableforOrigin_Node0 -- No --> E_SearchStateCountryReferenceTableforOrigin
state-country reference table for
the origin state code"}:::decision N_SearchStateCountryReferenceTableforOrigin_Node0_action["If the origin state is found in the
table, set the origin country code
from the table entry, otherwise set
the origin country code to spaces"]:::main N_SearchStateCountryReferenceTableforOrigin_Node0 -- Yes --> N_SearchStateCountryReferenceTableforOrigin_Node0_action N_SearchStateCountryReferenceTableforOrigin_Node0_action --> E_SearchStateCountryReferenceTableforOrigin S_SearchStateCountryReferenceTableforOrigin --> N_SearchStateCountryReferenceTableforOrigin_Node0 N_SearchStateCountryReferenceTableforOrigin_Node0 -- No --> E_SearchStateCountryReferenceTableforOrigin
File: GCX003.cbl
GIVEN:
A waybill contains an origin state/province code
WHEN:
The system searches the state-country reference table for the origin state code
THEN:
If the origin state is found in the table, set the origin country code from the table entry, otherwise set the origin country code to spaces
β Consolidated Acceptance Criteria
- The system searches the state-country reference table for the destination state code → if the destination state is found in the table, set the destination country code from the table entry, otherwise set the destination country code to spaces
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchStateCountryReferenceTableforDestination(["Start Step"])
E_SearchStateCountryReferenceTableforDestination(["End Step"])
N_SearchStateCountryReferenceTableforDestination_Node0{"The system searches the
state-country reference table for
the destination state code"}:::decision N_SearchStateCountryReferenceTableforDestination_Node0_action["If the destination state is found
in the table, set the destination
country code from the table entry,
otherwise set the destination
country code to spaces"]:::main N_SearchStateCountryReferenceTableforDestination_Node0 -- Yes --> N_SearchStateCountryReferenceTableforDestination_Node0_action N_SearchStateCountryReferenceTableforDestination_Node0_action --> E_SearchStateCountryReferenceTableforDestination S_SearchStateCountryReferenceTableforDestination --> N_SearchStateCountryReferenceTableforDestination_Node0 N_SearchStateCountryReferenceTableforDestination_Node0 -- No --> E_SearchStateCountryReferenceTableforDestination
state-country reference table for
the destination state code"}:::decision N_SearchStateCountryReferenceTableforDestination_Node0_action["If the destination state is found
in the table, set the destination
country code from the table entry,
otherwise set the destination
country code to spaces"]:::main N_SearchStateCountryReferenceTableforDestination_Node0 -- Yes --> N_SearchStateCountryReferenceTableforDestination_Node0_action N_SearchStateCountryReferenceTableforDestination_Node0_action --> E_SearchStateCountryReferenceTableforDestination S_SearchStateCountryReferenceTableforDestination --> N_SearchStateCountryReferenceTableforDestination_Node0 N_SearchStateCountryReferenceTableforDestination_Node0 -- No --> E_SearchStateCountryReferenceTableforDestination
File: GCX003.cbl
GIVEN:
A waybill contains a destination state/province code
WHEN:
The system searches the state-country reference table for the destination state code
THEN:
If the destination state is found in the table, set the destination country code from the table entry, otherwise set the destination country code to spaces
β Consolidated Acceptance Criteria
- The system checks if the equipment has containers or is a conveying car with load status → container processing is initiated if container is found OR if equipment is a conveying car with loaded status, otherwise container processing is skipped
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContainerFoundorConveyingCarwithLoad(["Start Step"])
E_ContainerFoundorConveyingCarwithLoad(["End Step"])
N_ContainerFoundorConveyingCarwithLoad_Node0{"The system checks if the equipment
has containers or is a conveying car
with load status"}:::decision N_ContainerFoundorConveyingCarwithLoad_Node0_action["Container processing is initiated
if container is found OR if
equipment is a conveying car with
loaded status, otherwise container
processing is skipped"]:::main N_ContainerFoundorConveyingCarwithLoad_Node0 -- Yes --> N_ContainerFoundorConveyingCarwithLoad_Node0_action N_ContainerFoundorConveyingCarwithLoad_Node0_action --> E_ContainerFoundorConveyingCarwithLoad S_ContainerFoundorConveyingCarwithLoad --> N_ContainerFoundorConveyingCarwithLoad_Node0 N_ContainerFoundorConveyingCarwithLoad_Node0 -- No --> E_ContainerFoundorConveyingCarwithLoad
has containers or is a conveying car
with load status"}:::decision N_ContainerFoundorConveyingCarwithLoad_Node0_action["Container processing is initiated
if container is found OR if
equipment is a conveying car with
loaded status, otherwise container
processing is skipped"]:::main N_ContainerFoundorConveyingCarwithLoad_Node0 -- Yes --> N_ContainerFoundorConveyingCarwithLoad_Node0_action N_ContainerFoundorConveyingCarwithLoad_Node0_action --> E_ContainerFoundorConveyingCarwithLoad S_ContainerFoundorConveyingCarwithLoad --> N_ContainerFoundorConveyingCarwithLoad_Node0 N_ContainerFoundorConveyingCarwithLoad_Node0 -- No --> E_ContainerFoundorConveyingCarwithLoad
File: GCX003.cbl
GIVEN:
An equipment item is being processed for a train manifest
WHEN:
The system checks if the equipment has containers or is a conveying car with load status
THEN:
Container processing is initiated if container is found OR if equipment is a conveying car with loaded status, otherwise container processing is skipped
β Consolidated Acceptance Criteria
- The system determines that container was not found in the primary waybill system → the system initiates container lookup in the FWSWRWR container database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifContainerNotFoundinPrimarySystem(["Start Step"])
E_CheckifContainerNotFoundinPrimarySystem(["End Step"])
N_CheckifContainerNotFoundinPrimarySystem_Node0{"The system determines that
container was not found in the
primary waybill system"}:::decision N_CheckifContainerNotFoundinPrimarySystem_Node0_action["The system initiates container
lookup in the FWSWRWR container
database"]:::main N_CheckifContainerNotFoundinPrimarySystem_Node0 -- Yes --> N_CheckifContainerNotFoundinPrimarySystem_Node0_action N_CheckifContainerNotFoundinPrimarySystem_Node0_action --> E_CheckifContainerNotFoundinPrimarySystem S_CheckifContainerNotFoundinPrimarySystem --> N_CheckifContainerNotFoundinPrimarySystem_Node0 N_CheckifContainerNotFoundinPrimarySystem_Node0 -- No --> E_CheckifContainerNotFoundinPrimarySystem
container was not found in the
primary waybill system"}:::decision N_CheckifContainerNotFoundinPrimarySystem_Node0_action["The system initiates container
lookup in the FWSWRWR container
database"]:::main N_CheckifContainerNotFoundinPrimarySystem_Node0 -- Yes --> N_CheckifContainerNotFoundinPrimarySystem_Node0_action N_CheckifContainerNotFoundinPrimarySystem_Node0_action --> E_CheckifContainerNotFoundinPrimarySystem S_CheckifContainerNotFoundinPrimarySystem --> N_CheckifContainerNotFoundinPrimarySystem_Node0 N_CheckifContainerNotFoundinPrimarySystem_Node0 -- No --> E_CheckifContainerNotFoundinPrimarySystem
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Container processing is required for an equipment item
WHEN:
The system determines that container was not found in the primary waybill system
THEN:
The system initiates container lookup in the FWSWRWR container database
β Consolidated Acceptance Criteria
- The system searches the FWSWRWR database using the waybill root key → container segment information is retrieved if found in the database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveContainerfromFWSWRWRDatabase(["Start Step"])
E_RetrieveContainerfromFWSWRWRDatabase(["End Step"])
N_RetrieveContainerfromFWSWRWRDatabase_Node0{"The system searches the FWSWRWR
database using the waybill root key"}:::decision N_RetrieveContainerfromFWSWRWRDatabase_Node0_action["Container segment information is
retrieved if found in the database"]:::main N_RetrieveContainerfromFWSWRWRDatabase_Node0 -- Yes --> N_RetrieveContainerfromFWSWRWRDatabase_Node0_action N_RetrieveContainerfromFWSWRWRDatabase_Node0_action --> E_RetrieveContainerfromFWSWRWRDatabase S_RetrieveContainerfromFWSWRWRDatabase --> N_RetrieveContainerfromFWSWRWRDatabase_Node0 N_RetrieveContainerfromFWSWRWRDatabase_Node0 -- No --> E_RetrieveContainerfromFWSWRWRDatabase
database using the waybill root key"}:::decision N_RetrieveContainerfromFWSWRWRDatabase_Node0_action["Container segment information is
retrieved if found in the database"]:::main N_RetrieveContainerfromFWSWRWRDatabase_Node0 -- Yes --> N_RetrieveContainerfromFWSWRWRDatabase_Node0_action N_RetrieveContainerfromFWSWRWRDatabase_Node0_action --> E_RetrieveContainerfromFWSWRWRDatabase S_RetrieveContainerfromFWSWRWRDatabase --> N_RetrieveContainerfromFWSWRWRDatabase_Node0 N_RetrieveContainerfromFWSWRWRDatabase_Node0 -- No --> E_RetrieveContainerfromFWSWRWRDatabase
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Container information is not available from primary waybill system
WHEN:
The system searches the FWSWRWR database using the waybill root key
THEN:
Container segment information is retrieved if found in the database
β Consolidated Acceptance Criteria
- The system retrieves the next container equipment record using GNP function → container equipment details are loaded for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetNextContainerEquipmentRecord(["Start Step"])
E_GetNextContainerEquipmentRecord(["End Step"])
N_GetNextContainerEquipmentRecord_Node0{"The system retrieves the next
container equipment record using GNP
function"}:::decision N_GetNextContainerEquipmentRecord_Node0_action["Container equipment details are
loaded for processing"]:::main N_GetNextContainerEquipmentRecord_Node0 -- Yes --> N_GetNextContainerEquipmentRecord_Node0_action N_GetNextContainerEquipmentRecord_Node0_action --> E_GetNextContainerEquipmentRecord S_GetNextContainerEquipmentRecord --> N_GetNextContainerEquipmentRecord_Node0 N_GetNextContainerEquipmentRecord_Node0 -- No --> E_GetNextContainerEquipmentRecord
container equipment record using GNP
function"}:::decision N_GetNextContainerEquipmentRecord_Node0_action["Container equipment details are
loaded for processing"]:::main N_GetNextContainerEquipmentRecord_Node0 -- Yes --> N_GetNextContainerEquipmentRecord_Node0_action N_GetNextContainerEquipmentRecord_Node0_action --> E_GetNextContainerEquipmentRecord S_GetNextContainerEquipmentRecord --> N_GetNextContainerEquipmentRecord_Node0 N_GetNextContainerEquipmentRecord_Node0 -- No --> E_GetNextContainerEquipmentRecord
File: GCX003.cbl
GIVEN:
Container segment is found in FWSWRWR database
WHEN:
The system retrieves the next container equipment record using GNP function
THEN:
Container equipment details are loaded for processing
β Consolidated Acceptance Criteria
- The system processes the container information → the container ID is assigned to the working equipment ID variable for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveContainerIDtoEquipmentID(["Start Step"])
E_MoveContainerIDtoEquipmentID(["End Step"])
N_MoveContainerIDtoEquipmentID_Node0{"The system processes the container
information"}:::decision N_MoveContainerIDtoEquipmentID_Node0_action["The container ID is assigned to the
working equipment ID variable for
further processing"]:::main N_MoveContainerIDtoEquipmentID_Node0 -- Yes --> N_MoveContainerIDtoEquipmentID_Node0_action N_MoveContainerIDtoEquipmentID_Node0_action --> E_MoveContainerIDtoEquipmentID S_MoveContainerIDtoEquipmentID --> N_MoveContainerIDtoEquipmentID_Node0 N_MoveContainerIDtoEquipmentID_Node0 -- No --> E_MoveContainerIDtoEquipmentID
information"}:::decision N_MoveContainerIDtoEquipmentID_Node0_action["The container ID is assigned to the
working equipment ID variable for
further processing"]:::main N_MoveContainerIDtoEquipmentID_Node0 -- Yes --> N_MoveContainerIDtoEquipmentID_Node0_action N_MoveContainerIDtoEquipmentID_Node0_action --> E_MoveContainerIDtoEquipmentID S_MoveContainerIDtoEquipmentID --> N_MoveContainerIDtoEquipmentID_Node0 N_MoveContainerIDtoEquipmentID_Node0 -- No --> E_MoveContainerIDtoEquipmentID
File: GCX003.cbl
GIVEN:
A valid container equipment record is retrieved
WHEN:
The system processes the container information
THEN:
The container ID is assigned to the working equipment ID variable for further processing
β Consolidated Acceptance Criteria
- The system checks for additional containers using inquiry system data → processing continues with next container if more containers exist, otherwise container processing is marked complete
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreContainersonThisCar(["Start Step"])
E_MoreContainersonThisCar(["End Step"])
N_MoreContainersonThisCar_Node0{"The system checks for additional
containers using inquiry system data"}:::decision N_MoreContainersonThisCar_Node0_action["Processing continues with next
container if more containers exist,
otherwise container processing is
marked complete"]:::main N_MoreContainersonThisCar_Node0 -- Yes --> N_MoreContainersonThisCar_Node0_action N_MoreContainersonThisCar_Node0_action --> E_MoreContainersonThisCar S_MoreContainersonThisCar --> N_MoreContainersonThisCar_Node0 N_MoreContainersonThisCar_Node0 -- No --> E_MoreContainersonThisCar
containers using inquiry system data"}:::decision N_MoreContainersonThisCar_Node0_action["Processing continues with next
container if more containers exist,
otherwise container processing is
marked complete"]:::main N_MoreContainersonThisCar_Node0 -- Yes --> N_MoreContainersonThisCar_Node0_action N_MoreContainersonThisCar_Node0_action --> E_MoreContainersonThisCar S_MoreContainersonThisCar --> N_MoreContainersonThisCar_Node0 N_MoreContainersonThisCar_Node0 -- No --> E_MoreContainersonThisCar
File: GCX003.cbl
GIVEN:
A container has been processed for a rail car
WHEN:
The system checks for additional containers using inquiry system data
THEN:
Processing continues with next container if more containers exist, otherwise container processing is marked complete
β Consolidated Acceptance Criteria
- The system processes containers sequentially → the container sequence counter is incremented to process the next container
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementContainerSequence(["Start Step"])
E_IncrementContainerSequence(["End Step"])
N_IncrementContainerSequence_Node0{"The system processes containers
sequentially"}:::decision N_IncrementContainerSequence_Node0_action["The container sequence counter is
incremented to process the next
container"]:::main N_IncrementContainerSequence_Node0 -- Yes --> N_IncrementContainerSequence_Node0_action N_IncrementContainerSequence_Node0_action --> E_IncrementContainerSequence S_IncrementContainerSequence --> N_IncrementContainerSequence_Node0 N_IncrementContainerSequence_Node0 -- No --> E_IncrementContainerSequence
sequentially"}:::decision N_IncrementContainerSequence_Node0_action["The container sequence counter is
incremented to process the next
container"]:::main N_IncrementContainerSequence_Node0 -- Yes --> N_IncrementContainerSequence_Node0_action N_IncrementContainerSequence_Node0_action --> E_IncrementContainerSequence S_IncrementContainerSequence --> N_IncrementContainerSequence_Node0 N_IncrementContainerSequence_Node0 -- No --> E_IncrementContainerSequence
File: GCX003.cbl
GIVEN:
Multiple containers exist on the same rail car
WHEN:
The system processes containers sequentially
THEN:
The container sequence counter is incremented to process the next container
β Consolidated Acceptance Criteria
- The system validates the container ID → processing continues if container ID is not spaces or low-values, otherwise container processing is marked complete
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidContainerID(["Start Step"])
E_ValidContainerID(["End Step"])
N_ValidContainerID_Node0{"The system validates the container
ID"}:::decision N_ValidContainerID_Node0_action["Processing continues if container
ID is not spaces or low-values,
otherwise container processing is
marked complete"]:::main N_ValidContainerID_Node0 -- Yes --> N_ValidContainerID_Node0_action N_ValidContainerID_Node0_action --> E_ValidContainerID S_ValidContainerID --> N_ValidContainerID_Node0 N_ValidContainerID_Node0 -- No --> E_ValidContainerID
ID"}:::decision N_ValidContainerID_Node0_action["Processing continues if container
ID is not spaces or low-values,
otherwise container processing is
marked complete"]:::main N_ValidContainerID_Node0 -- Yes --> N_ValidContainerID_Node0_action N_ValidContainerID_Node0_action --> E_ValidContainerID S_ValidContainerID --> N_ValidContainerID_Node0 N_ValidContainerID_Node0 -- No --> E_ValidContainerID
File: GCX003.cbl
GIVEN:
A container ID is retrieved from the sequence
WHEN:
The system validates the container ID
THEN:
Processing continues if container ID is not spaces or low-values, otherwise container processing is marked complete
β Consolidated Acceptance Criteria
- The system searches the FWIQ inquiry database using waybill information → container cross-reference records are retrieved if they exist in the inquiry system
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchFWIQContainerCrossReference(["Start Step"])
E_SearchFWIQContainerCrossReference(["End Step"])
N_SearchFWIQContainerCrossReference_Node0{"The system searches the FWIQ
inquiry database using waybill
information"}:::decision N_SearchFWIQContainerCrossReference_Node0_action["Container cross-reference records
are retrieved if they exist in the
inquiry system"]:::main N_SearchFWIQContainerCrossReference_Node0 -- Yes --> N_SearchFWIQContainerCrossReference_Node0_action N_SearchFWIQContainerCrossReference_Node0_action --> E_SearchFWIQContainerCrossReference S_SearchFWIQContainerCrossReference --> N_SearchFWIQContainerCrossReference_Node0 N_SearchFWIQContainerCrossReference_Node0 -- No --> E_SearchFWIQContainerCrossReference
inquiry database using waybill
information"}:::decision N_SearchFWIQContainerCrossReference_Node0_action["Container cross-reference records
are retrieved if they exist in the
inquiry system"]:::main N_SearchFWIQContainerCrossReference_Node0 -- Yes --> N_SearchFWIQContainerCrossReference_Node0_action N_SearchFWIQContainerCrossReference_Node0_action --> E_SearchFWIQContainerCrossReference S_SearchFWIQContainerCrossReference --> N_SearchFWIQContainerCrossReference_Node0 N_SearchFWIQContainerCrossReference_Node0 -- No --> E_SearchFWIQContainerCrossReference
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Container is not found in primary FWSWRWR database
WHEN:
The system searches the FWIQ inquiry database using waybill information
THEN:
Container cross-reference records are retrieved if they exist in the inquiry system
β Consolidated Acceptance Criteria
- The system processes FWIQBOTL records with 'T/C XREF' identifier → container IDs and associated waybill information are extracted and stored in container table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractContainerInformationfromInquiry(["Start Step"])
E_ExtractContainerInformationfromInquiry(["End Step"])
N_ExtractContainerInformationfromInquiry_Node0{"The system processes FWIQBOTL
records with TC XREF identifier"}:::decision N_ExtractContainerInformationfromInquiry_Node0_action["Container IDs and associated
waybill information are extracted
and stored in container table"]:::main N_ExtractContainerInformationfromInquiry_Node0 -- Yes --> N_ExtractContainerInformationfromInquiry_Node0_action N_ExtractContainerInformationfromInquiry_Node0_action --> E_ExtractContainerInformationfromInquiry S_ExtractContainerInformationfromInquiry --> N_ExtractContainerInformationfromInquiry_Node0 N_ExtractContainerInformationfromInquiry_Node0 -- No --> E_ExtractContainerInformationfromInquiry
records with TC XREF identifier"}:::decision N_ExtractContainerInformationfromInquiry_Node0_action["Container IDs and associated
waybill information are extracted
and stored in container table"]:::main N_ExtractContainerInformationfromInquiry_Node0 -- Yes --> N_ExtractContainerInformationfromInquiry_Node0_action N_ExtractContainerInformationfromInquiry_Node0_action --> E_ExtractContainerInformationfromInquiry S_ExtractContainerInformationfromInquiry --> N_ExtractContainerInformationfromInquiry_Node0 N_ExtractContainerInformationfromInquiry_Node0 -- No --> E_ExtractContainerInformationfromInquiry
File: GCX003.cbl
GIVEN:
Container cross-reference records are found in inquiry system
WHEN:
The system processes FWIQBOTL records with 'T/C XREF' identifier
THEN:
- Container ids
- Associated waybill information are extracted
- Stored in container table
β Consolidated Acceptance Criteria
- Both FWSWRWR and FWIQ inquiry systems return no container information → error message 11 is generated indicating container not found
- System determines container cannot be found → error message 11 is generated indicating container not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateContainerNotFoundError(["Start Step"])
E_GenerateContainerNotFoundError(["End Step"])
N_GenerateContainerNotFoundError_Node0{"Both FWSWRWR and FWIQ inquiry
systems return no container
information"}:::decision N_GenerateContainerNotFoundError_Node0_action["Error message 11 is generated
indicating container not found"]:::main N_GenerateContainerNotFoundError_Node0 -- Yes --> N_GenerateContainerNotFoundError_Node0_action N_GenerateContainerNotFoundError_Node0_action --> E_GenerateContainerNotFoundError S_GenerateContainerNotFoundError --> N_GenerateContainerNotFoundError_Node0 N_GenerateContainerNotFoundError_Node1{"System determines container cannot
be found"}:::decision N_GenerateContainerNotFoundError_Node1_action["Error message 11 is generated
indicating container not found"]:::main N_GenerateContainerNotFoundError_Node1 -- Yes --> N_GenerateContainerNotFoundError_Node1_action N_GenerateContainerNotFoundError_Node1_action --> E_GenerateContainerNotFoundError N_GenerateContainerNotFoundError_Node0 -- No --> N_GenerateContainerNotFoundError_Node1 N_GenerateContainerNotFoundError_Node1 -- No --> E_GenerateContainerNotFoundError
systems return no container
information"}:::decision N_GenerateContainerNotFoundError_Node0_action["Error message 11 is generated
indicating container not found"]:::main N_GenerateContainerNotFoundError_Node0 -- Yes --> N_GenerateContainerNotFoundError_Node0_action N_GenerateContainerNotFoundError_Node0_action --> E_GenerateContainerNotFoundError S_GenerateContainerNotFoundError --> N_GenerateContainerNotFoundError_Node0 N_GenerateContainerNotFoundError_Node1{"System determines container cannot
be found"}:::decision N_GenerateContainerNotFoundError_Node1_action["Error message 11 is generated
indicating container not found"]:::main N_GenerateContainerNotFoundError_Node1 -- Yes --> N_GenerateContainerNotFoundError_Node1_action N_GenerateContainerNotFoundError_Node1_action --> E_GenerateContainerNotFoundError N_GenerateContainerNotFoundError_Node0 -- No --> N_GenerateContainerNotFoundError_Node1 N_GenerateContainerNotFoundError_Node1 -- No --> E_GenerateContainerNotFoundError
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Container processing is required but container is not found in any database
WHEN:
- Both fwswrwr
- Fwiq inquiry systems return no container information
THEN:
Error message 11 is generated indicating container not found
File: GCX003.cbl
GIVEN:
Container lookup has failed in all available databases
WHEN:
System determines container cannot be found
THEN:
Error message 11 is generated indicating container not found
β Consolidated Acceptance Criteria
- The current report line at index RPT-IDX is blank → set the report line as end of report marker
- The current report line at the report index is blank → set the report end marker flag for that line to indicate end of report
- The current report line at RPT-IDX is blank → set the report end marker flag for that line
- The current report line at RPT-IDX is blank → set the report end marker flag for that line
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReportEndMarker(["Start Step"])
E_SetReportEndMarker(["End Step"])
N_SetReportEndMarker_Node0{"The current report line at index
RPT-IDX is blank"}:::decision N_SetReportEndMarker_Node0_action["Set the report line as end of
report marker"]:::main N_SetReportEndMarker_Node0 -- Yes --> N_SetReportEndMarker_Node0_action N_SetReportEndMarker_Node0_action --> E_SetReportEndMarker S_SetReportEndMarker --> N_SetReportEndMarker_Node0 N_SetReportEndMarker_Node1{"The current report line at the
report index is blank"}:::decision N_SetReportEndMarker_Node1_action["Set the report end marker flag for
that line to indicate end of report"]:::main N_SetReportEndMarker_Node1 -- Yes --> N_SetReportEndMarker_Node1_action N_SetReportEndMarker_Node1_action --> E_SetReportEndMarker N_SetReportEndMarker_Node0 -- No --> N_SetReportEndMarker_Node1 N_SetReportEndMarker_Node2{"The current report line at RPT-IDX
is blank"}:::decision N_SetReportEndMarker_Node2_action["Set the report end marker flag for
that line"]:::main N_SetReportEndMarker_Node2 -- Yes --> N_SetReportEndMarker_Node2_action N_SetReportEndMarker_Node2_action --> E_SetReportEndMarker N_SetReportEndMarker_Node1 -- No --> N_SetReportEndMarker_Node2 N_SetReportEndMarker_Node3{"The current report line at RPT-IDX
is blank"}:::decision N_SetReportEndMarker_Node3_action["Set the report end marker flag for
that line"]:::main N_SetReportEndMarker_Node3 -- Yes --> N_SetReportEndMarker_Node3_action N_SetReportEndMarker_Node3_action --> E_SetReportEndMarker N_SetReportEndMarker_Node2 -- No --> N_SetReportEndMarker_Node3 N_SetReportEndMarker_Node3 -- No --> E_SetReportEndMarker
RPT-IDX is blank"}:::decision N_SetReportEndMarker_Node0_action["Set the report line as end of
report marker"]:::main N_SetReportEndMarker_Node0 -- Yes --> N_SetReportEndMarker_Node0_action N_SetReportEndMarker_Node0_action --> E_SetReportEndMarker S_SetReportEndMarker --> N_SetReportEndMarker_Node0 N_SetReportEndMarker_Node1{"The current report line at the
report index is blank"}:::decision N_SetReportEndMarker_Node1_action["Set the report end marker flag for
that line to indicate end of report"]:::main N_SetReportEndMarker_Node1 -- Yes --> N_SetReportEndMarker_Node1_action N_SetReportEndMarker_Node1_action --> E_SetReportEndMarker N_SetReportEndMarker_Node0 -- No --> N_SetReportEndMarker_Node1 N_SetReportEndMarker_Node2{"The current report line at RPT-IDX
is blank"}:::decision N_SetReportEndMarker_Node2_action["Set the report end marker flag for
that line"]:::main N_SetReportEndMarker_Node2 -- Yes --> N_SetReportEndMarker_Node2_action N_SetReportEndMarker_Node2_action --> E_SetReportEndMarker N_SetReportEndMarker_Node1 -- No --> N_SetReportEndMarker_Node2 N_SetReportEndMarker_Node3{"The current report line at RPT-IDX
is blank"}:::decision N_SetReportEndMarker_Node3_action["Set the report end marker flag for
that line"]:::main N_SetReportEndMarker_Node3 -- Yes --> N_SetReportEndMarker_Node3_action N_SetReportEndMarker_Node3_action --> E_SetReportEndMarker N_SetReportEndMarker_Node2 -- No --> N_SetReportEndMarker_Node3 N_SetReportEndMarker_Node3 -- No --> E_SetReportEndMarker
File: GCX003.cbl
GIVEN:
A report is being finalized
WHEN:
The current report line at index RPT-IDX is blank
THEN:
Set the report line as end of report marker
File: GCX003.cbl
GIVEN:
A report is being finalized
WHEN:
The current report line at the report index is blank
THEN:
Set the report end marker flag for that line to indicate end of report
File: GCX003.cbl
GIVEN:
A report is being finalized
WHEN:
The current report line at RPT-IDX is blank
THEN:
Set the report end marker flag for that line
File: GCX003.cbl
GIVEN:
A report is being finalized
WHEN:
The current report line at RPT-IDX is blank
THEN:
Set the report end marker flag for that line
β Consolidated Acceptance Criteria
- The report processing reaches the end → store the current RPT-IDX as RPT-LAST-LINE and NEW-RPT-IDX as NEW-RPT-LAST-LINE
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreLastLineIndex(["Start Step"])
E_StoreLastLineIndex(["End Step"])
N_StoreLastLineIndex_Node0{"The report processing reaches the
end"}:::decision N_StoreLastLineIndex_Node0_action["Store the current RPT-IDX as
RPT-LAST-LINE and NEW-RPT-IDX as
NEW-RPT-LAST-LINE"]:::main N_StoreLastLineIndex_Node0 -- Yes --> N_StoreLastLineIndex_Node0_action N_StoreLastLineIndex_Node0_action --> E_StoreLastLineIndex S_StoreLastLineIndex --> N_StoreLastLineIndex_Node0 N_StoreLastLineIndex_Node0 -- No --> E_StoreLastLineIndex
end"}:::decision N_StoreLastLineIndex_Node0_action["Store the current RPT-IDX as
RPT-LAST-LINE and NEW-RPT-IDX as
NEW-RPT-LAST-LINE"]:::main N_StoreLastLineIndex_Node0 -- Yes --> N_StoreLastLineIndex_Node0_action N_StoreLastLineIndex_Node0_action --> E_StoreLastLineIndex S_StoreLastLineIndex --> N_StoreLastLineIndex_Node0 N_StoreLastLineIndex_Node0 -- No --> E_StoreLastLineIndex
File: GCX003.cbl
GIVEN:
A report is being finalized
WHEN:
The report processing reaches the end
THEN:
- Store the current rpt-idx as rpt-last-line
- New-rpt-idx as new-rpt-last-line
β Consolidated Acceptance Criteria
- Setting up the first header line → set RPT-HEADER-LINE-1 flag to TRUE for line 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateHeaderLine1TrainInformation(["Start Step"])
E_CreateHeaderLine1TrainInformation(["End Step"])
N_CreateHeaderLine1TrainInformation_Node0{"Setting up the first header line"}:::decision
N_CreateHeaderLine1TrainInformation_Node0_action["Set RPT-HEADER-LINE-1 flag to TRUE
for line 1"]:::main N_CreateHeaderLine1TrainInformation_Node0 -- Yes --> N_CreateHeaderLine1TrainInformation_Node0_action N_CreateHeaderLine1TrainInformation_Node0_action --> E_CreateHeaderLine1TrainInformation S_CreateHeaderLine1TrainInformation --> N_CreateHeaderLine1TrainInformation_Node0 N_CreateHeaderLine1TrainInformation_Node0 -- No --> E_CreateHeaderLine1TrainInformation
for line 1"]:::main N_CreateHeaderLine1TrainInformation_Node0 -- Yes --> N_CreateHeaderLine1TrainInformation_Node0_action N_CreateHeaderLine1TrainInformation_Node0_action --> E_CreateHeaderLine1TrainInformation S_CreateHeaderLine1TrainInformation --> N_CreateHeaderLine1TrainInformation_Node0 N_CreateHeaderLine1TrainInformation_Node0 -- No --> E_CreateHeaderLine1TrainInformation
File: GCX003.cbl
GIVEN:
A report header is being created
WHEN:
Setting up the first header line
THEN:
Set RPT-HEADER-LINE-1 flag to TRUE for line 1
β Consolidated Acceptance Criteria
- Adding train identification information → move REQ-TRAIN-ID to RPT-HDR-TRAIN-ID for line 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainIDinHeader(["Start Step"])
E_SetTrainIDinHeader(["End Step"])
N_SetTrainIDinHeader_Node0{"Adding train identification
information"}:::decision N_SetTrainIDinHeader_Node0_action["Move REQ-TRAIN-ID to
RPT-HDR-TRAIN-ID for line 1"]:::main N_SetTrainIDinHeader_Node0 -- Yes --> N_SetTrainIDinHeader_Node0_action N_SetTrainIDinHeader_Node0_action --> E_SetTrainIDinHeader S_SetTrainIDinHeader --> N_SetTrainIDinHeader_Node0 N_SetTrainIDinHeader_Node0 -- No --> E_SetTrainIDinHeader
information"}:::decision N_SetTrainIDinHeader_Node0_action["Move REQ-TRAIN-ID to
RPT-HDR-TRAIN-ID for line 1"]:::main N_SetTrainIDinHeader_Node0 -- Yes --> N_SetTrainIDinHeader_Node0_action N_SetTrainIDinHeader_Node0_action --> E_SetTrainIDinHeader S_SetTrainIDinHeader --> N_SetTrainIDinHeader_Node0 N_SetTrainIDinHeader_Node0 -- No --> E_SetTrainIDinHeader
File: GCX003.cbl
GIVEN:
A report header line 1 is being populated
WHEN:
Adding train identification information
THEN:
Move REQ-TRAIN-ID to RPT-HDR-TRAIN-ID for line 1
β Consolidated Acceptance Criteria
- Adding origin station information → move GCSTBRT-SC-US-STAT-NAME to RPT-HDR-ORIGIN for line 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetOriginStationNameinHeader(["Start Step"])
E_SetOriginStationNameinHeader(["End Step"])
N_SetOriginStationNameinHeader_Node0{"Adding origin station information"}:::decision
N_SetOriginStationNameinHeader_Node0_action["Move GCSTBRT-SC-US-STAT-NAME to
RPT-HDR-ORIGIN for line 1"]:::main N_SetOriginStationNameinHeader_Node0 -- Yes --> N_SetOriginStationNameinHeader_Node0_action N_SetOriginStationNameinHeader_Node0_action --> E_SetOriginStationNameinHeader S_SetOriginStationNameinHeader --> N_SetOriginStationNameinHeader_Node0 N_SetOriginStationNameinHeader_Node0 -- No --> E_SetOriginStationNameinHeader
RPT-HDR-ORIGIN for line 1"]:::main N_SetOriginStationNameinHeader_Node0 -- Yes --> N_SetOriginStationNameinHeader_Node0_action N_SetOriginStationNameinHeader_Node0_action --> E_SetOriginStationNameinHeader S_SetOriginStationNameinHeader --> N_SetOriginStationNameinHeader_Node0 N_SetOriginStationNameinHeader_Node0 -- No --> E_SetOriginStationNameinHeader
File: GCX003.cbl
GIVEN:
A report header line 1 is being populated
WHEN:
Adding origin station information
THEN:
Move GCSTBRT-SC-US-STAT-NAME to RPT-HDR-ORIGIN for line 1
β Consolidated Acceptance Criteria
- Setting up the second header line → set RPT-HEADER-LINE-2 flag to TRUE for line 2
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateHeaderLine2UserInformation(["Start Step"])
E_CreateHeaderLine2UserInformation(["End Step"])
N_CreateHeaderLine2UserInformation_Node0{"Setting up the second header line"}:::decision
N_CreateHeaderLine2UserInformation_Node0_action["Set RPT-HEADER-LINE-2 flag to TRUE
for line 2"]:::main N_CreateHeaderLine2UserInformation_Node0 -- Yes --> N_CreateHeaderLine2UserInformation_Node0_action N_CreateHeaderLine2UserInformation_Node0_action --> E_CreateHeaderLine2UserInformation S_CreateHeaderLine2UserInformation --> N_CreateHeaderLine2UserInformation_Node0 N_CreateHeaderLine2UserInformation_Node0 -- No --> E_CreateHeaderLine2UserInformation
for line 2"]:::main N_CreateHeaderLine2UserInformation_Node0 -- Yes --> N_CreateHeaderLine2UserInformation_Node0_action N_CreateHeaderLine2UserInformation_Node0_action --> E_CreateHeaderLine2UserInformation S_CreateHeaderLine2UserInformation --> N_CreateHeaderLine2UserInformation_Node0 N_CreateHeaderLine2UserInformation_Node0 -- No --> E_CreateHeaderLine2UserInformation
File: GCX003.cbl
GIVEN:
A report header is being created
WHEN:
Setting up the second header line
THEN:
Set RPT-HEADER-LINE-2 flag to TRUE for line 2
β Consolidated Acceptance Criteria
- Adding user identification information → move CC-ACF2-USERID from CCCOM to RPT-HDR-USER-ID for line 2
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetUserIDinHeader(["Start Step"])
E_SetUserIDinHeader(["End Step"])
N_SetUserIDinHeader_Node0{"Adding user identification
information"}:::decision N_SetUserIDinHeader_Node0_action["Move CC-ACF2-USERID from CCCOM to
RPT-HDR-USER-ID for line 2"]:::main N_SetUserIDinHeader_Node0 -- Yes --> N_SetUserIDinHeader_Node0_action N_SetUserIDinHeader_Node0_action --> E_SetUserIDinHeader S_SetUserIDinHeader --> N_SetUserIDinHeader_Node0 N_SetUserIDinHeader_Node0 -- No --> E_SetUserIDinHeader
information"}:::decision N_SetUserIDinHeader_Node0_action["Move CC-ACF2-USERID from CCCOM to
RPT-HDR-USER-ID for line 2"]:::main N_SetUserIDinHeader_Node0 -- Yes --> N_SetUserIDinHeader_Node0_action N_SetUserIDinHeader_Node0_action --> E_SetUserIDinHeader S_SetUserIDinHeader --> N_SetUserIDinHeader_Node0 N_SetUserIDinHeader_Node0 -- No --> E_SetUserIDinHeader
File: GCX003.cbl
GIVEN:
A report header line 2 is being populated
WHEN:
Adding user identification information
THEN:
Move CC-ACF2-USERID from CCCOM to RPT-HDR-USER-ID for line 2
β Consolidated Acceptance Criteria
- Adding terminal identification information → move CC-ORIG-LTERM from CCCOM to RPT-HDR-LTERM for line 2
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTerminalIDinHeader(["Start Step"])
E_SetTerminalIDinHeader(["End Step"])
N_SetTerminalIDinHeader_Node0{"Adding terminal identification
information"}:::decision N_SetTerminalIDinHeader_Node0_action["Move CC-ORIG-LTERM from CCCOM to
RPT-HDR-LTERM for line 2"]:::main N_SetTerminalIDinHeader_Node0 -- Yes --> N_SetTerminalIDinHeader_Node0_action N_SetTerminalIDinHeader_Node0_action --> E_SetTerminalIDinHeader S_SetTerminalIDinHeader --> N_SetTerminalIDinHeader_Node0 N_SetTerminalIDinHeader_Node0 -- No --> E_SetTerminalIDinHeader
information"}:::decision N_SetTerminalIDinHeader_Node0_action["Move CC-ORIG-LTERM from CCCOM to
RPT-HDR-LTERM for line 2"]:::main N_SetTerminalIDinHeader_Node0 -- Yes --> N_SetTerminalIDinHeader_Node0_action N_SetTerminalIDinHeader_Node0_action --> E_SetTerminalIDinHeader S_SetTerminalIDinHeader --> N_SetTerminalIDinHeader_Node0 N_SetTerminalIDinHeader_Node0 -- No --> E_SetTerminalIDinHeader
File: GCX003.cbl
GIVEN:
A report header line 2 is being populated
WHEN:
Adding terminal identification information
THEN:
Move CC-ORIG-LTERM from CCCOM to RPT-HDR-LTERM for line 2
β Consolidated Acceptance Criteria
- Adding processing date information → move CC-MACHINE-DATE from CCCOM to RPT-HDR-DATE for line 2
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetProcessingDateinHeader(["Start Step"])
E_SetProcessingDateinHeader(["End Step"])
N_SetProcessingDateinHeader_Node0{"Adding processing date information"}:::decision
N_SetProcessingDateinHeader_Node0_action["Move CC-MACHINE-DATE from CCCOM to
RPT-HDR-DATE for line 2"]:::main N_SetProcessingDateinHeader_Node0 -- Yes --> N_SetProcessingDateinHeader_Node0_action N_SetProcessingDateinHeader_Node0_action --> E_SetProcessingDateinHeader S_SetProcessingDateinHeader --> N_SetProcessingDateinHeader_Node0 N_SetProcessingDateinHeader_Node0 -- No --> E_SetProcessingDateinHeader
RPT-HDR-DATE for line 2"]:::main N_SetProcessingDateinHeader_Node0 -- Yes --> N_SetProcessingDateinHeader_Node0_action N_SetProcessingDateinHeader_Node0_action --> E_SetProcessingDateinHeader S_SetProcessingDateinHeader --> N_SetProcessingDateinHeader_Node0 N_SetProcessingDateinHeader_Node0 -- No --> E_SetProcessingDateinHeader
File: GCX003.cbl
GIVEN:
A report header line 2 is being populated
WHEN:
Adding processing date information
THEN:
Move CC-MACHINE-DATE from CCCOM to RPT-HDR-DATE for line 2
β Consolidated Acceptance Criteria
- Adding processing time information → move CC-MACHINE-HOUR and CC-MACHINE-MIN from CCCOM to RPT-HDR-HOUR and RPT-HDR-MIN for line 2
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetProcessingTimeinHeader(["Start Step"])
E_SetProcessingTimeinHeader(["End Step"])
N_SetProcessingTimeinHeader_Node0{"Adding processing time information"}:::decision
N_SetProcessingTimeinHeader_Node0_action["Move CC-MACHINE-HOUR and
CC-MACHINE-MIN from CCCOM to
RPT-HDR-HOUR and RPT-HDR-MIN for
line 2"]:::main N_SetProcessingTimeinHeader_Node0 -- Yes --> N_SetProcessingTimeinHeader_Node0_action N_SetProcessingTimeinHeader_Node0_action --> E_SetProcessingTimeinHeader S_SetProcessingTimeinHeader --> N_SetProcessingTimeinHeader_Node0 N_SetProcessingTimeinHeader_Node0 -- No --> E_SetProcessingTimeinHeader
CC-MACHINE-MIN from CCCOM to
RPT-HDR-HOUR and RPT-HDR-MIN for
line 2"]:::main N_SetProcessingTimeinHeader_Node0 -- Yes --> N_SetProcessingTimeinHeader_Node0_action N_SetProcessingTimeinHeader_Node0_action --> E_SetProcessingTimeinHeader S_SetProcessingTimeinHeader --> N_SetProcessingTimeinHeader_Node0 N_SetProcessingTimeinHeader_Node0 -- No --> E_SetProcessingTimeinHeader
File: GCX003.cbl
GIVEN:
A report header line 2 is being populated
WHEN:
Adding processing time information
THEN:
- Move cc-machine-hour
- Cc-machine-min from cccom to rpt-hdr-hour
- Rpt-hdr-min for line 2
β Consolidated Acceptance Criteria
- Setting up the third header line → set RPT-HEADER-LINE-3 flag to TRUE for line 3
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateHeaderLine3ActionType(["Start Step"])
E_CreateHeaderLine3ActionType(["End Step"])
N_CreateHeaderLine3ActionType_Node0{"Setting up the third header line"}:::decision
N_CreateHeaderLine3ActionType_Node0_action["Set RPT-HEADER-LINE-3 flag to TRUE
for line 3"]:::main N_CreateHeaderLine3ActionType_Node0 -- Yes --> N_CreateHeaderLine3ActionType_Node0_action N_CreateHeaderLine3ActionType_Node0_action --> E_CreateHeaderLine3ActionType S_CreateHeaderLine3ActionType --> N_CreateHeaderLine3ActionType_Node0 N_CreateHeaderLine3ActionType_Node0 -- No --> E_CreateHeaderLine3ActionType
for line 3"]:::main N_CreateHeaderLine3ActionType_Node0 -- Yes --> N_CreateHeaderLine3ActionType_Node0_action N_CreateHeaderLine3ActionType_Node0_action --> E_CreateHeaderLine3ActionType S_CreateHeaderLine3ActionType --> N_CreateHeaderLine3ActionType_Node0 N_CreateHeaderLine3ActionType_Node0 -- No --> E_CreateHeaderLine3ActionType
File: GCX003.cbl
GIVEN:
A report header is being created
WHEN:
Setting up the third header line
THEN:
Set RPT-HEADER-LINE-3 flag to TRUE for line 3
β Consolidated Acceptance Criteria
- The request action type is SEND → perform C150-SEND-REPORT-WRAPUP to set SEND-specific header information
- The request action type is SEND → set the header to indicate SEND action type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSENDActionHeader(["Start Step"])
E_SetSENDActionHeader(["End Step"])
N_SetSENDActionHeader_Node0{"The request action type is SEND"}:::decision
N_SetSENDActionHeader_Node0_action["Perform C150-SEND-REPORT-WRAPUP to
set SEND-specific header information"]:::main N_SetSENDActionHeader_Node0 -- Yes --> N_SetSENDActionHeader_Node0_action N_SetSENDActionHeader_Node0_action --> E_SetSENDActionHeader S_SetSENDActionHeader --> N_SetSENDActionHeader_Node0 N_SetSENDActionHeader_Node1{"The request action type is SEND"}:::decision N_SetSENDActionHeader_Node1_action["Set the header to indicate SEND
action type"]:::main N_SetSENDActionHeader_Node1 -- Yes --> N_SetSENDActionHeader_Node1_action N_SetSENDActionHeader_Node1_action --> E_SetSENDActionHeader N_SetSENDActionHeader_Node0 -- No --> N_SetSENDActionHeader_Node1 N_SetSENDActionHeader_Node1 -- No --> E_SetSENDActionHeader
set SEND-specific header information"]:::main N_SetSENDActionHeader_Node0 -- Yes --> N_SetSENDActionHeader_Node0_action N_SetSENDActionHeader_Node0_action --> E_SetSENDActionHeader S_SetSENDActionHeader --> N_SetSENDActionHeader_Node0 N_SetSENDActionHeader_Node1{"The request action type is SEND"}:::decision N_SetSENDActionHeader_Node1_action["Set the header to indicate SEND
action type"]:::main N_SetSENDActionHeader_Node1 -- Yes --> N_SetSENDActionHeader_Node1_action N_SetSENDActionHeader_Node1_action --> E_SetSENDActionHeader N_SetSENDActionHeader_Node0 -- No --> N_SetSENDActionHeader_Node1 N_SetSENDActionHeader_Node1 -- No --> E_SetSENDActionHeader
File: GCX003.cbl
GIVEN:
A report header line 3 is being populated
WHEN:
The request action type is SEND
THEN:
Perform C150-SEND-REPORT-WRAPUP to set SEND-specific header information
File: GCX003.cbl
GIVEN:
A train manifest processing request
WHEN:
The request action type is SEND
THEN:
Set the header to indicate SEND action type
β Consolidated Acceptance Criteria
- The request action type is REPORT → set RPT-HDR-REPORT flag to TRUE for line 3
- The request action type is REPORT → set the header to indicate REPORT action and determine result status based on errors and warnings
- Setting the processing result status → if no errors and no warnings, set result as NO MESSAGE, otherwise set result as MESSAGE with warning and error counts including DSP count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetREPORTActionHeader(["Start Step"])
E_SetREPORTActionHeader(["End Step"])
N_SetREPORTActionHeader_Node0{"The request action type is REPORT"}:::decision
N_SetREPORTActionHeader_Node0_action["Set RPT-HDR-REPORT flag to TRUE for
line 3"]:::main N_SetREPORTActionHeader_Node0 -- Yes --> N_SetREPORTActionHeader_Node0_action N_SetREPORTActionHeader_Node0_action --> E_SetREPORTActionHeader S_SetREPORTActionHeader --> N_SetREPORTActionHeader_Node0 N_SetREPORTActionHeader_Node1{"The request action type is REPORT"}:::decision N_SetREPORTActionHeader_Node1_action["Set the header to indicate REPORT
action and determine result status
based on errors and warnings"]:::main N_SetREPORTActionHeader_Node1 -- Yes --> N_SetREPORTActionHeader_Node1_action N_SetREPORTActionHeader_Node1_action --> E_SetREPORTActionHeader N_SetREPORTActionHeader_Node0 -- No --> N_SetREPORTActionHeader_Node1 N_SetREPORTActionHeader_Node2{"Setting the processing result
status"}:::decision N_SetREPORTActionHeader_Node2_action["If no errors and no warnings, set
result as NO MESSAGE, otherwise set
result as MESSAGE with warning and
error counts including DSP count"]:::main N_SetREPORTActionHeader_Node2 -- Yes --> N_SetREPORTActionHeader_Node2_action N_SetREPORTActionHeader_Node2_action --> E_SetREPORTActionHeader N_SetREPORTActionHeader_Node1 -- No --> N_SetREPORTActionHeader_Node2 N_SetREPORTActionHeader_Node2 -- No --> E_SetREPORTActionHeader
line 3"]:::main N_SetREPORTActionHeader_Node0 -- Yes --> N_SetREPORTActionHeader_Node0_action N_SetREPORTActionHeader_Node0_action --> E_SetREPORTActionHeader S_SetREPORTActionHeader --> N_SetREPORTActionHeader_Node0 N_SetREPORTActionHeader_Node1{"The request action type is REPORT"}:::decision N_SetREPORTActionHeader_Node1_action["Set the header to indicate REPORT
action and determine result status
based on errors and warnings"]:::main N_SetREPORTActionHeader_Node1 -- Yes --> N_SetREPORTActionHeader_Node1_action N_SetREPORTActionHeader_Node1_action --> E_SetREPORTActionHeader N_SetREPORTActionHeader_Node0 -- No --> N_SetREPORTActionHeader_Node1 N_SetREPORTActionHeader_Node2{"Setting the processing result
status"}:::decision N_SetREPORTActionHeader_Node2_action["If no errors and no warnings, set
result as NO MESSAGE, otherwise set
result as MESSAGE with warning and
error counts including DSP count"]:::main N_SetREPORTActionHeader_Node2 -- Yes --> N_SetREPORTActionHeader_Node2_action N_SetREPORTActionHeader_Node2_action --> E_SetREPORTActionHeader N_SetREPORTActionHeader_Node1 -- No --> N_SetREPORTActionHeader_Node2 N_SetREPORTActionHeader_Node2 -- No --> E_SetREPORTActionHeader
File: GCX003.cbl
GIVEN:
A report header line 3 is being populated
WHEN:
The request action type is REPORT
THEN:
Set RPT-HDR-REPORT flag to TRUE for line 3
File: GCX003.cbl
GIVEN:
A train manifest processing request
WHEN:
The request action type is REPORT
THEN:
- Set the header to indicate report action
- Determine result status based on errors
- Warnings
File: GCX003.cbl
GIVEN:
A REPORT action has been processed
WHEN:
Setting the processing result status
THEN:
- If no errors
- No warnings, set result as no message, otherwise set result as message with warning
- Error counts including dsp count
β Consolidated Acceptance Criteria
- The request action type is neither SEND nor REPORT → move REQ-TYPE to RPT-HDR-TYPE for line 3 and set RPT-RESULT-ABORT flag to TRUE for line 3
- The request action type is neither SEND nor REPORT → set the header to show the request type and mark result as ABORT
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetOTHERActionHeader(["Start Step"])
E_SetOTHERActionHeader(["End Step"])
N_SetOTHERActionHeader_Node0{"The request action type is neither
SEND nor REPORT"}:::decision N_SetOTHERActionHeader_Node0_action["Move REQ-TYPE to RPT-HDR-TYPE for
line 3 and set RPT-RESULT-ABORT flag
to TRUE for line 3"]:::exclusion N_SetOTHERActionHeader_Node0 -- Yes -->|Alternative| N_SetOTHERActionHeader_Node0_action N_SetOTHERActionHeader_Node0_action --> E_SetOTHERActionHeader S_SetOTHERActionHeader --> N_SetOTHERActionHeader_Node0 N_SetOTHERActionHeader_Node1{"The request action type is neither
SEND nor REPORT"}:::decision N_SetOTHERActionHeader_Node1_action["Set the header to show the request
type and mark result as ABORT"]:::exclusion N_SetOTHERActionHeader_Node1 -- Yes -->|Alternative| N_SetOTHERActionHeader_Node1_action N_SetOTHERActionHeader_Node1_action --> E_SetOTHERActionHeader N_SetOTHERActionHeader_Node0 -- No --> N_SetOTHERActionHeader_Node1 N_SetOTHERActionHeader_Node1 -- No --> E_SetOTHERActionHeader
SEND nor REPORT"}:::decision N_SetOTHERActionHeader_Node0_action["Move REQ-TYPE to RPT-HDR-TYPE for
line 3 and set RPT-RESULT-ABORT flag
to TRUE for line 3"]:::exclusion N_SetOTHERActionHeader_Node0 -- Yes -->|Alternative| N_SetOTHERActionHeader_Node0_action N_SetOTHERActionHeader_Node0_action --> E_SetOTHERActionHeader S_SetOTHERActionHeader --> N_SetOTHERActionHeader_Node0 N_SetOTHERActionHeader_Node1{"The request action type is neither
SEND nor REPORT"}:::decision N_SetOTHERActionHeader_Node1_action["Set the header to show the request
type and mark result as ABORT"]:::exclusion N_SetOTHERActionHeader_Node1 -- Yes -->|Alternative| N_SetOTHERActionHeader_Node1_action N_SetOTHERActionHeader_Node1_action --> E_SetOTHERActionHeader N_SetOTHERActionHeader_Node0 -- No --> N_SetOTHERActionHeader_Node1 N_SetOTHERActionHeader_Node1 -- No --> E_SetOTHERActionHeader
File: GCX003.cbl
GIVEN:
A report header line 3 is being populated
WHEN:
The request action type is neither SEND nor REPORT
THEN:
- Move req-type to rpt-hdr-type for line 3
- Set rpt-result-abort flag to true for line 3
File: GCX003.cbl
GIVEN:
A train manifest processing request
WHEN:
The request action type is neither SEND nor REPORT
THEN:
- Set the header to show the request type
- Mark result as abort
β Consolidated Acceptance Criteria
- The processing status needs to be determined → check if there are no errors and no warnings to set result as NO-MSG, otherwise set result as MSG with error and warning counts
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessingStatus(["Start Step"])
E_ProcessingStatus(["End Step"])
N_ProcessingStatus_Node0{"The processing status needs to be
determined"}:::decision N_ProcessingStatus_Node0_action["Check if there are no errors and no
warnings to set result as NO-MSG,
otherwise set result as MSG with
error and warning counts"]:::main N_ProcessingStatus_Node0 -- Yes --> N_ProcessingStatus_Node0_action N_ProcessingStatus_Node0_action --> E_ProcessingStatus S_ProcessingStatus --> N_ProcessingStatus_Node0 N_ProcessingStatus_Node0 -- No --> E_ProcessingStatus
determined"}:::decision N_ProcessingStatus_Node0_action["Check if there are no errors and no
warnings to set result as NO-MSG,
otherwise set result as MSG with
error and warning counts"]:::main N_ProcessingStatus_Node0 -- Yes --> N_ProcessingStatus_Node0_action N_ProcessingStatus_Node0_action --> E_ProcessingStatus S_ProcessingStatus --> N_ProcessingStatus_Node0 N_ProcessingStatus_Node0 -- No --> E_ProcessingStatus
File: GCX003.cbl
GIVEN:
A SEND or REPORT action header is being configured
WHEN:
The processing status needs to be determined
THEN:
- Check if there are no errors
- No warnings to set result as no-msg, otherwise set result as msg with error
- Warning counts
β Consolidated Acceptance Criteria
- There are no errors (RPT-NO-ERROR) and no spawn processing (RPT-NO-SPAWN) → set RPT-RESULT-SENT flag to TRUE for line 3 and move RPT-WARNING-CNT to RPT-WRN-CNT1 for line 3
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetResultasSENT(["Start Step"])
E_SetResultasSENT(["End Step"])
N_SetResultasSENT_Node0{"There are no errors RPT-NO-ERROR
and no spawn processing RPT-NO-SPAWN"}:::decision N_SetResultasSENT_Node0_action["Set RPT-RESULT-SENT flag to TRUE
for line 3 and move RPT-WARNING-CNT
to RPT-WRN-CNT1 for line 3"]:::exclusion N_SetResultasSENT_Node0 -- Yes -->|Alternative| N_SetResultasSENT_Node0_action N_SetResultasSENT_Node0_action --> E_SetResultasSENT S_SetResultasSENT --> N_SetResultasSENT_Node0 N_SetResultasSENT_Node0 -- No --> E_SetResultasSENT
and no spawn processing RPT-NO-SPAWN"}:::decision N_SetResultasSENT_Node0_action["Set RPT-RESULT-SENT flag to TRUE
for line 3 and move RPT-WARNING-CNT
to RPT-WRN-CNT1 for line 3"]:::exclusion N_SetResultasSENT_Node0 -- Yes -->|Alternative| N_SetResultasSENT_Node0_action N_SetResultasSENT_Node0_action --> E_SetResultasSENT S_SetResultasSENT --> N_SetResultasSENT_Node0 N_SetResultasSENT_Node0 -- No --> E_SetResultasSENT
File: GCX003.cbl
GIVEN:
A SEND action is being processed
WHEN:
There are no errors (RPT-NO-ERROR) and no spawn processing (RPT-NO-SPAWN)
THEN:
- Set rpt-result-sent flag to true for line 3
- Move rpt-warning-cnt to rpt-wrn-cnt1 for line 3
β Consolidated Acceptance Criteria
- There are errors or spawn processing is required → set RPT-RESULT-NO-SENT flag to TRUE for line 3, move RPT-WARNING-CNT to RPT-WRN-CNT2 for line 3, add RPT-SPAWN-CNT to RPT-ERROR-CNT, and move RPT-ERROR-CNT to RPT-ERR-CNT2 for line 3
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetResultasNOTSENT(["Start Step"])
E_SetResultasNOTSENT(["End Step"])
N_SetResultasNOTSENT_Node0{"There are errors or spawn
processing is required"}:::decision N_SetResultasNOTSENT_Node0_action["Set RPT-RESULT-NO-SENT flag to TRUE
for line 3, move RPT-WARNING-CNT to
RPT-WRN-CNT2 for line 3, add
RPT-SPAWN-CNT to RPT-ERROR-CNT, and
move RPT-ERROR-CNT to RPT-ERR-CNT2
for line 3"]:::main N_SetResultasNOTSENT_Node0 -- Yes --> N_SetResultasNOTSENT_Node0_action N_SetResultasNOTSENT_Node0_action --> E_SetResultasNOTSENT S_SetResultasNOTSENT --> N_SetResultasNOTSENT_Node0 N_SetResultasNOTSENT_Node0 -- No --> E_SetResultasNOTSENT
processing is required"}:::decision N_SetResultasNOTSENT_Node0_action["Set RPT-RESULT-NO-SENT flag to TRUE
for line 3, move RPT-WARNING-CNT to
RPT-WRN-CNT2 for line 3, add
RPT-SPAWN-CNT to RPT-ERROR-CNT, and
move RPT-ERROR-CNT to RPT-ERR-CNT2
for line 3"]:::main N_SetResultasNOTSENT_Node0 -- Yes --> N_SetResultasNOTSENT_Node0_action N_SetResultasNOTSENT_Node0_action --> E_SetResultasNOTSENT S_SetResultasNOTSENT --> N_SetResultasNOTSENT_Node0 N_SetResultasNOTSENT_Node0 -- No --> E_SetResultasNOTSENT
File: GCX003.cbl
GIVEN:
A SEND action is being processed
WHEN:
There are errors or spawn processing is required
THEN:
Set RPT-RESULT-NO-SENT flag to TRUE for line 3, move RPT-WARNING-CNT to RPT-WRN-CNT2 for line 3, add RPT-SPAWN-CNT to RPT-ERROR-CNT, and move RPT-ERROR-CNT to RPT-ERR-CNT2 for line 3
β Consolidated Acceptance Criteria
- The action is neither SEND nor REPORT → set RPT-RESULT-ABORT flag to TRUE for line 3
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetResultasABORTED(["Start Step"])
E_SetResultasABORTED(["End Step"])
N_SetResultasABORTED_Node0{"The action is neither SEND nor
REPORT"}:::decision N_SetResultasABORTED_Node0_action["Set RPT-RESULT-ABORT flag to TRUE
for line 3"]:::exclusion N_SetResultasABORTED_Node0 -- Yes -->|Alternative| N_SetResultasABORTED_Node0_action N_SetResultasABORTED_Node0_action --> E_SetResultasABORTED S_SetResultasABORTED --> N_SetResultasABORTED_Node0 N_SetResultasABORTED_Node0 -- No --> E_SetResultasABORTED
REPORT"}:::decision N_SetResultasABORTED_Node0_action["Set RPT-RESULT-ABORT flag to TRUE
for line 3"]:::exclusion N_SetResultasABORTED_Node0 -- Yes -->|Alternative| N_SetResultasABORTED_Node0_action N_SetResultasABORTED_Node0_action --> E_SetResultasABORTED S_SetResultasABORTED --> N_SetResultasABORTED_Node0 N_SetResultasABORTED_Node0 -- No --> E_SetResultasABORTED
File: GCX003.cbl
GIVEN:
An OTHER action type is being processed
WHEN:
The action is neither SEND nor REPORT
THEN:
Set RPT-RESULT-ABORT flag to TRUE for line 3
β Consolidated Acceptance Criteria
- There are errors or warnings (not RPT-NO-ERROR or not RPT-NO-WRN) → move RPT-WARNING-CNT to RPT-WRN-CNT4 for line 3
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddWarningCounttoHeader(["Start Step"])
E_AddWarningCounttoHeader(["End Step"])
N_AddWarningCounttoHeader_Node0{"There are errors or warnings not
RPT-NO-ERROR or not RPT-NO-WRN"}:::decision N_AddWarningCounttoHeader_Node0_action["Move RPT-WARNING-CNT to
RPT-WRN-CNT4 for line 3"]:::exclusion N_AddWarningCounttoHeader_Node0 -- Yes -->|Alternative| N_AddWarningCounttoHeader_Node0_action N_AddWarningCounttoHeader_Node0_action --> E_AddWarningCounttoHeader S_AddWarningCounttoHeader --> N_AddWarningCounttoHeader_Node0 N_AddWarningCounttoHeader_Node0 -- No --> E_AddWarningCounttoHeader
RPT-NO-ERROR or not RPT-NO-WRN"}:::decision N_AddWarningCounttoHeader_Node0_action["Move RPT-WARNING-CNT to
RPT-WRN-CNT4 for line 3"]:::exclusion N_AddWarningCounttoHeader_Node0 -- Yes -->|Alternative| N_AddWarningCounttoHeader_Node0_action N_AddWarningCounttoHeader_Node0_action --> E_AddWarningCounttoHeader S_AddWarningCounttoHeader --> N_AddWarningCounttoHeader_Node0 N_AddWarningCounttoHeader_Node0 -- No --> E_AddWarningCounttoHeader
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A REPORT action header is being configured
WHEN:
There are errors or warnings (not RPT-NO-ERROR or not RPT-NO-WRN)
THEN:
Move RPT-WARNING-CNT to RPT-WRN-CNT4 for line 3
β Consolidated Acceptance Criteria
- There are errors or warnings (not RPT-NO-ERROR or not RPT-NO-WRN) → move RPT-ERROR-CNT to RPT-ERR-CNT4 for line 3
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddErrorCounttoHeader(["Start Step"])
E_AddErrorCounttoHeader(["End Step"])
N_AddErrorCounttoHeader_Node0{"There are errors or warnings not
RPT-NO-ERROR or not RPT-NO-WRN"}:::decision N_AddErrorCounttoHeader_Node0_action["Move RPT-ERROR-CNT to RPT-ERR-CNT4
for line 3"]:::exclusion N_AddErrorCounttoHeader_Node0 -- Yes -->|Alternative| N_AddErrorCounttoHeader_Node0_action N_AddErrorCounttoHeader_Node0_action --> E_AddErrorCounttoHeader S_AddErrorCounttoHeader --> N_AddErrorCounttoHeader_Node0 N_AddErrorCounttoHeader_Node0 -- No --> E_AddErrorCounttoHeader
RPT-NO-ERROR or not RPT-NO-WRN"}:::decision N_AddErrorCounttoHeader_Node0_action["Move RPT-ERROR-CNT to RPT-ERR-CNT4
for line 3"]:::exclusion N_AddErrorCounttoHeader_Node0 -- Yes -->|Alternative| N_AddErrorCounttoHeader_Node0_action N_AddErrorCounttoHeader_Node0_action --> E_AddErrorCounttoHeader S_AddErrorCounttoHeader --> N_AddErrorCounttoHeader_Node0 N_AddErrorCounttoHeader_Node0 -- No --> E_AddErrorCounttoHeader
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A REPORT action header is being configured
WHEN:
There are errors or warnings (not RPT-NO-ERROR or not RPT-NO-WRN)
THEN:
Move RPT-ERROR-CNT to RPT-ERR-CNT4 for line 3
β Consolidated Acceptance Criteria
- There are errors or warnings (not RPT-NO-ERROR or not RPT-NO-WRN) → move RPT-DSP-CNT to RPT-DSP-CNT4 for line 3
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddDSPCounttoHeader(["Start Step"])
E_AddDSPCounttoHeader(["End Step"])
N_AddDSPCounttoHeader_Node0{"There are errors or warnings not
RPT-NO-ERROR or not RPT-NO-WRN"}:::decision N_AddDSPCounttoHeader_Node0_action["Move RPT-DSP-CNT to RPT-DSP-CNT4
for line 3"]:::exclusion N_AddDSPCounttoHeader_Node0 -- Yes -->|Alternative| N_AddDSPCounttoHeader_Node0_action N_AddDSPCounttoHeader_Node0_action --> E_AddDSPCounttoHeader S_AddDSPCounttoHeader --> N_AddDSPCounttoHeader_Node0 N_AddDSPCounttoHeader_Node0 -- No --> E_AddDSPCounttoHeader
RPT-NO-ERROR or not RPT-NO-WRN"}:::decision N_AddDSPCounttoHeader_Node0_action["Move RPT-DSP-CNT to RPT-DSP-CNT4
for line 3"]:::exclusion N_AddDSPCounttoHeader_Node0 -- Yes -->|Alternative| N_AddDSPCounttoHeader_Node0_action N_AddDSPCounttoHeader_Node0_action --> E_AddDSPCounttoHeader S_AddDSPCounttoHeader --> N_AddDSPCounttoHeader_Node0 N_AddDSPCounttoHeader_Node0 -- No --> E_AddDSPCounttoHeader
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A REPORT action header is being configured
WHEN:
There are errors or warnings (not RPT-NO-ERROR or not RPT-NO-WRN)
THEN:
Move RPT-DSP-CNT to RPT-DSP-CNT4 for line 3
β Consolidated Acceptance Criteria
- Setting up the fourth header line → set RPT-HEADER-LINE-4 flag to TRUE for line 4
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateHeaderLine4TrainDetails(["Start Step"])
E_CreateHeaderLine4TrainDetails(["End Step"])
N_CreateHeaderLine4TrainDetails_Node0{"Setting up the fourth header line"}:::decision
N_CreateHeaderLine4TrainDetails_Node0_action["Set RPT-HEADER-LINE-4 flag to TRUE
for line 4"]:::main N_CreateHeaderLine4TrainDetails_Node0 -- Yes --> N_CreateHeaderLine4TrainDetails_Node0_action N_CreateHeaderLine4TrainDetails_Node0_action --> E_CreateHeaderLine4TrainDetails S_CreateHeaderLine4TrainDetails --> N_CreateHeaderLine4TrainDetails_Node0 N_CreateHeaderLine4TrainDetails_Node0 -- No --> E_CreateHeaderLine4TrainDetails
for line 4"]:::main N_CreateHeaderLine4TrainDetails_Node0 -- Yes --> N_CreateHeaderLine4TrainDetails_Node0_action N_CreateHeaderLine4TrainDetails_Node0_action --> E_CreateHeaderLine4TrainDetails S_CreateHeaderLine4TrainDetails --> N_CreateHeaderLine4TrainDetails_Node0 N_CreateHeaderLine4TrainDetails_Node0 -- No --> E_CreateHeaderLine4TrainDetails
File: GCX003.cbl
GIVEN:
A report header is being created
WHEN:
Setting up the fourth header line
THEN:
Set RPT-HEADER-LINE-4 flag to TRUE for line 4
β Consolidated Acceptance Criteria
- Adding US Customs train identification → move GCWTL-M1005-US-CUST-TRAIN-ID to RPT-HDR-US-TRAIN-ID for line 4
- The system builds the report header for customs transmission → the US customs train ID from the train list must be assigned to header line 4
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetUSCustomsTrainID(["Start Step"])
E_SetUSCustomsTrainID(["End Step"])
N_SetUSCustomsTrainID_Node0{"Adding US Customs train
identification"}:::decision N_SetUSCustomsTrainID_Node0_action["Move GCWTL-M1005-US-CUST-TRAIN-ID
to RPT-HDR-US-TRAIN-ID for line 4"]:::main N_SetUSCustomsTrainID_Node0 -- Yes --> N_SetUSCustomsTrainID_Node0_action N_SetUSCustomsTrainID_Node0_action --> E_SetUSCustomsTrainID S_SetUSCustomsTrainID --> N_SetUSCustomsTrainID_Node0 N_SetUSCustomsTrainID_Node1{"The system builds the report header
for customs transmission"}:::decision N_SetUSCustomsTrainID_Node1_action["The US customs train ID from the
train list must be assigned to
header line 4"]:::main N_SetUSCustomsTrainID_Node1 -- Yes --> N_SetUSCustomsTrainID_Node1_action N_SetUSCustomsTrainID_Node1_action --> E_SetUSCustomsTrainID N_SetUSCustomsTrainID_Node0 -- No --> N_SetUSCustomsTrainID_Node1 N_SetUSCustomsTrainID_Node1 -- No --> E_SetUSCustomsTrainID
identification"}:::decision N_SetUSCustomsTrainID_Node0_action["Move GCWTL-M1005-US-CUST-TRAIN-ID
to RPT-HDR-US-TRAIN-ID for line 4"]:::main N_SetUSCustomsTrainID_Node0 -- Yes --> N_SetUSCustomsTrainID_Node0_action N_SetUSCustomsTrainID_Node0_action --> E_SetUSCustomsTrainID S_SetUSCustomsTrainID --> N_SetUSCustomsTrainID_Node0 N_SetUSCustomsTrainID_Node1{"The system builds the report header
for customs transmission"}:::decision N_SetUSCustomsTrainID_Node1_action["The US customs train ID from the
train list must be assigned to
header line 4"]:::main N_SetUSCustomsTrainID_Node1 -- Yes --> N_SetUSCustomsTrainID_Node1_action N_SetUSCustomsTrainID_Node1_action --> E_SetUSCustomsTrainID N_SetUSCustomsTrainID_Node0 -- No --> N_SetUSCustomsTrainID_Node1 N_SetUSCustomsTrainID_Node1 -- No --> E_SetUSCustomsTrainID
File: GCX003.cbl
GIVEN:
A report header line 4 is being populated
WHEN:
Adding US Customs train identification
THEN:
Move GCWTL-M1005-US-CUST-TRAIN-ID to RPT-HDR-US-TRAIN-ID for line 4
File: GCX003.cbl
GIVEN:
A train list has been processed and a US customs train ID has been generated
WHEN:
The system builds the report header for customs transmission
THEN:
The US customs train ID from the train list must be assigned to header line 4
β Consolidated Acceptance Criteria
- Adding ETA year information → move REQ-ETA-YEAR to RPT-HDR-ETA-YEAR for line 4
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetETAYearinHeader(["Start Step"])
E_SetETAYearinHeader(["End Step"])
N_SetETAYearinHeader_Node0{"Adding ETA year information"}:::decision
N_SetETAYearinHeader_Node0_action["Move REQ-ETA-YEAR to
RPT-HDR-ETA-YEAR for line 4"]:::main N_SetETAYearinHeader_Node0 -- Yes --> N_SetETAYearinHeader_Node0_action N_SetETAYearinHeader_Node0_action --> E_SetETAYearinHeader S_SetETAYearinHeader --> N_SetETAYearinHeader_Node0 N_SetETAYearinHeader_Node0 -- No --> E_SetETAYearinHeader
RPT-HDR-ETA-YEAR for line 4"]:::main N_SetETAYearinHeader_Node0 -- Yes --> N_SetETAYearinHeader_Node0_action N_SetETAYearinHeader_Node0_action --> E_SetETAYearinHeader S_SetETAYearinHeader --> N_SetETAYearinHeader_Node0 N_SetETAYearinHeader_Node0 -- No --> E_SetETAYearinHeader
File: GCX003.cbl
GIVEN:
A report header line 4 is being populated
WHEN:
Adding ETA year information
THEN:
Move REQ-ETA-YEAR to RPT-HDR-ETA-YEAR for line 4
β Consolidated Acceptance Criteria
- Adding ETA month information → move REQ-ETA-MONTH to RPT-HDR-ETA-MONTH for line 4
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetETAMonthinHeader(["Start Step"])
E_SetETAMonthinHeader(["End Step"])
N_SetETAMonthinHeader_Node0{"Adding ETA month information"}:::decision
N_SetETAMonthinHeader_Node0_action["Move REQ-ETA-MONTH to
RPT-HDR-ETA-MONTH for line 4"]:::main N_SetETAMonthinHeader_Node0 -- Yes --> N_SetETAMonthinHeader_Node0_action N_SetETAMonthinHeader_Node0_action --> E_SetETAMonthinHeader S_SetETAMonthinHeader --> N_SetETAMonthinHeader_Node0 N_SetETAMonthinHeader_Node0 -- No --> E_SetETAMonthinHeader
RPT-HDR-ETA-MONTH for line 4"]:::main N_SetETAMonthinHeader_Node0 -- Yes --> N_SetETAMonthinHeader_Node0_action N_SetETAMonthinHeader_Node0_action --> E_SetETAMonthinHeader S_SetETAMonthinHeader --> N_SetETAMonthinHeader_Node0 N_SetETAMonthinHeader_Node0 -- No --> E_SetETAMonthinHeader
File: GCX003.cbl
GIVEN:
A report header line 4 is being populated
WHEN:
Adding ETA month information
THEN:
Move REQ-ETA-MONTH to RPT-HDR-ETA-MONTH for line 4
β Consolidated Acceptance Criteria
- Adding ETA day information → move REQ-ETA-DAY to RPT-HDR-ETA-DAY for line 4
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetETADayinHeader(["Start Step"])
E_SetETADayinHeader(["End Step"])
N_SetETADayinHeader_Node0{"Adding ETA day information"}:::decision
N_SetETADayinHeader_Node0_action["Move REQ-ETA-DAY to RPT-HDR-ETA-DAY
for line 4"]:::main N_SetETADayinHeader_Node0 -- Yes --> N_SetETADayinHeader_Node0_action N_SetETADayinHeader_Node0_action --> E_SetETADayinHeader S_SetETADayinHeader --> N_SetETADayinHeader_Node0 N_SetETADayinHeader_Node0 -- No --> E_SetETADayinHeader
for line 4"]:::main N_SetETADayinHeader_Node0 -- Yes --> N_SetETADayinHeader_Node0_action N_SetETADayinHeader_Node0_action --> E_SetETADayinHeader S_SetETADayinHeader --> N_SetETADayinHeader_Node0 N_SetETADayinHeader_Node0 -- No --> E_SetETADayinHeader
File: GCX003.cbl
GIVEN:
A report header line 4 is being populated
WHEN:
Adding ETA day information
THEN:
Move REQ-ETA-DAY to RPT-HDR-ETA-DAY for line 4
β Consolidated Acceptance Criteria
- Adding ETA hour information → move REQ-ETA-HOUR to RPT-HDR-ETA-HOUR for line 4
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetETAHourinHeader(["Start Step"])
E_SetETAHourinHeader(["End Step"])
N_SetETAHourinHeader_Node0{"Adding ETA hour information"}:::decision
N_SetETAHourinHeader_Node0_action["Move REQ-ETA-HOUR to
RPT-HDR-ETA-HOUR for line 4"]:::main N_SetETAHourinHeader_Node0 -- Yes --> N_SetETAHourinHeader_Node0_action N_SetETAHourinHeader_Node0_action --> E_SetETAHourinHeader S_SetETAHourinHeader --> N_SetETAHourinHeader_Node0 N_SetETAHourinHeader_Node0 -- No --> E_SetETAHourinHeader
RPT-HDR-ETA-HOUR for line 4"]:::main N_SetETAHourinHeader_Node0 -- Yes --> N_SetETAHourinHeader_Node0_action N_SetETAHourinHeader_Node0_action --> E_SetETAHourinHeader S_SetETAHourinHeader --> N_SetETAHourinHeader_Node0 N_SetETAHourinHeader_Node0 -- No --> E_SetETAHourinHeader
File: GCX003.cbl
GIVEN:
A report header line 4 is being populated
WHEN:
Adding ETA hour information
THEN:
Move REQ-ETA-HOUR to RPT-HDR-ETA-HOUR for line 4
β Consolidated Acceptance Criteria
- Adding ETA minutes information → move REQ-ETA-MIN to RPT-HDR-ETA-MIN for line 4
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetETAMinutesinHeader(["Start Step"])
E_SetETAMinutesinHeader(["End Step"])
N_SetETAMinutesinHeader_Node0{"Adding ETA minutes information"}:::decision
N_SetETAMinutesinHeader_Node0_action["Move REQ-ETA-MIN to RPT-HDR-ETA-MIN
for line 4"]:::main N_SetETAMinutesinHeader_Node0 -- Yes --> N_SetETAMinutesinHeader_Node0_action N_SetETAMinutesinHeader_Node0_action --> E_SetETAMinutesinHeader S_SetETAMinutesinHeader --> N_SetETAMinutesinHeader_Node0 N_SetETAMinutesinHeader_Node0 -- No --> E_SetETAMinutesinHeader
for line 4"]:::main N_SetETAMinutesinHeader_Node0 -- Yes --> N_SetETAMinutesinHeader_Node0_action N_SetETAMinutesinHeader_Node0_action --> E_SetETAMinutesinHeader S_SetETAMinutesinHeader --> N_SetETAMinutesinHeader_Node0 N_SetETAMinutesinHeader_Node0 -- No --> E_SetETAMinutesinHeader
File: GCX003.cbl
GIVEN:
A report header line 4 is being populated
WHEN:
Adding ETA minutes information
THEN:
Move REQ-ETA-MIN to RPT-HDR-ETA-MIN for line 4
β Consolidated Acceptance Criteria
- Setting up detail section headers → set RPT-DET-HEADER-1 flag to TRUE for line 6 and RPT-DET-HEADER-2 flag to TRUE for line 7
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateDetailHeaders(["Start Step"])
E_CreateDetailHeaders(["End Step"])
N_CreateDetailHeaders_Node0{"Setting up detail section headers"}:::decision
N_CreateDetailHeaders_Node0_action["Set RPT-DET-HEADER-1 flag to TRUE
for line 6 and RPT-DET-HEADER-2 flag
to TRUE for line 7"]:::main N_CreateDetailHeaders_Node0 -- Yes --> N_CreateDetailHeaders_Node0_action N_CreateDetailHeaders_Node0_action --> E_CreateDetailHeaders S_CreateDetailHeaders --> N_CreateDetailHeaders_Node0 N_CreateDetailHeaders_Node0 -- No --> E_CreateDetailHeaders
for line 6 and RPT-DET-HEADER-2 flag
to TRUE for line 7"]:::main N_CreateDetailHeaders_Node0 -- Yes --> N_CreateDetailHeaders_Node0_action N_CreateDetailHeaders_Node0_action --> E_CreateDetailHeaders S_CreateDetailHeaders --> N_CreateDetailHeaders_Node0 N_CreateDetailHeaders_Node0 -- No --> E_CreateDetailHeaders
File: GCX003.cbl
GIVEN:
A report header is being finalized
WHEN:
Setting up detail section headers
THEN:
- Set rpt-det-header-1 flag to true for line 6
- Rpt-det-header-2 flag to true for line 7
β Consolidated Acceptance Criteria
- Finalizing the report structure → move RPT-LINE content for lines 1 through 5 to corresponding EMI-TEXT-LINE positions
- Finalizing the report structure → copy the first five report lines to the corresponding email text lines for output
- Finalizing report output → copy report line 1 to email text line 1, copy report line 2 to email text line 2, copy report line 3 to email text line 3, copy report line 4 to email text line 4, and copy report line 5 to email text line 5
- Finalizing report output → copy report lines 1 through 5 to corresponding email text lines
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyHeaderstoReportLines(["Start Step"])
E_CopyHeaderstoReportLines(["End Step"])
N_CopyHeaderstoReportLines_Node0{"Finalizing the report structure"}:::decision
N_CopyHeaderstoReportLines_Node0_action["Move RPT-LINE content for lines 1
through 5 to corresponding
EMI-TEXT-LINE positions"]:::main N_CopyHeaderstoReportLines_Node0 -- Yes --> N_CopyHeaderstoReportLines_Node0_action N_CopyHeaderstoReportLines_Node0_action --> E_CopyHeaderstoReportLines S_CopyHeaderstoReportLines --> N_CopyHeaderstoReportLines_Node0 N_CopyHeaderstoReportLines_Node1{"Finalizing the report structure"}:::decision N_CopyHeaderstoReportLines_Node1_action["Copy the first five report lines to
the corresponding email text lines
for output"]:::main N_CopyHeaderstoReportLines_Node1 -- Yes --> N_CopyHeaderstoReportLines_Node1_action N_CopyHeaderstoReportLines_Node1_action --> E_CopyHeaderstoReportLines N_CopyHeaderstoReportLines_Node0 -- No --> N_CopyHeaderstoReportLines_Node1 N_CopyHeaderstoReportLines_Node2{"Finalizing report output"}:::decision N_CopyHeaderstoReportLines_Node2_action["Copy report line 1 to email text
line 1, copy report line 2 to email
text line 2, copy report line 3 to
email text line 3, copy report line
4 to email text line 4, and copy
report line 5 to email text line 5"]:::main N_CopyHeaderstoReportLines_Node2 -- Yes --> N_CopyHeaderstoReportLines_Node2_action N_CopyHeaderstoReportLines_Node2_action --> E_CopyHeaderstoReportLines N_CopyHeaderstoReportLines_Node1 -- No --> N_CopyHeaderstoReportLines_Node2 N_CopyHeaderstoReportLines_Node3{"Finalizing report output"}:::decision N_CopyHeaderstoReportLines_Node3_action["Copy report lines 1 through 5 to
corresponding email text lines"]:::main N_CopyHeaderstoReportLines_Node3 -- Yes --> N_CopyHeaderstoReportLines_Node3_action N_CopyHeaderstoReportLines_Node3_action --> E_CopyHeaderstoReportLines N_CopyHeaderstoReportLines_Node2 -- No --> N_CopyHeaderstoReportLines_Node3 N_CopyHeaderstoReportLines_Node3 -- No --> E_CopyHeaderstoReportLines
through 5 to corresponding
EMI-TEXT-LINE positions"]:::main N_CopyHeaderstoReportLines_Node0 -- Yes --> N_CopyHeaderstoReportLines_Node0_action N_CopyHeaderstoReportLines_Node0_action --> E_CopyHeaderstoReportLines S_CopyHeaderstoReportLines --> N_CopyHeaderstoReportLines_Node0 N_CopyHeaderstoReportLines_Node1{"Finalizing the report structure"}:::decision N_CopyHeaderstoReportLines_Node1_action["Copy the first five report lines to
the corresponding email text lines
for output"]:::main N_CopyHeaderstoReportLines_Node1 -- Yes --> N_CopyHeaderstoReportLines_Node1_action N_CopyHeaderstoReportLines_Node1_action --> E_CopyHeaderstoReportLines N_CopyHeaderstoReportLines_Node0 -- No --> N_CopyHeaderstoReportLines_Node1 N_CopyHeaderstoReportLines_Node2{"Finalizing report output"}:::decision N_CopyHeaderstoReportLines_Node2_action["Copy report line 1 to email text
line 1, copy report line 2 to email
text line 2, copy report line 3 to
email text line 3, copy report line
4 to email text line 4, and copy
report line 5 to email text line 5"]:::main N_CopyHeaderstoReportLines_Node2 -- Yes --> N_CopyHeaderstoReportLines_Node2_action N_CopyHeaderstoReportLines_Node2_action --> E_CopyHeaderstoReportLines N_CopyHeaderstoReportLines_Node1 -- No --> N_CopyHeaderstoReportLines_Node2 N_CopyHeaderstoReportLines_Node3{"Finalizing report output"}:::decision N_CopyHeaderstoReportLines_Node3_action["Copy report lines 1 through 5 to
corresponding email text lines"]:::main N_CopyHeaderstoReportLines_Node3 -- Yes --> N_CopyHeaderstoReportLines_Node3_action N_CopyHeaderstoReportLines_Node3_action --> E_CopyHeaderstoReportLines N_CopyHeaderstoReportLines_Node2 -- No --> N_CopyHeaderstoReportLines_Node3 N_CopyHeaderstoReportLines_Node3 -- No --> E_CopyHeaderstoReportLines
File: GCX003.cbl
GIVEN:
All report headers have been configured
WHEN:
Finalizing the report structure
THEN:
Move RPT-LINE content for lines 1 through 5 to corresponding EMI-TEXT-LINE positions
File: GCX003.cbl
GIVEN:
All report header lines have been constructed
WHEN:
Finalizing the report structure
THEN:
Copy the first five report lines to the corresponding email text lines for output
File: GCX003.cbl
GIVEN:
Report headers have been generated
WHEN:
Finalizing report output
THEN:
Copy report line 1 to email text line 1, copy report line 2 to email text line 2, copy report line 3 to email text line 3, copy report line 4 to email text line 4, and copy report line 5 to email text line 5
File: GCX003.cbl
GIVEN:
Report headers have been generated
WHEN:
Finalizing report output
THEN:
Copy report lines 1 through 5 to corresponding email text lines
β Consolidated Acceptance Criteria
- Finalizing the report structure → set the last line number to the current report index and new report index
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CaptureReportLineCount(["Start Step"])
E_CaptureReportLineCount(["End Step"])
N_CaptureReportLineCount_Node0{"Finalizing the report structure"}:::decision
N_CaptureReportLineCount_Node0_action["Set the last line number to the
current report index and new report
index"]:::main N_CaptureReportLineCount_Node0 -- Yes --> N_CaptureReportLineCount_Node0_action N_CaptureReportLineCount_Node0_action --> E_CaptureReportLineCount S_CaptureReportLineCount --> N_CaptureReportLineCount_Node0 N_CaptureReportLineCount_Node0 -- No --> E_CaptureReportLineCount
current report index and new report
index"]:::main N_CaptureReportLineCount_Node0 -- Yes --> N_CaptureReportLineCount_Node0_action N_CaptureReportLineCount_Node0_action --> E_CaptureReportLineCount S_CaptureReportLineCount --> N_CaptureReportLineCount_Node0 N_CaptureReportLineCount_Node0 -- No --> E_CaptureReportLineCount
File: GCX003.cbl
GIVEN:
A report has been built with multiple lines
WHEN:
Finalizing the report structure
THEN:
- Set the last line number to the current report index
- New report index
β Consolidated Acceptance Criteria
- Building the report header → set header line 1 flag, populate train ID from request, and set origin station name from station table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildHeaderLine1TrainInformation(["Start Step"])
E_BuildHeaderLine1TrainInformation(["End Step"])
N_BuildHeaderLine1TrainInformation_Node0{"Building the report header"}:::decision
N_BuildHeaderLine1TrainInformation_Node0_action["Set header line 1 flag, populate
train ID from request, and set
origin station name from station
table"]:::main N_BuildHeaderLine1TrainInformation_Node0 -- Yes --> N_BuildHeaderLine1TrainInformation_Node0_action N_BuildHeaderLine1TrainInformation_Node0_action --> E_BuildHeaderLine1TrainInformation S_BuildHeaderLine1TrainInformation --> N_BuildHeaderLine1TrainInformation_Node0 N_BuildHeaderLine1TrainInformation_Node0 -- No --> E_BuildHeaderLine1TrainInformation
train ID from request, and set
origin station name from station
table"]:::main N_BuildHeaderLine1TrainInformation_Node0 -- Yes --> N_BuildHeaderLine1TrainInformation_Node0_action N_BuildHeaderLine1TrainInformation_Node0_action --> E_BuildHeaderLine1TrainInformation S_BuildHeaderLine1TrainInformation --> N_BuildHeaderLine1TrainInformation_Node0 N_BuildHeaderLine1TrainInformation_Node0 -- No --> E_BuildHeaderLine1TrainInformation
File: GCX003.cbl
GIVEN:
A train manifest report is being generated
WHEN:
Building the report header
THEN:
Set header line 1 flag, populate train ID from request, and set origin station name from station table
β Consolidated Acceptance Criteria
- Building the report header → set header line 2 flag and populate user ID, terminal ID, processing date, hour, and minutes from system session
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildHeaderLine2UserInformation(["Start Step"])
E_BuildHeaderLine2UserInformation(["End Step"])
N_BuildHeaderLine2UserInformation_Node0{"Building the report header"}:::decision
N_BuildHeaderLine2UserInformation_Node0_action["Set header line 2 flag and populate
user ID, terminal ID, processing
date, hour, and minutes from system
session"]:::main N_BuildHeaderLine2UserInformation_Node0 -- Yes --> N_BuildHeaderLine2UserInformation_Node0_action N_BuildHeaderLine2UserInformation_Node0_action --> E_BuildHeaderLine2UserInformation S_BuildHeaderLine2UserInformation --> N_BuildHeaderLine2UserInformation_Node0 N_BuildHeaderLine2UserInformation_Node0 -- No --> E_BuildHeaderLine2UserInformation
user ID, terminal ID, processing
date, hour, and minutes from system
session"]:::main N_BuildHeaderLine2UserInformation_Node0 -- Yes --> N_BuildHeaderLine2UserInformation_Node0_action N_BuildHeaderLine2UserInformation_Node0_action --> E_BuildHeaderLine2UserInformation S_BuildHeaderLine2UserInformation --> N_BuildHeaderLine2UserInformation_Node0 N_BuildHeaderLine2UserInformation_Node0 -- No --> E_BuildHeaderLine2UserInformation
File: GCX003.cbl
GIVEN:
A train manifest report is being generated
WHEN:
Building the report header
THEN:
- Set header line 2 flag
- Populate user id, terminal id, processing date, hour, and minutes from system session
β Consolidated Acceptance Criteria
- Building the processing status header → evaluate the request action type and branch to appropriate header processing logic
- The request action is OTHER → set request type in header and set result abort flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineRequestActionType(["Start Step"])
E_DetermineRequestActionType(["End Step"])
N_DetermineRequestActionType_Node0{"Building the processing status
header"}:::decision N_DetermineRequestActionType_Node0_action["Evaluate the request action type
and branch to appropriate header
processing logic"]:::main N_DetermineRequestActionType_Node0 -- Yes --> N_DetermineRequestActionType_Node0_action N_DetermineRequestActionType_Node0_action --> E_DetermineRequestActionType S_DetermineRequestActionType --> N_DetermineRequestActionType_Node0 N_DetermineRequestActionType_Node1{"The request action is OTHER"}:::decision N_DetermineRequestActionType_Node1_action["Set request type in header and set
result abort flag"]:::exclusion N_DetermineRequestActionType_Node1 -- Yes -->|Alternative| N_DetermineRequestActionType_Node1_action N_DetermineRequestActionType_Node1_action --> E_DetermineRequestActionType N_DetermineRequestActionType_Node0 -- No --> N_DetermineRequestActionType_Node1 N_DetermineRequestActionType_Node1 -- No --> E_DetermineRequestActionType
header"}:::decision N_DetermineRequestActionType_Node0_action["Evaluate the request action type
and branch to appropriate header
processing logic"]:::main N_DetermineRequestActionType_Node0 -- Yes --> N_DetermineRequestActionType_Node0_action N_DetermineRequestActionType_Node0_action --> E_DetermineRequestActionType S_DetermineRequestActionType --> N_DetermineRequestActionType_Node0 N_DetermineRequestActionType_Node1{"The request action is OTHER"}:::decision N_DetermineRequestActionType_Node1_action["Set request type in header and set
result abort flag"]:::exclusion N_DetermineRequestActionType_Node1 -- Yes -->|Alternative| N_DetermineRequestActionType_Node1_action N_DetermineRequestActionType_Node1_action --> E_DetermineRequestActionType N_DetermineRequestActionType_Node0 -- No --> N_DetermineRequestActionType_Node1 N_DetermineRequestActionType_Node1 -- No --> E_DetermineRequestActionType
File: GCX003.cbl
GIVEN:
A train manifest is being processed
WHEN:
Building the processing status header
THEN:
- Evaluate the request action type
- Branch to appropriate header processing logic
File: GCX003.cbl
GIVEN:
A report is being finalized
WHEN:
The request action is OTHER
THEN:
- Set request type in header
- Set result abort flag
β Consolidated Acceptance Criteria
- Determining the processing results → if no errors and no spawns occurred, set SENT status with warning count, otherwise set NOT SENT status with error and warning counts
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckProcessingResults(["Start Step"])
E_CheckProcessingResults(["End Step"])
N_CheckProcessingResults_Node0{"Determining the processing results"}:::decision
N_CheckProcessingResults_Node0_action["If no errors and no spawns
occurred, set SENT status with
warning count, otherwise set NOT
SENT status with error and warning
counts"]:::main N_CheckProcessingResults_Node0 -- Yes --> N_CheckProcessingResults_Node0_action N_CheckProcessingResults_Node0_action --> E_CheckProcessingResults S_CheckProcessingResults --> N_CheckProcessingResults_Node0 N_CheckProcessingResults_Node0 -- No --> E_CheckProcessingResults
occurred, set SENT status with
warning count, otherwise set NOT
SENT status with error and warning
counts"]:::main N_CheckProcessingResults_Node0 -- Yes --> N_CheckProcessingResults_Node0_action N_CheckProcessingResults_Node0_action --> E_CheckProcessingResults S_CheckProcessingResults --> N_CheckProcessingResults_Node0 N_CheckProcessingResults_Node0 -- No --> E_CheckProcessingResults
File: GCX003.cbl
GIVEN:
A SEND action has been processed
WHEN:
Determining the processing results
THEN:
- If no errors
- No spawns occurred, set sent status with warning count, otherwise set not sent status with error
- Warning counts
β Consolidated Acceptance Criteria
- Setting the processing result status → set result as SENT and include the warning count in the header
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSENTStatuswithWarningCount(["Start Step"])
E_SetSENTStatuswithWarningCount(["End Step"])
N_SetSENTStatuswithWarningCount_Node0{"Setting the processing result
status"}:::decision N_SetSENTStatuswithWarningCount_Node0_action["Set result as SENT and include the
warning count in the header"]:::main N_SetSENTStatuswithWarningCount_Node0 -- Yes --> N_SetSENTStatuswithWarningCount_Node0_action N_SetSENTStatuswithWarningCount_Node0_action --> E_SetSENTStatuswithWarningCount S_SetSENTStatuswithWarningCount --> N_SetSENTStatuswithWarningCount_Node0 N_SetSENTStatuswithWarningCount_Node0 -- No --> E_SetSENTStatuswithWarningCount
status"}:::decision N_SetSENTStatuswithWarningCount_Node0_action["Set result as SENT and include the
warning count in the header"]:::main N_SetSENTStatuswithWarningCount_Node0 -- Yes --> N_SetSENTStatuswithWarningCount_Node0_action N_SetSENTStatuswithWarningCount_Node0_action --> E_SetSENTStatuswithWarningCount S_SetSENTStatuswithWarningCount --> N_SetSENTStatuswithWarningCount_Node0 N_SetSENTStatuswithWarningCount_Node0 -- No --> E_SetSENTStatuswithWarningCount
File: GCX003.cbl
GIVEN:
A SEND action completed without errors or spawns
WHEN:
Setting the processing result status
THEN:
- Set result as sent
- Include the warning count in the header
β Consolidated Acceptance Criteria
- Setting the processing result status → set result as NOT SENT and include both error count and warning count in the header
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetNOTSENTStatuswithErrorWarningCounts(["Start Step"])
E_SetNOTSENTStatuswithErrorWarningCounts(["End Step"])
N_SetNOTSENTStatuswithErrorWarningCounts_Node0{"Setting the processing result
status"}:::decision N_SetNOTSENTStatuswithErrorWarningCounts_Node0_action["Set result as NOT SENT and include
both error count and warning count
in the header"]:::main N_SetNOTSENTStatuswithErrorWarningCounts_Node0 -- Yes --> N_SetNOTSENTStatuswithErrorWarningCounts_Node0_action N_SetNOTSENTStatuswithErrorWarningCounts_Node0_action --> E_SetNOTSENTStatuswithErrorWarningCounts S_SetNOTSENTStatuswithErrorWarningCounts --> N_SetNOTSENTStatuswithErrorWarningCounts_Node0 N_SetNOTSENTStatuswithErrorWarningCounts_Node0 -- No --> E_SetNOTSENTStatuswithErrorWarningCounts
status"}:::decision N_SetNOTSENTStatuswithErrorWarningCounts_Node0_action["Set result as NOT SENT and include
both error count and warning count
in the header"]:::main N_SetNOTSENTStatuswithErrorWarningCounts_Node0 -- Yes --> N_SetNOTSENTStatuswithErrorWarningCounts_Node0_action N_SetNOTSENTStatuswithErrorWarningCounts_Node0_action --> E_SetNOTSENTStatuswithErrorWarningCounts S_SetNOTSENTStatuswithErrorWarningCounts --> N_SetNOTSENTStatuswithErrorWarningCounts_Node0 N_SetNOTSENTStatuswithErrorWarningCounts_Node0 -- No --> E_SetNOTSENTStatuswithErrorWarningCounts
File: GCX003.cbl
GIVEN:
A SEND action encountered errors or spawns
WHEN:
Setting the processing result status
THEN:
- Set result as not sent
- Include both error count
- Warning count in the header
β Consolidated Acceptance Criteria
- Building the detailed train information header → set header line 4 flag and populate US customs train ID and ETA components (year, month, day, hour, minutes)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildHeaderLine4TrainDetails(["Start Step"])
E_BuildHeaderLine4TrainDetails(["End Step"])
N_BuildHeaderLine4TrainDetails_Node0{"Building the detailed train
information header"}:::decision N_BuildHeaderLine4TrainDetails_Node0_action["Set header line 4 flag and populate
US customs train ID and ETA
components year, month, day, hour,
minutes"]:::main N_BuildHeaderLine4TrainDetails_Node0 -- Yes --> N_BuildHeaderLine4TrainDetails_Node0_action N_BuildHeaderLine4TrainDetails_Node0_action --> E_BuildHeaderLine4TrainDetails S_BuildHeaderLine4TrainDetails --> N_BuildHeaderLine4TrainDetails_Node0 N_BuildHeaderLine4TrainDetails_Node0 -- No --> E_BuildHeaderLine4TrainDetails
information header"}:::decision N_BuildHeaderLine4TrainDetails_Node0_action["Set header line 4 flag and populate
US customs train ID and ETA
components year, month, day, hour,
minutes"]:::main N_BuildHeaderLine4TrainDetails_Node0 -- Yes --> N_BuildHeaderLine4TrainDetails_Node0_action N_BuildHeaderLine4TrainDetails_Node0_action --> E_BuildHeaderLine4TrainDetails S_BuildHeaderLine4TrainDetails --> N_BuildHeaderLine4TrainDetails_Node0 N_BuildHeaderLine4TrainDetails_Node0 -- No --> E_BuildHeaderLine4TrainDetails
File: GCX003.cbl
GIVEN:
A train manifest report is being generated
WHEN:
Building the detailed train information header
THEN:
- Set header line 4 flag
- Populate us customs train id
- Eta components (year, month, day, hour, minutes)
β Consolidated Acceptance Criteria
- Setting up the detail section headers → set detail header line 1 and detail header line 2 flags to create column headers for equipment and cargo details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildDetailHeaders(["Start Step"])
E_BuildDetailHeaders(["End Step"])
N_BuildDetailHeaders_Node0{"Setting up the detail section
headers"}:::decision N_BuildDetailHeaders_Node0_action["Set detail header line 1 and detail
header line 2 flags to create column
headers for equipment and cargo
details"]:::main N_BuildDetailHeaders_Node0 -- Yes --> N_BuildDetailHeaders_Node0_action N_BuildDetailHeaders_Node0_action --> E_BuildDetailHeaders S_BuildDetailHeaders --> N_BuildDetailHeaders_Node0 N_BuildDetailHeaders_Node0 -- No --> E_BuildDetailHeaders
headers"}:::decision N_BuildDetailHeaders_Node0_action["Set detail header line 1 and detail
header line 2 flags to create column
headers for equipment and cargo
details"]:::main N_BuildDetailHeaders_Node0 -- Yes --> N_BuildDetailHeaders_Node0_action N_BuildDetailHeaders_Node0_action --> E_BuildDetailHeaders S_BuildDetailHeaders --> N_BuildDetailHeaders_Node0 N_BuildDetailHeaders_Node0 -- No --> E_BuildDetailHeaders
File: GCX003.cbl
GIVEN:
A train manifest report structure is being finalized
WHEN:
Setting up the detail section headers
THEN:
- Set detail header line 1
- Detail header line 2 flags to create column headers for equipment
- Cargo details
β Consolidated Acceptance Criteria
- The system checks for any processing errors in the report → if no errors exist, proceed to check spawn activities; if errors exist, proceed to error handling with spawn check
- The system checks for any processing errors in the report → the system branches to either successful processing path or error handling path based on error presence
- The system checks for any processing errors in the report → if no errors exist (RPT-NO-ERROR is true), proceed to check for spawn messages, otherwise proceed to spawn message evaluation for error handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnyProcessingErrors(["Start Step"])
E_AnyProcessingErrors(["End Step"])
N_AnyProcessingErrors_Node0{"The system checks for any
processing errors in the report"}:::decision N_AnyProcessingErrors_Node0_action["If no errors exist, proceed to
check spawn activities if errors
exist, proceed to error handling
with spawn check"]:::main N_AnyProcessingErrors_Node0 -- Yes --> N_AnyProcessingErrors_Node0_action N_AnyProcessingErrors_Node0_action --> E_AnyProcessingErrors S_AnyProcessingErrors --> N_AnyProcessingErrors_Node0 N_AnyProcessingErrors_Node1{"The system checks for any
processing errors in the report"}:::decision N_AnyProcessingErrors_Node1_action["The system branches to either
successful processing path or error
handling path based on error
presence"]:::main N_AnyProcessingErrors_Node1 -- Yes --> N_AnyProcessingErrors_Node1_action N_AnyProcessingErrors_Node1_action --> E_AnyProcessingErrors N_AnyProcessingErrors_Node0 -- No --> N_AnyProcessingErrors_Node1 N_AnyProcessingErrors_Node2{"The system checks for any
processing errors in the report"}:::decision N_AnyProcessingErrors_Node2_action["If no errors exist RPT-NO-ERROR is
true, proceed to check for spawn
messages, otherwise proceed to spawn
message evaluation for error
handling"]:::main N_AnyProcessingErrors_Node2 -- Yes --> N_AnyProcessingErrors_Node2_action N_AnyProcessingErrors_Node2_action --> E_AnyProcessingErrors N_AnyProcessingErrors_Node1 -- No --> N_AnyProcessingErrors_Node2 N_AnyProcessingErrors_Node2 -- No --> E_AnyProcessingErrors
processing errors in the report"}:::decision N_AnyProcessingErrors_Node0_action["If no errors exist, proceed to
check spawn activities if errors
exist, proceed to error handling
with spawn check"]:::main N_AnyProcessingErrors_Node0 -- Yes --> N_AnyProcessingErrors_Node0_action N_AnyProcessingErrors_Node0_action --> E_AnyProcessingErrors S_AnyProcessingErrors --> N_AnyProcessingErrors_Node0 N_AnyProcessingErrors_Node1{"The system checks for any
processing errors in the report"}:::decision N_AnyProcessingErrors_Node1_action["The system branches to either
successful processing path or error
handling path based on error
presence"]:::main N_AnyProcessingErrors_Node1 -- Yes --> N_AnyProcessingErrors_Node1_action N_AnyProcessingErrors_Node1_action --> E_AnyProcessingErrors N_AnyProcessingErrors_Node0 -- No --> N_AnyProcessingErrors_Node1 N_AnyProcessingErrors_Node2{"The system checks for any
processing errors in the report"}:::decision N_AnyProcessingErrors_Node2_action["If no errors exist RPT-NO-ERROR is
true, proceed to check for spawn
messages, otherwise proceed to spawn
message evaluation for error
handling"]:::main N_AnyProcessingErrors_Node2 -- Yes --> N_AnyProcessingErrors_Node2_action N_AnyProcessingErrors_Node2_action --> E_AnyProcessingErrors N_AnyProcessingErrors_Node1 -- No --> N_AnyProcessingErrors_Node2 N_AnyProcessingErrors_Node2 -- No --> E_AnyProcessingErrors
File: GCX003.cbl
GIVEN:
Train processing has completed with potential errors and spawn activities
WHEN:
The system checks for any processing errors in the report
THEN:
If no errors exist, proceed to check spawn activities; if errors exist, proceed to error handling with spawn check
File: GCX003.cbl
GIVEN:
A train manifest processing request has been completed
WHEN:
The system checks for any processing errors in the report
THEN:
The system branches to either successful processing path or error handling path based on error presence
File: GCX003.cbl
GIVEN:
A train manifest processing request has been completed
WHEN:
The system checks for any processing errors in the report
THEN:
If no errors exist (RPT-NO-ERROR is true), proceed to check for spawn messages, otherwise proceed to spawn message evaluation for error handling
β Consolidated Acceptance Criteria
- If the final processing status → set the result status to SENT and count warning messages only
- The system determines the final result status → the result status is set to SENT indicating successful transmission to customs
- There are no processing errors AND there are no spawn messages → set result status to SENT AND record warning message count
- The system determines the final processing result status → set the result status to SENT and record warning count for reporting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetResultStatusSENT(["Start Step"])
E_SetResultStatusSENT(["End Step"])
N_SetResultStatusSENT_Node0{"The system evaluates the final
processing status"}:::decision N_SetResultStatusSENT_Node0_action["Set the result status to SENT and
count warning messages only"]:::main N_SetResultStatusSENT_Node0 -- Yes --> N_SetResultStatusSENT_Node0_action N_SetResultStatusSENT_Node0_action --> E_SetResultStatusSENT S_SetResultStatusSENT --> N_SetResultStatusSENT_Node0 N_SetResultStatusSENT_Node1{"The system determines the final
result status"}:::decision N_SetResultStatusSENT_Node1_action["The result status is set to SENT
indicating successful transmission
to customs"]:::main N_SetResultStatusSENT_Node1 -- Yes --> N_SetResultStatusSENT_Node1_action N_SetResultStatusSENT_Node1_action --> E_SetResultStatusSENT N_SetResultStatusSENT_Node0 -- No --> N_SetResultStatusSENT_Node1 N_SetResultStatusSENT_Node2{"There are no processing errors AND
there are no spawn messages"}:::decision N_SetResultStatusSENT_Node2_action["Set result status to SENT AND
record warning message count"]:::main N_SetResultStatusSENT_Node2 -- Yes --> N_SetResultStatusSENT_Node2_action N_SetResultStatusSENT_Node2_action --> E_SetResultStatusSENT N_SetResultStatusSENT_Node1 -- No --> N_SetResultStatusSENT_Node2 N_SetResultStatusSENT_Node3{"The system determines the final
processing result status"}:::decision N_SetResultStatusSENT_Node3_action["Set the result status to SENT and
record warning count for reporting"]:::main N_SetResultStatusSENT_Node3 -- Yes --> N_SetResultStatusSENT_Node3_action N_SetResultStatusSENT_Node3_action --> E_SetResultStatusSENT N_SetResultStatusSENT_Node2 -- No --> N_SetResultStatusSENT_Node3 N_SetResultStatusSENT_Node3 -- No --> E_SetResultStatusSENT
processing status"}:::decision N_SetResultStatusSENT_Node0_action["Set the result status to SENT and
count warning messages only"]:::main N_SetResultStatusSENT_Node0 -- Yes --> N_SetResultStatusSENT_Node0_action N_SetResultStatusSENT_Node0_action --> E_SetResultStatusSENT S_SetResultStatusSENT --> N_SetResultStatusSENT_Node0 N_SetResultStatusSENT_Node1{"The system determines the final
result status"}:::decision N_SetResultStatusSENT_Node1_action["The result status is set to SENT
indicating successful transmission
to customs"]:::main N_SetResultStatusSENT_Node1 -- Yes --> N_SetResultStatusSENT_Node1_action N_SetResultStatusSENT_Node1_action --> E_SetResultStatusSENT N_SetResultStatusSENT_Node0 -- No --> N_SetResultStatusSENT_Node1 N_SetResultStatusSENT_Node2{"There are no processing errors AND
there are no spawn messages"}:::decision N_SetResultStatusSENT_Node2_action["Set result status to SENT AND
record warning message count"]:::main N_SetResultStatusSENT_Node2 -- Yes --> N_SetResultStatusSENT_Node2_action N_SetResultStatusSENT_Node2_action --> E_SetResultStatusSENT N_SetResultStatusSENT_Node1 -- No --> N_SetResultStatusSENT_Node2 N_SetResultStatusSENT_Node3{"The system determines the final
processing result status"}:::decision N_SetResultStatusSENT_Node3_action["Set the result status to SENT and
record warning count for reporting"]:::main N_SetResultStatusSENT_Node3 -- Yes --> N_SetResultStatusSENT_Node3_action N_SetResultStatusSENT_Node3_action --> E_SetResultStatusSENT N_SetResultStatusSENT_Node2 -- No --> N_SetResultStatusSENT_Node3 N_SetResultStatusSENT_Node3 -- No --> E_SetResultStatusSENT
File: GCX003.cbl
GIVEN:
Train processing has no errors and no spawn activities
WHEN:
The system evaluates the final processing status
THEN:
- Set the result status to sent
- Count warning messages only
File: GCX003.cbl
GIVEN:
Train manifest processing has completed with no errors and no spawn messages
WHEN:
The system determines the final result status
THEN:
The result status is set to SENT indicating successful transmission to customs
File: GCX003.cbl
GIVEN:
Train processing has completed
WHEN:
- There are no processing errors
- There are no spawn messages
THEN:
- Set result status to sent
- Record warning message count
File: GCX003.cbl
GIVEN:
Train manifest processing completed with no errors and no spawn messages
WHEN:
The system determines the final processing result status
THEN:
- Set the result status to sent
- Record warning count for reporting
β Consolidated Acceptance Criteria
- If the final processing status → set the result status to NOT SENT, count warnings, add spawn count to error count, and trigger special manifest processing
- The system determines the final result status → the result status is set to NOT SENT indicating special processing is required
- There are spawn messages present → set result status to NOT SENT AND count warning messages AND add spawn count to error count AND set total error count
- Final result classification is performed → set result status to NOT SENT AND record final warning message count AND record final error message count
- The system determines the final processing result status → set the result status to NOT SENT, add spawn count to error count, and trigger special manifest processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetResultStatusNOTSENT(["Start Step"])
E_SetResultStatusNOTSENT(["End Step"])
N_SetResultStatusNOTSENT_Node0{"The system evaluates the final
processing status"}:::decision N_SetResultStatusNOTSENT_Node0_action["Set the result status to NOT SENT,
count warnings, add spawn count to
error count, and trigger special
manifest processing"]:::main N_SetResultStatusNOTSENT_Node0 -- Yes --> N_SetResultStatusNOTSENT_Node0_action N_SetResultStatusNOTSENT_Node0_action --> E_SetResultStatusNOTSENT S_SetResultStatusNOTSENT --> N_SetResultStatusNOTSENT_Node0 N_SetResultStatusNOTSENT_Node1{"The system determines the final
result status"}:::decision N_SetResultStatusNOTSENT_Node1_action["The result status is set to NOT
SENT indicating special processing
is required"]:::main N_SetResultStatusNOTSENT_Node1 -- Yes --> N_SetResultStatusNOTSENT_Node1_action N_SetResultStatusNOTSENT_Node1_action --> E_SetResultStatusNOTSENT N_SetResultStatusNOTSENT_Node0 -- No --> N_SetResultStatusNOTSENT_Node1 N_SetResultStatusNOTSENT_Node2{"There are spawn messages present"}:::decision N_SetResultStatusNOTSENT_Node2_action["Set result status to NOT SENT AND
count warning messages AND add spawn
count to error count AND set total
error count"]:::main N_SetResultStatusNOTSENT_Node2 -- Yes --> N_SetResultStatusNOTSENT_Node2_action N_SetResultStatusNOTSENT_Node2_action --> E_SetResultStatusNOTSENT N_SetResultStatusNOTSENT_Node1 -- No --> N_SetResultStatusNOTSENT_Node2 N_SetResultStatusNOTSENT_Node3{"Final result classification is
performed"}:::decision N_SetResultStatusNOTSENT_Node3_action["Set result status to NOT SENT AND
record final warning message count
AND record final error message count"]:::main N_SetResultStatusNOTSENT_Node3 -- Yes --> N_SetResultStatusNOTSENT_Node3_action N_SetResultStatusNOTSENT_Node3_action --> E_SetResultStatusNOTSENT N_SetResultStatusNOTSENT_Node2 -- No --> N_SetResultStatusNOTSENT_Node3 N_SetResultStatusNOTSENT_Node4{"The system determines the final
processing result status"}:::decision N_SetResultStatusNOTSENT_Node4_action["Set the result status to NOT SENT,
add spawn count to error count, and
trigger special manifest processing"]:::main N_SetResultStatusNOTSENT_Node4 -- Yes --> N_SetResultStatusNOTSENT_Node4_action N_SetResultStatusNOTSENT_Node4_action --> E_SetResultStatusNOTSENT N_SetResultStatusNOTSENT_Node3 -- No --> N_SetResultStatusNOTSENT_Node4 N_SetResultStatusNOTSENT_Node4 -- No --> E_SetResultStatusNOTSENT
processing status"}:::decision N_SetResultStatusNOTSENT_Node0_action["Set the result status to NOT SENT,
count warnings, add spawn count to
error count, and trigger special
manifest processing"]:::main N_SetResultStatusNOTSENT_Node0 -- Yes --> N_SetResultStatusNOTSENT_Node0_action N_SetResultStatusNOTSENT_Node0_action --> E_SetResultStatusNOTSENT S_SetResultStatusNOTSENT --> N_SetResultStatusNOTSENT_Node0 N_SetResultStatusNOTSENT_Node1{"The system determines the final
result status"}:::decision N_SetResultStatusNOTSENT_Node1_action["The result status is set to NOT
SENT indicating special processing
is required"]:::main N_SetResultStatusNOTSENT_Node1 -- Yes --> N_SetResultStatusNOTSENT_Node1_action N_SetResultStatusNOTSENT_Node1_action --> E_SetResultStatusNOTSENT N_SetResultStatusNOTSENT_Node0 -- No --> N_SetResultStatusNOTSENT_Node1 N_SetResultStatusNOTSENT_Node2{"There are spawn messages present"}:::decision N_SetResultStatusNOTSENT_Node2_action["Set result status to NOT SENT AND
count warning messages AND add spawn
count to error count AND set total
error count"]:::main N_SetResultStatusNOTSENT_Node2 -- Yes --> N_SetResultStatusNOTSENT_Node2_action N_SetResultStatusNOTSENT_Node2_action --> E_SetResultStatusNOTSENT N_SetResultStatusNOTSENT_Node1 -- No --> N_SetResultStatusNOTSENT_Node2 N_SetResultStatusNOTSENT_Node3{"Final result classification is
performed"}:::decision N_SetResultStatusNOTSENT_Node3_action["Set result status to NOT SENT AND
record final warning message count
AND record final error message count"]:::main N_SetResultStatusNOTSENT_Node3 -- Yes --> N_SetResultStatusNOTSENT_Node3_action N_SetResultStatusNOTSENT_Node3_action --> E_SetResultStatusNOTSENT N_SetResultStatusNOTSENT_Node2 -- No --> N_SetResultStatusNOTSENT_Node3 N_SetResultStatusNOTSENT_Node4{"The system determines the final
processing result status"}:::decision N_SetResultStatusNOTSENT_Node4_action["Set the result status to NOT SENT,
add spawn count to error count, and
trigger special manifest processing"]:::main N_SetResultStatusNOTSENT_Node4 -- Yes --> N_SetResultStatusNOTSENT_Node4_action N_SetResultStatusNOTSENT_Node4_action --> E_SetResultStatusNOTSENT N_SetResultStatusNOTSENT_Node3 -- No --> N_SetResultStatusNOTSENT_Node4 N_SetResultStatusNOTSENT_Node4 -- No --> E_SetResultStatusNOTSENT
File: GCX003.cbl
GIVEN:
Train processing has no errors but has spawn activities
WHEN:
The system evaluates the final processing status
THEN:
Set the result status to NOT SENT, count warnings, add spawn count to error count, and trigger special manifest processing
File: GCX003.cbl
GIVEN:
Train manifest processing has completed with no errors but has spawn messages
WHEN:
The system determines the final result status
THEN:
The result status is set to NOT SENT indicating special processing is required
File: GCX003.cbl
GIVEN:
Train processing has completed with no processing errors
WHEN:
There are spawn messages present
THEN:
- Set result status to not sent
- Count warning messages
- Add spawn count to error count
- Set total error count
File: GCX003.cbl
GIVEN:
Train processing has encountered errors
WHEN:
Final result classification is performed
THEN:
- Set result status to not sent
- Record final warning message count
- Record final error message count
File: GCX003.cbl
GIVEN:
Train manifest processing completed with no errors but spawn messages exist
WHEN:
The system determines the final processing result status
THEN:
Set the result status to NOT SENT, add spawn count to error count, and trigger special manifest processing
β Consolidated Acceptance Criteria
- The system checks for spawn activities → if no spawns exist, check message types for error classification; if spawns exist, check for diversion and IT export messages
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnySpawnActivities(["Start Step"])
E_AnySpawnActivities(["End Step"])
N_AnySpawnActivities_Node0{"The system checks for spawn
activities"}:::decision N_AnySpawnActivities_Node0_action["If no spawns exist, check message
types for error classification if
spawns exist, check for diversion
and IT export messages"]:::main N_AnySpawnActivities_Node0 -- Yes --> N_AnySpawnActivities_Node0_action N_AnySpawnActivities_Node0_action --> E_AnySpawnActivities S_AnySpawnActivities --> N_AnySpawnActivities_Node0 N_AnySpawnActivities_Node0 -- No --> E_AnySpawnActivities
activities"}:::decision N_AnySpawnActivities_Node0_action["If no spawns exist, check message
types for error classification if
spawns exist, check for diversion
and IT export messages"]:::main N_AnySpawnActivities_Node0 -- Yes --> N_AnySpawnActivities_Node0_action N_AnySpawnActivities_Node0_action --> E_AnySpawnActivities S_AnySpawnActivities --> N_AnySpawnActivities_Node0 N_AnySpawnActivities_Node0 -- No --> E_AnySpawnActivities
File: GCX003.cbl
GIVEN:
Train processing has errors
WHEN:
The system checks for spawn activities
THEN:
- If no spawns exist, check message types for error classification; if spawns exist, check for diversion
- It export messages
β Consolidated Acceptance Criteria
- The system processes error message classification → convert message type 43 to message type 18, increase warning count by 1, and decrease error count by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConvertError43toWarning18(["Start Step"])
E_ConvertError43toWarning18(["End Step"])
N_ConvertError43toWarning18_Node0{"The system processes error message
classification"}:::decision N_ConvertError43toWarning18_Node0_action["Convert message type 43 to message
type 18, increase warning count by
1, and decrease error count by 1"]:::exclusion N_ConvertError43toWarning18_Node0 -- Yes -->|Alternative| N_ConvertError43toWarning18_Node0_action N_ConvertError43toWarning18_Node0_action --> E_ConvertError43toWarning18 S_ConvertError43toWarning18 --> N_ConvertError43toWarning18_Node0 N_ConvertError43toWarning18_Node0 -- No --> E_ConvertError43toWarning18
classification"}:::decision N_ConvertError43toWarning18_Node0_action["Convert message type 43 to message
type 18, increase warning count by
1, and decrease error count by 1"]:::exclusion N_ConvertError43toWarning18_Node0 -- Yes -->|Alternative| N_ConvertError43toWarning18_Node0_action N_ConvertError43toWarning18_Node0_action --> E_ConvertError43toWarning18 S_ConvertError43toWarning18 --> N_ConvertError43toWarning18_Node0 N_ConvertError43toWarning18_Node0 -- No --> E_ConvertError43toWarning18
File: GCX003.cbl
GIVEN:
Processing has errors with no spawn activities and message type 43 is found
WHEN:
The system processes error message classification
THEN:
Convert message type 43 to message type 18, increase warning count by 1, and decrease error count by 1
β Consolidated Acceptance Criteria
- The system processes spawn message conversion → convert diversion messages to message 19 and include the station code from GCSTBRT-SC-US-STAT-CODE-X
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConverttoMessage19withStationCode(["Start Step"])
E_ConverttoMessage19withStationCode(["End Step"])
N_ConverttoMessage19withStationCode_Node0{"The system processes spawn message
conversion"}:::decision N_ConverttoMessage19withStationCode_Node0_action["Convert diversion messages to
message 19 and include the station
code from GCSTBRT-SC-US-STAT-CODE-X"]:::main N_ConverttoMessage19withStationCode_Node0 -- Yes --> N_ConverttoMessage19withStationCode_Node0_action N_ConverttoMessage19withStationCode_Node0_action --> E_ConverttoMessage19withStationCode S_ConverttoMessage19withStationCode --> N_ConverttoMessage19withStationCode_Node0 N_ConverttoMessage19withStationCode_Node0 -- No --> E_ConverttoMessage19withStationCode
conversion"}:::decision N_ConverttoMessage19withStationCode_Node0_action["Convert diversion messages to
message 19 and include the station
code from GCSTBRT-SC-US-STAT-CODE-X"]:::main N_ConverttoMessage19withStationCode_Node0 -- Yes --> N_ConverttoMessage19withStationCode_Node0_action N_ConverttoMessage19withStationCode_Node0_action --> E_ConverttoMessage19withStationCode S_ConverttoMessage19withStationCode --> N_ConverttoMessage19withStationCode_Node0 N_ConverttoMessage19withStationCode_Node0 -- No --> E_ConverttoMessage19withStationCode
File: GCX003.cbl
GIVEN:
Processing has errors with spawn activities and diversion messages are found
WHEN:
The system processes spawn message conversion
THEN:
- Convert diversion messages to message 19
- Include the station code from gcstbrt-sc-us-stat-code-x
β Consolidated Acceptance Criteria
- The system processes spawn message conversion → convert IT export messages to message type 18
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConverttoMessage18(["Start Step"])
E_ConverttoMessage18(["End Step"])
N_ConverttoMessage18_Node0{"The system processes spawn message
conversion"}:::decision N_ConverttoMessage18_Node0_action["Convert IT export messages to
message type 18"]:::main N_ConverttoMessage18_Node0 -- Yes --> N_ConverttoMessage18_Node0_action N_ConverttoMessage18_Node0_action --> E_ConverttoMessage18 S_ConverttoMessage18 --> N_ConverttoMessage18_Node0 N_ConverttoMessage18_Node0 -- No --> E_ConverttoMessage18
conversion"}:::decision N_ConverttoMessage18_Node0_action["Convert IT export messages to
message type 18"]:::main N_ConverttoMessage18_Node0 -- Yes --> N_ConverttoMessage18_Node0_action N_ConverttoMessage18_Node0_action --> E_ConverttoMessage18 S_ConverttoMessage18 --> N_ConverttoMessage18_Node0 N_ConverttoMessage18_Node0 -- No --> E_ConverttoMessage18
File: GCX003.cbl
GIVEN:
Processing has errors with spawn activities and IT export messages are found
WHEN:
The system processes spawn message conversion
THEN:
Convert IT export messages to message type 18
β Consolidated Acceptance Criteria
- The system calculates final warning count → add the spawn count to the existing warning count to get the final warning total
- The system calculates final warning count for display → the spawn count is added to the existing warning count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddSpawnCounttoWarningCount(["Start Step"])
E_AddSpawnCounttoWarningCount(["End Step"])
N_AddSpawnCounttoWarningCount_Node0{"The system calculates final warning
count"}:::decision N_AddSpawnCounttoWarningCount_Node0_action["Add the spawn count to the existing
warning count to get the final
warning total"]:::main N_AddSpawnCounttoWarningCount_Node0 -- Yes --> N_AddSpawnCounttoWarningCount_Node0_action N_AddSpawnCounttoWarningCount_Node0_action --> E_AddSpawnCounttoWarningCount S_AddSpawnCounttoWarningCount --> N_AddSpawnCounttoWarningCount_Node0 N_AddSpawnCounttoWarningCount_Node1{"The system calculates final warning
count for display"}:::decision N_AddSpawnCounttoWarningCount_Node1_action["The spawn count is added to the
existing warning count"]:::main N_AddSpawnCounttoWarningCount_Node1 -- Yes --> N_AddSpawnCounttoWarningCount_Node1_action N_AddSpawnCounttoWarningCount_Node1_action --> E_AddSpawnCounttoWarningCount N_AddSpawnCounttoWarningCount_Node0 -- No --> N_AddSpawnCounttoWarningCount_Node1 N_AddSpawnCounttoWarningCount_Node1 -- No --> E_AddSpawnCounttoWarningCount
count"}:::decision N_AddSpawnCounttoWarningCount_Node0_action["Add the spawn count to the existing
warning count to get the final
warning total"]:::main N_AddSpawnCounttoWarningCount_Node0 -- Yes --> N_AddSpawnCounttoWarningCount_Node0_action N_AddSpawnCounttoWarningCount_Node0_action --> E_AddSpawnCounttoWarningCount S_AddSpawnCounttoWarningCount --> N_AddSpawnCounttoWarningCount_Node0 N_AddSpawnCounttoWarningCount_Node1{"The system calculates final warning
count for display"}:::decision N_AddSpawnCounttoWarningCount_Node1_action["The spawn count is added to the
existing warning count"]:::main N_AddSpawnCounttoWarningCount_Node1 -- Yes --> N_AddSpawnCounttoWarningCount_Node1_action N_AddSpawnCounttoWarningCount_Node1_action --> E_AddSpawnCounttoWarningCount N_AddSpawnCounttoWarningCount_Node0 -- No --> N_AddSpawnCounttoWarningCount_Node1 N_AddSpawnCounttoWarningCount_Node1 -- No --> E_AddSpawnCounttoWarningCount
File: GCX003.cbl
GIVEN:
Processing has errors with spawn activities and message conversion is complete
WHEN:
The system calculates final warning count
THEN:
Add the spawn count to the existing warning count to get the final warning total
File: GCX003.cbl
GIVEN:
Train manifest processing has both errors and spawn messages
WHEN:
The system calculates final warning count for display
THEN:
The spawn count is added to the existing warning count
β Consolidated Acceptance Criteria
- The system generates the final report header → set header line 4 flag to true, populate US customer train ID from GCWTL-M1005-US-CUST-TRAIN-ID, and set ETA year, month, day, hour, and minute from request ETA fields
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateReportHeaderLine4(["Start Step"])
E_GenerateReportHeaderLine4(["End Step"])
N_GenerateReportHeaderLine4_Node0{"The system generates the final
report header"}:::decision N_GenerateReportHeaderLine4_Node0_action["Set header line 4 flag to true,
populate US customer train ID from
GCWTL-M1005-US-CUST-TRAIN-ID, and
set ETA year, month, day, hour, and
minute from request ETA fields"]:::main N_GenerateReportHeaderLine4_Node0 -- Yes --> N_GenerateReportHeaderLine4_Node0_action N_GenerateReportHeaderLine4_Node0_action --> E_GenerateReportHeaderLine4 S_GenerateReportHeaderLine4 --> N_GenerateReportHeaderLine4_Node0 N_GenerateReportHeaderLine4_Node0 -- No --> E_GenerateReportHeaderLine4
report header"}:::decision N_GenerateReportHeaderLine4_Node0_action["Set header line 4 flag to true,
populate US customer train ID from
GCWTL-M1005-US-CUST-TRAIN-ID, and
set ETA year, month, day, hour, and
minute from request ETA fields"]:::main N_GenerateReportHeaderLine4_Node0 -- Yes --> N_GenerateReportHeaderLine4_Node0_action N_GenerateReportHeaderLine4_Node0_action --> E_GenerateReportHeaderLine4 S_GenerateReportHeaderLine4 --> N_GenerateReportHeaderLine4_Node0 N_GenerateReportHeaderLine4_Node0 -- No --> E_GenerateReportHeaderLine4
File: GCX003.cbl
GIVEN:
Processing result status has been determined and counts have been finalized
WHEN:
The system generates the final report header
THEN:
Set header line 4 flag to true, populate US customer train ID from GCWTL-M1005-US-CUST-TRAIN-ID, and set ETA year, month, day, hour, and minute from request ETA fields
β Consolidated Acceptance Criteria
- The system checks if the entry is a message line → the system identifies whether the entry contains message content that needs error type analysis
- The system checks if the entry is classified as a message line → the system identifies whether the entry contains message content that needs further analysis
- The entry is evaluated for message line status → continue with message type classification if it is a message line, otherwise skip processing
- The system checks if the entry is a message line → the system identifies whether the entry contains a message that needs to be classified for counting purposes
- The report line is not identified as a message line → the system skips message classification and continues processing without incrementing any counters
- The system checks if the line contains a message using the message line indicator → the system identifies whether the line is a message line that requires classification or a regular report line that should be skipped for message counting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsMessageLine(["Start Step"])
E_IsMessageLine(["End Step"])
N_IsMessageLine_Node0{"The system checks if the entry is a
message line"}:::decision N_IsMessageLine_Node0_action["The system identifies whether the
entry contains message content that
needs error type analysis"]:::main N_IsMessageLine_Node0 -- Yes --> N_IsMessageLine_Node0_action N_IsMessageLine_Node0_action --> E_IsMessageLine S_IsMessageLine --> N_IsMessageLine_Node0 N_IsMessageLine_Node1{"The system checks if the entry is
classified as a message line"}:::decision N_IsMessageLine_Node1_action["The system identifies whether the
entry contains message content that
needs further analysis"]:::main N_IsMessageLine_Node1 -- Yes --> N_IsMessageLine_Node1_action N_IsMessageLine_Node1_action --> E_IsMessageLine N_IsMessageLine_Node0 -- No --> N_IsMessageLine_Node1 N_IsMessageLine_Node2{"The entry is evaluated for message
line status"}:::decision N_IsMessageLine_Node2_action["Continue with message type
classification if it is a message
line, otherwise skip processing"]:::main N_IsMessageLine_Node2 -- Yes --> N_IsMessageLine_Node2_action N_IsMessageLine_Node2_action --> E_IsMessageLine N_IsMessageLine_Node1 -- No --> N_IsMessageLine_Node2 N_IsMessageLine_Node3{"The system checks if the entry is a
message line"}:::decision N_IsMessageLine_Node3_action["The system identifies whether the
entry contains a message that needs
to be classified for counting
purposes"]:::main N_IsMessageLine_Node3 -- Yes --> N_IsMessageLine_Node3_action N_IsMessageLine_Node3_action --> E_IsMessageLine N_IsMessageLine_Node2 -- No --> N_IsMessageLine_Node3 N_IsMessageLine_Node4{"The report line is not identified
as a message line"}:::decision N_IsMessageLine_Node4_action["The system skips message
classification and continues
processing without incrementing any
counters"]:::main N_IsMessageLine_Node4 -- Yes --> N_IsMessageLine_Node4_action N_IsMessageLine_Node4_action --> E_IsMessageLine N_IsMessageLine_Node3 -- No --> N_IsMessageLine_Node4 N_IsMessageLine_Node5{"The system checks if the line
contains a message using the message
line indicator"}:::decision N_IsMessageLine_Node5_action["The system identifies whether the
line is a message line that requires
classification or a regular report
line that should be skipped for
message counting"]:::main N_IsMessageLine_Node5 -- Yes --> N_IsMessageLine_Node5_action N_IsMessageLine_Node5_action --> E_IsMessageLine N_IsMessageLine_Node4 -- No --> N_IsMessageLine_Node5 N_IsMessageLine_Node5 -- No --> E_IsMessageLine
message line"}:::decision N_IsMessageLine_Node0_action["The system identifies whether the
entry contains message content that
needs error type analysis"]:::main N_IsMessageLine_Node0 -- Yes --> N_IsMessageLine_Node0_action N_IsMessageLine_Node0_action --> E_IsMessageLine S_IsMessageLine --> N_IsMessageLine_Node0 N_IsMessageLine_Node1{"The system checks if the entry is
classified as a message line"}:::decision N_IsMessageLine_Node1_action["The system identifies whether the
entry contains message content that
needs further analysis"]:::main N_IsMessageLine_Node1 -- Yes --> N_IsMessageLine_Node1_action N_IsMessageLine_Node1_action --> E_IsMessageLine N_IsMessageLine_Node0 -- No --> N_IsMessageLine_Node1 N_IsMessageLine_Node2{"The entry is evaluated for message
line status"}:::decision N_IsMessageLine_Node2_action["Continue with message type
classification if it is a message
line, otherwise skip processing"]:::main N_IsMessageLine_Node2 -- Yes --> N_IsMessageLine_Node2_action N_IsMessageLine_Node2_action --> E_IsMessageLine N_IsMessageLine_Node1 -- No --> N_IsMessageLine_Node2 N_IsMessageLine_Node3{"The system checks if the entry is a
message line"}:::decision N_IsMessageLine_Node3_action["The system identifies whether the
entry contains a message that needs
to be classified for counting
purposes"]:::main N_IsMessageLine_Node3 -- Yes --> N_IsMessageLine_Node3_action N_IsMessageLine_Node3_action --> E_IsMessageLine N_IsMessageLine_Node2 -- No --> N_IsMessageLine_Node3 N_IsMessageLine_Node4{"The report line is not identified
as a message line"}:::decision N_IsMessageLine_Node4_action["The system skips message
classification and continues
processing without incrementing any
counters"]:::main N_IsMessageLine_Node4 -- Yes --> N_IsMessageLine_Node4_action N_IsMessageLine_Node4_action --> E_IsMessageLine N_IsMessageLine_Node3 -- No --> N_IsMessageLine_Node4 N_IsMessageLine_Node5{"The system checks if the line
contains a message using the message
line indicator"}:::decision N_IsMessageLine_Node5_action["The system identifies whether the
line is a message line that requires
classification or a regular report
line that should be skipped for
message counting"]:::main N_IsMessageLine_Node5 -- Yes --> N_IsMessageLine_Node5_action N_IsMessageLine_Node5_action --> E_IsMessageLine N_IsMessageLine_Node4 -- No --> N_IsMessageLine_Node5 N_IsMessageLine_Node5 -- No --> E_IsMessageLine
File: GCX003.cbl
GIVEN:
A report entry is being processed for error classification
WHEN:
The system checks if the entry is a message line
THEN:
The system identifies whether the entry contains message content that needs error type analysis
File: GCX003.cbl
GIVEN:
A report entry at a specific index position
WHEN:
The system checks if the entry is classified as a message line
THEN:
The system identifies whether the entry contains message content that needs further analysis
File: GCX003.cbl
GIVEN:
An entry has been added to the report
WHEN:
The entry is evaluated for message line status
THEN:
Continue with message type classification if it is a message line, otherwise skip processing
File: GCX003.cbl
GIVEN:
A report entry has been added to the report index
WHEN:
The system checks if the entry is a message line
THEN:
The system identifies whether the entry contains a message that needs to be classified for counting purposes
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A report line is being processed for message classification
WHEN:
The report line is not identified as a message line
THEN:
- The system skips message classification
- Continues processing without incrementing any counters
File: GCX003.cbl
GIVEN:
A report line has been added to the report at a specific index position
WHEN:
The system checks if the line contains a message using the message line indicator
THEN:
The system identifies whether the line is a message line that requires classification or a regular report line that should be skipped for message counting
β Consolidated Acceptance Criteria
- The system checks if the message is a spawn message → if it is a spawn message, the system skips error counting and continues processing without incrementing counters
- The message is classified as a spawn message type → the system skips the statistical counting process and continues to index increment
- The message is identified as a spawn message → skip all message type classification and counting processes
- The system checks if the message is a spawn message → spawn messages are excluded from error, warning, and information counting but still increment the report index
- The message is classified as a spawn message type → skip the severity classification and counter increment processing but continue with report index addition
- The message is identified as a spawn message → the system skips severity classification and continues processing without incrementing any counters
- The system checks if the message is a spawn message type → if it is a spawn message, skip the message counting process and proceed to increment report index, otherwise continue with message classification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsSpawnMessage(["Start Step"])
E_IsSpawnMessage(["End Step"])
N_IsSpawnMessage_Node0{"The system checks if the message is
a spawn message"}:::decision N_IsSpawnMessage_Node0_action["If it is a spawn message, the
system skips error counting and
continues processing without
incrementing counters"]:::main N_IsSpawnMessage_Node0 -- Yes --> N_IsSpawnMessage_Node0_action N_IsSpawnMessage_Node0_action --> E_IsSpawnMessage S_IsSpawnMessage --> N_IsSpawnMessage_Node0 N_IsSpawnMessage_Node1{"The message is classified as a
spawn message type"}:::decision N_IsSpawnMessage_Node1_action["The system skips the statistical
counting process and continues to
index increment"]:::main N_IsSpawnMessage_Node1 -- Yes --> N_IsSpawnMessage_Node1_action N_IsSpawnMessage_Node1_action --> E_IsSpawnMessage N_IsSpawnMessage_Node0 -- No --> N_IsSpawnMessage_Node1 N_IsSpawnMessage_Node2{"The message is identified as a
spawn message"}:::decision N_IsSpawnMessage_Node2_action["Skip all message type
classification and counting
processes"]:::main N_IsSpawnMessage_Node2 -- Yes --> N_IsSpawnMessage_Node2_action N_IsSpawnMessage_Node2_action --> E_IsSpawnMessage N_IsSpawnMessage_Node1 -- No --> N_IsSpawnMessage_Node2 N_IsSpawnMessage_Node3{"The system checks if the message is
a spawn message"}:::decision N_IsSpawnMessage_Node3_action["Spawn messages are excluded from
error, warning, and information
counting but still increment the
report index"]:::main N_IsSpawnMessage_Node3 -- Yes --> N_IsSpawnMessage_Node3_action N_IsSpawnMessage_Node3_action --> E_IsSpawnMessage N_IsSpawnMessage_Node2 -- No --> N_IsSpawnMessage_Node3 N_IsSpawnMessage_Node4{"The message is classified as a
spawn message type"}:::decision N_IsSpawnMessage_Node4_action["Skip the severity classification
and counter increment processing but
continue with report index addition"]:::main N_IsSpawnMessage_Node4 -- Yes --> N_IsSpawnMessage_Node4_action N_IsSpawnMessage_Node4_action --> E_IsSpawnMessage N_IsSpawnMessage_Node3 -- No --> N_IsSpawnMessage_Node4 N_IsSpawnMessage_Node5{"The message is identified as a
spawn message"}:::decision N_IsSpawnMessage_Node5_action["The system skips severity
classification and continues
processing without incrementing any
counters"]:::main N_IsSpawnMessage_Node5 -- Yes --> N_IsSpawnMessage_Node5_action N_IsSpawnMessage_Node5_action --> E_IsSpawnMessage N_IsSpawnMessage_Node4 -- No --> N_IsSpawnMessage_Node5 N_IsSpawnMessage_Node6{"The system checks if the message is
a spawn message type"}:::decision N_IsSpawnMessage_Node6_action["If it is a spawn message, skip the
message counting process and proceed
to increment report index, otherwise
continue with message classification"]:::main N_IsSpawnMessage_Node6 -- Yes --> N_IsSpawnMessage_Node6_action N_IsSpawnMessage_Node6_action --> E_IsSpawnMessage N_IsSpawnMessage_Node5 -- No --> N_IsSpawnMessage_Node6 N_IsSpawnMessage_Node6 -- No --> E_IsSpawnMessage
a spawn message"}:::decision N_IsSpawnMessage_Node0_action["If it is a spawn message, the
system skips error counting and
continues processing without
incrementing counters"]:::main N_IsSpawnMessage_Node0 -- Yes --> N_IsSpawnMessage_Node0_action N_IsSpawnMessage_Node0_action --> E_IsSpawnMessage S_IsSpawnMessage --> N_IsSpawnMessage_Node0 N_IsSpawnMessage_Node1{"The message is classified as a
spawn message type"}:::decision N_IsSpawnMessage_Node1_action["The system skips the statistical
counting process and continues to
index increment"]:::main N_IsSpawnMessage_Node1 -- Yes --> N_IsSpawnMessage_Node1_action N_IsSpawnMessage_Node1_action --> E_IsSpawnMessage N_IsSpawnMessage_Node0 -- No --> N_IsSpawnMessage_Node1 N_IsSpawnMessage_Node2{"The message is identified as a
spawn message"}:::decision N_IsSpawnMessage_Node2_action["Skip all message type
classification and counting
processes"]:::main N_IsSpawnMessage_Node2 -- Yes --> N_IsSpawnMessage_Node2_action N_IsSpawnMessage_Node2_action --> E_IsSpawnMessage N_IsSpawnMessage_Node1 -- No --> N_IsSpawnMessage_Node2 N_IsSpawnMessage_Node3{"The system checks if the message is
a spawn message"}:::decision N_IsSpawnMessage_Node3_action["Spawn messages are excluded from
error, warning, and information
counting but still increment the
report index"]:::main N_IsSpawnMessage_Node3 -- Yes --> N_IsSpawnMessage_Node3_action N_IsSpawnMessage_Node3_action --> E_IsSpawnMessage N_IsSpawnMessage_Node2 -- No --> N_IsSpawnMessage_Node3 N_IsSpawnMessage_Node4{"The message is classified as a
spawn message type"}:::decision N_IsSpawnMessage_Node4_action["Skip the severity classification
and counter increment processing but
continue with report index addition"]:::main N_IsSpawnMessage_Node4 -- Yes --> N_IsSpawnMessage_Node4_action N_IsSpawnMessage_Node4_action --> E_IsSpawnMessage N_IsSpawnMessage_Node3 -- No --> N_IsSpawnMessage_Node4 N_IsSpawnMessage_Node5{"The message is identified as a
spawn message"}:::decision N_IsSpawnMessage_Node5_action["The system skips severity
classification and continues
processing without incrementing any
counters"]:::main N_IsSpawnMessage_Node5 -- Yes --> N_IsSpawnMessage_Node5_action N_IsSpawnMessage_Node5_action --> E_IsSpawnMessage N_IsSpawnMessage_Node4 -- No --> N_IsSpawnMessage_Node5 N_IsSpawnMessage_Node6{"The system checks if the message is
a spawn message type"}:::decision N_IsSpawnMessage_Node6_action["If it is a spawn message, skip the
message counting process and proceed
to increment report index, otherwise
continue with message classification"]:::main N_IsSpawnMessage_Node6 -- Yes --> N_IsSpawnMessage_Node6_action N_IsSpawnMessage_Node6_action --> E_IsSpawnMessage N_IsSpawnMessage_Node5 -- No --> N_IsSpawnMessage_Node6 N_IsSpawnMessage_Node6 -- No --> E_IsSpawnMessage
File: GCX003.cbl
GIVEN:
A message line has been identified for error classification
WHEN:
The system checks if the message is a spawn message
THEN:
- If it is a spawn message, the system skips error counting
- Continues processing without incrementing counters
File: GCX003.cbl
GIVEN:
A message line entry that has been identified
WHEN:
The message is classified as a spawn message type
THEN:
- The system skips the statistical counting process
- Continues to index increment
File: GCX003.cbl
GIVEN:
A message line has been added to the report
WHEN:
The message is identified as a spawn message
THEN:
- Skip all message type classification
- Counting processes
File: GCX003.cbl
GIVEN:
A message line has been identified in the report
WHEN:
The system checks if the message is a spawn message
THEN:
Spawn messages are excluded from error, warning, and information counting but still increment the report index
File: GCX003.cbl
GIVEN:
A message line is identified for processing
WHEN:
The message is classified as a spawn message type
THEN:
- Skip the severity classification
- Counter increment processing but continue with report index addition
File: GCX003.cbl
GIVEN:
A message line is being processed for severity classification
WHEN:
The message is identified as a spawn message
THEN:
- The system skips severity classification
- Continues processing without incrementing any counters
File: GCX003.cbl
GIVEN:
A message line has been identified in the report
WHEN:
The system checks if the message is a spawn message type
THEN:
- If it is a spawn message, skip the message counting process
- Proceed to increment report index, otherwise continue with message classification
β Consolidated Acceptance Criteria
- If the message type indicator → if the message type is error, the system proceeds to error-specific processing and counter increments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessageTypeError(["Start Step"])
E_MessageTypeError(["End Step"])
N_MessageTypeError_Node0{"The system evaluates the message
type indicator"}:::decision N_MessageTypeError_Node0_action["If the message type is error, the
system proceeds to error-specific
processing and counter increments"]:::main N_MessageTypeError_Node0 -- Yes --> N_MessageTypeError_Node0_action N_MessageTypeError_Node0_action --> E_MessageTypeError S_MessageTypeError --> N_MessageTypeError_Node0 N_MessageTypeError_Node0 -- No --> E_MessageTypeError
type indicator"}:::decision N_MessageTypeError_Node0_action["If the message type is error, the
system proceeds to error-specific
processing and counter increments"]:::main N_MessageTypeError_Node0 -- Yes --> N_MessageTypeError_Node0_action N_MessageTypeError_Node0_action --> E_MessageTypeError S_MessageTypeError --> N_MessageTypeError_Node0 N_MessageTypeError_Node0 -- No --> E_MessageTypeError
File: GCX003.cbl
GIVEN:
A non-spawn message line is being processed
WHEN:
The system evaluates the message type indicator
THEN:
- If the message type is error, the system proceeds to error-specific processing
- Counter increments
β Consolidated Acceptance Criteria
- If the message type indicator → if the message type is warning, the system proceeds to warning-specific processing and counter increments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessageTypeWarning(["Start Step"])
E_MessageTypeWarning(["End Step"])
N_MessageTypeWarning_Node0{"The system evaluates the message
type indicator"}:::decision N_MessageTypeWarning_Node0_action["If the message type is warning, the
system proceeds to warning-specific
processing and counter increments"]:::main N_MessageTypeWarning_Node0 -- Yes --> N_MessageTypeWarning_Node0_action N_MessageTypeWarning_Node0_action --> E_MessageTypeWarning S_MessageTypeWarning --> N_MessageTypeWarning_Node0 N_MessageTypeWarning_Node0 -- No --> E_MessageTypeWarning
type indicator"}:::decision N_MessageTypeWarning_Node0_action["If the message type is warning, the
system proceeds to warning-specific
processing and counter increments"]:::main N_MessageTypeWarning_Node0 -- Yes --> N_MessageTypeWarning_Node0_action N_MessageTypeWarning_Node0_action --> E_MessageTypeWarning S_MessageTypeWarning --> N_MessageTypeWarning_Node0 N_MessageTypeWarning_Node0 -- No --> E_MessageTypeWarning
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A non-spawn message line is not classified as an error
WHEN:
The system evaluates the message type indicator
THEN:
- If the message type is warning, the system proceeds to warning-specific processing
- Counter increments
β Consolidated Acceptance Criteria
- If the message type indicator → if the message type is information, the system increments the information counter
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessageTypeInfo(["Start Step"])
E_MessageTypeInfo(["End Step"])
N_MessageTypeInfo_Node0{"The system evaluates the message
type indicator"}:::decision N_MessageTypeInfo_Node0_action["If the message type is information,
the system increments the
information counter"]:::main N_MessageTypeInfo_Node0 -- Yes --> N_MessageTypeInfo_Node0_action N_MessageTypeInfo_Node0_action --> E_MessageTypeInfo S_MessageTypeInfo --> N_MessageTypeInfo_Node0 N_MessageTypeInfo_Node0 -- No --> E_MessageTypeInfo
type indicator"}:::decision N_MessageTypeInfo_Node0_action["If the message type is information,
the system increments the
information counter"]:::main N_MessageTypeInfo_Node0 -- Yes --> N_MessageTypeInfo_Node0_action N_MessageTypeInfo_Node0_action --> E_MessageTypeInfo S_MessageTypeInfo --> N_MessageTypeInfo_Node0 N_MessageTypeInfo_Node0 -- No --> E_MessageTypeInfo
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A non-spawn message line is not classified as error or warning
WHEN:
The system evaluates the message type indicator
THEN:
If the message type is information, the system increments the information counter
β Consolidated Acceptance Criteria
- The system checks the specific error type indicator → if the error type is 43, the system increments the error type 43 counter in addition to the general error counter
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsErrorType43(["Start Step"])
E_IsErrorType43(["End Step"])
N_IsErrorType43_Node0{"The system checks the specific
error type indicator"}:::decision N_IsErrorType43_Node0_action["If the error type is 43, the system
increments the error type 43 counter
in addition to the general error
counter"]:::exclusion N_IsErrorType43_Node0 -- Yes -->|Alternative| N_IsErrorType43_Node0_action N_IsErrorType43_Node0_action --> E_IsErrorType43 S_IsErrorType43 --> N_IsErrorType43_Node0 N_IsErrorType43_Node0 -- No --> E_IsErrorType43
error type indicator"}:::decision N_IsErrorType43_Node0_action["If the error type is 43, the system
increments the error type 43 counter
in addition to the general error
counter"]:::exclusion N_IsErrorType43_Node0 -- Yes -->|Alternative| N_IsErrorType43_Node0_action N_IsErrorType43_Node0_action --> E_IsErrorType43 S_IsErrorType43 --> N_IsErrorType43_Node0 N_IsErrorType43_Node0 -- No --> E_IsErrorType43
File: GCX003.cbl
GIVEN:
A message has been classified as an error type
WHEN:
The system checks the specific error type indicator
THEN:
If the error type is 43, the system increments the error type 43 counter in addition to the general error counter
β Consolidated Acceptance Criteria
- The system processes the error classification → the system increments the error type 43 counter by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementErrorType43Counter(["Start Step"])
E_IncrementErrorType43Counter(["End Step"])
N_IncrementErrorType43Counter_Node0{"The system processes the error
classification"}:::decision N_IncrementErrorType43Counter_Node0_action["The system increments the error
type 43 counter by 1"]:::exclusion N_IncrementErrorType43Counter_Node0 -- Yes -->|Alternative| N_IncrementErrorType43Counter_Node0_action N_IncrementErrorType43Counter_Node0_action --> E_IncrementErrorType43Counter S_IncrementErrorType43Counter --> N_IncrementErrorType43Counter_Node0 N_IncrementErrorType43Counter_Node0 -- No --> E_IncrementErrorType43Counter
classification"}:::decision N_IncrementErrorType43Counter_Node0_action["The system increments the error
type 43 counter by 1"]:::exclusion N_IncrementErrorType43Counter_Node0 -- Yes -->|Alternative| N_IncrementErrorType43Counter_Node0_action N_IncrementErrorType43Counter_Node0_action --> E_IncrementErrorType43Counter S_IncrementErrorType43Counter --> N_IncrementErrorType43Counter_Node0 N_IncrementErrorType43Counter_Node0 -- No --> E_IncrementErrorType43Counter
File: GCX003.cbl
GIVEN:
An error message has been identified as type 43
WHEN:
The system processes the error classification
THEN:
The system increments the error type 43 counter by 1
β Consolidated Acceptance Criteria
- The system processes the error classification → the system increments the general error counter by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementGeneralErrorCounter(["Start Step"])
E_IncrementGeneralErrorCounter(["End Step"])
N_IncrementGeneralErrorCounter_Node0{"The system processes the error
classification"}:::decision N_IncrementGeneralErrorCounter_Node0_action["The system increments the general
error counter by 1"]:::exclusion N_IncrementGeneralErrorCounter_Node0 -- Yes -->|Alternative| N_IncrementGeneralErrorCounter_Node0_action N_IncrementGeneralErrorCounter_Node0_action --> E_IncrementGeneralErrorCounter S_IncrementGeneralErrorCounter --> N_IncrementGeneralErrorCounter_Node0 N_IncrementGeneralErrorCounter_Node0 -- No --> E_IncrementGeneralErrorCounter
classification"}:::decision N_IncrementGeneralErrorCounter_Node0_action["The system increments the general
error counter by 1"]:::exclusion N_IncrementGeneralErrorCounter_Node0 -- Yes -->|Alternative| N_IncrementGeneralErrorCounter_Node0_action N_IncrementGeneralErrorCounter_Node0_action --> E_IncrementGeneralErrorCounter S_IncrementGeneralErrorCounter --> N_IncrementGeneralErrorCounter_Node0 N_IncrementGeneralErrorCounter_Node0 -- No --> E_IncrementGeneralErrorCounter
File: GCX003.cbl
GIVEN:
A message has been classified as an error type
WHEN:
The system processes the error classification
THEN:
The system increments the general error counter by 1
β Consolidated Acceptance Criteria
- The system checks the specific warning type indicator → if the warning type is 49 or 52, the system increments the DSP counter in addition to the warning counter
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsWarningType49or52(["Start Step"])
E_IsWarningType49or52(["End Step"])
N_IsWarningType49or52_Node0{"The system checks the specific
warning type indicator"}:::decision N_IsWarningType49or52_Node0_action["If the warning type is 49 or 52,
the system increments the DSP
counter in addition to the warning
counter"]:::main N_IsWarningType49or52_Node0 -- Yes --> N_IsWarningType49or52_Node0_action N_IsWarningType49or52_Node0_action --> E_IsWarningType49or52 S_IsWarningType49or52 --> N_IsWarningType49or52_Node0 N_IsWarningType49or52_Node0 -- No --> E_IsWarningType49or52
warning type indicator"}:::decision N_IsWarningType49or52_Node0_action["If the warning type is 49 or 52,
the system increments the DSP
counter in addition to the warning
counter"]:::main N_IsWarningType49or52_Node0 -- Yes --> N_IsWarningType49or52_Node0_action N_IsWarningType49or52_Node0_action --> E_IsWarningType49or52 S_IsWarningType49or52 --> N_IsWarningType49or52_Node0 N_IsWarningType49or52_Node0 -- No --> E_IsWarningType49or52
File: GCX003.cbl
GIVEN:
A message has been classified as a warning type
WHEN:
The system checks the specific warning type indicator
THEN:
If the warning type is 49 or 52, the system increments the DSP counter in addition to the warning counter
β Consolidated Acceptance Criteria
- The system processes the warning classification → the system increments the DSP counter by 1
- The message type indicator is 49 or 52 → the system adds 1 to the DSP counter in addition to the warning counter
- The system processes the special warning type → the RPT-DSP-CNT counter is incremented by one
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementDSPCounter(["Start Step"])
E_IncrementDSPCounter(["End Step"])
N_IncrementDSPCounter_Node0{"The system processes the warning
classification"}:::decision N_IncrementDSPCounter_Node0_action["The system increments the DSP
counter by 1"]:::main N_IncrementDSPCounter_Node0 -- Yes --> N_IncrementDSPCounter_Node0_action N_IncrementDSPCounter_Node0_action --> E_IncrementDSPCounter S_IncrementDSPCounter --> N_IncrementDSPCounter_Node0 N_IncrementDSPCounter_Node1{"The message type indicator is 49 or
52"}:::decision N_IncrementDSPCounter_Node1_action["The system adds 1 to the DSP
counter in addition to the warning
counter"]:::main N_IncrementDSPCounter_Node1 -- Yes --> N_IncrementDSPCounter_Node1_action N_IncrementDSPCounter_Node1_action --> E_IncrementDSPCounter N_IncrementDSPCounter_Node0 -- No --> N_IncrementDSPCounter_Node1 N_IncrementDSPCounter_Node2{"The system processes the special
warning type"}:::decision N_IncrementDSPCounter_Node2_action["The RPT-DSP-CNT counter is
incremented by one"]:::main N_IncrementDSPCounter_Node2 -- Yes --> N_IncrementDSPCounter_Node2_action N_IncrementDSPCounter_Node2_action --> E_IncrementDSPCounter N_IncrementDSPCounter_Node1 -- No --> N_IncrementDSPCounter_Node2 N_IncrementDSPCounter_Node2 -- No --> E_IncrementDSPCounter
classification"}:::decision N_IncrementDSPCounter_Node0_action["The system increments the DSP
counter by 1"]:::main N_IncrementDSPCounter_Node0 -- Yes --> N_IncrementDSPCounter_Node0_action N_IncrementDSPCounter_Node0_action --> E_IncrementDSPCounter S_IncrementDSPCounter --> N_IncrementDSPCounter_Node0 N_IncrementDSPCounter_Node1{"The message type indicator is 49 or
52"}:::decision N_IncrementDSPCounter_Node1_action["The system adds 1 to the DSP
counter in addition to the warning
counter"]:::main N_IncrementDSPCounter_Node1 -- Yes --> N_IncrementDSPCounter_Node1_action N_IncrementDSPCounter_Node1_action --> E_IncrementDSPCounter N_IncrementDSPCounter_Node0 -- No --> N_IncrementDSPCounter_Node1 N_IncrementDSPCounter_Node2{"The system processes the special
warning type"}:::decision N_IncrementDSPCounter_Node2_action["The RPT-DSP-CNT counter is
incremented by one"]:::main N_IncrementDSPCounter_Node2 -- Yes --> N_IncrementDSPCounter_Node2_action N_IncrementDSPCounter_Node2_action --> E_IncrementDSPCounter N_IncrementDSPCounter_Node1 -- No --> N_IncrementDSPCounter_Node2 N_IncrementDSPCounter_Node2 -- No --> E_IncrementDSPCounter
File: GCX003.cbl
GIVEN:
A warning message has been identified as type 49 or 52
WHEN:
The system processes the warning classification
THEN:
The system increments the DSP counter by 1
File: GCX003.cbl
GIVEN:
A warning message is being processed
WHEN:
The message type indicator is 49 or 52
THEN:
The system adds 1 to the DSP counter in addition to the warning counter
File: GCX003.cbl
GIVEN:
A warning message has been identified as type 49 or 52
WHEN:
The system processes the special warning type
THEN:
The RPT-DSP-CNT counter is incremented by one
β Consolidated Acceptance Criteria
- The system processes the warning classification → the system increments the warning counter by 1
- The message type is determined to be a warning → the system adds 1 to the warning message counter
- The system processes the warning message → the report warning counter is incremented by one
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementWarningCounter(["Start Step"])
E_IncrementWarningCounter(["End Step"])
N_IncrementWarningCounter_Node0{"The system processes the warning
classification"}:::decision N_IncrementWarningCounter_Node0_action["The system increments the warning
counter by 1"]:::main N_IncrementWarningCounter_Node0 -- Yes --> N_IncrementWarningCounter_Node0_action N_IncrementWarningCounter_Node0_action --> E_IncrementWarningCounter S_IncrementWarningCounter --> N_IncrementWarningCounter_Node0 N_IncrementWarningCounter_Node1{"The message type is determined to
be a warning"}:::decision N_IncrementWarningCounter_Node1_action["The system adds 1 to the warning
message counter"]:::main N_IncrementWarningCounter_Node1 -- Yes --> N_IncrementWarningCounter_Node1_action N_IncrementWarningCounter_Node1_action --> E_IncrementWarningCounter N_IncrementWarningCounter_Node0 -- No --> N_IncrementWarningCounter_Node1 N_IncrementWarningCounter_Node2{"The system processes the warning
message"}:::decision N_IncrementWarningCounter_Node2_action["The report warning counter is
incremented by one"]:::main N_IncrementWarningCounter_Node2 -- Yes --> N_IncrementWarningCounter_Node2_action N_IncrementWarningCounter_Node2_action --> E_IncrementWarningCounter N_IncrementWarningCounter_Node1 -- No --> N_IncrementWarningCounter_Node2 N_IncrementWarningCounter_Node2 -- No --> E_IncrementWarningCounter
classification"}:::decision N_IncrementWarningCounter_Node0_action["The system increments the warning
counter by 1"]:::main N_IncrementWarningCounter_Node0 -- Yes --> N_IncrementWarningCounter_Node0_action N_IncrementWarningCounter_Node0_action --> E_IncrementWarningCounter S_IncrementWarningCounter --> N_IncrementWarningCounter_Node0 N_IncrementWarningCounter_Node1{"The message type is determined to
be a warning"}:::decision N_IncrementWarningCounter_Node1_action["The system adds 1 to the warning
message counter"]:::main N_IncrementWarningCounter_Node1 -- Yes --> N_IncrementWarningCounter_Node1_action N_IncrementWarningCounter_Node1_action --> E_IncrementWarningCounter N_IncrementWarningCounter_Node0 -- No --> N_IncrementWarningCounter_Node1 N_IncrementWarningCounter_Node2{"The system processes the warning
message"}:::decision N_IncrementWarningCounter_Node2_action["The report warning counter is
incremented by one"]:::main N_IncrementWarningCounter_Node2 -- Yes --> N_IncrementWarningCounter_Node2_action N_IncrementWarningCounter_Node2_action --> E_IncrementWarningCounter N_IncrementWarningCounter_Node1 -- No --> N_IncrementWarningCounter_Node2 N_IncrementWarningCounter_Node2 -- No --> E_IncrementWarningCounter
File: GCX003.cbl
GIVEN:
A message has been classified as a warning type
WHEN:
The system processes the warning classification
THEN:
The system increments the warning counter by 1
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A message line is classified as a warning message and is not a spawn message
WHEN:
The message type is determined to be a warning
THEN:
The system adds 1 to the warning message counter
File: GCX003.cbl
GIVEN:
A message has been classified as a warning type
WHEN:
The system processes the warning message
THEN:
The report warning counter is incremented by one
β Consolidated Acceptance Criteria
- The system processes the information classification → the system increments the information counter by 1
- The message type is determined to be informational → the system adds 1 to the informational message counter
- The system processes the information message → the report information counter is incremented by one
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementInfoCounter(["Start Step"])
E_IncrementInfoCounter(["End Step"])
N_IncrementInfoCounter_Node0{"The system processes the
information classification"}:::decision N_IncrementInfoCounter_Node0_action["The system increments the
information counter by 1"]:::main N_IncrementInfoCounter_Node0 -- Yes --> N_IncrementInfoCounter_Node0_action N_IncrementInfoCounter_Node0_action --> E_IncrementInfoCounter S_IncrementInfoCounter --> N_IncrementInfoCounter_Node0 N_IncrementInfoCounter_Node1{"The message type is determined to
be informational"}:::decision N_IncrementInfoCounter_Node1_action["The system adds 1 to the
informational message counter"]:::main N_IncrementInfoCounter_Node1 -- Yes --> N_IncrementInfoCounter_Node1_action N_IncrementInfoCounter_Node1_action --> E_IncrementInfoCounter N_IncrementInfoCounter_Node0 -- No --> N_IncrementInfoCounter_Node1 N_IncrementInfoCounter_Node2{"The system processes the
information message"}:::decision N_IncrementInfoCounter_Node2_action["The report information counter is
incremented by one"]:::main N_IncrementInfoCounter_Node2 -- Yes --> N_IncrementInfoCounter_Node2_action N_IncrementInfoCounter_Node2_action --> E_IncrementInfoCounter N_IncrementInfoCounter_Node1 -- No --> N_IncrementInfoCounter_Node2 N_IncrementInfoCounter_Node2 -- No --> E_IncrementInfoCounter
information classification"}:::decision N_IncrementInfoCounter_Node0_action["The system increments the
information counter by 1"]:::main N_IncrementInfoCounter_Node0 -- Yes --> N_IncrementInfoCounter_Node0_action N_IncrementInfoCounter_Node0_action --> E_IncrementInfoCounter S_IncrementInfoCounter --> N_IncrementInfoCounter_Node0 N_IncrementInfoCounter_Node1{"The message type is determined to
be informational"}:::decision N_IncrementInfoCounter_Node1_action["The system adds 1 to the
informational message counter"]:::main N_IncrementInfoCounter_Node1 -- Yes --> N_IncrementInfoCounter_Node1_action N_IncrementInfoCounter_Node1_action --> E_IncrementInfoCounter N_IncrementInfoCounter_Node0 -- No --> N_IncrementInfoCounter_Node1 N_IncrementInfoCounter_Node2{"The system processes the
information message"}:::decision N_IncrementInfoCounter_Node2_action["The report information counter is
incremented by one"]:::main N_IncrementInfoCounter_Node2 -- Yes --> N_IncrementInfoCounter_Node2_action N_IncrementInfoCounter_Node2_action --> E_IncrementInfoCounter N_IncrementInfoCounter_Node1 -- No --> N_IncrementInfoCounter_Node2 N_IncrementInfoCounter_Node2 -- No --> E_IncrementInfoCounter
File: GCX003.cbl
GIVEN:
A message has been classified as an information type
WHEN:
The system processes the information classification
THEN:
The system increments the information counter by 1
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A message line is classified as an informational message and is not a spawn message
WHEN:
The message type is determined to be informational
THEN:
The system adds 1 to the informational message counter
File: GCX003.cbl
GIVEN:
A message has been classified as an information type
WHEN:
The system processes the information message
THEN:
The report information counter is incremented by one
β Consolidated Acceptance Criteria
- The system compares the error type 43 count against the total error count → if the error type 43 count equals the total error count, the system proceeds with error-to-warning conversion
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckError43CountvsTotalErrors(["Start Step"])
E_CheckError43CountvsTotalErrors(["End Step"])
N_CheckError43CountvsTotalErrors_Node0{"The system compares the error type
43 count against the total error
count"}:::decision N_CheckError43CountvsTotalErrors_Node0_action["If the error type 43 count equals
the total error count, the system
proceeds with error-to-warning
conversion"]:::exclusion N_CheckError43CountvsTotalErrors_Node0 -- Yes -->|Alternative| N_CheckError43CountvsTotalErrors_Node0_action N_CheckError43CountvsTotalErrors_Node0_action --> E_CheckError43CountvsTotalErrors S_CheckError43CountvsTotalErrors --> N_CheckError43CountvsTotalErrors_Node0 N_CheckError43CountvsTotalErrors_Node0 -- No --> E_CheckError43CountvsTotalErrors
43 count against the total error
count"}:::decision N_CheckError43CountvsTotalErrors_Node0_action["If the error type 43 count equals
the total error count, the system
proceeds with error-to-warning
conversion"]:::exclusion N_CheckError43CountvsTotalErrors_Node0 -- Yes -->|Alternative| N_CheckError43CountvsTotalErrors_Node0_action N_CheckError43CountvsTotalErrors_Node0_action --> E_CheckError43CountvsTotalErrors S_CheckError43CountvsTotalErrors --> N_CheckError43CountvsTotalErrors_Node0 N_CheckError43CountvsTotalErrors_Node0 -- No --> E_CheckError43CountvsTotalErrors
File: GCX003.cbl
GIVEN:
All message processing has been completed and counters have been updated
WHEN:
The system compares the error type 43 count against the total error count
THEN:
If the error type 43 count equals the total error count, the system proceeds with error-to-warning conversion
β Consolidated Acceptance Criteria
- The system performs error-to-warning conversion → the system changes all error type 43 messages to warning type 18
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConvertError43toWarningType18(["Start Step"])
E_ConvertError43toWarningType18(["End Step"])
N_ConvertError43toWarningType18_Node0{"The system performs
error-to-warning conversion"}:::decision N_ConvertError43toWarningType18_Node0_action["The system changes all error type
43 messages to warning type 18"]:::exclusion N_ConvertError43toWarningType18_Node0 -- Yes -->|Alternative| N_ConvertError43toWarningType18_Node0_action N_ConvertError43toWarningType18_Node0_action --> E_ConvertError43toWarningType18 S_ConvertError43toWarningType18 --> N_ConvertError43toWarningType18_Node0 N_ConvertError43toWarningType18_Node0 -- No --> E_ConvertError43toWarningType18
error-to-warning conversion"}:::decision N_ConvertError43toWarningType18_Node0_action["The system changes all error type
43 messages to warning type 18"]:::exclusion N_ConvertError43toWarningType18_Node0 -- Yes -->|Alternative| N_ConvertError43toWarningType18_Node0_action N_ConvertError43toWarningType18_Node0_action --> E_ConvertError43toWarningType18 S_ConvertError43toWarningType18 --> N_ConvertError43toWarningType18_Node0 N_ConvertError43toWarningType18_Node0 -- No --> E_ConvertError43toWarningType18
File: GCX003.cbl
GIVEN:
All errors in the batch are identified as type 43
WHEN:
The system performs error-to-warning conversion
THEN:
The system changes all error type 43 messages to warning type 18
β Consolidated Acceptance Criteria
- The system adjusts the counters for the conversion → the system decrements the error counter by 1 for each converted message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AdjustErrorCounterDown(["Start Step"])
E_AdjustErrorCounterDown(["End Step"])
N_AdjustErrorCounterDown_Node0{"The system adjusts the counters for
the conversion"}:::decision N_AdjustErrorCounterDown_Node0_action["The system decrements the error
counter by 1 for each converted
message"]:::main N_AdjustErrorCounterDown_Node0 -- Yes --> N_AdjustErrorCounterDown_Node0_action N_AdjustErrorCounterDown_Node0_action --> E_AdjustErrorCounterDown S_AdjustErrorCounterDown --> N_AdjustErrorCounterDown_Node0 N_AdjustErrorCounterDown_Node0 -- No --> E_AdjustErrorCounterDown
the conversion"}:::decision N_AdjustErrorCounterDown_Node0_action["The system decrements the error
counter by 1 for each converted
message"]:::main N_AdjustErrorCounterDown_Node0 -- Yes --> N_AdjustErrorCounterDown_Node0_action N_AdjustErrorCounterDown_Node0_action --> E_AdjustErrorCounterDown S_AdjustErrorCounterDown --> N_AdjustErrorCounterDown_Node0 N_AdjustErrorCounterDown_Node0 -- No --> E_AdjustErrorCounterDown
File: GCX003.cbl
GIVEN:
Error type 43 messages are being converted to warnings
WHEN:
The system adjusts the counters for the conversion
THEN:
The system decrements the error counter by 1 for each converted message
β Consolidated Acceptance Criteria
- The system adjusts the counters for the conversion → the system increments the warning counter by 1 for each converted message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AdjustWarningCounterUp(["Start Step"])
E_AdjustWarningCounterUp(["End Step"])
N_AdjustWarningCounterUp_Node0{"The system adjusts the counters for
the conversion"}:::decision N_AdjustWarningCounterUp_Node0_action["The system increments the warning
counter by 1 for each converted
message"]:::main N_AdjustWarningCounterUp_Node0 -- Yes --> N_AdjustWarningCounterUp_Node0_action N_AdjustWarningCounterUp_Node0_action --> E_AdjustWarningCounterUp S_AdjustWarningCounterUp --> N_AdjustWarningCounterUp_Node0 N_AdjustWarningCounterUp_Node0 -- No --> E_AdjustWarningCounterUp
the conversion"}:::decision N_AdjustWarningCounterUp_Node0_action["The system increments the warning
counter by 1 for each converted
message"]:::main N_AdjustWarningCounterUp_Node0 -- Yes --> N_AdjustWarningCounterUp_Node0_action N_AdjustWarningCounterUp_Node0_action --> E_AdjustWarningCounterUp S_AdjustWarningCounterUp --> N_AdjustWarningCounterUp_Node0 N_AdjustWarningCounterUp_Node0 -- No --> E_AdjustWarningCounterUp
File: GCX003.cbl
GIVEN:
Error type 43 messages are being converted to warnings
WHEN:
The system adjusts the counters for the conversion
THEN:
The system increments the warning counter by 1 for each converted message
β Consolidated Acceptance Criteria
- The message type indicator shows it is an error message → the system increments the error count by one
- The message severity is classified as error level → increment the error counter by 1, and if the message type is 43, also increment the special error counter (ERR-43-CNT) by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClassifyasErrorMessage(["Start Step"])
E_ClassifyasErrorMessage(["End Step"])
N_ClassifyasErrorMessage_Node0{"The message type indicator shows it
is an error message"}:::decision N_ClassifyasErrorMessage_Node0_action["The system increments the error
count by one"]:::exclusion N_ClassifyasErrorMessage_Node0 -- Yes -->|Alternative| N_ClassifyasErrorMessage_Node0_action N_ClassifyasErrorMessage_Node0_action --> E_ClassifyasErrorMessage S_ClassifyasErrorMessage --> N_ClassifyasErrorMessage_Node0 N_ClassifyasErrorMessage_Node1{"The message severity is classified
as error level"}:::decision N_ClassifyasErrorMessage_Node1_action["Increment the error counter by 1,
and if the message type is 43, also
increment the special error counter
ERR-43-CNT by 1"]:::exclusion N_ClassifyasErrorMessage_Node1 -- Yes -->|Alternative| N_ClassifyasErrorMessage_Node1_action N_ClassifyasErrorMessage_Node1_action --> E_ClassifyasErrorMessage N_ClassifyasErrorMessage_Node0 -- No --> N_ClassifyasErrorMessage_Node1 N_ClassifyasErrorMessage_Node1 -- No --> E_ClassifyasErrorMessage
is an error message"}:::decision N_ClassifyasErrorMessage_Node0_action["The system increments the error
count by one"]:::exclusion N_ClassifyasErrorMessage_Node0 -- Yes -->|Alternative| N_ClassifyasErrorMessage_Node0_action N_ClassifyasErrorMessage_Node0_action --> E_ClassifyasErrorMessage S_ClassifyasErrorMessage --> N_ClassifyasErrorMessage_Node0 N_ClassifyasErrorMessage_Node1{"The message severity is classified
as error level"}:::decision N_ClassifyasErrorMessage_Node1_action["Increment the error counter by 1,
and if the message type is 43, also
increment the special error counter
ERR-43-CNT by 1"]:::exclusion N_ClassifyasErrorMessage_Node1 -- Yes -->|Alternative| N_ClassifyasErrorMessage_Node1_action N_ClassifyasErrorMessage_Node1_action --> E_ClassifyasErrorMessage N_ClassifyasErrorMessage_Node0 -- No --> N_ClassifyasErrorMessage_Node1 N_ClassifyasErrorMessage_Node1 -- No --> E_ClassifyasErrorMessage
File: GCX003.cbl
GIVEN:
A non-spawn message line that requires classification
WHEN:
The message type indicator shows it is an error message
THEN:
The system increments the error count by one
File: GCX003.cbl
GIVEN:
A non-spawn message line is being processed
WHEN:
The message severity is classified as error level
THEN:
Increment the error counter by 1, and if the message type is 43, also increment the special error counter (ERR-43-CNT) by 1
β Consolidated Acceptance Criteria
- The message type indicator equals 43 → the system increments the special error type 43 counter by one
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckErrorType43(["Start Step"])
E_CheckErrorType43(["End Step"])
N_CheckErrorType43_Node0{"The message type indicator equals
43"}:::decision N_CheckErrorType43_Node0_action["The system increments the special
error type 43 counter by one"]:::main N_CheckErrorType43_Node0 -- Yes --> N_CheckErrorType43_Node0_action N_CheckErrorType43_Node0_action --> E_CheckErrorType43 S_CheckErrorType43 --> N_CheckErrorType43_Node0 N_CheckErrorType43_Node0 -- No --> E_CheckErrorType43
43"}:::decision N_CheckErrorType43_Node0_action["The system increments the special
error type 43 counter by one"]:::main N_CheckErrorType43_Node0 -- Yes --> N_CheckErrorType43_Node0_action N_CheckErrorType43_Node0_action --> E_CheckErrorType43 S_CheckErrorType43 --> N_CheckErrorType43_Node0 N_CheckErrorType43_Node0 -- No --> E_CheckErrorType43
File: GCX003.cbl
GIVEN:
An error message that has been classified and counted
WHEN:
The message type indicator equals 43
THEN:
The system increments the special error type 43 counter by one
β Consolidated Acceptance Criteria
- The message type indicator shows it is a warning message → the system increments the warning count by one
- The message severity is classified as warning level → increment the warning counter by 1, and if the message type is 49 or 52, also increment the DSP counter by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClassifyasWarningMessage(["Start Step"])
E_ClassifyasWarningMessage(["End Step"])
N_ClassifyasWarningMessage_Node0{"The message type indicator shows it
is a warning message"}:::decision N_ClassifyasWarningMessage_Node0_action["The system increments the warning
count by one"]:::main N_ClassifyasWarningMessage_Node0 -- Yes --> N_ClassifyasWarningMessage_Node0_action N_ClassifyasWarningMessage_Node0_action --> E_ClassifyasWarningMessage S_ClassifyasWarningMessage --> N_ClassifyasWarningMessage_Node0 N_ClassifyasWarningMessage_Node1{"The message severity is classified
as warning level"}:::decision N_ClassifyasWarningMessage_Node1_action["Increment the warning counter by 1,
and if the message type is 49 or 52,
also increment the DSP counter by 1"]:::main N_ClassifyasWarningMessage_Node1 -- Yes --> N_ClassifyasWarningMessage_Node1_action N_ClassifyasWarningMessage_Node1_action --> E_ClassifyasWarningMessage N_ClassifyasWarningMessage_Node0 -- No --> N_ClassifyasWarningMessage_Node1 N_ClassifyasWarningMessage_Node1 -- No --> E_ClassifyasWarningMessage
is a warning message"}:::decision N_ClassifyasWarningMessage_Node0_action["The system increments the warning
count by one"]:::main N_ClassifyasWarningMessage_Node0 -- Yes --> N_ClassifyasWarningMessage_Node0_action N_ClassifyasWarningMessage_Node0_action --> E_ClassifyasWarningMessage S_ClassifyasWarningMessage --> N_ClassifyasWarningMessage_Node0 N_ClassifyasWarningMessage_Node1{"The message severity is classified
as warning level"}:::decision N_ClassifyasWarningMessage_Node1_action["Increment the warning counter by 1,
and if the message type is 49 or 52,
also increment the DSP counter by 1"]:::main N_ClassifyasWarningMessage_Node1 -- Yes --> N_ClassifyasWarningMessage_Node1_action N_ClassifyasWarningMessage_Node1_action --> E_ClassifyasWarningMessage N_ClassifyasWarningMessage_Node0 -- No --> N_ClassifyasWarningMessage_Node1 N_ClassifyasWarningMessage_Node1 -- No --> E_ClassifyasWarningMessage
File: GCX003.cbl
GIVEN:
A non-spawn message line that requires classification
WHEN:
The message type indicator shows it is a warning message
THEN:
The system increments the warning count by one
File: GCX003.cbl
GIVEN:
A non-spawn message line is being processed
WHEN:
The message severity is classified as warning level
THEN:
Increment the warning counter by 1, and if the message type is 49 or 52, also increment the DSP counter by 1
β Consolidated Acceptance Criteria
- The message type indicator equals 49 or 52 → the system increments the DSP count by one
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckWarningTypes4952(["Start Step"])
E_CheckWarningTypes4952(["End Step"])
N_CheckWarningTypes4952_Node0{"The message type indicator equals
49 or 52"}:::decision N_CheckWarningTypes4952_Node0_action["The system increments the DSP count
by one"]:::main N_CheckWarningTypes4952_Node0 -- Yes --> N_CheckWarningTypes4952_Node0_action N_CheckWarningTypes4952_Node0_action --> E_CheckWarningTypes4952 S_CheckWarningTypes4952 --> N_CheckWarningTypes4952_Node0 N_CheckWarningTypes4952_Node0 -- No --> E_CheckWarningTypes4952
49 or 52"}:::decision N_CheckWarningTypes4952_Node0_action["The system increments the DSP count
by one"]:::main N_CheckWarningTypes4952_Node0 -- Yes --> N_CheckWarningTypes4952_Node0_action N_CheckWarningTypes4952_Node0_action --> E_CheckWarningTypes4952 S_CheckWarningTypes4952 --> N_CheckWarningTypes4952_Node0 N_CheckWarningTypes4952_Node0 -- No --> E_CheckWarningTypes4952
File: GCX003.cbl
GIVEN:
A warning message that has been classified and counted
WHEN:
The message type indicator equals 49 or 52
THEN:
The system increments the DSP count by one
β Consolidated Acceptance Criteria
- The message type indicator shows it is an information message → the system increments the information count by one
- The message severity is classified as information level → increment the information counter by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClassifyasInformationMessage(["Start Step"])
E_ClassifyasInformationMessage(["End Step"])
N_ClassifyasInformationMessage_Node0{"The message type indicator shows it
is an information message"}:::decision N_ClassifyasInformationMessage_Node0_action["The system increments the
information count by one"]:::main N_ClassifyasInformationMessage_Node0 -- Yes --> N_ClassifyasInformationMessage_Node0_action N_ClassifyasInformationMessage_Node0_action --> E_ClassifyasInformationMessage S_ClassifyasInformationMessage --> N_ClassifyasInformationMessage_Node0 N_ClassifyasInformationMessage_Node1{"The message severity is classified
as information level"}:::decision N_ClassifyasInformationMessage_Node1_action["Increment the information counter
by 1"]:::main N_ClassifyasInformationMessage_Node1 -- Yes --> N_ClassifyasInformationMessage_Node1_action N_ClassifyasInformationMessage_Node1_action --> E_ClassifyasInformationMessage N_ClassifyasInformationMessage_Node0 -- No --> N_ClassifyasInformationMessage_Node1 N_ClassifyasInformationMessage_Node1 -- No --> E_ClassifyasInformationMessage
is an information message"}:::decision N_ClassifyasInformationMessage_Node0_action["The system increments the
information count by one"]:::main N_ClassifyasInformationMessage_Node0 -- Yes --> N_ClassifyasInformationMessage_Node0_action N_ClassifyasInformationMessage_Node0_action --> E_ClassifyasInformationMessage S_ClassifyasInformationMessage --> N_ClassifyasInformationMessage_Node0 N_ClassifyasInformationMessage_Node1{"The message severity is classified
as information level"}:::decision N_ClassifyasInformationMessage_Node1_action["Increment the information counter
by 1"]:::main N_ClassifyasInformationMessage_Node1 -- Yes --> N_ClassifyasInformationMessage_Node1_action N_ClassifyasInformationMessage_Node1_action --> E_ClassifyasInformationMessage N_ClassifyasInformationMessage_Node0 -- No --> N_ClassifyasInformationMessage_Node1 N_ClassifyasInformationMessage_Node1 -- No --> E_ClassifyasInformationMessage
File: GCX003.cbl
GIVEN:
A non-spawn message line that requires classification
WHEN:
The message type indicator shows it is an information message
THEN:
The system increments the information count by one
File: GCX003.cbl
GIVEN:
A non-spawn message line is being processed
WHEN:
The message severity is classified as information level
THEN:
Increment the information counter by 1
β Consolidated Acceptance Criteria
- The message processing is complete → the system increments the report index by one to move to the next entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddtoReportIndex(["Start Step"])
E_AddtoReportIndex(["End Step"])
N_AddtoReportIndex_Node0{"The message processing is complete"}:::decision
N_AddtoReportIndex_Node0_action["The system increments the report
index by one to move to the next
entry"]:::main N_AddtoReportIndex_Node0 -- Yes --> N_AddtoReportIndex_Node0_action N_AddtoReportIndex_Node0_action --> E_AddtoReportIndex S_AddtoReportIndex --> N_AddtoReportIndex_Node0 N_AddtoReportIndex_Node0 -- No --> E_AddtoReportIndex
index by one to move to the next
entry"]:::main N_AddtoReportIndex_Node0 -- Yes --> N_AddtoReportIndex_Node0_action N_AddtoReportIndex_Node0_action --> E_AddtoReportIndex S_AddtoReportIndex --> N_AddtoReportIndex_Node0 N_AddtoReportIndex_Node0 -- No --> E_AddtoReportIndex
File: GCX003.cbl
GIVEN:
A message has been processed and classified
WHEN:
The message processing is complete
THEN:
The system increments the report index by one to move to the next entry
β Consolidated Acceptance Criteria
- The system checks if the maximum report capacity has been reached → the system determines whether to set an overflow condition or continue normal processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckReportLimit(["Start Step"])
E_CheckReportLimit(["End Step"])
N_CheckReportLimit_Node0{"The system checks if the maximum
report capacity has been reached"}:::decision N_CheckReportLimit_Node0_action["The system determines whether to
set an overflow condition or
continue normal processing"]:::main N_CheckReportLimit_Node0 -- Yes --> N_CheckReportLimit_Node0_action N_CheckReportLimit_Node0_action --> E_CheckReportLimit S_CheckReportLimit --> N_CheckReportLimit_Node0 N_CheckReportLimit_Node0 -- No --> E_CheckReportLimit
report capacity has been reached"}:::decision N_CheckReportLimit_Node0_action["The system determines whether to
set an overflow condition or
continue normal processing"]:::main N_CheckReportLimit_Node0 -- Yes --> N_CheckReportLimit_Node0_action N_CheckReportLimit_Node0_action --> E_CheckReportLimit S_CheckReportLimit --> N_CheckReportLimit_Node0 N_CheckReportLimit_Node0 -- No --> E_CheckReportLimit
File: GCX003.cbl
GIVEN:
The report index has been incremented
WHEN:
The system checks if the maximum report capacity has been reached
THEN:
The system determines whether to set an overflow condition or continue normal processing
β Consolidated Acceptance Criteria
- An attempt is made to add another entry beyond the limit → the system sets message type 9 as an overflow indicator
- The maximum number of report lines has been reached → the system sets message type 9 as an overflow indicator
- The system detects report overflow condition → the system sets message type 9 (overflow message) at the current report index position to indicate report truncation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetOverflowMessage(["Start Step"])
E_SetOverflowMessage(["End Step"])
N_SetOverflowMessage_Node0{"An attempt is made to add another
entry beyond the limit"}:::decision N_SetOverflowMessage_Node0_action["The system sets message type 9 as
an overflow indicator"]:::main N_SetOverflowMessage_Node0 -- Yes --> N_SetOverflowMessage_Node0_action N_SetOverflowMessage_Node0_action --> E_SetOverflowMessage S_SetOverflowMessage --> N_SetOverflowMessage_Node0 N_SetOverflowMessage_Node1{"The maximum number of report lines
has been reached"}:::decision N_SetOverflowMessage_Node1_action["The system sets message type 9 as
an overflow indicator"]:::main N_SetOverflowMessage_Node1 -- Yes --> N_SetOverflowMessage_Node1_action N_SetOverflowMessage_Node1_action --> E_SetOverflowMessage N_SetOverflowMessage_Node0 -- No --> N_SetOverflowMessage_Node1 N_SetOverflowMessage_Node2{"The system detects report overflow
condition"}:::decision N_SetOverflowMessage_Node2_action["The system sets message type 9
overflow message at the current
report index position to indicate
report truncation"]:::main N_SetOverflowMessage_Node2 -- Yes --> N_SetOverflowMessage_Node2_action N_SetOverflowMessage_Node2_action --> E_SetOverflowMessage N_SetOverflowMessage_Node1 -- No --> N_SetOverflowMessage_Node2 N_SetOverflowMessage_Node2 -- No --> E_SetOverflowMessage
entry beyond the limit"}:::decision N_SetOverflowMessage_Node0_action["The system sets message type 9 as
an overflow indicator"]:::main N_SetOverflowMessage_Node0 -- Yes --> N_SetOverflowMessage_Node0_action N_SetOverflowMessage_Node0_action --> E_SetOverflowMessage S_SetOverflowMessage --> N_SetOverflowMessage_Node0 N_SetOverflowMessage_Node1{"The maximum number of report lines
has been reached"}:::decision N_SetOverflowMessage_Node1_action["The system sets message type 9 as
an overflow indicator"]:::main N_SetOverflowMessage_Node1 -- Yes --> N_SetOverflowMessage_Node1_action N_SetOverflowMessage_Node1_action --> E_SetOverflowMessage N_SetOverflowMessage_Node0 -- No --> N_SetOverflowMessage_Node1 N_SetOverflowMessage_Node2{"The system detects report overflow
condition"}:::decision N_SetOverflowMessage_Node2_action["The system sets message type 9
overflow message at the current
report index position to indicate
report truncation"]:::main N_SetOverflowMessage_Node2 -- Yes --> N_SetOverflowMessage_Node2_action N_SetOverflowMessage_Node2_action --> E_SetOverflowMessage N_SetOverflowMessage_Node1 -- No --> N_SetOverflowMessage_Node2 N_SetOverflowMessage_Node2 -- No --> E_SetOverflowMessage
File: GCX003.cbl
GIVEN:
The report has reached its maximum capacity
WHEN:
An attempt is made to add another entry beyond the limit
THEN:
The system sets message type 9 as an overflow indicator
File: GCX003.cbl
GIVEN:
The report line index is being updated
WHEN:
The maximum number of report lines has been reached
THEN:
The system sets message type 9 as an overflow indicator
File: GCX003.cbl
GIVEN:
The report has reached its maximum capacity
WHEN:
The system detects report overflow condition
THEN:
The system sets message type 9 (overflow message) at the current report index position to indicate report truncation
β Consolidated Acceptance Criteria
- The system prepares the result display information → the warning count is copied to the appropriate display field for the success scenario
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyWarningCounttoDisplay(["Start Step"])
E_CopyWarningCounttoDisplay(["End Step"])
N_CopyWarningCounttoDisplay_Node0{"The system prepares the result
display information"}:::decision N_CopyWarningCounttoDisplay_Node0_action["The warning count is copied to the
appropriate display field for the
success scenario"]:::main N_CopyWarningCounttoDisplay_Node0 -- Yes --> N_CopyWarningCounttoDisplay_Node0_action N_CopyWarningCounttoDisplay_Node0_action --> E_CopyWarningCounttoDisplay S_CopyWarningCounttoDisplay --> N_CopyWarningCounttoDisplay_Node0 N_CopyWarningCounttoDisplay_Node0 -- No --> E_CopyWarningCounttoDisplay
display information"}:::decision N_CopyWarningCounttoDisplay_Node0_action["The warning count is copied to the
appropriate display field for the
success scenario"]:::main N_CopyWarningCounttoDisplay_Node0 -- Yes --> N_CopyWarningCounttoDisplay_Node0_action N_CopyWarningCounttoDisplay_Node0_action --> E_CopyWarningCounttoDisplay S_CopyWarningCounttoDisplay --> N_CopyWarningCounttoDisplay_Node0 N_CopyWarningCounttoDisplay_Node0 -- No --> E_CopyWarningCounttoDisplay
File: GCX003.cbl
GIVEN:
Train manifest processing has completed successfully
WHEN:
The system prepares the result display information
THEN:
The warning count is copied to the appropriate display field for the success scenario
β Consolidated Acceptance Criteria
- The system calculates the total error count for display → the spawn count is added to the existing error count to show total issues
- The system calculates the total error count for reporting → add the spawn message count to the existing error count to get the total error count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddSpawnCounttoErrorCount(["Start Step"])
E_AddSpawnCounttoErrorCount(["End Step"])
N_AddSpawnCounttoErrorCount_Node0{"The system calculates the total
error count for display"}:::decision N_AddSpawnCounttoErrorCount_Node0_action["The spawn count is added to the
existing error count to show total
issues"]:::exclusion N_AddSpawnCounttoErrorCount_Node0 -- Yes -->|Alternative| N_AddSpawnCounttoErrorCount_Node0_action N_AddSpawnCounttoErrorCount_Node0_action --> E_AddSpawnCounttoErrorCount S_AddSpawnCounttoErrorCount --> N_AddSpawnCounttoErrorCount_Node0 N_AddSpawnCounttoErrorCount_Node1{"The system calculates the total
error count for reporting"}:::decision N_AddSpawnCounttoErrorCount_Node1_action["Add the spawn message count to the
existing error count to get the
total error count"]:::exclusion N_AddSpawnCounttoErrorCount_Node1 -- Yes -->|Alternative| N_AddSpawnCounttoErrorCount_Node1_action N_AddSpawnCounttoErrorCount_Node1_action --> E_AddSpawnCounttoErrorCount N_AddSpawnCounttoErrorCount_Node0 -- No --> N_AddSpawnCounttoErrorCount_Node1 N_AddSpawnCounttoErrorCount_Node1 -- No --> E_AddSpawnCounttoErrorCount
error count for display"}:::decision N_AddSpawnCounttoErrorCount_Node0_action["The spawn count is added to the
existing error count to show total
issues"]:::exclusion N_AddSpawnCounttoErrorCount_Node0 -- Yes -->|Alternative| N_AddSpawnCounttoErrorCount_Node0_action N_AddSpawnCounttoErrorCount_Node0_action --> E_AddSpawnCounttoErrorCount S_AddSpawnCounttoErrorCount --> N_AddSpawnCounttoErrorCount_Node0 N_AddSpawnCounttoErrorCount_Node1{"The system calculates the total
error count for reporting"}:::decision N_AddSpawnCounttoErrorCount_Node1_action["Add the spawn message count to the
existing error count to get the
total error count"]:::exclusion N_AddSpawnCounttoErrorCount_Node1 -- Yes -->|Alternative| N_AddSpawnCounttoErrorCount_Node1_action N_AddSpawnCounttoErrorCount_Node1_action --> E_AddSpawnCounttoErrorCount N_AddSpawnCounttoErrorCount_Node0 -- No --> N_AddSpawnCounttoErrorCount_Node1 N_AddSpawnCounttoErrorCount_Node1 -- No --> E_AddSpawnCounttoErrorCount
File: GCX003.cbl
GIVEN:
Train manifest processing has spawn messages that need special handling
WHEN:
The system calculates the total error count for display
THEN:
The spawn count is added to the existing error count to show total issues
File: GCX003.cbl
GIVEN:
Train manifest processing has spawn messages that require special processing
WHEN:
The system calculates the total error count for reporting
THEN:
Add the spawn message count to the existing error count to get the total error count
β Consolidated Acceptance Criteria
- The system needs to handle special processing requirements → special manifest processing is triggered using GCX101 spawn functionality
- Spawn messages need to be processed → execute special manifest processing for each spawn message from 1 to spawn count
- The system needs to process spawned items → execute special manifest processing for each spawned item using GCX101 module
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TriggerSpecialManifestProcessing(["Start Step"])
E_TriggerSpecialManifestProcessing(["End Step"])
N_TriggerSpecialManifestProcessing_Node0{"The system needs to handle special
processing requirements"}:::decision N_TriggerSpecialManifestProcessing_Node0_action["Special manifest processing is
triggered using GCX101 spawn
functionality"]:::main N_TriggerSpecialManifestProcessing_Node0 -- Yes --> N_TriggerSpecialManifestProcessing_Node0_action N_TriggerSpecialManifestProcessing_Node0_action --> E_TriggerSpecialManifestProcessing S_TriggerSpecialManifestProcessing --> N_TriggerSpecialManifestProcessing_Node0 N_TriggerSpecialManifestProcessing_Node1{"Spawn messages need to be processed"}:::decision N_TriggerSpecialManifestProcessing_Node1_action["Execute special manifest processing
for each spawn message from 1 to
spawn count"]:::main N_TriggerSpecialManifestProcessing_Node1 -- Yes --> N_TriggerSpecialManifestProcessing_Node1_action N_TriggerSpecialManifestProcessing_Node1_action --> E_TriggerSpecialManifestProcessing N_TriggerSpecialManifestProcessing_Node0 -- No --> N_TriggerSpecialManifestProcessing_Node1 N_TriggerSpecialManifestProcessing_Node2{"The system needs to process spawned
items"}:::decision N_TriggerSpecialManifestProcessing_Node2_action["Execute special manifest processing
for each spawned item using GCX101
module"]:::main N_TriggerSpecialManifestProcessing_Node2 -- Yes --> N_TriggerSpecialManifestProcessing_Node2_action N_TriggerSpecialManifestProcessing_Node2_action --> E_TriggerSpecialManifestProcessing N_TriggerSpecialManifestProcessing_Node1 -- No --> N_TriggerSpecialManifestProcessing_Node2 N_TriggerSpecialManifestProcessing_Node2 -- No --> E_TriggerSpecialManifestProcessing
processing requirements"}:::decision N_TriggerSpecialManifestProcessing_Node0_action["Special manifest processing is
triggered using GCX101 spawn
functionality"]:::main N_TriggerSpecialManifestProcessing_Node0 -- Yes --> N_TriggerSpecialManifestProcessing_Node0_action N_TriggerSpecialManifestProcessing_Node0_action --> E_TriggerSpecialManifestProcessing S_TriggerSpecialManifestProcessing --> N_TriggerSpecialManifestProcessing_Node0 N_TriggerSpecialManifestProcessing_Node1{"Spawn messages need to be processed"}:::decision N_TriggerSpecialManifestProcessing_Node1_action["Execute special manifest processing
for each spawn message from 1 to
spawn count"]:::main N_TriggerSpecialManifestProcessing_Node1 -- Yes --> N_TriggerSpecialManifestProcessing_Node1_action N_TriggerSpecialManifestProcessing_Node1_action --> E_TriggerSpecialManifestProcessing N_TriggerSpecialManifestProcessing_Node0 -- No --> N_TriggerSpecialManifestProcessing_Node1 N_TriggerSpecialManifestProcessing_Node2{"The system needs to process spawned
items"}:::decision N_TriggerSpecialManifestProcessing_Node2_action["Execute special manifest processing
for each spawned item using GCX101
module"]:::main N_TriggerSpecialManifestProcessing_Node2 -- Yes --> N_TriggerSpecialManifestProcessing_Node2_action N_TriggerSpecialManifestProcessing_Node2_action --> E_TriggerSpecialManifestProcessing N_TriggerSpecialManifestProcessing_Node1 -- No --> N_TriggerSpecialManifestProcessing_Node2 N_TriggerSpecialManifestProcessing_Node2 -- No --> E_TriggerSpecialManifestProcessing
File: GCX003.cbl
GIVEN:
Train manifest processing completed successfully but generated spawn messages
WHEN:
The system needs to handle special processing requirements
THEN:
Special manifest processing is triggered using GCX101 spawn functionality
File: GCX003.cbl
GIVEN:
Train processing completed successfully with spawn messages
WHEN:
Spawn messages need to be processed
THEN:
Execute special manifest processing for each spawn message from 1 to spawn count
File: GCX003.cbl
GIVEN:
Train manifest processing resulted in spawn messages requiring special handling
WHEN:
The system needs to process spawned items
THEN:
Execute special manifest processing for each spawned item using GCX101 module
β Consolidated Acceptance Criteria
- The system processes error messages for final reporting → specific error messages (type 43) are converted to warning messages if error count matches type 43 count
- If message types for final classification → convert specific error messages (type 43) to warning messages if error count matches the count of type 43 messages, otherwise keep as warnings
- The system processes spawn-related messages for final reporting → convert diversion spawn messages to message type 19 and IT export spawn messages to message type 18, then add spawn count to warning count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConvertErrorMessagestoWarningMessages(["Start Step"])
E_ConvertErrorMessagestoWarningMessages(["End Step"])
N_ConvertErrorMessagestoWarningMessages_Node0{"The system processes error messages
for final reporting"}:::decision N_ConvertErrorMessagestoWarningMessages_Node0_action["Specific error messages type 43 are
converted to warning messages if
error count matches type 43 count"]:::exclusion N_ConvertErrorMessagestoWarningMessages_Node0 -- Yes -->|Alternative| N_ConvertErrorMessagestoWarningMessages_Node0_action N_ConvertErrorMessagestoWarningMessages_Node0_action --> E_ConvertErrorMessagestoWarningMessages S_ConvertErrorMessagestoWarningMessages --> N_ConvertErrorMessagestoWarningMessages_Node0 N_ConvertErrorMessagestoWarningMessages_Node1{"The system evaluates message types
for final classification"}:::decision N_ConvertErrorMessagestoWarningMessages_Node1_action["Convert specific error messages
type 43 to warning messages if error
count matches the count of type 43
messages, otherwise keep as warnings"]:::main N_ConvertErrorMessagestoWarningMessages_Node1 -- Yes --> N_ConvertErrorMessagestoWarningMessages_Node1_action N_ConvertErrorMessagestoWarningMessages_Node1_action --> E_ConvertErrorMessagestoWarningMessages N_ConvertErrorMessagestoWarningMessages_Node0 -- No --> N_ConvertErrorMessagestoWarningMessages_Node1 N_ConvertErrorMessagestoWarningMessages_Node2{"The system processes spawn-related
messages for final reporting"}:::decision N_ConvertErrorMessagestoWarningMessages_Node2_action["Convert diversion spawn messages to
message type 19 and IT export spawn
messages to message type 18, then
add spawn count to warning count"]:::main N_ConvertErrorMessagestoWarningMessages_Node2 -- Yes --> N_ConvertErrorMessagestoWarningMessages_Node2_action N_ConvertErrorMessagestoWarningMessages_Node2_action --> E_ConvertErrorMessagestoWarningMessages N_ConvertErrorMessagestoWarningMessages_Node1 -- No --> N_ConvertErrorMessagestoWarningMessages_Node2 N_ConvertErrorMessagestoWarningMessages_Node2 -- No --> E_ConvertErrorMessagestoWarningMessages
for final reporting"}:::decision N_ConvertErrorMessagestoWarningMessages_Node0_action["Specific error messages type 43 are
converted to warning messages if
error count matches type 43 count"]:::exclusion N_ConvertErrorMessagestoWarningMessages_Node0 -- Yes -->|Alternative| N_ConvertErrorMessagestoWarningMessages_Node0_action N_ConvertErrorMessagestoWarningMessages_Node0_action --> E_ConvertErrorMessagestoWarningMessages S_ConvertErrorMessagestoWarningMessages --> N_ConvertErrorMessagestoWarningMessages_Node0 N_ConvertErrorMessagestoWarningMessages_Node1{"The system evaluates message types
for final classification"}:::decision N_ConvertErrorMessagestoWarningMessages_Node1_action["Convert specific error messages
type 43 to warning messages if error
count matches the count of type 43
messages, otherwise keep as warnings"]:::main N_ConvertErrorMessagestoWarningMessages_Node1 -- Yes --> N_ConvertErrorMessagestoWarningMessages_Node1_action N_ConvertErrorMessagestoWarningMessages_Node1_action --> E_ConvertErrorMessagestoWarningMessages N_ConvertErrorMessagestoWarningMessages_Node0 -- No --> N_ConvertErrorMessagestoWarningMessages_Node1 N_ConvertErrorMessagestoWarningMessages_Node2{"The system processes spawn-related
messages for final reporting"}:::decision N_ConvertErrorMessagestoWarningMessages_Node2_action["Convert diversion spawn messages to
message type 19 and IT export spawn
messages to message type 18, then
add spawn count to warning count"]:::main N_ConvertErrorMessagestoWarningMessages_Node2 -- Yes --> N_ConvertErrorMessagestoWarningMessages_Node2_action N_ConvertErrorMessagestoWarningMessages_Node2_action --> E_ConvertErrorMessagestoWarningMessages N_ConvertErrorMessagestoWarningMessages_Node1 -- No --> N_ConvertErrorMessagestoWarningMessages_Node2 N_ConvertErrorMessagestoWarningMessages_Node2 -- No --> E_ConvertErrorMessagestoWarningMessages
File: GCX003.cbl
GIVEN:
Train manifest processing has errors but no spawn messages
WHEN:
The system processes error messages for final reporting
THEN:
Specific error messages (type 43) are converted to warning messages if error count matches type 43 count
File: GCX003.cbl
GIVEN:
Train manifest processing has errors but no spawn messages exist
WHEN:
The system evaluates message types for final classification
THEN:
Convert specific error messages (type 43) to warning messages if error count matches the count of type 43 messages, otherwise keep as warnings
File: GCX003.cbl
GIVEN:
Train manifest processing has both errors and spawn messages
WHEN:
The system processes spawn-related messages for final reporting
THEN:
- Convert diversion spawn messages to message type 19
- It export spawn messages to message type 18, then add spawn count to warning count
β Consolidated Acceptance Criteria
- The system processes messages for final reporting → spawn diversion messages are converted to message 19 (diversion) and spawn ITE messages are converted to message 18 (detour)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConvertSpawnMessagestoDiversionMessages(["Start Step"])
E_ConvertSpawnMessagestoDiversionMessages(["End Step"])
N_ConvertSpawnMessagestoDiversionMessages_Node0{"The system processes messages for
final reporting"}:::decision N_ConvertSpawnMessagestoDiversionMessages_Node0_action["Spawn diversion messages are
converted to message 19 diversion
and spawn ITE messages are converted
to message 18 detour"]:::main N_ConvertSpawnMessagestoDiversionMessages_Node0 -- Yes --> N_ConvertSpawnMessagestoDiversionMessages_Node0_action N_ConvertSpawnMessagestoDiversionMessages_Node0_action --> E_ConvertSpawnMessagestoDiversionMessages S_ConvertSpawnMessagestoDiversionMessages --> N_ConvertSpawnMessagestoDiversionMessages_Node0 N_ConvertSpawnMessagestoDiversionMessages_Node0 -- No --> E_ConvertSpawnMessagestoDiversionMessages
final reporting"}:::decision N_ConvertSpawnMessagestoDiversionMessages_Node0_action["Spawn diversion messages are
converted to message 19 diversion
and spawn ITE messages are converted
to message 18 detour"]:::main N_ConvertSpawnMessagestoDiversionMessages_Node0 -- Yes --> N_ConvertSpawnMessagestoDiversionMessages_Node0_action N_ConvertSpawnMessagestoDiversionMessages_Node0_action --> E_ConvertSpawnMessagestoDiversionMessages S_ConvertSpawnMessagestoDiversionMessages --> N_ConvertSpawnMessagestoDiversionMessages_Node0 N_ConvertSpawnMessagestoDiversionMessages_Node0 -- No --> E_ConvertSpawnMessagestoDiversionMessages
File: GCX003.cbl
GIVEN:
Train manifest processing has both errors and spawn messages
WHEN:
The system processes messages for final reporting
THEN:
Spawn diversion messages are converted to message 19 (diversion) and spawn ITE messages are converted to message 18 (detour)
β Consolidated Acceptance Criteria
- The system prepares the final report header → the train header line 4 is set and US customer train ID is populated from the train list
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainHeaderInformation(["Start Step"])
E_SetTrainHeaderInformation(["End Step"])
N_SetTrainHeaderInformation_Node0{"The system prepares the final
report header"}:::decision N_SetTrainHeaderInformation_Node0_action["The train header line 4 is set and
US customer train ID is populated
from the train list"]:::main N_SetTrainHeaderInformation_Node0 -- Yes --> N_SetTrainHeaderInformation_Node0_action N_SetTrainHeaderInformation_Node0_action --> E_SetTrainHeaderInformation S_SetTrainHeaderInformation --> N_SetTrainHeaderInformation_Node0 N_SetTrainHeaderInformation_Node0 -- No --> E_SetTrainHeaderInformation
report header"}:::decision N_SetTrainHeaderInformation_Node0_action["The train header line 4 is set and
US customer train ID is populated
from the train list"]:::main N_SetTrainHeaderInformation_Node0 -- Yes --> N_SetTrainHeaderInformation_Node0_action N_SetTrainHeaderInformation_Node0_action --> E_SetTrainHeaderInformation S_SetTrainHeaderInformation --> N_SetTrainHeaderInformation_Node0 N_SetTrainHeaderInformation_Node0 -- No --> E_SetTrainHeaderInformation
File: GCX003.cbl
GIVEN:
Train manifest processing result determination is complete
WHEN:
The system prepares the final report header
THEN:
- The train header line 4 is set
- Us customer train id is populated from the train list
β Consolidated Acceptance Criteria
- The system completes the header information → eTA year, month, day, hour, and minute are populated in the report header from the request data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetETAInformationinHeader(["Start Step"])
E_SetETAInformationinHeader(["End Step"])
N_SetETAInformationinHeader_Node0{"The system completes the header
information"}:::decision N_SetETAInformationinHeader_Node0_action["ETA year, month, day, hour, and
minute are populated in the report
header from the request data"]:::main N_SetETAInformationinHeader_Node0 -- Yes --> N_SetETAInformationinHeader_Node0_action N_SetETAInformationinHeader_Node0_action --> E_SetETAInformationinHeader S_SetETAInformationinHeader --> N_SetETAInformationinHeader_Node0 N_SetETAInformationinHeader_Node0 -- No --> E_SetETAInformationinHeader
information"}:::decision N_SetETAInformationinHeader_Node0_action["ETA year, month, day, hour, and
minute are populated in the report
header from the request data"]:::main N_SetETAInformationinHeader_Node0 -- Yes --> N_SetETAInformationinHeader_Node0_action N_SetETAInformationinHeader_Node0_action --> E_SetETAInformationinHeader S_SetETAInformationinHeader --> N_SetETAInformationinHeader_Node0 N_SetETAInformationinHeader_Node0 -- No --> E_SetETAInformationinHeader
File: GCX003.cbl
GIVEN:
Train header information has been set
WHEN:
The system completes the header information
THEN:
ETA year, month, day, hour, and minute are populated in the report header from the request data
β Consolidated Acceptance Criteria
- The system begins creating a new train database record → the train header record structure is initialized to empty values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeTrainHeaderRecord(["Start Step"])
E_InitializeTrainHeaderRecord(["End Step"])
N_InitializeTrainHeaderRecord_Node0{"The system begins creating a new
train database record"}:::decision N_InitializeTrainHeaderRecord_Node0_action["The train header record structure
is initialized to empty values"]:::main N_InitializeTrainHeaderRecord_Node0 -- Yes --> N_InitializeTrainHeaderRecord_Node0_action N_InitializeTrainHeaderRecord_Node0_action --> E_InitializeTrainHeaderRecord S_InitializeTrainHeaderRecord --> N_InitializeTrainHeaderRecord_Node0 N_InitializeTrainHeaderRecord_Node0 -- No --> E_InitializeTrainHeaderRecord
train database record"}:::decision N_InitializeTrainHeaderRecord_Node0_action["The train header record structure
is initialized to empty values"]:::main N_InitializeTrainHeaderRecord_Node0 -- Yes --> N_InitializeTrainHeaderRecord_Node0_action N_InitializeTrainHeaderRecord_Node0_action --> E_InitializeTrainHeaderRecord S_InitializeTrainHeaderRecord --> N_InitializeTrainHeaderRecord_Node0 N_InitializeTrainHeaderRecord_Node0 -- No --> E_InitializeTrainHeaderRecord
File: GCX003.cbl
GIVEN:
A train record creation process is initiated
WHEN:
The system begins creating a new train database record
THEN:
The train header record structure is initialized to empty values
β Consolidated Acceptance Criteria
- The system sets train identification data → the train number, train day, train origin, and consist number are assigned to the train header record
- Setting train identification data → train number, train day, train origin, and consist number are copied from the request to the train list structure
- Setting train identification data for database storage → train number, train day, train origin, and consist number are stored in the train list record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainIdentificationData(["Start Step"])
E_SetTrainIdentificationData(["End Step"])
N_SetTrainIdentificationData_Node0{"The system sets train
identification data"}:::decision N_SetTrainIdentificationData_Node0_action["The train number, train day, train
origin, and consist number are
assigned to the train header record"]:::main N_SetTrainIdentificationData_Node0 -- Yes --> N_SetTrainIdentificationData_Node0_action N_SetTrainIdentificationData_Node0_action --> E_SetTrainIdentificationData S_SetTrainIdentificationData --> N_SetTrainIdentificationData_Node0 N_SetTrainIdentificationData_Node1{"Setting train identification data"}:::decision N_SetTrainIdentificationData_Node1_action["Train number, train day, train
origin, and consist number are
copied from the request to the train
list structure"]:::main N_SetTrainIdentificationData_Node1 -- Yes --> N_SetTrainIdentificationData_Node1_action N_SetTrainIdentificationData_Node1_action --> E_SetTrainIdentificationData N_SetTrainIdentificationData_Node0 -- No --> N_SetTrainIdentificationData_Node1 N_SetTrainIdentificationData_Node2{"Setting train identification data
for database storage"}:::decision N_SetTrainIdentificationData_Node2_action["Train number, train day, train
origin, and consist number are
stored in the train list record"]:::main N_SetTrainIdentificationData_Node2 -- Yes --> N_SetTrainIdentificationData_Node2_action N_SetTrainIdentificationData_Node2_action --> E_SetTrainIdentificationData N_SetTrainIdentificationData_Node1 -- No --> N_SetTrainIdentificationData_Node2 N_SetTrainIdentificationData_Node2 -- No --> E_SetTrainIdentificationData
identification data"}:::decision N_SetTrainIdentificationData_Node0_action["The train number, train day, train
origin, and consist number are
assigned to the train header record"]:::main N_SetTrainIdentificationData_Node0 -- Yes --> N_SetTrainIdentificationData_Node0_action N_SetTrainIdentificationData_Node0_action --> E_SetTrainIdentificationData S_SetTrainIdentificationData --> N_SetTrainIdentificationData_Node0 N_SetTrainIdentificationData_Node1{"Setting train identification data"}:::decision N_SetTrainIdentificationData_Node1_action["Train number, train day, train
origin, and consist number are
copied from the request to the train
list structure"]:::main N_SetTrainIdentificationData_Node1 -- Yes --> N_SetTrainIdentificationData_Node1_action N_SetTrainIdentificationData_Node1_action --> E_SetTrainIdentificationData N_SetTrainIdentificationData_Node0 -- No --> N_SetTrainIdentificationData_Node1 N_SetTrainIdentificationData_Node2{"Setting train identification data
for database storage"}:::decision N_SetTrainIdentificationData_Node2_action["Train number, train day, train
origin, and consist number are
stored in the train list record"]:::main N_SetTrainIdentificationData_Node2 -- Yes --> N_SetTrainIdentificationData_Node2_action N_SetTrainIdentificationData_Node2_action --> E_SetTrainIdentificationData N_SetTrainIdentificationData_Node1 -- No --> N_SetTrainIdentificationData_Node2 N_SetTrainIdentificationData_Node2 -- No --> E_SetTrainIdentificationData
File: GCX003.cbl
GIVEN:
A train header record is initialized and train request data is available
WHEN:
The system sets train identification data
THEN:
The train number, train day, train origin, and consist number are assigned to the train header record
File: GCX003.cbl
GIVEN:
Train header information has been initialized
WHEN:
Setting train identification data
THEN:
Train number, train day, train origin, and consist number are copied from the request to the train list structure
File: GCX003.cbl
GIVEN:
Train header information has been initialized
WHEN:
Setting train identification data for database storage
THEN:
Train number, train day, train origin, and consist number are stored in the train list record
β Consolidated Acceptance Criteria
- The system assigns station information to the train record → the US station code, US station name, and FIRMS code are populated in the train header
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainOriginandDestination(["Start Step"])
E_SetTrainOriginandDestination(["End Step"])
N_SetTrainOriginandDestination_Node0{"The system assigns station
information to the train record"}:::decision N_SetTrainOriginandDestination_Node0_action["The US station code, US station
name, and FIRMS code are populated
in the train header"]:::main N_SetTrainOriginandDestination_Node0 -- Yes --> N_SetTrainOriginandDestination_Node0_action N_SetTrainOriginandDestination_Node0_action --> E_SetTrainOriginandDestination S_SetTrainOriginandDestination --> N_SetTrainOriginandDestination_Node0 N_SetTrainOriginandDestination_Node0 -- No --> E_SetTrainOriginandDestination
information to the train record"}:::decision N_SetTrainOriginandDestination_Node0_action["The US station code, US station
name, and FIRMS code are populated
in the train header"]:::main N_SetTrainOriginandDestination_Node0 -- Yes --> N_SetTrainOriginandDestination_Node0_action N_SetTrainOriginandDestination_Node0_action --> E_SetTrainOriginandDestination S_SetTrainOriginandDestination --> N_SetTrainOriginandDestination_Node0 N_SetTrainOriginandDestination_Node0 -- No --> E_SetTrainOriginandDestination
File: GCX003.cbl
GIVEN:
Train identification data is set and station information is validated
WHEN:
The system assigns station information to the train record
THEN:
The US station code, US station name, and FIRMS code are populated in the train header
β Consolidated Acceptance Criteria
- The system sets the estimated time of arrival → the ETA date and ETA time are assigned to the train header record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEstimatedTimeofArrival(["Start Step"])
E_SetEstimatedTimeofArrival(["End Step"])
N_SetEstimatedTimeofArrival_Node0{"The system sets the estimated time
of arrival"}:::decision N_SetEstimatedTimeofArrival_Node0_action["The ETA date and ETA time are
assigned to the train header record"]:::main N_SetEstimatedTimeofArrival_Node0 -- Yes --> N_SetEstimatedTimeofArrival_Node0_action N_SetEstimatedTimeofArrival_Node0_action --> E_SetEstimatedTimeofArrival S_SetEstimatedTimeofArrival --> N_SetEstimatedTimeofArrival_Node0 N_SetEstimatedTimeofArrival_Node0 -- No --> E_SetEstimatedTimeofArrival
of arrival"}:::decision N_SetEstimatedTimeofArrival_Node0_action["The ETA date and ETA time are
assigned to the train header record"]:::main N_SetEstimatedTimeofArrival_Node0 -- Yes --> N_SetEstimatedTimeofArrival_Node0_action N_SetEstimatedTimeofArrival_Node0_action --> E_SetEstimatedTimeofArrival S_SetEstimatedTimeofArrival --> N_SetEstimatedTimeofArrival_Node0 N_SetEstimatedTimeofArrival_Node0 -- No --> E_SetEstimatedTimeofArrival
File: GCX003.cbl
GIVEN:
Station information is assigned and ETA data is validated
WHEN:
The system sets the estimated time of arrival
THEN:
- The eta date
- Eta time are assigned to the train header record
β Consolidated Acceptance Criteria
- The system configures the AEI send flag → the AEI send indicator is set to true if AEI sending is enabled, otherwise set to false
- The request type indicates AEI transmission → the AEI send flag is set to true, otherwise it is set to false
- Setting AEI send flag → if AEI train send is YES, then AEI send flag is set to TRUE, otherwise AEI send flag is set to FALSE
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetAEISendFlag(["Start Step"])
E_SetAEISendFlag(["End Step"])
N_SetAEISendFlag_Node0{"The system configures the AEI send
flag"}:::decision N_SetAEISendFlag_Node0_action["The AEI send indicator is set to
true if AEI sending is enabled,
otherwise set to false"]:::main N_SetAEISendFlag_Node0 -- Yes --> N_SetAEISendFlag_Node0_action N_SetAEISendFlag_Node0_action --> E_SetAEISendFlag S_SetAEISendFlag --> N_SetAEISendFlag_Node0 N_SetAEISendFlag_Node1{"The request type indicates AEI
transmission"}:::decision N_SetAEISendFlag_Node1_action["The AEI send flag is set to true,
otherwise it is set to false"]:::main N_SetAEISendFlag_Node1 -- Yes --> N_SetAEISendFlag_Node1_action N_SetAEISendFlag_Node1_action --> E_SetAEISendFlag N_SetAEISendFlag_Node0 -- No --> N_SetAEISendFlag_Node1 N_SetAEISendFlag_Node2{"Setting AEI send flag"}:::decision N_SetAEISendFlag_Node2_action["If AEI train send is YES, then AEI
send flag is set to TRUE, otherwise
AEI send flag is set to FALSE"]:::main N_SetAEISendFlag_Node2 -- Yes --> N_SetAEISendFlag_Node2_action N_SetAEISendFlag_Node2_action --> E_SetAEISendFlag N_SetAEISendFlag_Node1 -- No --> N_SetAEISendFlag_Node2 N_SetAEISendFlag_Node2 -- No --> E_SetAEISendFlag
flag"}:::decision N_SetAEISendFlag_Node0_action["The AEI send indicator is set to
true if AEI sending is enabled,
otherwise set to false"]:::main N_SetAEISendFlag_Node0 -- Yes --> N_SetAEISendFlag_Node0_action N_SetAEISendFlag_Node0_action --> E_SetAEISendFlag S_SetAEISendFlag --> N_SetAEISendFlag_Node0 N_SetAEISendFlag_Node1{"The request type indicates AEI
transmission"}:::decision N_SetAEISendFlag_Node1_action["The AEI send flag is set to true,
otherwise it is set to false"]:::main N_SetAEISendFlag_Node1 -- Yes --> N_SetAEISendFlag_Node1_action N_SetAEISendFlag_Node1_action --> E_SetAEISendFlag N_SetAEISendFlag_Node0 -- No --> N_SetAEISendFlag_Node1 N_SetAEISendFlag_Node2{"Setting AEI send flag"}:::decision N_SetAEISendFlag_Node2_action["If AEI train send is YES, then AEI
send flag is set to TRUE, otherwise
AEI send flag is set to FALSE"]:::main N_SetAEISendFlag_Node2 -- Yes --> N_SetAEISendFlag_Node2_action N_SetAEISendFlag_Node2_action --> E_SetAEISendFlag N_SetAEISendFlag_Node1 -- No --> N_SetAEISendFlag_Node2 N_SetAEISendFlag_Node2 -- No --> E_SetAEISendFlag
File: GCX003.cbl
GIVEN:
ETA information is set and AEI send status is determined
WHEN:
The system configures the AEI send flag
THEN:
The AEI send indicator is set to true if AEI sending is enabled, otherwise set to false
File: GCX003.cbl
GIVEN:
ETA information has been set
WHEN:
The request type indicates AEI transmission
THEN:
The AEI send flag is set to true, otherwise it is set to false
File: GCX003.cbl
GIVEN:
ETA information has been set and AEI train send status is determined
WHEN:
Setting AEI send flag
THEN:
If AEI train send is YES, then AEI send flag is set to TRUE, otherwise AEI send flag is set to FALSE
β Consolidated Acceptance Criteria
- The system initializes equipment processing → the equipment quantity counter is set to zero
- Beginning equipment processing → equipment quantity counter is initialized to zero
- Initializing equipment processing → equipment quantity counter is initialized to zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeEquipmentCounter(["Start Step"])
E_InitializeEquipmentCounter(["End Step"])
N_InitializeEquipmentCounter_Node0{"The system initializes equipment
processing"}:::decision N_InitializeEquipmentCounter_Node0_action["The equipment quantity counter is
set to zero"]:::main N_InitializeEquipmentCounter_Node0 -- Yes --> N_InitializeEquipmentCounter_Node0_action N_InitializeEquipmentCounter_Node0_action --> E_InitializeEquipmentCounter S_InitializeEquipmentCounter --> N_InitializeEquipmentCounter_Node0 N_InitializeEquipmentCounter_Node1{"Beginning equipment processing"}:::decision N_InitializeEquipmentCounter_Node1_action["Equipment quantity counter is
initialized to zero"]:::main N_InitializeEquipmentCounter_Node1 -- Yes --> N_InitializeEquipmentCounter_Node1_action N_InitializeEquipmentCounter_Node1_action --> E_InitializeEquipmentCounter N_InitializeEquipmentCounter_Node0 -- No --> N_InitializeEquipmentCounter_Node1 N_InitializeEquipmentCounter_Node2{"Initializing equipment processing"}:::decision N_InitializeEquipmentCounter_Node2_action["Equipment quantity counter is
initialized to zero"]:::main N_InitializeEquipmentCounter_Node2 -- Yes --> N_InitializeEquipmentCounter_Node2_action N_InitializeEquipmentCounter_Node2_action --> E_InitializeEquipmentCounter N_InitializeEquipmentCounter_Node1 -- No --> N_InitializeEquipmentCounter_Node2 N_InitializeEquipmentCounter_Node2 -- No --> E_InitializeEquipmentCounter
processing"}:::decision N_InitializeEquipmentCounter_Node0_action["The equipment quantity counter is
set to zero"]:::main N_InitializeEquipmentCounter_Node0 -- Yes --> N_InitializeEquipmentCounter_Node0_action N_InitializeEquipmentCounter_Node0_action --> E_InitializeEquipmentCounter S_InitializeEquipmentCounter --> N_InitializeEquipmentCounter_Node0 N_InitializeEquipmentCounter_Node1{"Beginning equipment processing"}:::decision N_InitializeEquipmentCounter_Node1_action["Equipment quantity counter is
initialized to zero"]:::main N_InitializeEquipmentCounter_Node1 -- Yes --> N_InitializeEquipmentCounter_Node1_action N_InitializeEquipmentCounter_Node1_action --> E_InitializeEquipmentCounter N_InitializeEquipmentCounter_Node0 -- No --> N_InitializeEquipmentCounter_Node1 N_InitializeEquipmentCounter_Node2{"Initializing equipment processing"}:::decision N_InitializeEquipmentCounter_Node2_action["Equipment quantity counter is
initialized to zero"]:::main N_InitializeEquipmentCounter_Node2 -- Yes --> N_InitializeEquipmentCounter_Node2_action N_InitializeEquipmentCounter_Node2_action --> E_InitializeEquipmentCounter N_InitializeEquipmentCounter_Node1 -- No --> N_InitializeEquipmentCounter_Node2 N_InitializeEquipmentCounter_Node2 -- No --> E_InitializeEquipmentCounter
File: GCX003.cbl
GIVEN:
AEI send flag is configured
WHEN:
The system initializes equipment processing
THEN:
The equipment quantity counter is set to zero
File: GCX003.cbl
GIVEN:
AEI send flag has been set
WHEN:
Beginning equipment processing
THEN:
Equipment quantity counter is initialized to zero
File: GCX003.cbl
GIVEN:
AEI send flag has been set
WHEN:
Initializing equipment processing
THEN:
Equipment quantity counter is initialized to zero
β Consolidated Acceptance Criteria
- The system extracts equipment details → equipment ID is extracted from either container ID or car identification fields, and equipment type information is captured
- Extracting equipment details → equipment counter is incremented and equipment identification data is prepared for type-specific processing
- Extracting equipment details from report → if report line is not a message line AND not an end report line AND not a blank line, then increment equipment quantity and extract equipment information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractEquipmentDetails(["Start Step"])
E_ExtractEquipmentDetails(["End Step"])
N_ExtractEquipmentDetails_Node0{"The system extracts equipment
details"}:::decision N_ExtractEquipmentDetails_Node0_action["Equipment ID is extracted from
either container ID or car
identification fields, and equipment
type information is captured"]:::main N_ExtractEquipmentDetails_Node0 -- Yes --> N_ExtractEquipmentDetails_Node0_action N_ExtractEquipmentDetails_Node0_action --> E_ExtractEquipmentDetails S_ExtractEquipmentDetails --> N_ExtractEquipmentDetails_Node0 N_ExtractEquipmentDetails_Node1{"Extracting equipment details"}:::decision N_ExtractEquipmentDetails_Node1_action["Equipment counter is incremented
and equipment identification data is
prepared for type-specific
processing"]:::main N_ExtractEquipmentDetails_Node1 -- Yes --> N_ExtractEquipmentDetails_Node1_action N_ExtractEquipmentDetails_Node1_action --> E_ExtractEquipmentDetails N_ExtractEquipmentDetails_Node0 -- No --> N_ExtractEquipmentDetails_Node1 N_ExtractEquipmentDetails_Node2{"Extracting equipment details from
report"}:::decision N_ExtractEquipmentDetails_Node2_action["If report line is not a message
line AND not an end report line AND
not a blank line, then increment
equipment quantity and extract
equipment information"]:::main N_ExtractEquipmentDetails_Node2 -- Yes --> N_ExtractEquipmentDetails_Node2_action N_ExtractEquipmentDetails_Node2_action --> E_ExtractEquipmentDetails N_ExtractEquipmentDetails_Node1 -- No --> N_ExtractEquipmentDetails_Node2 N_ExtractEquipmentDetails_Node2 -- No --> E_ExtractEquipmentDetails
details"}:::decision N_ExtractEquipmentDetails_Node0_action["Equipment ID is extracted from
either container ID or car
identification fields, and equipment
type information is captured"]:::main N_ExtractEquipmentDetails_Node0 -- Yes --> N_ExtractEquipmentDetails_Node0_action N_ExtractEquipmentDetails_Node0_action --> E_ExtractEquipmentDetails S_ExtractEquipmentDetails --> N_ExtractEquipmentDetails_Node0 N_ExtractEquipmentDetails_Node1{"Extracting equipment details"}:::decision N_ExtractEquipmentDetails_Node1_action["Equipment counter is incremented
and equipment identification data is
prepared for type-specific
processing"]:::main N_ExtractEquipmentDetails_Node1 -- Yes --> N_ExtractEquipmentDetails_Node1_action N_ExtractEquipmentDetails_Node1_action --> E_ExtractEquipmentDetails N_ExtractEquipmentDetails_Node0 -- No --> N_ExtractEquipmentDetails_Node1 N_ExtractEquipmentDetails_Node2{"Extracting equipment details from
report"}:::decision N_ExtractEquipmentDetails_Node2_action["If report line is not a message
line AND not an end report line AND
not a blank line, then increment
equipment quantity and extract
equipment information"]:::main N_ExtractEquipmentDetails_Node2 -- Yes --> N_ExtractEquipmentDetails_Node2_action N_ExtractEquipmentDetails_Node2_action --> E_ExtractEquipmentDetails N_ExtractEquipmentDetails_Node1 -- No --> N_ExtractEquipmentDetails_Node2 N_ExtractEquipmentDetails_Node2 -- No --> E_ExtractEquipmentDetails
File: GCX003.cbl
GIVEN:
More equipment exists to process and current report line contains equipment data
WHEN:
The system extracts equipment details
THEN:
Equipment ID is extracted from either container ID or car identification fields, and equipment type information is captured
File: GCX003.cbl
GIVEN:
A valid equipment line has been identified for processing
WHEN:
Extracting equipment details
THEN:
- Equipment counter is incremented
- Equipment identification data is prepared for type-specific processing
File: GCX003.cbl
GIVEN:
More equipment exists to process
WHEN:
Extracting equipment details from report
THEN:
- If report line is not a message line
- Not an end report line
- Not a blank line, then increment equipment quantity
- Extract equipment information
β Consolidated Acceptance Criteria
- The system determines equipment type → equipment is classified as container if container ID exists, otherwise classified as railcar using car identification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineEquipmentType(["Start Step"])
E_DetermineEquipmentType(["End Step"])
N_DetermineEquipmentType_Node0{"The system determines equipment
type"}:::decision N_DetermineEquipmentType_Node0_action["Equipment is classified as
container if container ID exists,
otherwise classified as railcar
using car identification"]:::main N_DetermineEquipmentType_Node0 -- Yes --> N_DetermineEquipmentType_Node0_action N_DetermineEquipmentType_Node0_action --> E_DetermineEquipmentType S_DetermineEquipmentType --> N_DetermineEquipmentType_Node0 N_DetermineEquipmentType_Node0 -- No --> E_DetermineEquipmentType
type"}:::decision N_DetermineEquipmentType_Node0_action["Equipment is classified as
container if container ID exists,
otherwise classified as railcar
using car identification"]:::main N_DetermineEquipmentType_Node0 -- Yes --> N_DetermineEquipmentType_Node0_action N_DetermineEquipmentType_Node0_action --> E_DetermineEquipmentType S_DetermineEquipmentType --> N_DetermineEquipmentType_Node0 N_DetermineEquipmentType_Node0 -- No --> E_DetermineEquipmentType
File: GCX003.cbl
GIVEN:
Equipment details are extracted from the report line
WHEN:
The system determines equipment type
THEN:
Equipment is classified as container if container ID exists, otherwise classified as railcar using car identification
β Consolidated Acceptance Criteria
- The system stores equipment information → equipment ID, equipment type, load/empty status, cargo key, and condition response code are stored in the equipment table at the current quantity position
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreEquipmentInformation(["Start Step"])
E_StoreEquipmentInformation(["End Step"])
N_StoreEquipmentInformation_Node0{"The system stores equipment
information"}:::decision N_StoreEquipmentInformation_Node0_action["Equipment ID, equipment type,
loadempty status, cargo key, and
condition response code are stored
in the equipment table at the
current quantity position"]:::main N_StoreEquipmentInformation_Node0 -- Yes --> N_StoreEquipmentInformation_Node0_action N_StoreEquipmentInformation_Node0_action --> E_StoreEquipmentInformation S_StoreEquipmentInformation --> N_StoreEquipmentInformation_Node0 N_StoreEquipmentInformation_Node0 -- No --> E_StoreEquipmentInformation
information"}:::decision N_StoreEquipmentInformation_Node0_action["Equipment ID, equipment type,
loadempty status, cargo key, and
condition response code are stored
in the equipment table at the
current quantity position"]:::main N_StoreEquipmentInformation_Node0 -- Yes --> N_StoreEquipmentInformation_Node0_action N_StoreEquipmentInformation_Node0_action --> E_StoreEquipmentInformation S_StoreEquipmentInformation --> N_StoreEquipmentInformation_Node0 N_StoreEquipmentInformation_Node0 -- No --> E_StoreEquipmentInformation
File: GCX003.cbl
GIVEN:
Equipment type is determined and load/empty status is set
WHEN:
The system stores equipment information
THEN:
Equipment ID, equipment type, load/empty status, cargo key, and condition response code are stored in the equipment table at the current quantity position
β Consolidated Acceptance Criteria
- The system increments the equipment counter → the equipment quantity counter is increased by one
- Completing equipment storage → equipment quantity counter is incremented by one
- Incrementing equipment counter → equipment quantity counter is incremented by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementEquipmentCounter(["Start Step"])
E_IncrementEquipmentCounter(["End Step"])
N_IncrementEquipmentCounter_Node0{"The system increments the equipment
counter"}:::decision N_IncrementEquipmentCounter_Node0_action["The equipment quantity counter is
increased by one"]:::main N_IncrementEquipmentCounter_Node0 -- Yes --> N_IncrementEquipmentCounter_Node0_action N_IncrementEquipmentCounter_Node0_action --> E_IncrementEquipmentCounter S_IncrementEquipmentCounter --> N_IncrementEquipmentCounter_Node0 N_IncrementEquipmentCounter_Node1{"Completing equipment storage"}:::decision N_IncrementEquipmentCounter_Node1_action["Equipment quantity counter is
incremented by one"]:::main N_IncrementEquipmentCounter_Node1 -- Yes --> N_IncrementEquipmentCounter_Node1_action N_IncrementEquipmentCounter_Node1_action --> E_IncrementEquipmentCounter N_IncrementEquipmentCounter_Node0 -- No --> N_IncrementEquipmentCounter_Node1 N_IncrementEquipmentCounter_Node2{"Incrementing equipment counter"}:::decision N_IncrementEquipmentCounter_Node2_action["Equipment quantity counter is
incremented by 1"]:::main N_IncrementEquipmentCounter_Node2 -- Yes --> N_IncrementEquipmentCounter_Node2_action N_IncrementEquipmentCounter_Node2_action --> E_IncrementEquipmentCounter N_IncrementEquipmentCounter_Node1 -- No --> N_IncrementEquipmentCounter_Node2 N_IncrementEquipmentCounter_Node2 -- No --> E_IncrementEquipmentCounter
counter"}:::decision N_IncrementEquipmentCounter_Node0_action["The equipment quantity counter is
increased by one"]:::main N_IncrementEquipmentCounter_Node0 -- Yes --> N_IncrementEquipmentCounter_Node0_action N_IncrementEquipmentCounter_Node0_action --> E_IncrementEquipmentCounter S_IncrementEquipmentCounter --> N_IncrementEquipmentCounter_Node0 N_IncrementEquipmentCounter_Node1{"Completing equipment storage"}:::decision N_IncrementEquipmentCounter_Node1_action["Equipment quantity counter is
incremented by one"]:::main N_IncrementEquipmentCounter_Node1 -- Yes --> N_IncrementEquipmentCounter_Node1_action N_IncrementEquipmentCounter_Node1_action --> E_IncrementEquipmentCounter N_IncrementEquipmentCounter_Node0 -- No --> N_IncrementEquipmentCounter_Node1 N_IncrementEquipmentCounter_Node2{"Incrementing equipment counter"}:::decision N_IncrementEquipmentCounter_Node2_action["Equipment quantity counter is
incremented by 1"]:::main N_IncrementEquipmentCounter_Node2 -- Yes --> N_IncrementEquipmentCounter_Node2_action N_IncrementEquipmentCounter_Node2_action --> E_IncrementEquipmentCounter N_IncrementEquipmentCounter_Node1 -- No --> N_IncrementEquipmentCounter_Node2 N_IncrementEquipmentCounter_Node2 -- No --> E_IncrementEquipmentCounter
File: GCX003.cbl
GIVEN:
Equipment information is stored in the equipment table
WHEN:
The system increments the equipment counter
THEN:
The equipment quantity counter is increased by one
File: GCX003.cbl
GIVEN:
All equipment details have been stored for current item
WHEN:
Completing equipment storage
THEN:
Equipment quantity counter is incremented by one
File: GCX003.cbl
GIVEN:
Equipment details have been fully stored
WHEN:
Incrementing equipment counter
THEN:
Equipment quantity counter is incremented by 1
β Consolidated Acceptance Criteria
- The system checks equipment table capacity → if equipment quantity equals maximum capacity and more report lines exist, trigger system abend for table overflow, otherwise continue processing
- Checking table capacity → if equipment quantity equals maximum capacity and more report lines exist, abort with table overflow error; otherwise continue processing
- Checking equipment table capacity → if equipment quantity equals equipment maximum AND report index is not greater than report last line, then table overflow error occurs, otherwise continue processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentTableFull(["Start Step"])
E_EquipmentTableFull(["End Step"])
N_EquipmentTableFull_Node0{"The system checks equipment table
capacity"}:::decision N_EquipmentTableFull_Node0_action["If equipment quantity equals
maximum capacity and more report
lines exist, trigger system abend
for table overflow, otherwise
continue processing"]:::exclusion N_EquipmentTableFull_Node0 -- Yes -->|Alternative| N_EquipmentTableFull_Node0_action N_EquipmentTableFull_Node0_action --> E_EquipmentTableFull S_EquipmentTableFull --> N_EquipmentTableFull_Node0 N_EquipmentTableFull_Node1{"Checking table capacity"}:::decision N_EquipmentTableFull_Node1_action["If equipment quantity equals
maximum capacity and more report
lines exist, abort with table
overflow error otherwise continue
processing"]:::exclusion N_EquipmentTableFull_Node1 -- Yes -->|Alternative| N_EquipmentTableFull_Node1_action N_EquipmentTableFull_Node1_action --> E_EquipmentTableFull N_EquipmentTableFull_Node0 -- No --> N_EquipmentTableFull_Node1 N_EquipmentTableFull_Node2{"Checking equipment table capacity"}:::decision N_EquipmentTableFull_Node2_action["If equipment quantity equals
equipment maximum AND report index
is not greater than report last
line, then table overflow error
occurs, otherwise continue
processing"]:::main N_EquipmentTableFull_Node2 -- Yes --> N_EquipmentTableFull_Node2_action N_EquipmentTableFull_Node2_action --> E_EquipmentTableFull N_EquipmentTableFull_Node1 -- No --> N_EquipmentTableFull_Node2 N_EquipmentTableFull_Node2 -- No --> E_EquipmentTableFull
capacity"}:::decision N_EquipmentTableFull_Node0_action["If equipment quantity equals
maximum capacity and more report
lines exist, trigger system abend
for table overflow, otherwise
continue processing"]:::exclusion N_EquipmentTableFull_Node0 -- Yes -->|Alternative| N_EquipmentTableFull_Node0_action N_EquipmentTableFull_Node0_action --> E_EquipmentTableFull S_EquipmentTableFull --> N_EquipmentTableFull_Node0 N_EquipmentTableFull_Node1{"Checking table capacity"}:::decision N_EquipmentTableFull_Node1_action["If equipment quantity equals
maximum capacity and more report
lines exist, abort with table
overflow error otherwise continue
processing"]:::exclusion N_EquipmentTableFull_Node1 -- Yes -->|Alternative| N_EquipmentTableFull_Node1_action N_EquipmentTableFull_Node1_action --> E_EquipmentTableFull N_EquipmentTableFull_Node0 -- No --> N_EquipmentTableFull_Node1 N_EquipmentTableFull_Node2{"Checking equipment table capacity"}:::decision N_EquipmentTableFull_Node2_action["If equipment quantity equals
equipment maximum AND report index
is not greater than report last
line, then table overflow error
occurs, otherwise continue
processing"]:::main N_EquipmentTableFull_Node2 -- Yes --> N_EquipmentTableFull_Node2_action N_EquipmentTableFull_Node2_action --> E_EquipmentTableFull N_EquipmentTableFull_Node1 -- No --> N_EquipmentTableFull_Node2 N_EquipmentTableFull_Node2 -- No --> E_EquipmentTableFull
File: GCX003.cbl
GIVEN:
Equipment counter is incremented and current report index position is known
WHEN:
The system checks equipment table capacity
THEN:
- If equipment quantity equals maximum capacity
- More report lines exist, trigger system abend for table overflow, otherwise continue processing
File: GCX003.cbl
GIVEN:
Equipment counter has been incremented
WHEN:
Checking table capacity
THEN:
- If equipment quantity equals maximum capacity
- More report lines exist, abort with table overflow error; otherwise continue processing
File: GCX003.cbl
GIVEN:
Equipment counter has been incremented
WHEN:
Checking equipment table capacity
THEN:
- If equipment quantity equals equipment maximum
- Report index is not greater than report last line, then table overflow error occurs, otherwise continue processing
β Consolidated Acceptance Criteria
- The system inserts the train record to database → the train list record is inserted into the GCSUTRT and GCSUTDP database tables
- Inserting train record to database → complete train list with header and equipment details is inserted into GCSUTRT database
- Inserting train record to database → train list record with all equipment details is inserted into the database using GCCUTRIO module
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InsertTrainRecordtoDatabase(["Start Step"])
E_InsertTrainRecordtoDatabase(["End Step"])
N_InsertTrainRecordtoDatabase_Node0{"The system inserts the train record
to database"}:::decision N_InsertTrainRecordtoDatabase_Node0_action["The train list record is inserted
into the GCSUTRT and GCSUTDP
database tables"]:::main N_InsertTrainRecordtoDatabase_Node0 -- Yes --> N_InsertTrainRecordtoDatabase_Node0_action N_InsertTrainRecordtoDatabase_Node0_action --> E_InsertTrainRecordtoDatabase S_InsertTrainRecordtoDatabase --> N_InsertTrainRecordtoDatabase_Node0 N_InsertTrainRecordtoDatabase_Node1{"Inserting train record to database"}:::decision N_InsertTrainRecordtoDatabase_Node1_action["Complete train list with header and
equipment details is inserted into
GCSUTRT database"]:::main N_InsertTrainRecordtoDatabase_Node1 -- Yes --> N_InsertTrainRecordtoDatabase_Node1_action N_InsertTrainRecordtoDatabase_Node1_action --> E_InsertTrainRecordtoDatabase N_InsertTrainRecordtoDatabase_Node0 -- No --> N_InsertTrainRecordtoDatabase_Node1 N_InsertTrainRecordtoDatabase_Node2{"Inserting train record to database"}:::decision N_InsertTrainRecordtoDatabase_Node2_action["Train list record with all
equipment details is inserted into
the database using GCCUTRIO module"]:::main N_InsertTrainRecordtoDatabase_Node2 -- Yes --> N_InsertTrainRecordtoDatabase_Node2_action N_InsertTrainRecordtoDatabase_Node2_action --> E_InsertTrainRecordtoDatabase N_InsertTrainRecordtoDatabase_Node1 -- No --> N_InsertTrainRecordtoDatabase_Node2 N_InsertTrainRecordtoDatabase_Node2 -- No --> E_InsertTrainRecordtoDatabase
to database"}:::decision N_InsertTrainRecordtoDatabase_Node0_action["The train list record is inserted
into the GCSUTRT and GCSUTDP
database tables"]:::main N_InsertTrainRecordtoDatabase_Node0 -- Yes --> N_InsertTrainRecordtoDatabase_Node0_action N_InsertTrainRecordtoDatabase_Node0_action --> E_InsertTrainRecordtoDatabase S_InsertTrainRecordtoDatabase --> N_InsertTrainRecordtoDatabase_Node0 N_InsertTrainRecordtoDatabase_Node1{"Inserting train record to database"}:::decision N_InsertTrainRecordtoDatabase_Node1_action["Complete train list with header and
equipment details is inserted into
GCSUTRT database"]:::main N_InsertTrainRecordtoDatabase_Node1 -- Yes --> N_InsertTrainRecordtoDatabase_Node1_action N_InsertTrainRecordtoDatabase_Node1_action --> E_InsertTrainRecordtoDatabase N_InsertTrainRecordtoDatabase_Node0 -- No --> N_InsertTrainRecordtoDatabase_Node1 N_InsertTrainRecordtoDatabase_Node2{"Inserting train record to database"}:::decision N_InsertTrainRecordtoDatabase_Node2_action["Train list record with all
equipment details is inserted into
the database using GCCUTRIO module"]:::main N_InsertTrainRecordtoDatabase_Node2 -- Yes --> N_InsertTrainRecordtoDatabase_Node2_action N_InsertTrainRecordtoDatabase_Node2_action --> E_InsertTrainRecordtoDatabase N_InsertTrainRecordtoDatabase_Node1 -- No --> N_InsertTrainRecordtoDatabase_Node2 N_InsertTrainRecordtoDatabase_Node2 -- No --> E_InsertTrainRecordtoDatabase
File: GCX003.cbl
GIVEN:
All equipment is processed and train header is complete
WHEN:
The system inserts the train record to database
THEN:
- The train list record is inserted into the gcsutrt
- Gcsutdp database tables
File: GCX003.cbl
GIVEN:
All equipment has been processed and stored in the train list structure
WHEN:
Inserting train record to database
THEN:
- Complete train list with header
- Equipment details is inserted into gcsutrt database
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
All equipment has been processed and table capacity is not exceeded
WHEN:
Inserting train record to database
THEN:
Train list record with all equipment details is inserted into the database using GCCUTRIO module
β Consolidated Acceptance Criteria
- The system validates database insert success → if insertion is successful, continue processing, otherwise if record already exists trigger system abend
- Checking insert operation result → if insert failed or record already exists, abort with insert failure error; otherwise complete storage process successfully
- Validating database insert success → if GCCUTRIO return indicates already exists error, then system abend with insert failed message, otherwise insertion is successful
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DatabaseInsertSuccessful(["Start Step"])
E_DatabaseInsertSuccessful(["End Step"])
N_DatabaseInsertSuccessful_Node0{"The system validates database
insert success"}:::decision N_DatabaseInsertSuccessful_Node0_action["If insertion is successful,
continue processing, otherwise if
record already exists trigger system
abend"]:::exclusion N_DatabaseInsertSuccessful_Node0 -- Yes -->|Alternative| N_DatabaseInsertSuccessful_Node0_action N_DatabaseInsertSuccessful_Node0_action --> E_DatabaseInsertSuccessful S_DatabaseInsertSuccessful --> N_DatabaseInsertSuccessful_Node0 N_DatabaseInsertSuccessful_Node1{"Checking insert operation result"}:::decision N_DatabaseInsertSuccessful_Node1_action["If insert failed or record already
exists, abort with insert failure
error otherwise complete storage
process successfully"]:::exclusion N_DatabaseInsertSuccessful_Node1 -- Yes -->|Alternative| N_DatabaseInsertSuccessful_Node1_action N_DatabaseInsertSuccessful_Node1_action --> E_DatabaseInsertSuccessful N_DatabaseInsertSuccessful_Node0 -- No --> N_DatabaseInsertSuccessful_Node1 N_DatabaseInsertSuccessful_Node2{"Validating database insert success"}:::decision N_DatabaseInsertSuccessful_Node2_action["If GCCUTRIO return indicates
already exists error, then system
abend with insert failed message,
otherwise insertion is successful"]:::exclusion N_DatabaseInsertSuccessful_Node2 -- Yes -->|Alternative| N_DatabaseInsertSuccessful_Node2_action N_DatabaseInsertSuccessful_Node2_action --> E_DatabaseInsertSuccessful N_DatabaseInsertSuccessful_Node1 -- No --> N_DatabaseInsertSuccessful_Node2 N_DatabaseInsertSuccessful_Node2 -- No --> E_DatabaseInsertSuccessful
insert success"}:::decision N_DatabaseInsertSuccessful_Node0_action["If insertion is successful,
continue processing, otherwise if
record already exists trigger system
abend"]:::exclusion N_DatabaseInsertSuccessful_Node0 -- Yes -->|Alternative| N_DatabaseInsertSuccessful_Node0_action N_DatabaseInsertSuccessful_Node0_action --> E_DatabaseInsertSuccessful S_DatabaseInsertSuccessful --> N_DatabaseInsertSuccessful_Node0 N_DatabaseInsertSuccessful_Node1{"Checking insert operation result"}:::decision N_DatabaseInsertSuccessful_Node1_action["If insert failed or record already
exists, abort with insert failure
error otherwise complete storage
process successfully"]:::exclusion N_DatabaseInsertSuccessful_Node1 -- Yes -->|Alternative| N_DatabaseInsertSuccessful_Node1_action N_DatabaseInsertSuccessful_Node1_action --> E_DatabaseInsertSuccessful N_DatabaseInsertSuccessful_Node0 -- No --> N_DatabaseInsertSuccessful_Node1 N_DatabaseInsertSuccessful_Node2{"Validating database insert success"}:::decision N_DatabaseInsertSuccessful_Node2_action["If GCCUTRIO return indicates
already exists error, then system
abend with insert failed message,
otherwise insertion is successful"]:::exclusion N_DatabaseInsertSuccessful_Node2 -- Yes -->|Alternative| N_DatabaseInsertSuccessful_Node2_action N_DatabaseInsertSuccessful_Node2_action --> E_DatabaseInsertSuccessful N_DatabaseInsertSuccessful_Node1 -- No --> N_DatabaseInsertSuccessful_Node2 N_DatabaseInsertSuccessful_Node2 -- No --> E_DatabaseInsertSuccessful
File: GCX003.cbl
GIVEN:
Train record insertion to database is attempted
WHEN:
The system validates database insert success
THEN:
If insertion is successful, continue processing, otherwise if record already exists trigger system abend
File: GCX003.cbl
GIVEN:
Train record insert has been attempted
WHEN:
Checking insert operation result
THEN:
If insert failed or record already exists, abort with insert failure error; otherwise complete storage process successfully
File: GCX003.cbl
GIVEN:
Train record insert operation has been attempted
WHEN:
Validating database insert success
THEN:
If GCCUTRIO return indicates already exists error, then system abend with insert failed message, otherwise insertion is successful
β Consolidated Acceptance Criteria
- The system completes train record creation → train record creation process is marked as successfully completed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TrainRecordCreatedSuccessfully(["Start Step"])
E_TrainRecordCreatedSuccessfully(["End Step"])
N_TrainRecordCreatedSuccessfully_Node0{"The system completes train record
creation"}:::decision N_TrainRecordCreatedSuccessfully_Node0_action["Train record creation process is
marked as successfully completed"]:::main N_TrainRecordCreatedSuccessfully_Node0 -- Yes --> N_TrainRecordCreatedSuccessfully_Node0_action N_TrainRecordCreatedSuccessfully_Node0_action --> E_TrainRecordCreatedSuccessfully S_TrainRecordCreatedSuccessfully --> N_TrainRecordCreatedSuccessfully_Node0 N_TrainRecordCreatedSuccessfully_Node0 -- No --> E_TrainRecordCreatedSuccessfully
creation"}:::decision N_TrainRecordCreatedSuccessfully_Node0_action["Train record creation process is
marked as successfully completed"]:::main N_TrainRecordCreatedSuccessfully_Node0 -- Yes --> N_TrainRecordCreatedSuccessfully_Node0_action N_TrainRecordCreatedSuccessfully_Node0_action --> E_TrainRecordCreatedSuccessfully S_TrainRecordCreatedSuccessfully --> N_TrainRecordCreatedSuccessfully_Node0 N_TrainRecordCreatedSuccessfully_Node0 -- No --> E_TrainRecordCreatedSuccessfully
File: GCX003.cbl
GIVEN:
Database insertion is validated as successful
WHEN:
The system completes train record creation
THEN:
Train record creation process is marked as successfully completed
β Consolidated Acceptance Criteria
- The system handles database insert failure → system abend is triggered with appropriate error message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DatabaseInsertFailedAbend(["Start Step"])
E_DatabaseInsertFailedAbend(["End Step"])
N_DatabaseInsertFailedAbend_Node0{"The system handles database insert
failure"}:::decision N_DatabaseInsertFailedAbend_Node0_action["System abend is triggered with
appropriate error message"]:::exclusion N_DatabaseInsertFailedAbend_Node0 -- Yes -->|Alternative| N_DatabaseInsertFailedAbend_Node0_action N_DatabaseInsertFailedAbend_Node0_action --> E_DatabaseInsertFailedAbend S_DatabaseInsertFailedAbend --> N_DatabaseInsertFailedAbend_Node0 N_DatabaseInsertFailedAbend_Node0 -- No --> E_DatabaseInsertFailedAbend
failure"}:::decision N_DatabaseInsertFailedAbend_Node0_action["System abend is triggered with
appropriate error message"]:::exclusion N_DatabaseInsertFailedAbend_Node0 -- Yes -->|Alternative| N_DatabaseInsertFailedAbend_Node0_action N_DatabaseInsertFailedAbend_Node0_action --> E_DatabaseInsertFailedAbend S_DatabaseInsertFailedAbend --> N_DatabaseInsertFailedAbend_Node0 N_DatabaseInsertFailedAbend_Node0 -- No --> E_DatabaseInsertFailedAbend
File: GCX003.cbl
GIVEN:
Database insertion fails or equipment table overflow occurs
WHEN:
The system handles database insert failure
THEN:
System abend is triggered with appropriate error message
β Consolidated Acceptance Criteria
- The system analyzes the route pattern → equipment routing indicator is set to 3 and route found flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentRoutingFlag3forCSXT(["Start Step"])
E_SetEquipmentRoutingFlag3forCSXT(["End Step"])
N_SetEquipmentRoutingFlag3forCSXT_Node0{"The system analyzes the route
pattern"}:::decision N_SetEquipmentRoutingFlag3forCSXT_Node0_action["Equipment routing indicator is set
to 3 and route found flag is set to
true"]:::main N_SetEquipmentRoutingFlag3forCSXT_Node0 -- Yes --> N_SetEquipmentRoutingFlag3forCSXT_Node0_action N_SetEquipmentRoutingFlag3forCSXT_Node0_action --> E_SetEquipmentRoutingFlag3forCSXT S_SetEquipmentRoutingFlag3forCSXT --> N_SetEquipmentRoutingFlag3forCSXT_Node0 N_SetEquipmentRoutingFlag3forCSXT_Node0 -- No --> E_SetEquipmentRoutingFlag3forCSXT
pattern"}:::decision N_SetEquipmentRoutingFlag3forCSXT_Node0_action["Equipment routing indicator is set
to 3 and route found flag is set to
true"]:::main N_SetEquipmentRoutingFlag3forCSXT_Node0 -- Yes --> N_SetEquipmentRoutingFlag3forCSXT_Node0_action N_SetEquipmentRoutingFlag3forCSXT_Node0_action --> E_SetEquipmentRoutingFlag3forCSXT S_SetEquipmentRoutingFlag3forCSXT --> N_SetEquipmentRoutingFlag3forCSXT_Node0 N_SetEquipmentRoutingFlag3forCSXT_Node0 -- No --> E_SetEquipmentRoutingFlag3forCSXT
File: GCX003.cbl
GIVEN:
Equipment has routing information with CSXT as first carrier, CPRS as second carrier, and DET as junction
WHEN:
The system analyzes the route pattern
THEN:
- Equipment routing indicator is set to 3
- Route found flag is set to true
β Consolidated Acceptance Criteria
- The system analyzes the route pattern → equipment routing indicator is set to 4 and route found flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentRoutingFlag4forNS(["Start Step"])
E_SetEquipmentRoutingFlag4forNS(["End Step"])
N_SetEquipmentRoutingFlag4forNS_Node0{"The system analyzes the route
pattern"}:::decision N_SetEquipmentRoutingFlag4forNS_Node0_action["Equipment routing indicator is set
to 4 and route found flag is set to
true"]:::main N_SetEquipmentRoutingFlag4forNS_Node0 -- Yes --> N_SetEquipmentRoutingFlag4forNS_Node0_action N_SetEquipmentRoutingFlag4forNS_Node0_action --> E_SetEquipmentRoutingFlag4forNS S_SetEquipmentRoutingFlag4forNS --> N_SetEquipmentRoutingFlag4forNS_Node0 N_SetEquipmentRoutingFlag4forNS_Node0 -- No --> E_SetEquipmentRoutingFlag4forNS
pattern"}:::decision N_SetEquipmentRoutingFlag4forNS_Node0_action["Equipment routing indicator is set
to 4 and route found flag is set to
true"]:::main N_SetEquipmentRoutingFlag4forNS_Node0 -- Yes --> N_SetEquipmentRoutingFlag4forNS_Node0_action N_SetEquipmentRoutingFlag4forNS_Node0_action --> E_SetEquipmentRoutingFlag4forNS S_SetEquipmentRoutingFlag4forNS --> N_SetEquipmentRoutingFlag4forNS_Node0 N_SetEquipmentRoutingFlag4forNS_Node0 -- No --> E_SetEquipmentRoutingFlag4forNS
File: GCX003.cbl
GIVEN:
Equipment has routing information with NS as first carrier, CPRS as second carrier, and DET as junction
WHEN:
The system analyzes the route pattern
THEN:
- Equipment routing indicator is set to 4
- Route found flag is set to true
β Consolidated Acceptance Criteria
- The system checks for hazmat classification → equipment routing indicator is set to 2 and route found flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentRoutingFlag2forHaulage(["Start Step"])
E_SetEquipmentRoutingFlag2forHaulage(["End Step"])
N_SetEquipmentRoutingFlag2forHaulage_Node0{"The system checks for hazmat
classification"}:::decision N_SetEquipmentRoutingFlag2forHaulage_Node0_action["Equipment routing indicator is set
to 2 and route found flag is set to
true"]:::main N_SetEquipmentRoutingFlag2forHaulage_Node0 -- Yes --> N_SetEquipmentRoutingFlag2forHaulage_Node0_action N_SetEquipmentRoutingFlag2forHaulage_Node0_action --> E_SetEquipmentRoutingFlag2forHaulage S_SetEquipmentRoutingFlag2forHaulage --> N_SetEquipmentRoutingFlag2forHaulage_Node0 N_SetEquipmentRoutingFlag2forHaulage_Node0 -- No --> E_SetEquipmentRoutingFlag2forHaulage
classification"}:::decision N_SetEquipmentRoutingFlag2forHaulage_Node0_action["Equipment routing indicator is set
to 2 and route found flag is set to
true"]:::main N_SetEquipmentRoutingFlag2forHaulage_Node0 -- Yes --> N_SetEquipmentRoutingFlag2forHaulage_Node0_action N_SetEquipmentRoutingFlag2forHaulage_Node0_action --> E_SetEquipmentRoutingFlag2forHaulage S_SetEquipmentRoutingFlag2forHaulage --> N_SetEquipmentRoutingFlag2forHaulage_Node0 N_SetEquipmentRoutingFlag2forHaulage_Node0 -- No --> E_SetEquipmentRoutingFlag2forHaulage
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Equipment does not match CSXT-CPRS-DET or NS-CPRS-DET patterns and has hazardous materials indicator
WHEN:
The system checks for hazmat classification
THEN:
- Equipment routing indicator is set to 2
- Route found flag is set to true
β Consolidated Acceptance Criteria
- The system completes route pattern analysis without finding a match → equipment routing indicator is set to 1 as the default classification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentRoutingFlag1forEmptyNoRoute(["Start Step"])
E_SetEquipmentRoutingFlag1forEmptyNoRoute(["End Step"])
N_SetEquipmentRoutingFlag1forEmptyNoRoute_Node0{"The system completes route pattern
analysis without finding a match"}:::decision N_SetEquipmentRoutingFlag1forEmptyNoRoute_Node0_action["Equipment routing indicator is set
to 1 as the default classification"]:::main N_SetEquipmentRoutingFlag1forEmptyNoRoute_Node0 -- Yes --> N_SetEquipmentRoutingFlag1forEmptyNoRoute_Node0_action N_SetEquipmentRoutingFlag1forEmptyNoRoute_Node0_action --> E_SetEquipmentRoutingFlag1forEmptyNoRoute S_SetEquipmentRoutingFlag1forEmptyNoRoute --> N_SetEquipmentRoutingFlag1forEmptyNoRoute_Node0 N_SetEquipmentRoutingFlag1forEmptyNoRoute_Node0 -- No --> E_SetEquipmentRoutingFlag1forEmptyNoRoute
analysis without finding a match"}:::decision N_SetEquipmentRoutingFlag1forEmptyNoRoute_Node0_action["Equipment routing indicator is set
to 1 as the default classification"]:::main N_SetEquipmentRoutingFlag1forEmptyNoRoute_Node0 -- Yes --> N_SetEquipmentRoutingFlag1forEmptyNoRoute_Node0_action N_SetEquipmentRoutingFlag1forEmptyNoRoute_Node0_action --> E_SetEquipmentRoutingFlag1forEmptyNoRoute S_SetEquipmentRoutingFlag1forEmptyNoRoute --> N_SetEquipmentRoutingFlag1forEmptyNoRoute_Node0 N_SetEquipmentRoutingFlag1forEmptyNoRoute_Node0 -- No --> E_SetEquipmentRoutingFlag1forEmptyNoRoute
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Equipment does not match any specific routing patterns or no routing information is found
WHEN:
The system completes route pattern analysis without finding a match
THEN:
Equipment routing indicator is set to 1 as the default classification
β Consolidated Acceptance Criteria
- The EDI transmission process is initiated → the system must be configured for background processing mode
- The EDI transmission process is initiated → the system must be configured for background processing mode
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBackgroundProcessingMode(["Start Step"])
E_SetBackgroundProcessingMode(["End Step"])
N_SetBackgroundProcessingMode_Node0{"The EDI transmission process is
initiated"}:::decision N_SetBackgroundProcessingMode_Node0_action["The system must be configured for
background processing mode"]:::main N_SetBackgroundProcessingMode_Node0 -- Yes --> N_SetBackgroundProcessingMode_Node0_action N_SetBackgroundProcessingMode_Node0_action --> E_SetBackgroundProcessingMode S_SetBackgroundProcessingMode --> N_SetBackgroundProcessingMode_Node0 N_SetBackgroundProcessingMode_Node1{"The EDI transmission process is
initiated"}:::decision N_SetBackgroundProcessingMode_Node1_action["The system must be configured for
background processing mode"]:::main N_SetBackgroundProcessingMode_Node1 -- Yes --> N_SetBackgroundProcessingMode_Node1_action N_SetBackgroundProcessingMode_Node1_action --> E_SetBackgroundProcessingMode N_SetBackgroundProcessingMode_Node0 -- No --> N_SetBackgroundProcessingMode_Node1 N_SetBackgroundProcessingMode_Node1 -- No --> E_SetBackgroundProcessingMode
initiated"}:::decision N_SetBackgroundProcessingMode_Node0_action["The system must be configured for
background processing mode"]:::main N_SetBackgroundProcessingMode_Node0 -- Yes --> N_SetBackgroundProcessingMode_Node0_action N_SetBackgroundProcessingMode_Node0_action --> E_SetBackgroundProcessingMode S_SetBackgroundProcessingMode --> N_SetBackgroundProcessingMode_Node0 N_SetBackgroundProcessingMode_Node1{"The EDI transmission process is
initiated"}:::decision N_SetBackgroundProcessingMode_Node1_action["The system must be configured for
background processing mode"]:::main N_SetBackgroundProcessingMode_Node1 -- Yes --> N_SetBackgroundProcessingMode_Node1_action N_SetBackgroundProcessingMode_Node1_action --> E_SetBackgroundProcessingMode N_SetBackgroundProcessingMode_Node0 -- No --> N_SetBackgroundProcessingMode_Node1 N_SetBackgroundProcessingMode_Node1 -- No --> E_SetBackgroundProcessingMode
File: GCX003.cbl
GIVEN:
A train list is ready for EDI transmission to US Customs
WHEN:
The EDI transmission process is initiated
THEN:
The system must be configured for background processing mode
File: GCX003.cbl
GIVEN:
A train list is ready for EDI transmission to US Customs
WHEN:
The EDI transmission process is initiated
THEN:
The system must be configured for background processing mode
β Consolidated Acceptance Criteria
- The EDI transmission is executed through GCCU358T module → the train list data must be transmitted to US Customs EDI system
- The EDI transmission is executed → the GCCU358T module must be called with the complete train list data for transmission to US Customs
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCU358TModuleforEDITransmission(["Start Step"])
E_CallGCCU358TModuleforEDITransmission(["End Step"])
N_CallGCCU358TModuleforEDITransmission_Node0{"The EDI transmission is executed
through GCCU358T module"}:::decision N_CallGCCU358TModuleforEDITransmission_Node0_action["The train list data must be
transmitted to US Customs EDI system"]:::main N_CallGCCU358TModuleforEDITransmission_Node0 -- Yes --> N_CallGCCU358TModuleforEDITransmission_Node0_action N_CallGCCU358TModuleforEDITransmission_Node0_action --> E_CallGCCU358TModuleforEDITransmission S_CallGCCU358TModuleforEDITransmission --> N_CallGCCU358TModuleforEDITransmission_Node0 N_CallGCCU358TModuleforEDITransmission_Node1{"The EDI transmission is executed"}:::decision N_CallGCCU358TModuleforEDITransmission_Node1_action["The GCCU358T module must be called
with the complete train list data
for transmission to US Customs"]:::main N_CallGCCU358TModuleforEDITransmission_Node1 -- Yes --> N_CallGCCU358TModuleforEDITransmission_Node1_action N_CallGCCU358TModuleforEDITransmission_Node1_action --> E_CallGCCU358TModuleforEDITransmission N_CallGCCU358TModuleforEDITransmission_Node0 -- No --> N_CallGCCU358TModuleforEDITransmission_Node1 N_CallGCCU358TModuleforEDITransmission_Node1 -- No --> E_CallGCCU358TModuleforEDITransmission
through GCCU358T module"}:::decision N_CallGCCU358TModuleforEDITransmission_Node0_action["The train list data must be
transmitted to US Customs EDI system"]:::main N_CallGCCU358TModuleforEDITransmission_Node0 -- Yes --> N_CallGCCU358TModuleforEDITransmission_Node0_action N_CallGCCU358TModuleforEDITransmission_Node0_action --> E_CallGCCU358TModuleforEDITransmission S_CallGCCU358TModuleforEDITransmission --> N_CallGCCU358TModuleforEDITransmission_Node0 N_CallGCCU358TModuleforEDITransmission_Node1{"The EDI transmission is executed"}:::decision N_CallGCCU358TModuleforEDITransmission_Node1_action["The GCCU358T module must be called
with the complete train list data
for transmission to US Customs"]:::main N_CallGCCU358TModuleforEDITransmission_Node1 -- Yes --> N_CallGCCU358TModuleforEDITransmission_Node1_action N_CallGCCU358TModuleforEDITransmission_Node1_action --> E_CallGCCU358TModuleforEDITransmission N_CallGCCU358TModuleforEDITransmission_Node0 -- No --> N_CallGCCU358TModuleforEDITransmission_Node1 N_CallGCCU358TModuleforEDITransmission_Node1 -- No --> E_CallGCCU358TModuleforEDITransmission
File: GCX003.cbl
GIVEN:
A validated train list exists with all required equipment and cargo information
WHEN:
The EDI transmission is executed through GCCU358T module
THEN:
The train list data must be transmitted to US Customs EDI system
File: GCX003.cbl
GIVEN:
A validated train list with all equipment and cargo details AND the system is configured for background processing
WHEN:
The EDI transmission is executed
THEN:
The GCCU358T module must be called with the complete train list data for transmission to US Customs
β Consolidated Acceptance Criteria
- The module execution completes → the system must validate that the module parameters were valid and the transmission was successful, otherwise terminate with system error
- Parameter validation is performed → the system must validate all module parameters AND if invalid, generate an abend condition with error message 'GCCU358T MODULE PARAMETERS INVALID'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateModuleParameters(["Start Step"])
E_ValidateModuleParameters(["End Step"])
N_ValidateModuleParameters_Node0{"The module execution completes"}:::decision
N_ValidateModuleParameters_Node0_action["The system must validate that the
module parameters were valid and the
transmission was successful,
otherwise terminate with system
error"]:::exclusion N_ValidateModuleParameters_Node0 -- Yes -->|Alternative| N_ValidateModuleParameters_Node0_action N_ValidateModuleParameters_Node0_action --> E_ValidateModuleParameters S_ValidateModuleParameters --> N_ValidateModuleParameters_Node0 N_ValidateModuleParameters_Node1{"Parameter validation is performed"}:::decision N_ValidateModuleParameters_Node1_action["The system must validate all module
parameters AND if invalid, generate
an abend condition with error
message GCCU358T MODULE PARAMETERS
INVALID"]:::exclusion N_ValidateModuleParameters_Node1 -- Yes -->|Alternative| N_ValidateModuleParameters_Node1_action N_ValidateModuleParameters_Node1_action --> E_ValidateModuleParameters N_ValidateModuleParameters_Node0 -- No --> N_ValidateModuleParameters_Node1 N_ValidateModuleParameters_Node1 -- No --> E_ValidateModuleParameters
module parameters were valid and the
transmission was successful,
otherwise terminate with system
error"]:::exclusion N_ValidateModuleParameters_Node0 -- Yes -->|Alternative| N_ValidateModuleParameters_Node0_action N_ValidateModuleParameters_Node0_action --> E_ValidateModuleParameters S_ValidateModuleParameters --> N_ValidateModuleParameters_Node0 N_ValidateModuleParameters_Node1{"Parameter validation is performed"}:::decision N_ValidateModuleParameters_Node1_action["The system must validate all module
parameters AND if invalid, generate
an abend condition with error
message GCCU358T MODULE PARAMETERS
INVALID"]:::exclusion N_ValidateModuleParameters_Node1 -- Yes -->|Alternative| N_ValidateModuleParameters_Node1_action N_ValidateModuleParameters_Node1_action --> E_ValidateModuleParameters N_ValidateModuleParameters_Node0 -- No --> N_ValidateModuleParameters_Node1 N_ValidateModuleParameters_Node1 -- No --> E_ValidateModuleParameters
File: GCX003.cbl
GIVEN:
The GCCU358T module has been called for EDI transmission
WHEN:
The module execution completes
THEN:
- The system must validate that the module parameters were valid
- The transmission was successful, otherwise terminate with system error
File: GCX003.cbl
GIVEN:
The EDI transmission has failed
WHEN:
Parameter validation is performed
THEN:
- The system must validate all module parameters
- If invalid, generate an abend condition with error message 'gccu358t module parameters invalid'
β Consolidated Acceptance Criteria
- AEI logging is required → the system must create an activity log record with train details, user information, timestamp, and AEI send confirmation message
- AEI logging is performed → the system must create an activity log entry with train ID, user information, timestamp, and AEI send confirmation message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogAEISendActivity(["Start Step"])
E_LogAEISendActivity(["End Step"])
N_LogAEISendActivity_Node0{"AEI logging is required"}:::decision
N_LogAEISendActivity_Node0_action["The system must create an activity
log record with train details, user
information, timestamp, and AEI send
confirmation message"]:::main N_LogAEISendActivity_Node0 -- Yes --> N_LogAEISendActivity_Node0_action N_LogAEISendActivity_Node0_action --> E_LogAEISendActivity S_LogAEISendActivity --> N_LogAEISendActivity_Node0 N_LogAEISendActivity_Node1{"AEI logging is performed"}:::decision N_LogAEISendActivity_Node1_action["The system must create an activity
log entry with train ID, user
information, timestamp, and AEI send
confirmation message"]:::main N_LogAEISendActivity_Node1 -- Yes --> N_LogAEISendActivity_Node1_action N_LogAEISendActivity_Node1_action --> E_LogAEISendActivity N_LogAEISendActivity_Node0 -- No --> N_LogAEISendActivity_Node1 N_LogAEISendActivity_Node1 -- No --> E_LogAEISendActivity
log record with train details, user
information, timestamp, and AEI send
confirmation message"]:::main N_LogAEISendActivity_Node0 -- Yes --> N_LogAEISendActivity_Node0_action N_LogAEISendActivity_Node0_action --> E_LogAEISendActivity S_LogAEISendActivity --> N_LogAEISendActivity_Node0 N_LogAEISendActivity_Node1{"AEI logging is performed"}:::decision N_LogAEISendActivity_Node1_action["The system must create an activity
log entry with train ID, user
information, timestamp, and AEI send
confirmation message"]:::main N_LogAEISendActivity_Node1 -- Yes --> N_LogAEISendActivity_Node1_action N_LogAEISendActivity_Node1_action --> E_LogAEISendActivity N_LogAEISendActivity_Node0 -- No --> N_LogAEISendActivity_Node1 N_LogAEISendActivity_Node1 -- No --> E_LogAEISendActivity
File: GCX003.cbl
GIVEN:
An AEI train send request has been successfully transmitted
WHEN:
AEI logging is required
THEN:
The system must create an activity log record with train details, user information, timestamp, and AEI send confirmation message
File: GCX003.cbl
GIVEN:
The transmission is confirmed as an AEI train send request
WHEN:
AEI logging is performed
THEN:
The system must create an activity log entry with train ID, user information, timestamp, and AEI send confirmation message
β Consolidated Acceptance Criteria
- The system prepares the customs report transmission → the report header must include train ID in header line 1, origin station name in header line 1, user ID in header line 2, terminal ID in header line 2, processing date in header line 2, processing hour in header line 2, and processing minute in header line 2
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildReportHeaderwithTrainDetails(["Start Step"])
E_BuildReportHeaderwithTrainDetails(["End Step"])
N_BuildReportHeaderwithTrainDetails_Node0{"The system prepares the customs
report transmission"}:::decision N_BuildReportHeaderwithTrainDetails_Node0_action["The report header must include
train ID in header line 1, origin
station name in header line 1, user
ID in header line 2, terminal ID in
header line 2, processing date in
header line 2, processing hour in
header line 2, and processing minute
in header line 2"]:::main N_BuildReportHeaderwithTrainDetails_Node0 -- Yes --> N_BuildReportHeaderwithTrainDetails_Node0_action N_BuildReportHeaderwithTrainDetails_Node0_action --> E_BuildReportHeaderwithTrainDetails S_BuildReportHeaderwithTrainDetails --> N_BuildReportHeaderwithTrainDetails_Node0 N_BuildReportHeaderwithTrainDetails_Node0 -- No --> E_BuildReportHeaderwithTrainDetails
report transmission"}:::decision N_BuildReportHeaderwithTrainDetails_Node0_action["The report header must include
train ID in header line 1, origin
station name in header line 1, user
ID in header line 2, terminal ID in
header line 2, processing date in
header line 2, processing hour in
header line 2, and processing minute
in header line 2"]:::main N_BuildReportHeaderwithTrainDetails_Node0 -- Yes --> N_BuildReportHeaderwithTrainDetails_Node0_action N_BuildReportHeaderwithTrainDetails_Node0_action --> E_BuildReportHeaderwithTrainDetails S_BuildReportHeaderwithTrainDetails --> N_BuildReportHeaderwithTrainDetails_Node0 N_BuildReportHeaderwithTrainDetails_Node0 -- No --> E_BuildReportHeaderwithTrainDetails
File: GCX003.cbl
GIVEN:
A train manifest processing request has been completed
WHEN:
The system prepares the customs report transmission
THEN:
The report header must include train ID in header line 1, origin station name in header line 1, user ID in header line 2, terminal ID in header line 2, processing date in header line 2, processing hour in header line 2, and processing minute in header line 2
β Consolidated Acceptance Criteria
- The system builds the report header for customs transmission → the ETA year must be set in header line 4, ETA month must be set in header line 4, ETA day must be set in header line 4, ETA hour must be set in header line 4, and ETA minute must be set in header line 4
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetETADateandTimeFields(["Start Step"])
E_SetETADateandTimeFields(["End Step"])
N_SetETADateandTimeFields_Node0{"The system builds the report header
for customs transmission"}:::decision N_SetETADateandTimeFields_Node0_action["The ETA year must be set in header
line 4, ETA month must be set in
header line 4, ETA day must be set
in header line 4, ETA hour must be
set in header line 4, and ETA minute
must be set in header line 4"]:::main N_SetETADateandTimeFields_Node0 -- Yes --> N_SetETADateandTimeFields_Node0_action N_SetETADateandTimeFields_Node0_action --> E_SetETADateandTimeFields S_SetETADateandTimeFields --> N_SetETADateandTimeFields_Node0 N_SetETADateandTimeFields_Node0 -- No --> E_SetETADateandTimeFields
for customs transmission"}:::decision N_SetETADateandTimeFields_Node0_action["The ETA year must be set in header
line 4, ETA month must be set in
header line 4, ETA day must be set
in header line 4, ETA hour must be
set in header line 4, and ETA minute
must be set in header line 4"]:::main N_SetETADateandTimeFields_Node0 -- Yes --> N_SetETADateandTimeFields_Node0_action N_SetETADateandTimeFields_Node0_action --> E_SetETADateandTimeFields S_SetETADateandTimeFields --> N_SetETADateandTimeFields_Node0 N_SetETADateandTimeFields_Node0 -- No --> E_SetETADateandTimeFields
File: GCX003.cbl
GIVEN:
A train request contains ETA date and time information
WHEN:
The system builds the report header for customs transmission
THEN:
The ETA year must be set in header line 4, ETA month must be set in header line 4, ETA day must be set in header line 4, ETA hour must be set in header line 4, and ETA minute must be set in header line 4
β Consolidated Acceptance Criteria
- The system prepares the status line for customs transmission → the total equipment count must be moved to the status line and the status line must be assigned to email text line 5
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddEquipmentTotalCounttoStatusLine(["Start Step"])
E_AddEquipmentTotalCounttoStatusLine(["End Step"])
N_AddEquipmentTotalCounttoStatusLine_Node0{"The system prepares the status line
for customs transmission"}:::decision N_AddEquipmentTotalCounttoStatusLine_Node0_action["The total equipment count must be
moved to the status line and the
status line must be assigned to
email text line 5"]:::main N_AddEquipmentTotalCounttoStatusLine_Node0 -- Yes --> N_AddEquipmentTotalCounttoStatusLine_Node0_action N_AddEquipmentTotalCounttoStatusLine_Node0_action --> E_AddEquipmentTotalCounttoStatusLine S_AddEquipmentTotalCounttoStatusLine --> N_AddEquipmentTotalCounttoStatusLine_Node0 N_AddEquipmentTotalCounttoStatusLine_Node0 -- No --> E_AddEquipmentTotalCounttoStatusLine
for customs transmission"}:::decision N_AddEquipmentTotalCounttoStatusLine_Node0_action["The total equipment count must be
moved to the status line and the
status line must be assigned to
email text line 5"]:::main N_AddEquipmentTotalCounttoStatusLine_Node0 -- Yes --> N_AddEquipmentTotalCounttoStatusLine_Node0_action N_AddEquipmentTotalCounttoStatusLine_Node0_action --> E_AddEquipmentTotalCounttoStatusLine S_AddEquipmentTotalCounttoStatusLine --> N_AddEquipmentTotalCounttoStatusLine_Node0 N_AddEquipmentTotalCounttoStatusLine_Node0 -- No --> E_AddEquipmentTotalCounttoStatusLine
File: GCX003.cbl
GIVEN:
Equipment processing has been completed for a train manifest
WHEN:
The system prepares the status line for customs transmission
THEN:
- The total equipment count must be moved to the status line
- The status line must be assigned to email text line 5
β Consolidated Acceptance Criteria
- The system prepares the email transmission to customs → report line 1 must be copied to email text line 1, report line 2 must be copied to email text line 2, report line 3 must be copied to email text line 3, report line 4 must be copied to email text line 4, detail header 1 must be copied to email text line 6, and detail header 2 must be copied to email text line 7
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatReportLinesforEmail(["Start Step"])
E_FormatReportLinesforEmail(["End Step"])
N_FormatReportLinesforEmail_Node0{"The system prepares the email
transmission to customs"}:::decision N_FormatReportLinesforEmail_Node0_action["Report line 1 must be copied to
email text line 1, report line 2
must be copied to email text line 2,
report line 3 must be copied to
email text line 3, report line 4
must be copied to email text line 4,
detail header 1 must be copied to
email text line 6, and detail header
2 must be copied to email text line
7"]:::main N_FormatReportLinesforEmail_Node0 -- Yes --> N_FormatReportLinesforEmail_Node0_action N_FormatReportLinesforEmail_Node0_action --> E_FormatReportLinesforEmail S_FormatReportLinesforEmail --> N_FormatReportLinesforEmail_Node0 N_FormatReportLinesforEmail_Node0 -- No --> E_FormatReportLinesforEmail
transmission to customs"}:::decision N_FormatReportLinesforEmail_Node0_action["Report line 1 must be copied to
email text line 1, report line 2
must be copied to email text line 2,
report line 3 must be copied to
email text line 3, report line 4
must be copied to email text line 4,
detail header 1 must be copied to
email text line 6, and detail header
2 must be copied to email text line
7"]:::main N_FormatReportLinesforEmail_Node0 -- Yes --> N_FormatReportLinesforEmail_Node0_action N_FormatReportLinesforEmail_Node0_action --> E_FormatReportLinesforEmail S_FormatReportLinesforEmail --> N_FormatReportLinesforEmail_Node0 N_FormatReportLinesforEmail_Node0 -- No --> E_FormatReportLinesforEmail
File: GCX003.cbl
GIVEN:
Report lines have been generated for a train manifest
WHEN:
The system prepares the email transmission to customs
THEN:
Report line 1 must be copied to email text line 1, report line 2 must be copied to email text line 2, report line 3 must be copied to email text line 3, report line 4 must be copied to email text line 4, detail header 1 must be copied to email text line 6, and detail header 2 must be copied to email text line 7
β Consolidated Acceptance Criteria
- The system prepares the email parameters → keywords must be set to spaces, copy user code must be set to spaces, item number sequence must be set to spaces, item alpha sequence must be set to spaces, and return status flag must be initialized
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEmailParameters(["Start Step"])
E_SetEmailParameters(["End Step"])
N_SetEmailParameters_Node0{"The system prepares the email
parameters"}:::decision N_SetEmailParameters_Node0_action["Keywords must be set to spaces,
copy user code must be set to
spaces, item number sequence must be
set to spaces, item alpha sequence
must be set to spaces, and return
status flag must be initialized"]:::main N_SetEmailParameters_Node0 -- Yes --> N_SetEmailParameters_Node0_action N_SetEmailParameters_Node0_action --> E_SetEmailParameters S_SetEmailParameters --> N_SetEmailParameters_Node0 N_SetEmailParameters_Node0 -- No --> E_SetEmailParameters
parameters"}:::decision N_SetEmailParameters_Node0_action["Keywords must be set to spaces,
copy user code must be set to
spaces, item number sequence must be
set to spaces, item alpha sequence
must be set to spaces, and return
status flag must be initialized"]:::main N_SetEmailParameters_Node0 -- Yes --> N_SetEmailParameters_Node0_action N_SetEmailParameters_Node0_action --> E_SetEmailParameters S_SetEmailParameters --> N_SetEmailParameters_Node0 N_SetEmailParameters_Node0 -- No --> E_SetEmailParameters
File: GCX003.cbl
GIVEN:
A customs report is ready for transmission
WHEN:
The system prepares the email parameters
THEN:
Keywords must be set to spaces, copy user code must be set to spaces, item number sequence must be set to spaces, item alpha sequence must be set to spaces, and return status flag must be initialized
β Consolidated Acceptance Criteria
- The system sets the email sender and recipient → the from user code must be set to 'OM01247' and the to user code must be set to 'OM01247'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSenderasOM01247(["Start Step"])
E_SetSenderasOM01247(["End Step"])
N_SetSenderasOM01247_Node0{"The system sets the email sender
and recipient"}:::decision N_SetSenderasOM01247_Node0_action["The from user code must be set to
OM01247 and the to user code must be
set to OM01247"]:::main N_SetSenderasOM01247_Node0 -- Yes --> N_SetSenderasOM01247_Node0_action N_SetSenderasOM01247_Node0_action --> E_SetSenderasOM01247 S_SetSenderasOM01247 --> N_SetSenderasOM01247_Node0 N_SetSenderasOM01247_Node0 -- No --> E_SetSenderasOM01247
and recipient"}:::decision N_SetSenderasOM01247_Node0_action["The from user code must be set to
OM01247 and the to user code must be
set to OM01247"]:::main N_SetSenderasOM01247_Node0 -- Yes --> N_SetSenderasOM01247_Node0_action N_SetSenderasOM01247_Node0_action --> E_SetSenderasOM01247 S_SetSenderasOM01247 --> N_SetSenderasOM01247_Node0 N_SetSenderasOM01247_Node0 -- No --> E_SetSenderasOM01247
File: GCX003.cbl
GIVEN:
A customs report is being prepared for transmission
WHEN:
- The system sets the email sender
- Recipient
THEN:
The from user code must be set to 'OM01247' and the to user code must be set to 'OM01247'
β Consolidated Acceptance Criteria
- The system sets the email subject line → the email subject must be set to the content of report line 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReportSubjectLine(["Start Step"])
E_SetReportSubjectLine(["End Step"])
N_SetReportSubjectLine_Node0{"The system sets the email subject
line"}:::decision N_SetReportSubjectLine_Node0_action["The email subject must be set to
the content of report line 1"]:::main N_SetReportSubjectLine_Node0 -- Yes --> N_SetReportSubjectLine_Node0_action N_SetReportSubjectLine_Node0_action --> E_SetReportSubjectLine S_SetReportSubjectLine --> N_SetReportSubjectLine_Node0 N_SetReportSubjectLine_Node0 -- No --> E_SetReportSubjectLine
line"}:::decision N_SetReportSubjectLine_Node0_action["The email subject must be set to
the content of report line 1"]:::main N_SetReportSubjectLine_Node0 -- Yes --> N_SetReportSubjectLine_Node0_action N_SetReportSubjectLine_Node0_action --> E_SetReportSubjectLine S_SetReportSubjectLine --> N_SetReportSubjectLine_Node0 N_SetReportSubjectLine_Node0 -- No --> E_SetReportSubjectLine
File: GCX003.cbl
GIVEN:
A customs report has been formatted with header information
WHEN:
The system sets the email subject line
THEN:
The email subject must be set to the content of report line 1
β Consolidated Acceptance Criteria
- The system sets the email formatting parameters → the email item width must be set to '080' characters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEmailWidthto80Characters(["Start Step"])
E_SetEmailWidthto80Characters(["End Step"])
N_SetEmailWidthto80Characters_Node0{"The system sets the email
formatting parameters"}:::decision N_SetEmailWidthto80Characters_Node0_action["The email item width must be set to
080 characters"]:::main N_SetEmailWidthto80Characters_Node0 -- Yes --> N_SetEmailWidthto80Characters_Node0_action N_SetEmailWidthto80Characters_Node0_action --> E_SetEmailWidthto80Characters S_SetEmailWidthto80Characters --> N_SetEmailWidthto80Characters_Node0 N_SetEmailWidthto80Characters_Node0 -- No --> E_SetEmailWidthto80Characters
formatting parameters"}:::decision N_SetEmailWidthto80Characters_Node0_action["The email item width must be set to
080 characters"]:::main N_SetEmailWidthto80Characters_Node0 -- Yes --> N_SetEmailWidthto80Characters_Node0_action N_SetEmailWidthto80Characters_Node0_action --> E_SetEmailWidthto80Characters S_SetEmailWidthto80Characters --> N_SetEmailWidthto80Characters_Node0 N_SetEmailWidthto80Characters_Node0 -- No --> E_SetEmailWidthto80Characters
File: GCX003.cbl
GIVEN:
A customs report is being prepared for email transmission
WHEN:
The system sets the email formatting parameters
THEN:
The email item width must be set to '080' characters
β Consolidated Acceptance Criteria
- The system processes report lines for email transmission and the line count reaches 700 lines → the system must send the current email batch, reset the email text, initialize line counter to zero, add continuation message as line 1, add detail header 1 as line 2, add detail header 2 as line 3, and increment line counter by 3
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReportSizeCheck(["Start Step"])
E_ReportSizeCheck(["End Step"])
N_ReportSizeCheck_Node0{"The system processes report lines
for email transmission and the line
count reaches 700 lines"}:::decision N_ReportSizeCheck_Node0_action["The system must send the current
email batch, reset the email text,
initialize line counter to zero, add
continuation message as line 1, add
detail header 1 as line 2, add
detail header 2 as line 3, and
increment line counter by 3"]:::main N_ReportSizeCheck_Node0 -- Yes --> N_ReportSizeCheck_Node0_action N_ReportSizeCheck_Node0_action --> E_ReportSizeCheck S_ReportSizeCheck --> N_ReportSizeCheck_Node0 N_ReportSizeCheck_Node0 -- No --> E_ReportSizeCheck
for email transmission and the line
count reaches 700 lines"}:::decision N_ReportSizeCheck_Node0_action["The system must send the current
email batch, reset the email text,
initialize line counter to zero, add
continuation message as line 1, add
detail header 1 as line 2, add
detail header 2 as line 3, and
increment line counter by 3"]:::main N_ReportSizeCheck_Node0 -- Yes --> N_ReportSizeCheck_Node0_action N_ReportSizeCheck_Node0_action --> E_ReportSizeCheck S_ReportSizeCheck --> N_ReportSizeCheck_Node0 N_ReportSizeCheck_Node0 -- No --> E_ReportSizeCheck
File: GCX003.cbl
GIVEN:
A customs report has been formatted for transmission
WHEN:
- The system processes report lines for email transmission
- The line count reaches 700 lines
THEN:
The system must send the current email batch, reset the email text, initialize line counter to zero, add continuation message as line 1, add detail header 1 as line 2, add detail header 2 as line 3, and increment line counter by 3
β Consolidated Acceptance Criteria
- The system completes processing all report lines → the system must call EMCSEND3 to transmit the complete email with all report content
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendSingleEmailwithCompleteReport(["Start Step"])
E_SendSingleEmailwithCompleteReport(["End Step"])
N_SendSingleEmailwithCompleteReport_Node0{"The system completes processing all
report lines"}:::decision N_SendSingleEmailwithCompleteReport_Node0_action["The system must call EMCSEND3 to
transmit the complete email with all
report content"]:::main N_SendSingleEmailwithCompleteReport_Node0 -- Yes --> N_SendSingleEmailwithCompleteReport_Node0_action N_SendSingleEmailwithCompleteReport_Node0_action --> E_SendSingleEmailwithCompleteReport S_SendSingleEmailwithCompleteReport --> N_SendSingleEmailwithCompleteReport_Node0 N_SendSingleEmailwithCompleteReport_Node0 -- No --> E_SendSingleEmailwithCompleteReport
report lines"}:::decision N_SendSingleEmailwithCompleteReport_Node0_action["The system must call EMCSEND3 to
transmit the complete email with all
report content"]:::main N_SendSingleEmailwithCompleteReport_Node0 -- Yes --> N_SendSingleEmailwithCompleteReport_Node0_action N_SendSingleEmailwithCompleteReport_Node0_action --> E_SendSingleEmailwithCompleteReport S_SendSingleEmailwithCompleteReport --> N_SendSingleEmailwithCompleteReport_Node0 N_SendSingleEmailwithCompleteReport_Node0 -- No --> E_SendSingleEmailwithCompleteReport
File: GCX003.cbl
GIVEN:
A customs report has been formatted and the total line count is 700 or fewer lines
WHEN:
The system completes processing all report lines
THEN:
The system must call EMCSEND3 to transmit the complete email with all report content
β Consolidated Acceptance Criteria
- The system reaches the line limit → the system must send the current email batch, clear the email text, reset line counter, add continuation message, add report headers, and continue processing remaining lines
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SplitReportintoMultipleEmails(["Start Step"])
E_SplitReportintoMultipleEmails(["End Step"])
N_SplitReportintoMultipleEmails_Node0{"The system reaches the line limit"}:::decision
N_SplitReportintoMultipleEmails_Node0_action["The system must send the current
email batch, clear the email text,
reset line counter, add continuation
message, add report headers, and
continue processing remaining lines"]:::main N_SplitReportintoMultipleEmails_Node0 -- Yes --> N_SplitReportintoMultipleEmails_Node0_action N_SplitReportintoMultipleEmails_Node0_action --> E_SplitReportintoMultipleEmails S_SplitReportintoMultipleEmails --> N_SplitReportintoMultipleEmails_Node0 N_SplitReportintoMultipleEmails_Node0 -- No --> E_SplitReportintoMultipleEmails
email batch, clear the email text,
reset line counter, add continuation
message, add report headers, and
continue processing remaining lines"]:::main N_SplitReportintoMultipleEmails_Node0 -- Yes --> N_SplitReportintoMultipleEmails_Node0_action N_SplitReportintoMultipleEmails_Node0_action --> E_SplitReportintoMultipleEmails S_SplitReportintoMultipleEmails --> N_SplitReportintoMultipleEmails_Node0 N_SplitReportintoMultipleEmails_Node0 -- No --> E_SplitReportintoMultipleEmails
File: GCX003.cbl
GIVEN:
A customs report exceeds 700 lines during processing
WHEN:
The system reaches the line limit
THEN:
The system must send the current email batch, clear the email text, reset line counter, add continuation message, add report headers, and continue processing remaining lines
β Consolidated Acceptance Criteria
- The system checks the email transmission result → if the email return status is not successful, the system must handle the email send failure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_VerifyEmailSendSuccess(["Start Step"])
E_VerifyEmailSendSuccess(["End Step"])
N_VerifyEmailSendSuccess_Node0{"The system checks the email
transmission result"}:::decision N_VerifyEmailSendSuccess_Node0_action["If the email return status is not
successful, the system must handle
the email send failure"]:::main N_VerifyEmailSendSuccess_Node0 -- Yes --> N_VerifyEmailSendSuccess_Node0_action N_VerifyEmailSendSuccess_Node0_action --> E_VerifyEmailSendSuccess S_VerifyEmailSendSuccess --> N_VerifyEmailSendSuccess_Node0 N_VerifyEmailSendSuccess_Node0 -- No --> E_VerifyEmailSendSuccess
transmission result"}:::decision N_VerifyEmailSendSuccess_Node0_action["If the email return status is not
successful, the system must handle
the email send failure"]:::main N_VerifyEmailSendSuccess_Node0 -- Yes --> N_VerifyEmailSendSuccess_Node0_action N_VerifyEmailSendSuccess_Node0_action --> E_VerifyEmailSendSuccess S_VerifyEmailSendSuccess --> N_VerifyEmailSendSuccess_Node0 N_VerifyEmailSendSuccess_Node0 -- No --> E_VerifyEmailSendSuccess
File: GCX003.cbl
GIVEN:
An email has been sent to customs using EMCSEND3
WHEN:
The system checks the email transmission result
THEN:
If the email return status is not successful, the system must handle the email send failure
β Consolidated Acceptance Criteria
- The system detects the email send failure → the system must set the error message to 'SEND TO FILE OF OM01247 FAILED' and perform system abend
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleEmailSendFailure(["Start Step"])
E_HandleEmailSendFailure(["End Step"])
N_HandleEmailSendFailure_Node0{"The system detects the email send
failure"}:::decision N_HandleEmailSendFailure_Node0_action["The system must set the error
message to SEND TO FILE OF OM01247
FAILED and perform system abend"]:::exclusion N_HandleEmailSendFailure_Node0 -- Yes -->|Alternative| N_HandleEmailSendFailure_Node0_action N_HandleEmailSendFailure_Node0_action --> E_HandleEmailSendFailure S_HandleEmailSendFailure --> N_HandleEmailSendFailure_Node0 N_HandleEmailSendFailure_Node0 -- No --> E_HandleEmailSendFailure
failure"}:::decision N_HandleEmailSendFailure_Node0_action["The system must set the error
message to SEND TO FILE OF OM01247
FAILED and perform system abend"]:::exclusion N_HandleEmailSendFailure_Node0 -- Yes -->|Alternative| N_HandleEmailSendFailure_Node0_action N_HandleEmailSendFailure_Node0_action --> E_HandleEmailSendFailure S_HandleEmailSendFailure --> N_HandleEmailSendFailure_Node0 N_HandleEmailSendFailure_Node0 -- No --> E_HandleEmailSendFailure
File: GCX003.cbl
GIVEN:
An email transmission to customs has failed
WHEN:
The system detects the email send failure
THEN:
The system must set the error message to 'SEND TO FILE OF OM01247 FAILED' and perform system abend
β Consolidated Acceptance Criteria
- The system completes the email transmission → the system must initialize the accept status and call CIMS with PURG to purge the alternate PCB message queue
- The system finalizes the email process → the system initializes accept status and calls CIMS with PURG function to purge the alternate PCB message queue
- Message queue purging is performed → the system shall clear the accept status and call the message purge service to clean up communication resources
- Queue cleanup is required → the message queue is purged to remove the processed log entry
- The system completes the logging process → the message queue is purged using CIMS with PURG function to clean up the alternate PCB
- The logging transaction needs to be completed → the system calls the message processing service to purge the alternate PCB and complete the transaction
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PurgeMessageQueue(["Start Step"])
E_PurgeMessageQueue(["End Step"])
N_PurgeMessageQueue_Node0{"The system completes the email
transmission"}:::decision N_PurgeMessageQueue_Node0_action["The system must initialize the
accept status and call CIMS with
PURG to purge the alternate PCB
message queue"]:::main N_PurgeMessageQueue_Node0 -- Yes --> N_PurgeMessageQueue_Node0_action N_PurgeMessageQueue_Node0_action --> E_PurgeMessageQueue S_PurgeMessageQueue --> N_PurgeMessageQueue_Node0 N_PurgeMessageQueue_Node1{"The system finalizes the email
process"}:::decision N_PurgeMessageQueue_Node1_action["The system initializes accept
status and calls CIMS with PURG
function to purge the alternate PCB
message queue"]:::main N_PurgeMessageQueue_Node1 -- Yes --> N_PurgeMessageQueue_Node1_action N_PurgeMessageQueue_Node1_action --> E_PurgeMessageQueue N_PurgeMessageQueue_Node0 -- No --> N_PurgeMessageQueue_Node1 N_PurgeMessageQueue_Node2{"Message queue purging is performed"}:::decision N_PurgeMessageQueue_Node2_action["The system shall clear the accept
status and call the message purge
service to clean up communication
resources"]:::main N_PurgeMessageQueue_Node2 -- Yes --> N_PurgeMessageQueue_Node2_action N_PurgeMessageQueue_Node2_action --> E_PurgeMessageQueue N_PurgeMessageQueue_Node1 -- No --> N_PurgeMessageQueue_Node2 N_PurgeMessageQueue_Node3{"Queue cleanup is required"}:::decision N_PurgeMessageQueue_Node3_action["The message queue is purged to
remove the processed log entry"]:::main N_PurgeMessageQueue_Node3 -- Yes --> N_PurgeMessageQueue_Node3_action N_PurgeMessageQueue_Node3_action --> E_PurgeMessageQueue N_PurgeMessageQueue_Node2 -- No --> N_PurgeMessageQueue_Node3 N_PurgeMessageQueue_Node4{"The system completes the logging
process"}:::decision N_PurgeMessageQueue_Node4_action["The message queue is purged using
CIMS with PURG function to clean up
the alternate PCB"]:::main N_PurgeMessageQueue_Node4 -- Yes --> N_PurgeMessageQueue_Node4_action N_PurgeMessageQueue_Node4_action --> E_PurgeMessageQueue N_PurgeMessageQueue_Node3 -- No --> N_PurgeMessageQueue_Node4 N_PurgeMessageQueue_Node5{"The logging transaction needs to be
completed"}:::decision N_PurgeMessageQueue_Node5_action["The system calls the message
processing service to purge the
alternate PCB and complete the
transaction"]:::main N_PurgeMessageQueue_Node5 -- Yes --> N_PurgeMessageQueue_Node5_action N_PurgeMessageQueue_Node5_action --> E_PurgeMessageQueue N_PurgeMessageQueue_Node4 -- No --> N_PurgeMessageQueue_Node5 N_PurgeMessageQueue_Node5 -- No --> E_PurgeMessageQueue
transmission"}:::decision N_PurgeMessageQueue_Node0_action["The system must initialize the
accept status and call CIMS with
PURG to purge the alternate PCB
message queue"]:::main N_PurgeMessageQueue_Node0 -- Yes --> N_PurgeMessageQueue_Node0_action N_PurgeMessageQueue_Node0_action --> E_PurgeMessageQueue S_PurgeMessageQueue --> N_PurgeMessageQueue_Node0 N_PurgeMessageQueue_Node1{"The system finalizes the email
process"}:::decision N_PurgeMessageQueue_Node1_action["The system initializes accept
status and calls CIMS with PURG
function to purge the alternate PCB
message queue"]:::main N_PurgeMessageQueue_Node1 -- Yes --> N_PurgeMessageQueue_Node1_action N_PurgeMessageQueue_Node1_action --> E_PurgeMessageQueue N_PurgeMessageQueue_Node0 -- No --> N_PurgeMessageQueue_Node1 N_PurgeMessageQueue_Node2{"Message queue purging is performed"}:::decision N_PurgeMessageQueue_Node2_action["The system shall clear the accept
status and call the message purge
service to clean up communication
resources"]:::main N_PurgeMessageQueue_Node2 -- Yes --> N_PurgeMessageQueue_Node2_action N_PurgeMessageQueue_Node2_action --> E_PurgeMessageQueue N_PurgeMessageQueue_Node1 -- No --> N_PurgeMessageQueue_Node2 N_PurgeMessageQueue_Node3{"Queue cleanup is required"}:::decision N_PurgeMessageQueue_Node3_action["The message queue is purged to
remove the processed log entry"]:::main N_PurgeMessageQueue_Node3 -- Yes --> N_PurgeMessageQueue_Node3_action N_PurgeMessageQueue_Node3_action --> E_PurgeMessageQueue N_PurgeMessageQueue_Node2 -- No --> N_PurgeMessageQueue_Node3 N_PurgeMessageQueue_Node4{"The system completes the logging
process"}:::decision N_PurgeMessageQueue_Node4_action["The message queue is purged using
CIMS with PURG function to clean up
the alternate PCB"]:::main N_PurgeMessageQueue_Node4 -- Yes --> N_PurgeMessageQueue_Node4_action N_PurgeMessageQueue_Node4_action --> E_PurgeMessageQueue N_PurgeMessageQueue_Node3 -- No --> N_PurgeMessageQueue_Node4 N_PurgeMessageQueue_Node5{"The logging transaction needs to be
completed"}:::decision N_PurgeMessageQueue_Node5_action["The system calls the message
processing service to purge the
alternate PCB and complete the
transaction"]:::main N_PurgeMessageQueue_Node5 -- Yes --> N_PurgeMessageQueue_Node5_action N_PurgeMessageQueue_Node5_action --> E_PurgeMessageQueue N_PurgeMessageQueue_Node4 -- No --> N_PurgeMessageQueue_Node5 N_PurgeMessageQueue_Node5 -- No --> E_PurgeMessageQueue
File: GCX003.cbl
GIVEN:
An email has been successfully sent to customs
WHEN:
The system completes the email transmission
THEN:
- The system must initialize the accept status
- Call cims with purg to purge the alternate pcb message queue
File: GCX003.cbl
GIVEN:
Email transmission has been completed successfully
WHEN:
The system finalizes the email process
THEN:
- The system initializes accept status
- Calls cims with purg function to purge the alternate pcb message queue
File: GCX003.cbl
GIVEN:
Email transmission has been completed successfully
WHEN:
Message queue purging is performed
THEN:
- The system shall clear the accept status
- Call the message purge service to clean up communication resources
File: GCX003.cbl
GIVEN:
An AEI log message has been successfully written to the system
WHEN:
Queue cleanup is required
THEN:
The message queue is purged to remove the processed log entry
File: GCX003.cbl
GIVEN:
An audit log message has been written to the system log
WHEN:
The system completes the logging process
THEN:
The message queue is purged using CIMS with PURG function to clean up the alternate PCB
File: GCX003.cbl
GIVEN:
An AEI activity log record has been successfully written to the system log
WHEN:
The logging transaction needs to be completed
THEN:
- The system calls the message processing service to purge the alternate pcb
- Complete the transaction
β Consolidated Acceptance Criteria
- The system begins report formatting → report index is set to last line position, new report index is set to last line position, and all header lines are prepared for content
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeReportHeadersandStatusLines(["Start Step"])
E_InitializeReportHeadersandStatusLines(["End Step"])
N_InitializeReportHeadersandStatusLines_Node0{"The system begins report formatting"}:::decision
N_InitializeReportHeadersandStatusLines_Node0_action["Report index is set to last line
position, new report index is set to
last line position, and all header
lines are prepared for content"]:::main N_InitializeReportHeadersandStatusLines_Node0 -- Yes --> N_InitializeReportHeadersandStatusLines_Node0_action N_InitializeReportHeadersandStatusLines_Node0_action --> E_InitializeReportHeadersandStatusLines S_InitializeReportHeadersandStatusLines --> N_InitializeReportHeadersandStatusLines_Node0 N_InitializeReportHeadersandStatusLines_Node0 -- No --> E_InitializeReportHeadersandStatusLines
position, new report index is set to
last line position, and all header
lines are prepared for content"]:::main N_InitializeReportHeadersandStatusLines_Node0 -- Yes --> N_InitializeReportHeadersandStatusLines_Node0_action N_InitializeReportHeadersandStatusLines_Node0_action --> E_InitializeReportHeadersandStatusLines S_InitializeReportHeadersandStatusLines --> N_InitializeReportHeadersandStatusLines_Node0 N_InitializeReportHeadersandStatusLines_Node0 -- No --> E_InitializeReportHeadersandStatusLines
File: GCX003.cbl
GIVEN:
A train manifest processing request is being finalized
WHEN:
The system begins report formatting
THEN:
Report index is set to last line position, new report index is set to last line position, and all header lines are prepared for content
β Consolidated Acceptance Criteria
- The system formats header line 1 → header line 1 is marked as header type, train ID is populated from request, and origin station name is populated from station table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReportHeaderLine1TrainIDandOrigin(["Start Step"])
E_SetReportHeaderLine1TrainIDandOrigin(["End Step"])
N_SetReportHeaderLine1TrainIDandOrigin_Node0{"The system formats header line 1"}:::decision
N_SetReportHeaderLine1TrainIDandOrigin_Node0_action["Header line 1 is marked as header
type, train ID is populated from
request, and origin station name is
populated from station table"]:::main N_SetReportHeaderLine1TrainIDandOrigin_Node0 -- Yes --> N_SetReportHeaderLine1TrainIDandOrigin_Node0_action N_SetReportHeaderLine1TrainIDandOrigin_Node0_action --> E_SetReportHeaderLine1TrainIDandOrigin S_SetReportHeaderLine1TrainIDandOrigin --> N_SetReportHeaderLine1TrainIDandOrigin_Node0 N_SetReportHeaderLine1TrainIDandOrigin_Node0 -- No --> E_SetReportHeaderLine1TrainIDandOrigin
type, train ID is populated from
request, and origin station name is
populated from station table"]:::main N_SetReportHeaderLine1TrainIDandOrigin_Node0 -- Yes --> N_SetReportHeaderLine1TrainIDandOrigin_Node0_action N_SetReportHeaderLine1TrainIDandOrigin_Node0_action --> E_SetReportHeaderLine1TrainIDandOrigin S_SetReportHeaderLine1TrainIDandOrigin --> N_SetReportHeaderLine1TrainIDandOrigin_Node0 N_SetReportHeaderLine1TrainIDandOrigin_Node0 -- No --> E_SetReportHeaderLine1TrainIDandOrigin
File: GCX003.cbl
GIVEN:
Report headers are being initialized
WHEN:
The system formats header line 1
THEN:
Header line 1 is marked as header type, train ID is populated from request, and origin station name is populated from station table
β Consolidated Acceptance Criteria
- The system formats header line 2 → header line 2 is marked as header type, user ID is populated from system context, terminal ID is populated, machine date is populated, and machine time components (hour and minute) are populated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReportHeaderLine2UserInfoandTimestamp(["Start Step"])
E_SetReportHeaderLine2UserInfoandTimestamp(["End Step"])
N_SetReportHeaderLine2UserInfoandTimestamp_Node0{"The system formats header line 2"}:::decision
N_SetReportHeaderLine2UserInfoandTimestamp_Node0_action["Header line 2 is marked as header
type, user ID is populated from
system context, terminal ID is
populated, machine date is
populated, and machine time
components hour and minute are
populated"]:::main N_SetReportHeaderLine2UserInfoandTimestamp_Node0 -- Yes --> N_SetReportHeaderLine2UserInfoandTimestamp_Node0_action N_SetReportHeaderLine2UserInfoandTimestamp_Node0_action --> E_SetReportHeaderLine2UserInfoandTimestamp S_SetReportHeaderLine2UserInfoandTimestamp --> N_SetReportHeaderLine2UserInfoandTimestamp_Node0 N_SetReportHeaderLine2UserInfoandTimestamp_Node0 -- No --> E_SetReportHeaderLine2UserInfoandTimestamp
type, user ID is populated from
system context, terminal ID is
populated, machine date is
populated, and machine time
components hour and minute are
populated"]:::main N_SetReportHeaderLine2UserInfoandTimestamp_Node0 -- Yes --> N_SetReportHeaderLine2UserInfoandTimestamp_Node0_action N_SetReportHeaderLine2UserInfoandTimestamp_Node0_action --> E_SetReportHeaderLine2UserInfoandTimestamp S_SetReportHeaderLine2UserInfoandTimestamp --> N_SetReportHeaderLine2UserInfoandTimestamp_Node0 N_SetReportHeaderLine2UserInfoandTimestamp_Node0 -- No --> E_SetReportHeaderLine2UserInfoandTimestamp
File: GCX003.cbl
GIVEN:
Header line 1 has been formatted
WHEN:
The system formats header line 2
THEN:
- Header line 2 is marked as header type, user id is populated from system context, terminal id is populated, machine date is populated, and machine time components (hour
- Minute) are populated
β Consolidated Acceptance Criteria
- If the request action type → if action is SEND then SEND report formatting is applied, else if action is REPORT then REPORT formatting is applied, else OTHER/ABORT formatting is applied
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReportHeaderLine3ActionTypeandResults(["Start Step"])
E_SetReportHeaderLine3ActionTypeandResults(["End Step"])
N_SetReportHeaderLine3ActionTypeandResults_Node0{"The system evaluates the request
action type"}:::decision N_SetReportHeaderLine3ActionTypeandResults_Node0_action["If action is SEND then SEND report
formatting is applied, else if
action is REPORT then REPORT
formatting is applied, else
OTHERABORT formatting is applied"]:::main N_SetReportHeaderLine3ActionTypeandResults_Node0 -- Yes --> N_SetReportHeaderLine3ActionTypeandResults_Node0_action N_SetReportHeaderLine3ActionTypeandResults_Node0_action --> E_SetReportHeaderLine3ActionTypeandResults S_SetReportHeaderLine3ActionTypeandResults --> N_SetReportHeaderLine3ActionTypeandResults_Node0 N_SetReportHeaderLine3ActionTypeandResults_Node0 -- No --> E_SetReportHeaderLine3ActionTypeandResults
action type"}:::decision N_SetReportHeaderLine3ActionTypeandResults_Node0_action["If action is SEND then SEND report
formatting is applied, else if
action is REPORT then REPORT
formatting is applied, else
OTHERABORT formatting is applied"]:::main N_SetReportHeaderLine3ActionTypeandResults_Node0 -- Yes --> N_SetReportHeaderLine3ActionTypeandResults_Node0_action N_SetReportHeaderLine3ActionTypeandResults_Node0_action --> E_SetReportHeaderLine3ActionTypeandResults S_SetReportHeaderLine3ActionTypeandResults --> N_SetReportHeaderLine3ActionTypeandResults_Node0 N_SetReportHeaderLine3ActionTypeandResults_Node0 -- No --> E_SetReportHeaderLine3ActionTypeandResults
File: GCX003.cbl
GIVEN:
Header lines 1 and 2 have been formatted
WHEN:
The system evaluates the request action type
THEN:
If action is SEND then SEND report formatting is applied, else if action is REPORT then REPORT formatting is applied, else OTHER/ABORT formatting is applied
β Consolidated Acceptance Criteria
- The system formats the SEND report header → header line 3 is marked as SEND type, header line 4 is marked as header type, US customer train ID is populated, and ETA components (year, month, day, hour, minute) are populated from request
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatSENDReportHeaderwithTrainIDandETA(["Start Step"])
E_FormatSENDReportHeaderwithTrainIDandETA(["End Step"])
N_FormatSENDReportHeaderwithTrainIDandETA_Node0{"The system formats the SEND report
header"}:::decision N_FormatSENDReportHeaderwithTrainIDandETA_Node0_action["Header line 3 is marked as SEND
type, header line 4 is marked as
header type, US customer train ID is
populated, and ETA components year,
month, day, hour, minute are
populated from request"]:::main N_FormatSENDReportHeaderwithTrainIDandETA_Node0 -- Yes --> N_FormatSENDReportHeaderwithTrainIDandETA_Node0_action N_FormatSENDReportHeaderwithTrainIDandETA_Node0_action --> E_FormatSENDReportHeaderwithTrainIDandETA S_FormatSENDReportHeaderwithTrainIDandETA --> N_FormatSENDReportHeaderwithTrainIDandETA_Node0 N_FormatSENDReportHeaderwithTrainIDandETA_Node0 -- No --> E_FormatSENDReportHeaderwithTrainIDandETA
header"}:::decision N_FormatSENDReportHeaderwithTrainIDandETA_Node0_action["Header line 3 is marked as SEND
type, header line 4 is marked as
header type, US customer train ID is
populated, and ETA components year,
month, day, hour, minute are
populated from request"]:::main N_FormatSENDReportHeaderwithTrainIDandETA_Node0 -- Yes --> N_FormatSENDReportHeaderwithTrainIDandETA_Node0_action N_FormatSENDReportHeaderwithTrainIDandETA_Node0_action --> E_FormatSENDReportHeaderwithTrainIDandETA S_FormatSENDReportHeaderwithTrainIDandETA --> N_FormatSENDReportHeaderwithTrainIDandETA_Node0 N_FormatSENDReportHeaderwithTrainIDandETA_Node0 -- No --> E_FormatSENDReportHeaderwithTrainIDandETA
File: GCX003.cbl
GIVEN:
Request action type is SEND
WHEN:
The system formats the SEND report header
THEN:
Header line 3 is marked as SEND type, header line 4 is marked as header type, US customer train ID is populated, and ETA components (year, month, day, hour, minute) are populated from request
β Consolidated Acceptance Criteria
- The system formats the REPORT header → header line 3 is marked as REPORT type, and if no errors and no warnings then result is set to no messages, else result is set to show messages with warning count and error count populated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatREPORTHeaderwithMessageCounts(["Start Step"])
E_FormatREPORTHeaderwithMessageCounts(["End Step"])
N_FormatREPORTHeaderwithMessageCounts_Node0{"The system formats the REPORT
header"}:::decision N_FormatREPORTHeaderwithMessageCounts_Node0_action["Header line 3 is marked as REPORT
type, and if no errors and no
warnings then result is set to no
messages, else result is set to show
messages with warning count and
error count populated"]:::main N_FormatREPORTHeaderwithMessageCounts_Node0 -- Yes --> N_FormatREPORTHeaderwithMessageCounts_Node0_action N_FormatREPORTHeaderwithMessageCounts_Node0_action --> E_FormatREPORTHeaderwithMessageCounts S_FormatREPORTHeaderwithMessageCounts --> N_FormatREPORTHeaderwithMessageCounts_Node0 N_FormatREPORTHeaderwithMessageCounts_Node0 -- No --> E_FormatREPORTHeaderwithMessageCounts
header"}:::decision N_FormatREPORTHeaderwithMessageCounts_Node0_action["Header line 3 is marked as REPORT
type, and if no errors and no
warnings then result is set to no
messages, else result is set to show
messages with warning count and
error count populated"]:::main N_FormatREPORTHeaderwithMessageCounts_Node0 -- Yes --> N_FormatREPORTHeaderwithMessageCounts_Node0_action N_FormatREPORTHeaderwithMessageCounts_Node0_action --> E_FormatREPORTHeaderwithMessageCounts S_FormatREPORTHeaderwithMessageCounts --> N_FormatREPORTHeaderwithMessageCounts_Node0 N_FormatREPORTHeaderwithMessageCounts_Node0 -- No --> E_FormatREPORTHeaderwithMessageCounts
File: GCX003.cbl
GIVEN:
Request action type is REPORT
WHEN:
The system formats the REPORT header
THEN:
- Header line 3 is marked as report type, and if no errors
- No warnings then result is set to no messages, else result is set to show messages with warning count
- Error count populated
β Consolidated Acceptance Criteria
- The system formats the OTHER action header → request type is populated in header and result is set to ABORT status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatOTHERABORTHeaderwithRequestType(["Start Step"])
E_FormatOTHERABORTHeaderwithRequestType(["End Step"])
N_FormatOTHERABORTHeaderwithRequestType_Node0{"The system formats the OTHER action
header"}:::decision N_FormatOTHERABORTHeaderwithRequestType_Node0_action["Request type is populated in header
and result is set to ABORT status"]:::exclusion N_FormatOTHERABORTHeaderwithRequestType_Node0 -- Yes -->|Alternative| N_FormatOTHERABORTHeaderwithRequestType_Node0_action N_FormatOTHERABORTHeaderwithRequestType_Node0_action --> E_FormatOTHERABORTHeaderwithRequestType S_FormatOTHERABORTHeaderwithRequestType --> N_FormatOTHERABORTHeaderwithRequestType_Node0 N_FormatOTHERABORTHeaderwithRequestType_Node0 -- No --> E_FormatOTHERABORTHeaderwithRequestType
header"}:::decision N_FormatOTHERABORTHeaderwithRequestType_Node0_action["Request type is populated in header
and result is set to ABORT status"]:::exclusion N_FormatOTHERABORTHeaderwithRequestType_Node0 -- Yes -->|Alternative| N_FormatOTHERABORTHeaderwithRequestType_Node0_action N_FormatOTHERABORTHeaderwithRequestType_Node0_action --> E_FormatOTHERABORTHeaderwithRequestType S_FormatOTHERABORTHeaderwithRequestType --> N_FormatOTHERABORTHeaderwithRequestType_Node0 N_FormatOTHERABORTHeaderwithRequestType_Node0 -- No --> E_FormatOTHERABORTHeaderwithRequestType
File: GCX003.cbl
GIVEN:
Request action type is neither SEND nor REPORT
WHEN:
The system formats the OTHER action header
THEN:
- Request type is populated in header
- Result is set to abort status
β Consolidated Acceptance Criteria
- The system sets up detail headers → detail header line 1 is marked as detail header type and detail header line 2 is marked as detail header type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDetailHeaderLines1and2(["Start Step"])
E_SetDetailHeaderLines1and2(["End Step"])
N_SetDetailHeaderLines1and2_Node0{"The system sets up detail headers"}:::decision
N_SetDetailHeaderLines1and2_Node0_action["Detail header line 1 is marked as
detail header type and detail header
line 2 is marked as detail header
type"]:::main N_SetDetailHeaderLines1and2_Node0 -- Yes --> N_SetDetailHeaderLines1and2_Node0_action N_SetDetailHeaderLines1and2_Node0_action --> E_SetDetailHeaderLines1and2 S_SetDetailHeaderLines1and2 --> N_SetDetailHeaderLines1and2_Node0 N_SetDetailHeaderLines1and2_Node0 -- No --> E_SetDetailHeaderLines1and2
detail header type and detail header
line 2 is marked as detail header
type"]:::main N_SetDetailHeaderLines1and2_Node0 -- Yes --> N_SetDetailHeaderLines1and2_Node0_action N_SetDetailHeaderLines1and2_Node0_action --> E_SetDetailHeaderLines1and2 S_SetDetailHeaderLines1and2 --> N_SetDetailHeaderLines1and2_Node0 N_SetDetailHeaderLines1and2_Node0 -- No --> E_SetDetailHeaderLines1and2
File: GCX003.cbl
GIVEN:
Report action headers have been formatted
WHEN:
The system sets up detail headers
THEN:
- Detail header line 1 is marked as detail header type
- Detail header line 2 is marked as detail header type
β Consolidated Acceptance Criteria
- The system prepares email content → report lines 1 through 5 are copied to corresponding email text lines
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CopyHeaderLinestoEmailTextLines(["Start Step"])
E_CopyHeaderLinestoEmailTextLines(["End Step"])
N_CopyHeaderLinestoEmailTextLines_Node0{"The system prepares email content"}:::decision
N_CopyHeaderLinestoEmailTextLines_Node0_action["Report lines 1 through 5 are copied
to corresponding email text lines"]:::main N_CopyHeaderLinestoEmailTextLines_Node0 -- Yes --> N_CopyHeaderLinestoEmailTextLines_Node0_action N_CopyHeaderLinestoEmailTextLines_Node0_action --> E_CopyHeaderLinestoEmailTextLines S_CopyHeaderLinestoEmailTextLines --> N_CopyHeaderLinestoEmailTextLines_Node0 N_CopyHeaderLinestoEmailTextLines_Node0 -- No --> E_CopyHeaderLinestoEmailTextLines
to corresponding email text lines"]:::main N_CopyHeaderLinestoEmailTextLines_Node0 -- Yes --> N_CopyHeaderLinestoEmailTextLines_Node0_action N_CopyHeaderLinestoEmailTextLines_Node0_action --> E_CopyHeaderLinestoEmailTextLines S_CopyHeaderLinestoEmailTextLines --> N_CopyHeaderLinestoEmailTextLines_Node0 N_CopyHeaderLinestoEmailTextLines_Node0 -- No --> E_CopyHeaderLinestoEmailTextLines
File: GCX003.cbl
GIVEN:
All header lines have been formatted
WHEN:
The system prepares email content
THEN:
Report lines 1 through 5 are copied to corresponding email text lines
β Consolidated Acceptance Criteria
- The system formats the status line → total equipment count is populated in status line and status line is copied to email text line 5
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatStatusLinewithEquipmentTotals(["Start Step"])
E_FormatStatusLinewithEquipmentTotals(["End Step"])
N_FormatStatusLinewithEquipmentTotals_Node0{"The system formats the status line"}:::decision
N_FormatStatusLinewithEquipmentTotals_Node0_action["Total equipment count is populated
in status line and status line is
copied to email text line 5"]:::main N_FormatStatusLinewithEquipmentTotals_Node0 -- Yes --> N_FormatStatusLinewithEquipmentTotals_Node0_action N_FormatStatusLinewithEquipmentTotals_Node0_action --> E_FormatStatusLinewithEquipmentTotals S_FormatStatusLinewithEquipmentTotals --> N_FormatStatusLinewithEquipmentTotals_Node0 N_FormatStatusLinewithEquipmentTotals_Node0 -- No --> E_FormatStatusLinewithEquipmentTotals
in status line and status line is
copied to email text line 5"]:::main N_FormatStatusLinewithEquipmentTotals_Node0 -- Yes --> N_FormatStatusLinewithEquipmentTotals_Node0_action N_FormatStatusLinewithEquipmentTotals_Node0_action --> E_FormatStatusLinewithEquipmentTotals S_FormatStatusLinewithEquipmentTotals --> N_FormatStatusLinewithEquipmentTotals_Node0 N_FormatStatusLinewithEquipmentTotals_Node0 -- No --> E_FormatStatusLinewithEquipmentTotals
File: GCX003.cbl
GIVEN:
Header lines have been copied to email format
WHEN:
The system formats the status line
THEN:
- Total equipment count is populated in status line
- Status line is copied to email text line 5
β Consolidated Acceptance Criteria
- The system sets up email parameters → from user code is set to OM01247, to user code is set to OM01247, keywords are cleared, and copy user code is cleared
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEmailParametersFromToUserCodes(["Start Step"])
E_SetEmailParametersFromToUserCodes(["End Step"])
N_SetEmailParametersFromToUserCodes_Node0{"The system sets up email parameters"}:::decision
N_SetEmailParametersFromToUserCodes_Node0_action["From user code is set to OM01247,
to user code is set to OM01247,
keywords are cleared, and copy user
code is cleared"]:::main N_SetEmailParametersFromToUserCodes_Node0 -- Yes --> N_SetEmailParametersFromToUserCodes_Node0_action N_SetEmailParametersFromToUserCodes_Node0_action --> E_SetEmailParametersFromToUserCodes S_SetEmailParametersFromToUserCodes --> N_SetEmailParametersFromToUserCodes_Node0 N_SetEmailParametersFromToUserCodes_Node0 -- No --> E_SetEmailParametersFromToUserCodes
to user code is set to OM01247,
keywords are cleared, and copy user
code is cleared"]:::main N_SetEmailParametersFromToUserCodes_Node0 -- Yes --> N_SetEmailParametersFromToUserCodes_Node0_action N_SetEmailParametersFromToUserCodes_Node0_action --> E_SetEmailParametersFromToUserCodes S_SetEmailParametersFromToUserCodes --> N_SetEmailParametersFromToUserCodes_Node0 N_SetEmailParametersFromToUserCodes_Node0 -- No --> E_SetEmailParametersFromToUserCodes
File: GCX003.cbl
GIVEN:
Report content has been formatted
WHEN:
The system sets up email parameters
THEN:
From user code is set to OM01247, to user code is set to OM01247, keywords are cleared, and copy user code is cleared
β Consolidated Acceptance Criteria
- The system sets the email subject → email subject is populated from report line 1 content
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEmailSubjectLinefromReportHeader(["Start Step"])
E_SetEmailSubjectLinefromReportHeader(["End Step"])
N_SetEmailSubjectLinefromReportHeader_Node0{"The system sets the email subject"}:::decision
N_SetEmailSubjectLinefromReportHeader_Node0_action["Email subject is populated from
report line 1 content"]:::main N_SetEmailSubjectLinefromReportHeader_Node0 -- Yes --> N_SetEmailSubjectLinefromReportHeader_Node0_action N_SetEmailSubjectLinefromReportHeader_Node0_action --> E_SetEmailSubjectLinefromReportHeader S_SetEmailSubjectLinefromReportHeader --> N_SetEmailSubjectLinefromReportHeader_Node0 N_SetEmailSubjectLinefromReportHeader_Node0 -- No --> E_SetEmailSubjectLinefromReportHeader
report line 1 content"]:::main N_SetEmailSubjectLinefromReportHeader_Node0 -- Yes --> N_SetEmailSubjectLinefromReportHeader_Node0_action N_SetEmailSubjectLinefromReportHeader_Node0_action --> E_SetEmailSubjectLinefromReportHeader S_SetEmailSubjectLinefromReportHeader --> N_SetEmailSubjectLinefromReportHeader_Node0 N_SetEmailSubjectLinefromReportHeader_Node0 -- No --> E_SetEmailSubjectLinefromReportHeader
File: GCX003.cbl
GIVEN:
Email parameters have been configured
WHEN:
The system sets the email subject
THEN:
Email subject is populated from report line 1 content
β Consolidated Acceptance Criteria
- The system configures email formatting → email item width is set to 080 characters, item sequence numbers are cleared, and item alpha sequence is cleared
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEmailItemWidthto080Characters(["Start Step"])
E_SetEmailItemWidthto080Characters(["End Step"])
N_SetEmailItemWidthto080Characters_Node0{"The system configures email
formatting"}:::decision N_SetEmailItemWidthto080Characters_Node0_action["Email item width is set to 080
characters, item sequence numbers
are cleared, and item alpha sequence
is cleared"]:::main N_SetEmailItemWidthto080Characters_Node0 -- Yes --> N_SetEmailItemWidthto080Characters_Node0_action N_SetEmailItemWidthto080Characters_Node0_action --> E_SetEmailItemWidthto080Characters S_SetEmailItemWidthto080Characters --> N_SetEmailItemWidthto080Characters_Node0 N_SetEmailItemWidthto080Characters_Node0 -- No --> E_SetEmailItemWidthto080Characters
formatting"}:::decision N_SetEmailItemWidthto080Characters_Node0_action["Email item width is set to 080
characters, item sequence numbers
are cleared, and item alpha sequence
is cleared"]:::main N_SetEmailItemWidthto080Characters_Node0 -- Yes --> N_SetEmailItemWidthto080Characters_Node0_action N_SetEmailItemWidthto080Characters_Node0_action --> E_SetEmailItemWidthto080Characters S_SetEmailItemWidthto080Characters --> N_SetEmailItemWidthto080Characters_Node0 N_SetEmailItemWidthto080Characters_Node0 -- No --> E_SetEmailItemWidthto080Characters
File: GCX003.cbl
GIVEN:
Email subject has been set
WHEN:
The system configures email formatting
THEN:
Email item width is set to 080 characters, item sequence numbers are cleared, and item alpha sequence is cleared
β Consolidated Acceptance Criteria
- The system initializes status tracking → email return status flags are cleared and no-more-email flag is set to true and line counter is reset to zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeEmailReturnStatusFlags(["Start Step"])
E_InitializeEmailReturnStatusFlags(["End Step"])
N_InitializeEmailReturnStatusFlags_Node0{"The system initializes status
tracking"}:::decision N_InitializeEmailReturnStatusFlags_Node0_action["Email return status flags are
cleared and no-more-email flag is
set to true and line counter is
reset to zero"]:::main N_InitializeEmailReturnStatusFlags_Node0 -- Yes --> N_InitializeEmailReturnStatusFlags_Node0_action N_InitializeEmailReturnStatusFlags_Node0_action --> E_InitializeEmailReturnStatusFlags S_InitializeEmailReturnStatusFlags --> N_InitializeEmailReturnStatusFlags_Node0 N_InitializeEmailReturnStatusFlags_Node0 -- No --> E_InitializeEmailReturnStatusFlags
tracking"}:::decision N_InitializeEmailReturnStatusFlags_Node0_action["Email return status flags are
cleared and no-more-email flag is
set to true and line counter is
reset to zero"]:::main N_InitializeEmailReturnStatusFlags_Node0 -- Yes --> N_InitializeEmailReturnStatusFlags_Node0_action N_InitializeEmailReturnStatusFlags_Node0_action --> E_InitializeEmailReturnStatusFlags S_InitializeEmailReturnStatusFlags --> N_InitializeEmailReturnStatusFlags_Node0 N_InitializeEmailReturnStatusFlags_Node0 -- No --> E_InitializeEmailReturnStatusFlags
File: GCX003.cbl
GIVEN:
Email formatting has been configured
WHEN:
The system initializes status tracking
THEN:
- Email return status flags are cleared
- No-more-email flag is set to true
- Line counter is reset to zero
β Consolidated Acceptance Criteria
- The system checks current line count → if line counter exceeds 699 then report must be split into multiple parts, else report can be sent as single email
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LargeReportCheckLines699(["Start Step"])
E_LargeReportCheckLines699(["End Step"])
N_LargeReportCheckLines699_Node0{"The system checks current line
count"}:::decision N_LargeReportCheckLines699_Node0_action["If line counter exceeds 699 then
report must be split into multiple
parts, else report can be sent as
single email"]:::main N_LargeReportCheckLines699_Node0 -- Yes --> N_LargeReportCheckLines699_Node0_action N_LargeReportCheckLines699_Node0_action --> E_LargeReportCheckLines699 S_LargeReportCheckLines699 --> N_LargeReportCheckLines699_Node0 N_LargeReportCheckLines699_Node0 -- No --> E_LargeReportCheckLines699
count"}:::decision N_LargeReportCheckLines699_Node0_action["If line counter exceeds 699 then
report must be split into multiple
parts, else report can be sent as
single email"]:::main N_LargeReportCheckLines699_Node0 -- Yes --> N_LargeReportCheckLines699_Node0_action N_LargeReportCheckLines699_Node0_action --> E_LargeReportCheckLines699 S_LargeReportCheckLines699 --> N_LargeReportCheckLines699_Node0 N_LargeReportCheckLines699_Node0 -- No --> E_LargeReportCheckLines699
File: GCX003.cbl
GIVEN:
Email status has been initialized and report content is being processed
WHEN:
The system checks current line count
THEN:
If line counter exceeds 699 then report must be split into multiple parts, else report can be sent as single email
β Consolidated Acceptance Criteria
- The system splits the report → no-more-email flag is set to true, current email segment is sent, email text is cleared, and line counter is reset to zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SplitReportintoMultipleEmailParts(["Start Step"])
E_SplitReportintoMultipleEmailParts(["End Step"])
N_SplitReportintoMultipleEmailParts_Node0{"The system splits the report"}:::decision
N_SplitReportintoMultipleEmailParts_Node0_action["No-more-email flag is set to true,
current email segment is sent, email
text is cleared, and line counter is
reset to zero"]:::main N_SplitReportintoMultipleEmailParts_Node0 -- Yes --> N_SplitReportintoMultipleEmailParts_Node0_action N_SplitReportintoMultipleEmailParts_Node0_action --> E_SplitReportintoMultipleEmailParts S_SplitReportintoMultipleEmailParts --> N_SplitReportintoMultipleEmailParts_Node0 N_SplitReportintoMultipleEmailParts_Node0 -- No --> E_SplitReportintoMultipleEmailParts
current email segment is sent, email
text is cleared, and line counter is
reset to zero"]:::main N_SplitReportintoMultipleEmailParts_Node0 -- Yes --> N_SplitReportintoMultipleEmailParts_Node0_action N_SplitReportintoMultipleEmailParts_Node0_action --> E_SplitReportintoMultipleEmailParts S_SplitReportintoMultipleEmailParts --> N_SplitReportintoMultipleEmailParts_Node0 N_SplitReportintoMultipleEmailParts_Node0 -- No --> E_SplitReportintoMultipleEmailParts
File: GCX003.cbl
GIVEN:
Report line count exceeds 699 lines
WHEN:
The system splits the report
THEN:
No-more-email flag is set to true, current email segment is sent, email text is cleared, and line counter is reset to zero
β Consolidated Acceptance Criteria
- The system adds continuation header → continuation message is added to line 1, detail header 1 is added to line 2, detail header 2 is added to line 3, and line counter is incremented by 3
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddContinuationHeaderforNextPart(["Start Step"])
E_AddContinuationHeaderforNextPart(["End Step"])
N_AddContinuationHeaderforNextPart_Node0{"The system adds continuation header"}:::decision
N_AddContinuationHeaderforNextPart_Node0_action["Continuation message is added to
line 1, detail header 1 is added to
line 2, detail header 2 is added to
line 3, and line counter is
incremented by 3"]:::main N_AddContinuationHeaderforNextPart_Node0 -- Yes --> N_AddContinuationHeaderforNextPart_Node0_action N_AddContinuationHeaderforNextPart_Node0_action --> E_AddContinuationHeaderforNextPart S_AddContinuationHeaderforNextPart --> N_AddContinuationHeaderforNextPart_Node0 N_AddContinuationHeaderforNextPart_Node0 -- No --> E_AddContinuationHeaderforNextPart
line 1, detail header 1 is added to
line 2, detail header 2 is added to
line 3, and line counter is
incremented by 3"]:::main N_AddContinuationHeaderforNextPart_Node0 -- Yes --> N_AddContinuationHeaderforNextPart_Node0_action N_AddContinuationHeaderforNextPart_Node0_action --> E_AddContinuationHeaderforNextPart S_AddContinuationHeaderforNextPart --> N_AddContinuationHeaderforNextPart_Node0 N_AddContinuationHeaderforNextPart_Node0 -- No --> E_AddContinuationHeaderforNextPart
File: GCX003.cbl
GIVEN:
A report has been split and new email segment is starting
WHEN:
The system adds continuation header
THEN:
Continuation message is added to line 1, detail header 1 is added to line 2, detail header 2 is added to line 3, and line counter is incremented by 3
β Consolidated Acceptance Criteria
- The system formats single email → complete report content is prepared for transmission in single email message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatSingleEmailwithAllContent(["Start Step"])
E_FormatSingleEmailwithAllContent(["End Step"])
N_FormatSingleEmailwithAllContent_Node0{"The system formats single email"}:::decision
N_FormatSingleEmailwithAllContent_Node0_action["Complete report content is prepared
for transmission in single email
message"]:::main N_FormatSingleEmailwithAllContent_Node0 -- Yes --> N_FormatSingleEmailwithAllContent_Node0_action N_FormatSingleEmailwithAllContent_Node0_action --> E_FormatSingleEmailwithAllContent S_FormatSingleEmailwithAllContent --> N_FormatSingleEmailwithAllContent_Node0 N_FormatSingleEmailwithAllContent_Node0 -- No --> E_FormatSingleEmailwithAllContent
for transmission in single email
message"]:::main N_FormatSingleEmailwithAllContent_Node0 -- Yes --> N_FormatSingleEmailwithAllContent_Node0_action N_FormatSingleEmailwithAllContent_Node0_action --> E_FormatSingleEmailwithAllContent S_FormatSingleEmailwithAllContent --> N_FormatSingleEmailwithAllContent_Node0 N_FormatSingleEmailwithAllContent_Node0 -- No --> E_FormatSingleEmailwithAllContent
File: GCX003.cbl
GIVEN:
Report line count is 699 or fewer and more-email flag is true
WHEN:
The system formats single email
THEN:
Complete report content is prepared for transmission in single email message
β Consolidated Acceptance Criteria
- The system sets final destination → email destination is confirmed as OM01247 for customs authority delivery
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEmailDestinationtoOM01247(["Start Step"])
E_SetEmailDestinationtoOM01247(["End Step"])
N_SetEmailDestinationtoOM01247_Node0{"The system sets final destination"}:::decision
N_SetEmailDestinationtoOM01247_Node0_action["Email destination is confirmed as
OM01247 for customs authority
delivery"]:::main N_SetEmailDestinationtoOM01247_Node0 -- Yes --> N_SetEmailDestinationtoOM01247_Node0_action N_SetEmailDestinationtoOM01247_Node0_action --> E_SetEmailDestinationtoOM01247 S_SetEmailDestinationtoOM01247 --> N_SetEmailDestinationtoOM01247_Node0 N_SetEmailDestinationtoOM01247_Node0 -- No --> E_SetEmailDestinationtoOM01247
OM01247 for customs authority
delivery"]:::main N_SetEmailDestinationtoOM01247_Node0 -- Yes --> N_SetEmailDestinationtoOM01247_Node0_action N_SetEmailDestinationtoOM01247_Node0_action --> E_SetEmailDestinationtoOM01247 S_SetEmailDestinationtoOM01247 --> N_SetEmailDestinationtoOM01247_Node0 N_SetEmailDestinationtoOM01247_Node0 -- No --> E_SetEmailDestinationtoOM01247
File: GCX003.cbl
GIVEN:
Email content has been formatted (single or multi-part)
WHEN:
The system sets final destination
THEN:
Email destination is confirmed as OM01247 for customs authority delivery
β Consolidated Acceptance Criteria
- The line counter exceeds 699 lines in the current email message → the system should send the current email batch, clear the message buffer, reset the line counter, and add continuation headers for the next batch
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckLineCounter699(["Start Step"])
E_CheckLineCounter699(["End Step"])
N_CheckLineCounter699_Node0{"The line counter exceeds 699 lines
in the current email message"}:::decision N_CheckLineCounter699_Node0_action["The system should send the current
email batch, clear the message
buffer, reset the line counter, and
add continuation headers for the
next batch"]:::main N_CheckLineCounter699_Node0 -- Yes --> N_CheckLineCounter699_Node0_action N_CheckLineCounter699_Node0_action --> E_CheckLineCounter699 S_CheckLineCounter699 --> N_CheckLineCounter699_Node0 N_CheckLineCounter699_Node0 -- No --> E_CheckLineCounter699
in the current email message"}:::decision N_CheckLineCounter699_Node0_action["The system should send the current
email batch, clear the message
buffer, reset the line counter, and
add continuation headers for the
next batch"]:::main N_CheckLineCounter699_Node0 -- Yes --> N_CheckLineCounter699_Node0_action N_CheckLineCounter699_Node0_action --> E_CheckLineCounter699 S_CheckLineCounter699 --> N_CheckLineCounter699_Node0 N_CheckLineCounter699_Node0 -- No --> E_CheckLineCounter699
File: GCX003.cbl
GIVEN:
An email report is being processed with multiple report lines
WHEN:
The line counter exceeds 699 lines in the current email message
THEN:
The system should send the current email batch, clear the message buffer, reset the line counter, and add continuation headers for the next batch
β Consolidated Acceptance Criteria
- The system processes the current report line → the report line should be added to the email message buffer at the current line position
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddCurrentLinetoEmailMessage(["Start Step"])
E_AddCurrentLinetoEmailMessage(["End Step"])
N_AddCurrentLinetoEmailMessage_Node0{"The system processes the current
report line"}:::decision N_AddCurrentLinetoEmailMessage_Node0_action["The report line should be added to
the email message buffer at the
current line position"]:::main N_AddCurrentLinetoEmailMessage_Node0 -- Yes --> N_AddCurrentLinetoEmailMessage_Node0_action N_AddCurrentLinetoEmailMessage_Node0_action --> E_AddCurrentLinetoEmailMessage S_AddCurrentLinetoEmailMessage --> N_AddCurrentLinetoEmailMessage_Node0 N_AddCurrentLinetoEmailMessage_Node0 -- No --> E_AddCurrentLinetoEmailMessage
report line"}:::decision N_AddCurrentLinetoEmailMessage_Node0_action["The report line should be added to
the email message buffer at the
current line position"]:::main N_AddCurrentLinetoEmailMessage_Node0 -- Yes --> N_AddCurrentLinetoEmailMessage_Node0_action N_AddCurrentLinetoEmailMessage_Node0_action --> E_AddCurrentLinetoEmailMessage S_AddCurrentLinetoEmailMessage --> N_AddCurrentLinetoEmailMessage_Node0 N_AddCurrentLinetoEmailMessage_Node0 -- No --> E_AddCurrentLinetoEmailMessage
File: GCX003.cbl
GIVEN:
A report line is available for processing and the line counter is within limits
WHEN:
The system processes the current report line
THEN:
The report line should be added to the email message buffer at the current line position
β Consolidated Acceptance Criteria
- The line addition is complete → the line counter should be incremented by one to track the current message size
- The line counter is updated → the system shall increment the line counter by one and set the email continuation flag to indicate more content exists
- Line counting needs to be updated → the line counter is incremented by 1 and email status is set to 'More Email'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementLineCounter(["Start Step"])
E_IncrementLineCounter(["End Step"])
N_IncrementLineCounter_Node0{"The line addition is complete"}:::decision
N_IncrementLineCounter_Node0_action["The line counter should be
incremented by one to track the
current message size"]:::main N_IncrementLineCounter_Node0 -- Yes --> N_IncrementLineCounter_Node0_action N_IncrementLineCounter_Node0_action --> E_IncrementLineCounter S_IncrementLineCounter --> N_IncrementLineCounter_Node0 N_IncrementLineCounter_Node1{"The line counter is updated"}:::decision N_IncrementLineCounter_Node1_action["The system shall increment the line
counter by one and set the email
continuation flag to indicate more
content exists"]:::main N_IncrementLineCounter_Node1 -- Yes --> N_IncrementLineCounter_Node1_action N_IncrementLineCounter_Node1_action --> E_IncrementLineCounter N_IncrementLineCounter_Node0 -- No --> N_IncrementLineCounter_Node1 N_IncrementLineCounter_Node2{"Line counting needs to be updated"}:::decision N_IncrementLineCounter_Node2_action["The line counter is incremented by
1 and email status is set to More
Email"]:::main N_IncrementLineCounter_Node2 -- Yes --> N_IncrementLineCounter_Node2_action N_IncrementLineCounter_Node2_action --> E_IncrementLineCounter N_IncrementLineCounter_Node1 -- No --> N_IncrementLineCounter_Node2 N_IncrementLineCounter_Node2 -- No --> E_IncrementLineCounter
incremented by one to track the
current message size"]:::main N_IncrementLineCounter_Node0 -- Yes --> N_IncrementLineCounter_Node0_action N_IncrementLineCounter_Node0_action --> E_IncrementLineCounter S_IncrementLineCounter --> N_IncrementLineCounter_Node0 N_IncrementLineCounter_Node1{"The line counter is updated"}:::decision N_IncrementLineCounter_Node1_action["The system shall increment the line
counter by one and set the email
continuation flag to indicate more
content exists"]:::main N_IncrementLineCounter_Node1 -- Yes --> N_IncrementLineCounter_Node1_action N_IncrementLineCounter_Node1_action --> E_IncrementLineCounter N_IncrementLineCounter_Node0 -- No --> N_IncrementLineCounter_Node1 N_IncrementLineCounter_Node2{"Line counting needs to be updated"}:::decision N_IncrementLineCounter_Node2_action["The line counter is incremented by
1 and email status is set to More
Email"]:::main N_IncrementLineCounter_Node2 -- Yes --> N_IncrementLineCounter_Node2_action N_IncrementLineCounter_Node2_action --> E_IncrementLineCounter N_IncrementLineCounter_Node1 -- No --> N_IncrementLineCounter_Node2 N_IncrementLineCounter_Node2 -- No --> E_IncrementLineCounter
File: GCX003.cbl
GIVEN:
A report line has been successfully added to the email message
WHEN:
The line addition is complete
THEN:
The line counter should be incremented by one to track the current message size
File: GCX003.cbl
GIVEN:
A report line has been added to the email message
WHEN:
The line counter is updated
THEN:
- The system shall increment the line counter by one
- Set the email continuation flag to indicate more content exists
File: GCX003.cbl
GIVEN:
A line has been added to the email message buffer
WHEN:
Line counting needs to be updated
THEN:
- The line counter is incremented by 1
- Email status is set to 'more email'
β Consolidated Acceptance Criteria
- The pagination limit is reached or all lines are processed → the system should invoke EMCSEND3 to transmit the email batch to the designated recipients
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendCurrentEmailBatchviaEMCSEND3(["Start Step"])
E_SendCurrentEmailBatchviaEMCSEND3(["End Step"])
N_SendCurrentEmailBatchviaEMCSEND3_Node0{"The pagination limit is reached or
all lines are processed"}:::decision N_SendCurrentEmailBatchviaEMCSEND3_Node0_action["The system should invoke EMCSEND3
to transmit the email batch to the
designated recipients"]:::main N_SendCurrentEmailBatchviaEMCSEND3_Node0 -- Yes --> N_SendCurrentEmailBatchviaEMCSEND3_Node0_action N_SendCurrentEmailBatchviaEMCSEND3_Node0_action --> E_SendCurrentEmailBatchviaEMCSEND3 S_SendCurrentEmailBatchviaEMCSEND3 --> N_SendCurrentEmailBatchviaEMCSEND3_Node0 N_SendCurrentEmailBatchviaEMCSEND3_Node0 -- No --> E_SendCurrentEmailBatchviaEMCSEND3
all lines are processed"}:::decision N_SendCurrentEmailBatchviaEMCSEND3_Node0_action["The system should invoke EMCSEND3
to transmit the email batch to the
designated recipients"]:::main N_SendCurrentEmailBatchviaEMCSEND3_Node0 -- Yes --> N_SendCurrentEmailBatchviaEMCSEND3_Node0_action N_SendCurrentEmailBatchviaEMCSEND3_Node0_action --> E_SendCurrentEmailBatchviaEMCSEND3 S_SendCurrentEmailBatchviaEMCSEND3 --> N_SendCurrentEmailBatchviaEMCSEND3_Node0 N_SendCurrentEmailBatchviaEMCSEND3_Node0 -- No --> E_SendCurrentEmailBatchviaEMCSEND3
File: GCX003.cbl
GIVEN:
An email message buffer contains report lines ready for transmission
WHEN:
The pagination limit is reached or all lines are processed
THEN:
The system should invoke EMCSEND3 to transmit the email batch to the designated recipients
β Consolidated Acceptance Criteria
- The system needs to prepare for the next batch of report lines → the email message buffer should be cleared and reset to spaces
- The system prepares for the next batch → clear the email text message buffer by setting it to spaces
- Email message buffer needs to be cleared → the email text message buffer is cleared to spaces
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearEmailMessageBuffer(["Start Step"])
E_ClearEmailMessageBuffer(["End Step"])
N_ClearEmailMessageBuffer_Node0{"The system needs to prepare for the
next batch of report lines"}:::decision N_ClearEmailMessageBuffer_Node0_action["The email message buffer should be
cleared and reset to spaces"]:::main N_ClearEmailMessageBuffer_Node0 -- Yes --> N_ClearEmailMessageBuffer_Node0_action N_ClearEmailMessageBuffer_Node0_action --> E_ClearEmailMessageBuffer S_ClearEmailMessageBuffer --> N_ClearEmailMessageBuffer_Node0 N_ClearEmailMessageBuffer_Node1{"The system prepares for the next
batch"}:::decision N_ClearEmailMessageBuffer_Node1_action["Clear the email text message buffer
by setting it to spaces"]:::main N_ClearEmailMessageBuffer_Node1 -- Yes --> N_ClearEmailMessageBuffer_Node1_action N_ClearEmailMessageBuffer_Node1_action --> E_ClearEmailMessageBuffer N_ClearEmailMessageBuffer_Node0 -- No --> N_ClearEmailMessageBuffer_Node1 N_ClearEmailMessageBuffer_Node2{"Email message buffer needs to be
cleared"}:::decision N_ClearEmailMessageBuffer_Node2_action["The email text message buffer is
cleared to spaces"]:::main N_ClearEmailMessageBuffer_Node2 -- Yes --> N_ClearEmailMessageBuffer_Node2_action N_ClearEmailMessageBuffer_Node2_action --> E_ClearEmailMessageBuffer N_ClearEmailMessageBuffer_Node1 -- No --> N_ClearEmailMessageBuffer_Node2 N_ClearEmailMessageBuffer_Node2 -- No --> E_ClearEmailMessageBuffer
next batch of report lines"}:::decision N_ClearEmailMessageBuffer_Node0_action["The email message buffer should be
cleared and reset to spaces"]:::main N_ClearEmailMessageBuffer_Node0 -- Yes --> N_ClearEmailMessageBuffer_Node0_action N_ClearEmailMessageBuffer_Node0_action --> E_ClearEmailMessageBuffer S_ClearEmailMessageBuffer --> N_ClearEmailMessageBuffer_Node0 N_ClearEmailMessageBuffer_Node1{"The system prepares for the next
batch"}:::decision N_ClearEmailMessageBuffer_Node1_action["Clear the email text message buffer
by setting it to spaces"]:::main N_ClearEmailMessageBuffer_Node1 -- Yes --> N_ClearEmailMessageBuffer_Node1_action N_ClearEmailMessageBuffer_Node1_action --> E_ClearEmailMessageBuffer N_ClearEmailMessageBuffer_Node0 -- No --> N_ClearEmailMessageBuffer_Node1 N_ClearEmailMessageBuffer_Node2{"Email message buffer needs to be
cleared"}:::decision N_ClearEmailMessageBuffer_Node2_action["The email text message buffer is
cleared to spaces"]:::main N_ClearEmailMessageBuffer_Node2 -- Yes --> N_ClearEmailMessageBuffer_Node2_action N_ClearEmailMessageBuffer_Node2_action --> E_ClearEmailMessageBuffer N_ClearEmailMessageBuffer_Node1 -- No --> N_ClearEmailMessageBuffer_Node2 N_ClearEmailMessageBuffer_Node2 -- No --> E_ClearEmailMessageBuffer
File: GCX003.cbl
GIVEN:
An email batch has been successfully transmitted
WHEN:
The system needs to prepare for the next batch of report lines
THEN:
- The email message buffer should be cleared
- Reset to spaces
File: GCX003.cbl
GIVEN:
An email batch has been successfully sent
WHEN:
The system prepares for the next batch
THEN:
Clear the email text message buffer by setting it to spaces
File: GCX003.cbl
GIVEN:
An email batch has been sent and a new batch needs to be prepared
WHEN:
Email message buffer needs to be cleared
THEN:
The email text message buffer is cleared to spaces
β Consolidated Acceptance Criteria
- The system prepares for the next batch of report lines → the line counter should be reset to zero to start counting lines for the new batch
- Preparing for the next batch of lines → set the line subscription counter to zero
- Line counter reset is required → the line counter is set to zero to begin counting lines for the new email batch
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ResetLineCountertoZero(["Start Step"])
E_ResetLineCountertoZero(["End Step"])
N_ResetLineCountertoZero_Node0{"The system prepares for the next
batch of report lines"}:::decision N_ResetLineCountertoZero_Node0_action["The line counter should be reset to
zero to start counting lines for the
new batch"]:::main N_ResetLineCountertoZero_Node0 -- Yes --> N_ResetLineCountertoZero_Node0_action N_ResetLineCountertoZero_Node0_action --> E_ResetLineCountertoZero S_ResetLineCountertoZero --> N_ResetLineCountertoZero_Node0 N_ResetLineCountertoZero_Node1{"Preparing for the next batch of
lines"}:::decision N_ResetLineCountertoZero_Node1_action["Set the line subscription counter
to zero"]:::main N_ResetLineCountertoZero_Node1 -- Yes --> N_ResetLineCountertoZero_Node1_action N_ResetLineCountertoZero_Node1_action --> E_ResetLineCountertoZero N_ResetLineCountertoZero_Node0 -- No --> N_ResetLineCountertoZero_Node1 N_ResetLineCountertoZero_Node2{"Line counter reset is required"}:::decision N_ResetLineCountertoZero_Node2_action["The line counter is set to zero to
begin counting lines for the new
email batch"]:::main N_ResetLineCountertoZero_Node2 -- Yes --> N_ResetLineCountertoZero_Node2_action N_ResetLineCountertoZero_Node2_action --> E_ResetLineCountertoZero N_ResetLineCountertoZero_Node1 -- No --> N_ResetLineCountertoZero_Node2 N_ResetLineCountertoZero_Node2 -- No --> E_ResetLineCountertoZero
batch of report lines"}:::decision N_ResetLineCountertoZero_Node0_action["The line counter should be reset to
zero to start counting lines for the
new batch"]:::main N_ResetLineCountertoZero_Node0 -- Yes --> N_ResetLineCountertoZero_Node0_action N_ResetLineCountertoZero_Node0_action --> E_ResetLineCountertoZero S_ResetLineCountertoZero --> N_ResetLineCountertoZero_Node0 N_ResetLineCountertoZero_Node1{"Preparing for the next batch of
lines"}:::decision N_ResetLineCountertoZero_Node1_action["Set the line subscription counter
to zero"]:::main N_ResetLineCountertoZero_Node1 -- Yes --> N_ResetLineCountertoZero_Node1_action N_ResetLineCountertoZero_Node1_action --> E_ResetLineCountertoZero N_ResetLineCountertoZero_Node0 -- No --> N_ResetLineCountertoZero_Node1 N_ResetLineCountertoZero_Node2{"Line counter reset is required"}:::decision N_ResetLineCountertoZero_Node2_action["The line counter is set to zero to
begin counting lines for the new
email batch"]:::main N_ResetLineCountertoZero_Node2 -- Yes --> N_ResetLineCountertoZero_Node2_action N_ResetLineCountertoZero_Node2_action --> E_ResetLineCountertoZero N_ResetLineCountertoZero_Node1 -- No --> N_ResetLineCountertoZero_Node2 N_ResetLineCountertoZero_Node2 -- No --> E_ResetLineCountertoZero
File: GCX003.cbl
GIVEN:
An email batch has been sent and the buffer has been cleared
WHEN:
The system prepares for the next batch of report lines
THEN:
The line counter should be reset to zero to start counting lines for the new batch
File: GCX003.cbl
GIVEN:
The email message buffer has been cleared after sending a batch
WHEN:
Preparing for the next batch of lines
THEN:
Set the line subscription counter to zero
File: GCX003.cbl
GIVEN:
An email batch has been sent and line counter needs reset for next batch
WHEN:
Line counter reset is required
THEN:
The line counter is set to zero to begin counting lines for the new email batch
β Consolidated Acceptance Criteria
- The system starts a continuation email → a continuation header message should be added as the first line indicating this is a continuation of the report
- Continuation header needs to be added → the message 'CONTINUATION OF REPORT ....' is added as the first line of the new email batch
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddContinuationHeaderLine(["Start Step"])
E_AddContinuationHeaderLine(["End Step"])
N_AddContinuationHeaderLine_Node0{"The system starts a continuation
email"}:::decision N_AddContinuationHeaderLine_Node0_action["A continuation header message
should be added as the first line
indicating this is a continuation of
the report"]:::main N_AddContinuationHeaderLine_Node0 -- Yes --> N_AddContinuationHeaderLine_Node0_action N_AddContinuationHeaderLine_Node0_action --> E_AddContinuationHeaderLine S_AddContinuationHeaderLine --> N_AddContinuationHeaderLine_Node0 N_AddContinuationHeaderLine_Node1{"Continuation header needs to be
added"}:::decision N_AddContinuationHeaderLine_Node1_action["The message CONTINUATION OF REPORT
.... is added as the first line of
the new email batch"]:::main N_AddContinuationHeaderLine_Node1 -- Yes --> N_AddContinuationHeaderLine_Node1_action N_AddContinuationHeaderLine_Node1_action --> E_AddContinuationHeaderLine N_AddContinuationHeaderLine_Node0 -- No --> N_AddContinuationHeaderLine_Node1 N_AddContinuationHeaderLine_Node1 -- No --> E_AddContinuationHeaderLine
email"}:::decision N_AddContinuationHeaderLine_Node0_action["A continuation header message
should be added as the first line
indicating this is a continuation of
the report"]:::main N_AddContinuationHeaderLine_Node0 -- Yes --> N_AddContinuationHeaderLine_Node0_action N_AddContinuationHeaderLine_Node0_action --> E_AddContinuationHeaderLine S_AddContinuationHeaderLine --> N_AddContinuationHeaderLine_Node0 N_AddContinuationHeaderLine_Node1{"Continuation header needs to be
added"}:::decision N_AddContinuationHeaderLine_Node1_action["The message CONTINUATION OF REPORT
.... is added as the first line of
the new email batch"]:::main N_AddContinuationHeaderLine_Node1 -- Yes --> N_AddContinuationHeaderLine_Node1_action N_AddContinuationHeaderLine_Node1_action --> E_AddContinuationHeaderLine N_AddContinuationHeaderLine_Node0 -- No --> N_AddContinuationHeaderLine_Node1 N_AddContinuationHeaderLine_Node1 -- No --> E_AddContinuationHeaderLine
File: GCX003.cbl
GIVEN:
A new email batch is being prepared after pagination
WHEN:
The system starts a continuation email
THEN:
A continuation header message should be added as the first line indicating this is a continuation of the report
File: GCX003.cbl
GIVEN:
A new email batch is starting after reaching line limits
WHEN:
Continuation header needs to be added
THEN:
The message 'CONTINUATION OF REPORT ....' is added as the first line of the new email batch
β Consolidated Acceptance Criteria
- The continuation header has been added → the standard report detail headers should be added to maintain consistent report formatting across email batches
- Detail headers need to be added after the continuation message → add the standard detail header line 1 to email text message line 2 AND add the standard detail header line 2 to email text message line 3
- Report structure headers need to be included → report detail header lines are added to the email message to maintain column structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddReportDetailHeaders(["Start Step"])
E_AddReportDetailHeaders(["End Step"])
N_AddReportDetailHeaders_Node0{"The continuation header has been
added"}:::decision N_AddReportDetailHeaders_Node0_action["The standard report detail headers
should be added to maintain
consistent report formatting across
email batches"]:::main N_AddReportDetailHeaders_Node0 -- Yes --> N_AddReportDetailHeaders_Node0_action N_AddReportDetailHeaders_Node0_action --> E_AddReportDetailHeaders S_AddReportDetailHeaders --> N_AddReportDetailHeaders_Node0 N_AddReportDetailHeaders_Node1{"Detail headers need to be added
after the continuation message"}:::decision N_AddReportDetailHeaders_Node1_action["Add the standard detail header line
1 to email text message line 2 AND
add the standard detail header line
2 to email text message line 3"]:::main N_AddReportDetailHeaders_Node1 -- Yes --> N_AddReportDetailHeaders_Node1_action N_AddReportDetailHeaders_Node1_action --> E_AddReportDetailHeaders N_AddReportDetailHeaders_Node0 -- No --> N_AddReportDetailHeaders_Node1 N_AddReportDetailHeaders_Node2{"Report structure headers need to be
included"}:::decision N_AddReportDetailHeaders_Node2_action["Report detail header lines are
added to the email message to
maintain column structure"]:::main N_AddReportDetailHeaders_Node2 -- Yes --> N_AddReportDetailHeaders_Node2_action N_AddReportDetailHeaders_Node2_action --> E_AddReportDetailHeaders N_AddReportDetailHeaders_Node1 -- No --> N_AddReportDetailHeaders_Node2 N_AddReportDetailHeaders_Node2 -- No --> E_AddReportDetailHeaders
added"}:::decision N_AddReportDetailHeaders_Node0_action["The standard report detail headers
should be added to maintain
consistent report formatting across
email batches"]:::main N_AddReportDetailHeaders_Node0 -- Yes --> N_AddReportDetailHeaders_Node0_action N_AddReportDetailHeaders_Node0_action --> E_AddReportDetailHeaders S_AddReportDetailHeaders --> N_AddReportDetailHeaders_Node0 N_AddReportDetailHeaders_Node1{"Detail headers need to be added
after the continuation message"}:::decision N_AddReportDetailHeaders_Node1_action["Add the standard detail header line
1 to email text message line 2 AND
add the standard detail header line
2 to email text message line 3"]:::main N_AddReportDetailHeaders_Node1 -- Yes --> N_AddReportDetailHeaders_Node1_action N_AddReportDetailHeaders_Node1_action --> E_AddReportDetailHeaders N_AddReportDetailHeaders_Node0 -- No --> N_AddReportDetailHeaders_Node1 N_AddReportDetailHeaders_Node2{"Report structure headers need to be
included"}:::decision N_AddReportDetailHeaders_Node2_action["Report detail header lines are
added to the email message to
maintain column structure"]:::main N_AddReportDetailHeaders_Node2 -- Yes --> N_AddReportDetailHeaders_Node2_action N_AddReportDetailHeaders_Node2_action --> E_AddReportDetailHeaders N_AddReportDetailHeaders_Node1 -- No --> N_AddReportDetailHeaders_Node2 N_AddReportDetailHeaders_Node2 -- No --> E_AddReportDetailHeaders
File: GCX003.cbl
GIVEN:
A continuation email batch is being prepared
WHEN:
The continuation header has been added
THEN:
The standard report detail headers should be added to maintain consistent report formatting across email batches
File: GCX003.cbl
GIVEN:
A continuation email batch is being prepared
WHEN:
Detail headers need to be added after the continuation message
THEN:
- Add the standard detail header line 1 to email text message line 2
- Add the standard detail header line 2 to email text message line 3
File: GCX003.cbl
GIVEN:
A continuation email batch is being prepared
WHEN:
Report structure headers need to be included
THEN:
Report detail header lines are added to the email message to maintain column structure
β Consolidated Acceptance Criteria
- The system prepares to continue adding report lines → the line counter should be set to 3 to account for the three header lines already added
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetLineCounterto3(["Start Step"])
E_SetLineCounterto3(["End Step"])
N_SetLineCounterto3_Node0{"The system prepares to continue
adding report lines"}:::decision N_SetLineCounterto3_Node0_action["The line counter should be set to 3
to account for the three header
lines already added"]:::main N_SetLineCounterto3_Node0 -- Yes --> N_SetLineCounterto3_Node0_action N_SetLineCounterto3_Node0_action --> E_SetLineCounterto3 S_SetLineCounterto3 --> N_SetLineCounterto3_Node0 N_SetLineCounterto3_Node0 -- No --> E_SetLineCounterto3
adding report lines"}:::decision N_SetLineCounterto3_Node0_action["The line counter should be set to 3
to account for the three header
lines already added"]:::main N_SetLineCounterto3_Node0 -- Yes --> N_SetLineCounterto3_Node0_action N_SetLineCounterto3_Node0_action --> E_SetLineCounterto3 S_SetLineCounterto3 --> N_SetLineCounterto3_Node0 N_SetLineCounterto3_Node0 -- No --> E_SetLineCounterto3
File: GCX003.cbl
GIVEN:
Continuation header and report detail headers have been added to a new email batch
WHEN:
The system prepares to continue adding report lines
THEN:
The line counter should be set to 3 to account for the three header lines already added
β Consolidated Acceptance Criteria
- A line has been processed or a batch has been sent → the system should check if more report lines exist to determine whether to continue processing or finalize the email transmission
- The system checks for remaining lines to process → the system shall continue processing if the current line is not empty or low-values and the maximum email line limit has not been exceeded
- The system checks for more lines to process → continue processing if the current line is not empty or low-values AND the mail subscription counter has not exceeded the maximum email line limit
- The system checks for more lines to process → processing continues if the current line contains data and the maximum line limit has not been exceeded, otherwise processing stops
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreReportLinestoProcess(["Start Step"])
E_MoreReportLinestoProcess(["End Step"])
N_MoreReportLinestoProcess_Node0{"A line has been processed or a
batch has been sent"}:::decision N_MoreReportLinestoProcess_Node0_action["The system should check if more
report lines exist to determine
whether to continue processing or
finalize the email transmission"]:::main N_MoreReportLinestoProcess_Node0 -- Yes --> N_MoreReportLinestoProcess_Node0_action N_MoreReportLinestoProcess_Node0_action --> E_MoreReportLinestoProcess S_MoreReportLinestoProcess --> N_MoreReportLinestoProcess_Node0 N_MoreReportLinestoProcess_Node1{"The system checks for remaining
lines to process"}:::decision N_MoreReportLinestoProcess_Node1_action["The system shall continue
processing if the current line is
not empty or low-values and the
maximum email line limit has not
been exceeded"]:::main N_MoreReportLinestoProcess_Node1 -- Yes --> N_MoreReportLinestoProcess_Node1_action N_MoreReportLinestoProcess_Node1_action --> E_MoreReportLinestoProcess N_MoreReportLinestoProcess_Node0 -- No --> N_MoreReportLinestoProcess_Node1 N_MoreReportLinestoProcess_Node2{"The system checks for more lines to
process"}:::decision N_MoreReportLinestoProcess_Node2_action["Continue processing if the current
line is not empty or low-values AND
the mail subscription counter has
not exceeded the maximum email line
limit"]:::main N_MoreReportLinestoProcess_Node2 -- Yes --> N_MoreReportLinestoProcess_Node2_action N_MoreReportLinestoProcess_Node2_action --> E_MoreReportLinestoProcess N_MoreReportLinestoProcess_Node1 -- No --> N_MoreReportLinestoProcess_Node2 N_MoreReportLinestoProcess_Node3{"The system checks for more lines to
process"}:::decision N_MoreReportLinestoProcess_Node3_action["Processing continues if the current
line contains data and the maximum
line limit has not been exceeded,
otherwise processing stops"]:::main N_MoreReportLinestoProcess_Node3 -- Yes --> N_MoreReportLinestoProcess_Node3_action N_MoreReportLinestoProcess_Node3_action --> E_MoreReportLinestoProcess N_MoreReportLinestoProcess_Node2 -- No --> N_MoreReportLinestoProcess_Node3 N_MoreReportLinestoProcess_Node3 -- No --> E_MoreReportLinestoProcess
batch has been sent"}:::decision N_MoreReportLinestoProcess_Node0_action["The system should check if more
report lines exist to determine
whether to continue processing or
finalize the email transmission"]:::main N_MoreReportLinestoProcess_Node0 -- Yes --> N_MoreReportLinestoProcess_Node0_action N_MoreReportLinestoProcess_Node0_action --> E_MoreReportLinestoProcess S_MoreReportLinestoProcess --> N_MoreReportLinestoProcess_Node0 N_MoreReportLinestoProcess_Node1{"The system checks for remaining
lines to process"}:::decision N_MoreReportLinestoProcess_Node1_action["The system shall continue
processing if the current line is
not empty or low-values and the
maximum email line limit has not
been exceeded"]:::main N_MoreReportLinestoProcess_Node1 -- Yes --> N_MoreReportLinestoProcess_Node1_action N_MoreReportLinestoProcess_Node1_action --> E_MoreReportLinestoProcess N_MoreReportLinestoProcess_Node0 -- No --> N_MoreReportLinestoProcess_Node1 N_MoreReportLinestoProcess_Node2{"The system checks for more lines to
process"}:::decision N_MoreReportLinestoProcess_Node2_action["Continue processing if the current
line is not empty or low-values AND
the mail subscription counter has
not exceeded the maximum email line
limit"]:::main N_MoreReportLinestoProcess_Node2 -- Yes --> N_MoreReportLinestoProcess_Node2_action N_MoreReportLinestoProcess_Node2_action --> E_MoreReportLinestoProcess N_MoreReportLinestoProcess_Node1 -- No --> N_MoreReportLinestoProcess_Node2 N_MoreReportLinestoProcess_Node3{"The system checks for more lines to
process"}:::decision N_MoreReportLinestoProcess_Node3_action["Processing continues if the current
line contains data and the maximum
line limit has not been exceeded,
otherwise processing stops"]:::main N_MoreReportLinestoProcess_Node3 -- Yes --> N_MoreReportLinestoProcess_Node3_action N_MoreReportLinestoProcess_Node3_action --> E_MoreReportLinestoProcess N_MoreReportLinestoProcess_Node2 -- No --> N_MoreReportLinestoProcess_Node3 N_MoreReportLinestoProcess_Node3 -- No --> E_MoreReportLinestoProcess
File: GCX003.cbl
GIVEN:
The system is processing report lines for email transmission
WHEN:
A line has been processed or a batch has been sent
THEN:
The system should check if more report lines exist to determine whether to continue processing or finalize the email transmission
File: GCX003.cbl
GIVEN:
Report lines are being processed for email transmission
WHEN:
The system checks for remaining lines to process
THEN:
- The system shall continue processing if the current line is not empty or low-values
- The maximum email line limit has not been exceeded
File: GCX003.cbl
GIVEN:
Email processing is in progress with a current mail subscription counter
WHEN:
The system checks for more lines to process
THEN:
- Continue processing if the current line is not empty or low-values
- The mail subscription counter has not exceeded the maximum email line limit
File: GCX003.cbl
GIVEN:
The system is iterating through report lines for email processing
WHEN:
The system checks for more lines to process
THEN:
- Processing continues if the current line contains data
- The maximum line limit has not been exceeded, otherwise processing stops
β Consolidated Acceptance Criteria
- No more report lines remain to be processed → the system should send the final email batch containing the remaining report lines
- The final email transmission is executed → the system shall send the email using the same transmission service with all configured parameters
- No more lines remain to be processed → call EMCSEND3 to send the final email batch with all remaining content
- Sending the final email batch using EMCSEND3 → if send fails, redirect to error notification addresses AEI9999 and OM01247
- No more report lines exist to process → the final email batch is sent using EMCSEND3 service with all remaining accumulated content
- Final email transmission is required → the final email batch is sent using EMCSEND3 with all remaining accumulated message lines
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendFinalEmailBatch(["Start Step"])
E_SendFinalEmailBatch(["End Step"])
N_SendFinalEmailBatch_Node0{"No more report lines remain to be
processed"}:::decision N_SendFinalEmailBatch_Node0_action["The system should send the final
email batch containing the remaining
report lines"]:::main N_SendFinalEmailBatch_Node0 -- Yes --> N_SendFinalEmailBatch_Node0_action N_SendFinalEmailBatch_Node0_action --> E_SendFinalEmailBatch S_SendFinalEmailBatch --> N_SendFinalEmailBatch_Node0 N_SendFinalEmailBatch_Node1{"The final email transmission is
executed"}:::decision N_SendFinalEmailBatch_Node1_action["The system shall send the email
using the same transmission service
with all configured parameters"]:::main N_SendFinalEmailBatch_Node1 -- Yes --> N_SendFinalEmailBatch_Node1_action N_SendFinalEmailBatch_Node1_action --> E_SendFinalEmailBatch N_SendFinalEmailBatch_Node0 -- No --> N_SendFinalEmailBatch_Node1 N_SendFinalEmailBatch_Node2{"No more lines remain to be
processed"}:::decision N_SendFinalEmailBatch_Node2_action["Call EMCSEND3 to send the final
email batch with all remaining
content"]:::main N_SendFinalEmailBatch_Node2 -- Yes --> N_SendFinalEmailBatch_Node2_action N_SendFinalEmailBatch_Node2_action --> E_SendFinalEmailBatch N_SendFinalEmailBatch_Node1 -- No --> N_SendFinalEmailBatch_Node2 N_SendFinalEmailBatch_Node3{"Sending the final email batch using
EMCSEND3"}:::decision N_SendFinalEmailBatch_Node3_action["If send fails, redirect to error
notification addresses AEI9999 and
OM01247"]:::main N_SendFinalEmailBatch_Node3 -- Yes --> N_SendFinalEmailBatch_Node3_action N_SendFinalEmailBatch_Node3_action --> E_SendFinalEmailBatch N_SendFinalEmailBatch_Node2 -- No --> N_SendFinalEmailBatch_Node3 N_SendFinalEmailBatch_Node4{"No more report lines exist to
process"}:::decision N_SendFinalEmailBatch_Node4_action["The final email batch is sent using
EMCSEND3 service with all remaining
accumulated content"]:::main N_SendFinalEmailBatch_Node4 -- Yes --> N_SendFinalEmailBatch_Node4_action N_SendFinalEmailBatch_Node4_action --> E_SendFinalEmailBatch N_SendFinalEmailBatch_Node3 -- No --> N_SendFinalEmailBatch_Node4 N_SendFinalEmailBatch_Node5{"Final email transmission is
required"}:::decision N_SendFinalEmailBatch_Node5_action["The final email batch is sent using
EMCSEND3 with all remaining
accumulated message lines"]:::main N_SendFinalEmailBatch_Node5 -- Yes --> N_SendFinalEmailBatch_Node5_action N_SendFinalEmailBatch_Node5_action --> E_SendFinalEmailBatch N_SendFinalEmailBatch_Node4 -- No --> N_SendFinalEmailBatch_Node5 N_SendFinalEmailBatch_Node5 -- No --> E_SendFinalEmailBatch
processed"}:::decision N_SendFinalEmailBatch_Node0_action["The system should send the final
email batch containing the remaining
report lines"]:::main N_SendFinalEmailBatch_Node0 -- Yes --> N_SendFinalEmailBatch_Node0_action N_SendFinalEmailBatch_Node0_action --> E_SendFinalEmailBatch S_SendFinalEmailBatch --> N_SendFinalEmailBatch_Node0 N_SendFinalEmailBatch_Node1{"The final email transmission is
executed"}:::decision N_SendFinalEmailBatch_Node1_action["The system shall send the email
using the same transmission service
with all configured parameters"]:::main N_SendFinalEmailBatch_Node1 -- Yes --> N_SendFinalEmailBatch_Node1_action N_SendFinalEmailBatch_Node1_action --> E_SendFinalEmailBatch N_SendFinalEmailBatch_Node0 -- No --> N_SendFinalEmailBatch_Node1 N_SendFinalEmailBatch_Node2{"No more lines remain to be
processed"}:::decision N_SendFinalEmailBatch_Node2_action["Call EMCSEND3 to send the final
email batch with all remaining
content"]:::main N_SendFinalEmailBatch_Node2 -- Yes --> N_SendFinalEmailBatch_Node2_action N_SendFinalEmailBatch_Node2_action --> E_SendFinalEmailBatch N_SendFinalEmailBatch_Node1 -- No --> N_SendFinalEmailBatch_Node2 N_SendFinalEmailBatch_Node3{"Sending the final email batch using
EMCSEND3"}:::decision N_SendFinalEmailBatch_Node3_action["If send fails, redirect to error
notification addresses AEI9999 and
OM01247"]:::main N_SendFinalEmailBatch_Node3 -- Yes --> N_SendFinalEmailBatch_Node3_action N_SendFinalEmailBatch_Node3_action --> E_SendFinalEmailBatch N_SendFinalEmailBatch_Node2 -- No --> N_SendFinalEmailBatch_Node3 N_SendFinalEmailBatch_Node4{"No more report lines exist to
process"}:::decision N_SendFinalEmailBatch_Node4_action["The final email batch is sent using
EMCSEND3 service with all remaining
accumulated content"]:::main N_SendFinalEmailBatch_Node4 -- Yes --> N_SendFinalEmailBatch_Node4_action N_SendFinalEmailBatch_Node4_action --> E_SendFinalEmailBatch N_SendFinalEmailBatch_Node3 -- No --> N_SendFinalEmailBatch_Node4 N_SendFinalEmailBatch_Node5{"Final email transmission is
required"}:::decision N_SendFinalEmailBatch_Node5_action["The final email batch is sent using
EMCSEND3 with all remaining
accumulated message lines"]:::main N_SendFinalEmailBatch_Node5 -- Yes --> N_SendFinalEmailBatch_Node5_action N_SendFinalEmailBatch_Node5_action --> E_SendFinalEmailBatch N_SendFinalEmailBatch_Node4 -- No --> N_SendFinalEmailBatch_Node5 N_SendFinalEmailBatch_Node5 -- No --> E_SendFinalEmailBatch
File: GCX003.cbl
GIVEN:
All report lines have been processed and added to the current email message
WHEN:
No more report lines remain to be processed
THEN:
The system should send the final email batch containing the remaining report lines
File: GCX003.cbl
GIVEN:
All report lines have been processed and the final email batch is ready
WHEN:
The final email transmission is executed
THEN:
The system shall send the email using the same transmission service with all configured parameters
File: GCX003.cbl
GIVEN:
All report lines have been processed and the more email flag is true
WHEN:
No more lines remain to be processed
THEN:
Call EMCSEND3 to send the final email batch with all remaining content
File: GCX003.cbl
GIVEN:
All report lines have been processed and more email flag is true
WHEN:
Sending the final email batch using EMCSEND3
THEN:
- If send fails, redirect to error notification addresses aei9999
- Om01247
File: GCX003.cbl
GIVEN:
All report lines have been processed and there is remaining content in the email buffer
WHEN:
No more report lines exist to process
THEN:
The final email batch is sent using EMCSEND3 service with all remaining accumulated content
File: GCX003.cbl
GIVEN:
All report lines have been processed and final email batch is ready
WHEN:
Final email transmission is required
THEN:
The final email batch is sent using EMCSEND3 with all remaining accumulated message lines
β Consolidated Acceptance Criteria
- The system checks if the current line count exceeds 699 lines → the system determines whether to split the email into multiple batches or send as a single transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EmailContentExceedsLineLimit(["Start Step"])
E_EmailContentExceedsLineLimit(["End Step"])
N_EmailContentExceedsLineLimit_Node0{"The system checks if the current
line count exceeds 699 lines"}:::decision N_EmailContentExceedsLineLimit_Node0_action["The system determines whether to
split the email into multiple
batches or send as a single
transmission"]:::main N_EmailContentExceedsLineLimit_Node0 -- Yes --> N_EmailContentExceedsLineLimit_Node0_action N_EmailContentExceedsLineLimit_Node0_action --> E_EmailContentExceedsLineLimit S_EmailContentExceedsLineLimit --> N_EmailContentExceedsLineLimit_Node0 N_EmailContentExceedsLineLimit_Node0 -- No --> E_EmailContentExceedsLineLimit
line count exceeds 699 lines"}:::decision N_EmailContentExceedsLineLimit_Node0_action["The system determines whether to
split the email into multiple
batches or send as a single
transmission"]:::main N_EmailContentExceedsLineLimit_Node0 -- Yes --> N_EmailContentExceedsLineLimit_Node0_action N_EmailContentExceedsLineLimit_Node0_action --> E_EmailContentExceedsLineLimit S_EmailContentExceedsLineLimit --> N_EmailContentExceedsLineLimit_Node0 N_EmailContentExceedsLineLimit_Node0 -- No --> E_EmailContentExceedsLineLimit
File: GCX003.cbl
GIVEN:
An email message is being prepared for transmission
WHEN:
The system checks if the current line count exceeds 699 lines
THEN:
The system determines whether to split the email into multiple batches or send as a single transmission
β Consolidated Acceptance Criteria
- The system processes the email for transmission → the system sets no-more-email flag to true, clears the message buffer, resets line counter to zero, and prepares continuation header with report headers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SplitEmailintoBatches(["Start Step"])
E_SplitEmailintoBatches(["End Step"])
N_SplitEmailintoBatches_Node0{"The system processes the email for
transmission"}:::decision N_SplitEmailintoBatches_Node0_action["The system sets no-more-email flag
to true, clears the message buffer,
resets line counter to zero, and
prepares continuation header with
report headers"]:::main N_SplitEmailintoBatches_Node0 -- Yes --> N_SplitEmailintoBatches_Node0_action N_SplitEmailintoBatches_Node0_action --> E_SplitEmailintoBatches S_SplitEmailintoBatches --> N_SplitEmailintoBatches_Node0 N_SplitEmailintoBatches_Node0 -- No --> E_SplitEmailintoBatches
transmission"}:::decision N_SplitEmailintoBatches_Node0_action["The system sets no-more-email flag
to true, clears the message buffer,
resets line counter to zero, and
prepares continuation header with
report headers"]:::main N_SplitEmailintoBatches_Node0 -- Yes --> N_SplitEmailintoBatches_Node0_action N_SplitEmailintoBatches_Node0_action --> E_SplitEmailintoBatches S_SplitEmailintoBatches --> N_SplitEmailintoBatches_Node0 N_SplitEmailintoBatches_Node0 -- No --> E_SplitEmailintoBatches
File: GCX003.cbl
GIVEN:
An email message exceeds the 699 line limit
WHEN:
The system processes the email for transmission
THEN:
The system sets no-more-email flag to true, clears the message buffer, resets line counter to zero, and prepares continuation header with report headers
β Consolidated Acceptance Criteria
- The system checks the email return status flag → the system determines if the transmission was successful based on the return status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EmailTransmissionSuccessful(["Start Step"])
E_EmailTransmissionSuccessful(["End Step"])
N_EmailTransmissionSuccessful_Node0{"The system checks the email return
status flag"}:::decision N_EmailTransmissionSuccessful_Node0_action["The system determines if the
transmission was successful based on
the return status"]:::main N_EmailTransmissionSuccessful_Node0 -- Yes --> N_EmailTransmissionSuccessful_Node0_action N_EmailTransmissionSuccessful_Node0_action --> E_EmailTransmissionSuccessful S_EmailTransmissionSuccessful --> N_EmailTransmissionSuccessful_Node0 N_EmailTransmissionSuccessful_Node0 -- No --> E_EmailTransmissionSuccessful
status flag"}:::decision N_EmailTransmissionSuccessful_Node0_action["The system determines if the
transmission was successful based on
the return status"]:::main N_EmailTransmissionSuccessful_Node0 -- Yes --> N_EmailTransmissionSuccessful_Node0_action N_EmailTransmissionSuccessful_Node0_action --> E_EmailTransmissionSuccessful S_EmailTransmissionSuccessful --> N_EmailTransmissionSuccessful_Node0 N_EmailTransmissionSuccessful_Node0 -- No --> E_EmailTransmissionSuccessful
File: GCX003.cbl
GIVEN:
An email has been sent via EMCSEND3 service
WHEN:
The system checks the email return status flag
THEN:
The system determines if the transmission was successful based on the return status
β Consolidated Acceptance Criteria
- The system processes the transmission failure → the system clears the primary recipient, sets fallback recipients to 'AEI9999' and 'OM01247', and attempts retransmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleTransmissionFailure(["Start Step"])
E_HandleTransmissionFailure(["End Step"])
N_HandleTransmissionFailure_Node0{"The system processes the
transmission failure"}:::decision N_HandleTransmissionFailure_Node0_action["The system clears the primary
recipient, sets fallback recipients
to AEI9999 and OM01247 , and
attempts retransmission"]:::main N_HandleTransmissionFailure_Node0 -- Yes --> N_HandleTransmissionFailure_Node0_action N_HandleTransmissionFailure_Node0_action --> E_HandleTransmissionFailure S_HandleTransmissionFailure --> N_HandleTransmissionFailure_Node0 N_HandleTransmissionFailure_Node0 -- No --> E_HandleTransmissionFailure
transmission failure"}:::decision N_HandleTransmissionFailure_Node0_action["The system clears the primary
recipient, sets fallback recipients
to AEI9999 and OM01247 , and
attempts retransmission"]:::main N_HandleTransmissionFailure_Node0 -- Yes --> N_HandleTransmissionFailure_Node0_action N_HandleTransmissionFailure_Node0_action --> E_HandleTransmissionFailure S_HandleTransmissionFailure --> N_HandleTransmissionFailure_Node0 N_HandleTransmissionFailure_Node0 -- No --> E_HandleTransmissionFailure
File: GCX003.cbl
GIVEN:
An email transmission has failed
WHEN:
The system processes the transmission failure
THEN:
The system clears the primary recipient, sets fallback recipients to 'AEI9999' and 'OM01247', and attempts retransmission
β Consolidated Acceptance Criteria
- The system needs to send the email → the system calls EMCSEND3 service with sender ID, destination filename, recipient addresses, subject, keywords, message content, and formatting parameters
- The system calls EMCSEND3 transmission module → the email is transmitted with FROM usercode, destination filename, TO usercode, copy usercode, subject, keywords, message text, item formatting parameters, and transmission status is returned
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallEMCSEND3forCurrentBatch(["Start Step"])
E_CallEMCSEND3forCurrentBatch(["End Step"])
N_CallEMCSEND3forCurrentBatch_Node0{"The system needs to send the email"}:::decision
N_CallEMCSEND3forCurrentBatch_Node0_action["The system calls EMCSEND3 service
with sender ID, destination
filename, recipient addresses,
subject, keywords, message content,
and formatting parameters"]:::main N_CallEMCSEND3forCurrentBatch_Node0 -- Yes --> N_CallEMCSEND3forCurrentBatch_Node0_action N_CallEMCSEND3forCurrentBatch_Node0_action --> E_CallEMCSEND3forCurrentBatch S_CallEMCSEND3forCurrentBatch --> N_CallEMCSEND3forCurrentBatch_Node0 N_CallEMCSEND3forCurrentBatch_Node1{"The system calls EMCSEND3
transmission module"}:::decision N_CallEMCSEND3forCurrentBatch_Node1_action["The email is transmitted with FROM
usercode, destination filename, TO
usercode, copy usercode, subject,
keywords, message text, item
formatting parameters, and
transmission status is returned"]:::main N_CallEMCSEND3forCurrentBatch_Node1 -- Yes --> N_CallEMCSEND3forCurrentBatch_Node1_action N_CallEMCSEND3forCurrentBatch_Node1_action --> E_CallEMCSEND3forCurrentBatch N_CallEMCSEND3forCurrentBatch_Node0 -- No --> N_CallEMCSEND3forCurrentBatch_Node1 N_CallEMCSEND3forCurrentBatch_Node1 -- No --> E_CallEMCSEND3forCurrentBatch
with sender ID, destination
filename, recipient addresses,
subject, keywords, message content,
and formatting parameters"]:::main N_CallEMCSEND3forCurrentBatch_Node0 -- Yes --> N_CallEMCSEND3forCurrentBatch_Node0_action N_CallEMCSEND3forCurrentBatch_Node0_action --> E_CallEMCSEND3forCurrentBatch S_CallEMCSEND3forCurrentBatch --> N_CallEMCSEND3forCurrentBatch_Node0 N_CallEMCSEND3forCurrentBatch_Node1{"The system calls EMCSEND3
transmission module"}:::decision N_CallEMCSEND3forCurrentBatch_Node1_action["The email is transmitted with FROM
usercode, destination filename, TO
usercode, copy usercode, subject,
keywords, message text, item
formatting parameters, and
transmission status is returned"]:::main N_CallEMCSEND3forCurrentBatch_Node1 -- Yes --> N_CallEMCSEND3forCurrentBatch_Node1_action N_CallEMCSEND3forCurrentBatch_Node1_action --> E_CallEMCSEND3forCurrentBatch N_CallEMCSEND3forCurrentBatch_Node0 -- No --> N_CallEMCSEND3forCurrentBatch_Node1 N_CallEMCSEND3forCurrentBatch_Node1 -- No --> E_CallEMCSEND3forCurrentBatch
File: GCX003.cbl
GIVEN:
Email content is prepared for transmission
WHEN:
The system needs to send the email
THEN:
The system calls EMCSEND3 service with sender ID, destination filename, recipient addresses, subject, keywords, message content, and formatting parameters
File: GCX003.cbl
GIVEN:
Email parameters are initialized and message content is prepared
WHEN:
The system calls EMCSEND3 transmission module
THEN:
The email is transmitted with FROM usercode, destination filename, TO usercode, copy usercode, subject, keywords, message text, item formatting parameters, and transmission status is returned
β Consolidated Acceptance Criteria
- The system checks the retry transmission status → if retry fails, the system generates an error message 'SEND TO FILE OF OM01247 FAILED' and abends the process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrySuccessful(["Start Step"])
E_RetrySuccessful(["End Step"])
N_RetrySuccessful_Node0{"The system checks the retry
transmission status"}:::decision N_RetrySuccessful_Node0_action["If retry fails, the system
generates an error message SEND TO
FILE OF OM01247 FAILED and abends
the process"]:::main N_RetrySuccessful_Node0 -- Yes --> N_RetrySuccessful_Node0_action N_RetrySuccessful_Node0_action --> E_RetrySuccessful S_RetrySuccessful --> N_RetrySuccessful_Node0 N_RetrySuccessful_Node0 -- No --> E_RetrySuccessful
transmission status"}:::decision N_RetrySuccessful_Node0_action["If retry fails, the system
generates an error message SEND TO
FILE OF OM01247 FAILED and abends
the process"]:::main N_RetrySuccessful_Node0 -- Yes --> N_RetrySuccessful_Node0_action N_RetrySuccessful_Node0_action --> E_RetrySuccessful S_RetrySuccessful --> N_RetrySuccessful_Node0 N_RetrySuccessful_Node0 -- No --> E_RetrySuccessful
File: GCX003.cbl
GIVEN:
A retry email transmission attempt has been made with fallback recipients
WHEN:
The system checks the retry transmission status
THEN:
If retry fails, the system generates an error message 'SEND TO FILE OF OM01247 FAILED' and abends the process
β Consolidated Acceptance Criteria
- The system prepares email parameters → fROM usercode is set to default Merlin ID, TO usercode is set to default Merlin ID, subject line is cleared, message content is cleared, and item width is set to 080
- The email transmission process is initiated → the system shall set the sender as OM01247, clear recipient and copy fields, set item width to 080 characters, and initialize return status flags
- Email processing begins → email parameters are initialized with sender as OM01247, destination filename is set, item width is set to 080, and line counter is reset to zero
- The system initializes email parameters → email sender and recipient are set to OM01247, line width is set to 80 characters, and subject includes train ID
- The system initializes email parameters → email copy usercode, keywords, item sequence numbers, item alpha sequence, item width, and text content are cleared, and item width is set to 80 characters
- The email report process begins → email parameters are initialized with default usercode, destination filename, subject, keywords, item specifications, and return status flag are cleared
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeEmailParameters(["Start Step"])
E_InitializeEmailParameters(["End Step"])
N_InitializeEmailParameters_Node0{"The system prepares email
parameters"}:::decision N_InitializeEmailParameters_Node0_action["FROM usercode is set to default
Merlin ID, TO usercode is set to
default Merlin ID, subject line is
cleared, message content is cleared,
and item width is set to 080"]:::main N_InitializeEmailParameters_Node0 -- Yes --> N_InitializeEmailParameters_Node0_action N_InitializeEmailParameters_Node0_action --> E_InitializeEmailParameters S_InitializeEmailParameters --> N_InitializeEmailParameters_Node0 N_InitializeEmailParameters_Node1{"The email transmission process is
initiated"}:::decision N_InitializeEmailParameters_Node1_action["The system shall set the sender as
OM01247, clear recipient and copy
fields, set item width to 080
characters, and initialize return
status flags"]:::main N_InitializeEmailParameters_Node1 -- Yes --> N_InitializeEmailParameters_Node1_action N_InitializeEmailParameters_Node1_action --> E_InitializeEmailParameters N_InitializeEmailParameters_Node0 -- No --> N_InitializeEmailParameters_Node1 N_InitializeEmailParameters_Node2{"Email processing begins"}:::decision N_InitializeEmailParameters_Node2_action["Email parameters are initialized
with sender as OM01247, destination
filename is set, item width is set
to 080, and line counter is reset to
zero"]:::main N_InitializeEmailParameters_Node2 -- Yes --> N_InitializeEmailParameters_Node2_action N_InitializeEmailParameters_Node2_action --> E_InitializeEmailParameters N_InitializeEmailParameters_Node1 -- No --> N_InitializeEmailParameters_Node2 N_InitializeEmailParameters_Node3{"The system initializes email
parameters"}:::decision N_InitializeEmailParameters_Node3_action["Email sender and recipient are set
to OM01247, line width is set to 80
characters, and subject includes
train ID"]:::main N_InitializeEmailParameters_Node3 -- Yes --> N_InitializeEmailParameters_Node3_action N_InitializeEmailParameters_Node3_action --> E_InitializeEmailParameters N_InitializeEmailParameters_Node2 -- No --> N_InitializeEmailParameters_Node3 N_InitializeEmailParameters_Node4{"The system initializes email
parameters"}:::decision N_InitializeEmailParameters_Node4_action["Email copy usercode, keywords, item
sequence numbers, item alpha
sequence, item width, and text
content are cleared, and item width
is set to 80 characters"]:::main N_InitializeEmailParameters_Node4 -- Yes --> N_InitializeEmailParameters_Node4_action N_InitializeEmailParameters_Node4_action --> E_InitializeEmailParameters N_InitializeEmailParameters_Node3 -- No --> N_InitializeEmailParameters_Node4 N_InitializeEmailParameters_Node5{"The email report process begins"}:::decision N_InitializeEmailParameters_Node5_action["Email parameters are initialized
with default usercode, destination
filename, subject, keywords, item
specifications, and return status
flag are cleared"]:::main N_InitializeEmailParameters_Node5 -- Yes --> N_InitializeEmailParameters_Node5_action N_InitializeEmailParameters_Node5_action --> E_InitializeEmailParameters N_InitializeEmailParameters_Node4 -- No --> N_InitializeEmailParameters_Node5 N_InitializeEmailParameters_Node5 -- No --> E_InitializeEmailParameters
parameters"}:::decision N_InitializeEmailParameters_Node0_action["FROM usercode is set to default
Merlin ID, TO usercode is set to
default Merlin ID, subject line is
cleared, message content is cleared,
and item width is set to 080"]:::main N_InitializeEmailParameters_Node0 -- Yes --> N_InitializeEmailParameters_Node0_action N_InitializeEmailParameters_Node0_action --> E_InitializeEmailParameters S_InitializeEmailParameters --> N_InitializeEmailParameters_Node0 N_InitializeEmailParameters_Node1{"The email transmission process is
initiated"}:::decision N_InitializeEmailParameters_Node1_action["The system shall set the sender as
OM01247, clear recipient and copy
fields, set item width to 080
characters, and initialize return
status flags"]:::main N_InitializeEmailParameters_Node1 -- Yes --> N_InitializeEmailParameters_Node1_action N_InitializeEmailParameters_Node1_action --> E_InitializeEmailParameters N_InitializeEmailParameters_Node0 -- No --> N_InitializeEmailParameters_Node1 N_InitializeEmailParameters_Node2{"Email processing begins"}:::decision N_InitializeEmailParameters_Node2_action["Email parameters are initialized
with sender as OM01247, destination
filename is set, item width is set
to 080, and line counter is reset to
zero"]:::main N_InitializeEmailParameters_Node2 -- Yes --> N_InitializeEmailParameters_Node2_action N_InitializeEmailParameters_Node2_action --> E_InitializeEmailParameters N_InitializeEmailParameters_Node1 -- No --> N_InitializeEmailParameters_Node2 N_InitializeEmailParameters_Node3{"The system initializes email
parameters"}:::decision N_InitializeEmailParameters_Node3_action["Email sender and recipient are set
to OM01247, line width is set to 80
characters, and subject includes
train ID"]:::main N_InitializeEmailParameters_Node3 -- Yes --> N_InitializeEmailParameters_Node3_action N_InitializeEmailParameters_Node3_action --> E_InitializeEmailParameters N_InitializeEmailParameters_Node2 -- No --> N_InitializeEmailParameters_Node3 N_InitializeEmailParameters_Node4{"The system initializes email
parameters"}:::decision N_InitializeEmailParameters_Node4_action["Email copy usercode, keywords, item
sequence numbers, item alpha
sequence, item width, and text
content are cleared, and item width
is set to 80 characters"]:::main N_InitializeEmailParameters_Node4 -- Yes --> N_InitializeEmailParameters_Node4_action N_InitializeEmailParameters_Node4_action --> E_InitializeEmailParameters N_InitializeEmailParameters_Node3 -- No --> N_InitializeEmailParameters_Node4 N_InitializeEmailParameters_Node5{"The email report process begins"}:::decision N_InitializeEmailParameters_Node5_action["Email parameters are initialized
with default usercode, destination
filename, subject, keywords, item
specifications, and return status
flag are cleared"]:::main N_InitializeEmailParameters_Node5 -- Yes --> N_InitializeEmailParameters_Node5_action N_InitializeEmailParameters_Node5_action --> E_InitializeEmailParameters N_InitializeEmailParameters_Node4 -- No --> N_InitializeEmailParameters_Node5 N_InitializeEmailParameters_Node5 -- No --> E_InitializeEmailParameters
File: GCX003.cbl
GIVEN:
An email transmission process is initiated
WHEN:
The system prepares email parameters
THEN:
FROM usercode is set to default Merlin ID, TO usercode is set to default Merlin ID, subject line is cleared, message content is cleared, and item width is set to 080
File: GCX003.cbl
GIVEN:
A customs report needs to be transmitted via email
WHEN:
The email transmission process is initiated
THEN:
- The system shall set the sender as om01247, clear recipient
- Copy fields, set item width to 080 characters, and initialize return status flags
File: GCX003.cbl
GIVEN:
A report needs to be sent via email
WHEN:
Email processing begins
THEN:
Email parameters are initialized with sender as OM01247, destination filename is set, item width is set to 080, and line counter is reset to zero
File: GCX003.cbl
GIVEN:
Enhanced report content is ready for distribution
WHEN:
The system initializes email parameters
THEN:
- Email sender
- Recipient are set to om01247, line width is set to 80 characters, and subject includes train id
File: GCX003.cbl
GIVEN:
An AEI report needs to be distributed via email
WHEN:
The system initializes email parameters
THEN:
Email copy usercode, keywords, item sequence numbers, item alpha sequence, item width, and text content are cleared, and item width is set to 80 characters
File: GCX003.cbl
GIVEN:
An email report needs to be sent with pagination support
WHEN:
The email report process begins
THEN:
Email parameters are initialized with default usercode, destination filename, subject, keywords, item specifications, and return status flag are cleared
β Consolidated Acceptance Criteria
- The line count reaches or exceeds 699 lines → the current batch must be transmitted immediately and a new batch started
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckLineCount699(["Start Step"])
E_CheckLineCount699(["End Step"])
N_CheckLineCount699_Node0{"The line count reaches or exceeds
699 lines"}:::decision N_CheckLineCount699_Node0_action["The current batch must be
transmitted immediately and a new
batch started"]:::main N_CheckLineCount699_Node0 -- Yes --> N_CheckLineCount699_Node0_action N_CheckLineCount699_Node0_action --> E_CheckLineCount699 S_CheckLineCount699 --> N_CheckLineCount699_Node0 N_CheckLineCount699_Node0 -- No --> E_CheckLineCount699
699 lines"}:::decision N_CheckLineCount699_Node0_action["The current batch must be
transmitted immediately and a new
batch started"]:::main N_CheckLineCount699_Node0 -- Yes --> N_CheckLineCount699_Node0_action N_CheckLineCount699_Node0_action --> E_CheckLineCount699 S_CheckLineCount699 --> N_CheckLineCount699_Node0 N_CheckLineCount699_Node0 -- No --> E_CheckLineCount699
File: GCX003.cbl
GIVEN:
Email message content is being processed with accumulated lines
WHEN:
The line count reaches or exceeds 699 lines
THEN:
- The current batch must be transmitted immediately
- A new batch started
β Consolidated Acceptance Criteria
- The transmission return status is evaluated → if return status indicates success, continue normal processing; if return status indicates failure, initiate error notification process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TransmissionSuccessful(["Start Step"])
E_TransmissionSuccessful(["End Step"])
N_TransmissionSuccessful_Node0{"The transmission return status is
evaluated"}:::decision N_TransmissionSuccessful_Node0_action["If return status indicates success,
continue normal processing if return
status indicates failure, initiate
error notification process"]:::main N_TransmissionSuccessful_Node0 -- Yes --> N_TransmissionSuccessful_Node0_action N_TransmissionSuccessful_Node0_action --> E_TransmissionSuccessful S_TransmissionSuccessful --> N_TransmissionSuccessful_Node0 N_TransmissionSuccessful_Node0 -- No --> E_TransmissionSuccessful
evaluated"}:::decision N_TransmissionSuccessful_Node0_action["If return status indicates success,
continue normal processing if return
status indicates failure, initiate
error notification process"]:::main N_TransmissionSuccessful_Node0 -- Yes --> N_TransmissionSuccessful_Node0_action N_TransmissionSuccessful_Node0_action --> E_TransmissionSuccessful S_TransmissionSuccessful --> N_TransmissionSuccessful_Node0 N_TransmissionSuccessful_Node0 -- No --> E_TransmissionSuccessful
File: GCX003.cbl
GIVEN:
EMCSEND3 email transmission module has been called
WHEN:
The transmission return status is evaluated
THEN:
If return status indicates success, continue normal processing; if return status indicates failure, initiate error notification process
β Consolidated Acceptance Criteria
- The system prepares for the next batch → message buffer is cleared, continuation header 'CONTINUATION OF REPORT ....' is added, detail headers are added, and line counter is reset to 3
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearMessageBuffer(["Start Step"])
E_ClearMessageBuffer(["End Step"])
N_ClearMessageBuffer_Node0{"The system prepares for the next
batch"}:::decision N_ClearMessageBuffer_Node0_action["Message buffer is cleared,
continuation header CONTINUATION OF
REPORT .... is added, detail headers
are added, and line counter is reset
to 3"]:::main N_ClearMessageBuffer_Node0 -- Yes --> N_ClearMessageBuffer_Node0_action N_ClearMessageBuffer_Node0_action --> E_ClearMessageBuffer S_ClearMessageBuffer --> N_ClearMessageBuffer_Node0 N_ClearMessageBuffer_Node0 -- No --> E_ClearMessageBuffer
batch"}:::decision N_ClearMessageBuffer_Node0_action["Message buffer is cleared,
continuation header CONTINUATION OF
REPORT .... is added, detail headers
are added, and line counter is reset
to 3"]:::main N_ClearMessageBuffer_Node0 -- Yes --> N_ClearMessageBuffer_Node0_action N_ClearMessageBuffer_Node0_action --> E_ClearMessageBuffer S_ClearMessageBuffer --> N_ClearMessageBuffer_Node0 N_ClearMessageBuffer_Node0 -- No --> E_ClearMessageBuffer
File: GCX003.cbl
GIVEN:
An email batch has been successfully transmitted and line count exceeded 699
WHEN:
The system prepares for the next batch
THEN:
Message buffer is cleared, continuation header 'CONTINUATION OF REPORT ....' is added, detail headers are added, and line counter is reset to 3
β Consolidated Acceptance Criteria
- The system handles transmission failure → tO usercode is cleared, error recipient 'AEI9999' is set as first recipient, and 'OM01247' is set as second recipient
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetErrorRecipients(["Start Step"])
E_SetErrorRecipients(["End Step"])
N_SetErrorRecipients_Node0{"The system handles transmission
failure"}:::decision N_SetErrorRecipients_Node0_action["TO usercode is cleared, error
recipient AEI9999 is set as first
recipient, and OM01247 is set as
second recipient"]:::main N_SetErrorRecipients_Node0 -- Yes --> N_SetErrorRecipients_Node0_action N_SetErrorRecipients_Node0_action --> E_SetErrorRecipients S_SetErrorRecipients --> N_SetErrorRecipients_Node0 N_SetErrorRecipients_Node0 -- No --> E_SetErrorRecipients
failure"}:::decision N_SetErrorRecipients_Node0_action["TO usercode is cleared, error
recipient AEI9999 is set as first
recipient, and OM01247 is set as
second recipient"]:::main N_SetErrorRecipients_Node0 -- Yes --> N_SetErrorRecipients_Node0_action N_SetErrorRecipients_Node0_action --> E_SetErrorRecipients S_SetErrorRecipients --> N_SetErrorRecipients_Node0 N_SetErrorRecipients_Node0 -- No --> E_SetErrorRecipients
File: GCX003.cbl
GIVEN:
Email transmission has failed
WHEN:
The system handles transmission failure
THEN:
TO usercode is cleared, error recipient 'AEI9999' is set as first recipient, and 'OM01247' is set as second recipient
β Consolidated Acceptance Criteria
- The system calls EMCSEND3 for error notification → error notification email is transmitted to designated error recipients with same message content and formatting parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallEMCSEND3forErrorNotification(["Start Step"])
E_CallEMCSEND3forErrorNotification(["End Step"])
N_CallEMCSEND3forErrorNotification_Node0{"The system calls EMCSEND3 for error
notification"}:::decision N_CallEMCSEND3forErrorNotification_Node0_action["Error notification email is
transmitted to designated error
recipients with same message content
and formatting parameters"]:::exclusion N_CallEMCSEND3forErrorNotification_Node0 -- Yes -->|Alternative| N_CallEMCSEND3forErrorNotification_Node0_action N_CallEMCSEND3forErrorNotification_Node0_action --> E_CallEMCSEND3forErrorNotification S_CallEMCSEND3forErrorNotification --> N_CallEMCSEND3forErrorNotification_Node0 N_CallEMCSEND3forErrorNotification_Node0 -- No --> E_CallEMCSEND3forErrorNotification
notification"}:::decision N_CallEMCSEND3forErrorNotification_Node0_action["Error notification email is
transmitted to designated error
recipients with same message content
and formatting parameters"]:::exclusion N_CallEMCSEND3forErrorNotification_Node0 -- Yes -->|Alternative| N_CallEMCSEND3forErrorNotification_Node0_action N_CallEMCSEND3forErrorNotification_Node0_action --> E_CallEMCSEND3forErrorNotification S_CallEMCSEND3forErrorNotification --> N_CallEMCSEND3forErrorNotification_Node0 N_CallEMCSEND3forErrorNotification_Node0 -- No --> E_CallEMCSEND3forErrorNotification
File: GCX003.cbl
GIVEN:
Primary email transmission has failed and error recipients are set
WHEN:
The system calls EMCSEND3 for error notification
THEN:
- Error notification email is transmitted to designated error recipients with same message content
- Formatting parameters
β Consolidated Acceptance Criteria
- The error notification transmission status is evaluated → if error notification succeeds, clear message buffer and continue; if error notification fails, trigger system abend with 'SEND TO FILE OF OM01247 FAILED' message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ErrorNotificationSuccessful(["Start Step"])
E_ErrorNotificationSuccessful(["End Step"])
N_ErrorNotificationSuccessful_Node0{"The error notification transmission
status is evaluated"}:::decision N_ErrorNotificationSuccessful_Node0_action["If error notification succeeds,
clear message buffer and continue if
error notification fails, trigger
system abend with SEND TO FILE OF
OM01247 FAILED message"]:::exclusion N_ErrorNotificationSuccessful_Node0 -- Yes -->|Alternative| N_ErrorNotificationSuccessful_Node0_action N_ErrorNotificationSuccessful_Node0_action --> E_ErrorNotificationSuccessful S_ErrorNotificationSuccessful --> N_ErrorNotificationSuccessful_Node0 N_ErrorNotificationSuccessful_Node0 -- No --> E_ErrorNotificationSuccessful
status is evaluated"}:::decision N_ErrorNotificationSuccessful_Node0_action["If error notification succeeds,
clear message buffer and continue if
error notification fails, trigger
system abend with SEND TO FILE OF
OM01247 FAILED message"]:::exclusion N_ErrorNotificationSuccessful_Node0 -- Yes -->|Alternative| N_ErrorNotificationSuccessful_Node0_action N_ErrorNotificationSuccessful_Node0_action --> E_ErrorNotificationSuccessful S_ErrorNotificationSuccessful --> N_ErrorNotificationSuccessful_Node0 N_ErrorNotificationSuccessful_Node0 -- No --> E_ErrorNotificationSuccessful
File: GCX003.cbl
GIVEN:
Error notification email has been transmitted via EMCSEND3
WHEN:
The error notification transmission status is evaluated
THEN:
- If error notification succeeds, clear message buffer
- Continue; if error notification fails, trigger system abend with 'send to file of om01247 failed' message
β Consolidated Acceptance Criteria
- The system cannot recover from email transmission failures → system abends with error message 'SEND TO FILE OF OM01247 FAILED'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SystemAbend(["Start Step"])
E_SystemAbend(["End Step"])
N_SystemAbend_Node0{"The system cannot recover from
email transmission failures"}:::decision N_SystemAbend_Node0_action["System abends with error message
SEND TO FILE OF OM01247 FAILED"]:::main N_SystemAbend_Node0 -- Yes --> N_SystemAbend_Node0_action N_SystemAbend_Node0_action --> E_SystemAbend S_SystemAbend --> N_SystemAbend_Node0 N_SystemAbend_Node0 -- No --> E_SystemAbend
email transmission failures"}:::decision N_SystemAbend_Node0_action["System abends with error message
SEND TO FILE OF OM01247 FAILED"]:::main N_SystemAbend_Node0 -- Yes --> N_SystemAbend_Node0_action N_SystemAbend_Node0_action --> E_SystemAbend S_SystemAbend --> N_SystemAbend_Node0 N_SystemAbend_Node0 -- No --> E_SystemAbend
File: GCX003.cbl
GIVEN:
Both primary email transmission and error notification transmission have failed
WHEN:
The system cannot recover from email transmission failures
THEN:
System abends with error message 'SEND TO FILE OF OM01247 FAILED'
β Consolidated Acceptance Criteria
- Email headers and subject are being configured → the system shall set the sender and recipient to OM01247, clear keywords and copy fields, use the first report line as the subject, and clear item sequence numbers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEmailHeadersandSubject(["Start Step"])
E_SetEmailHeadersandSubject(["End Step"])
N_SetEmailHeadersandSubject_Node0{"Email headers and subject are being
configured"}:::decision N_SetEmailHeadersandSubject_Node0_action["The system shall set the sender and
recipient to OM01247, clear keywords
and copy fields, use the first
report line as the subject, and
clear item sequence numbers"]:::main N_SetEmailHeadersandSubject_Node0 -- Yes --> N_SetEmailHeadersandSubject_Node0_action N_SetEmailHeadersandSubject_Node0_action --> E_SetEmailHeadersandSubject S_SetEmailHeadersandSubject --> N_SetEmailHeadersandSubject_Node0 N_SetEmailHeadersandSubject_Node0 -- No --> E_SetEmailHeadersandSubject
configured"}:::decision N_SetEmailHeadersandSubject_Node0_action["The system shall set the sender and
recipient to OM01247, clear keywords
and copy fields, use the first
report line as the subject, and
clear item sequence numbers"]:::main N_SetEmailHeadersandSubject_Node0 -- Yes --> N_SetEmailHeadersandSubject_Node0_action N_SetEmailHeadersandSubject_Node0_action --> E_SetEmailHeadersandSubject S_SetEmailHeadersandSubject --> N_SetEmailHeadersandSubject_Node0 N_SetEmailHeadersandSubject_Node0 -- No --> E_SetEmailHeadersandSubject
File: GCX003.cbl
GIVEN:
Email parameters have been initialized for report transmission
WHEN:
- Email headers
- Subject are being configured
THEN:
- The system shall set the sender
- Recipient to om01247, clear keywords
- Copy fields, use the first report line as the subject, and clear item sequence numbers
β Consolidated Acceptance Criteria
- The line counting process is initialized → the system shall set the line counter to zero and establish email continuation flags
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeLineCounter(["Start Step"])
E_InitializeLineCounter(["End Step"])
N_InitializeLineCounter_Node0{"The line counting process is
initialized"}:::decision N_InitializeLineCounter_Node0_action["The system shall set the line
counter to zero and establish email
continuation flags"]:::main N_InitializeLineCounter_Node0 -- Yes --> N_InitializeLineCounter_Node0_action N_InitializeLineCounter_Node0_action --> E_InitializeLineCounter S_InitializeLineCounter --> N_InitializeLineCounter_Node0 N_InitializeLineCounter_Node0 -- No --> E_InitializeLineCounter
initialized"}:::decision N_InitializeLineCounter_Node0_action["The system shall set the line
counter to zero and establish email
continuation flags"]:::main N_InitializeLineCounter_Node0 -- Yes --> N_InitializeLineCounter_Node0_action N_InitializeLineCounter_Node0_action --> E_InitializeLineCounter S_InitializeLineCounter --> N_InitializeLineCounter_Node0 N_InitializeLineCounter_Node0 -- No --> E_InitializeLineCounter
File: GCX003.cbl
GIVEN:
Email headers have been configured
WHEN:
The line counting process is initialized
THEN:
- The system shall set the line counter to zero
- Establish email continuation flags
β Consolidated Acceptance Criteria
- The line is added to the email message → the system shall copy the report line to the corresponding email text line position
- The system processes the report line for email inclusion → the report line is added to the email message buffer and the line counter is incremented by 1
- A report line needs to be added to the email → the report line is moved to the email text message line at the current line position
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddLinetoEmailMessage(["Start Step"])
E_AddLinetoEmailMessage(["End Step"])
N_AddLinetoEmailMessage_Node0{"The line is added to the email
message"}:::decision N_AddLinetoEmailMessage_Node0_action["The system shall copy the report
line to the corresponding email text
line position"]:::main N_AddLinetoEmailMessage_Node0 -- Yes --> N_AddLinetoEmailMessage_Node0_action N_AddLinetoEmailMessage_Node0_action --> E_AddLinetoEmailMessage S_AddLinetoEmailMessage --> N_AddLinetoEmailMessage_Node0 N_AddLinetoEmailMessage_Node1{"The system processes the report
line for email inclusion"}:::decision N_AddLinetoEmailMessage_Node1_action["The report line is added to the
email message buffer and the line
counter is incremented by 1"]:::main N_AddLinetoEmailMessage_Node1 -- Yes --> N_AddLinetoEmailMessage_Node1_action N_AddLinetoEmailMessage_Node1_action --> E_AddLinetoEmailMessage N_AddLinetoEmailMessage_Node0 -- No --> N_AddLinetoEmailMessage_Node1 N_AddLinetoEmailMessage_Node2{"A report line needs to be added to
the email"}:::decision N_AddLinetoEmailMessage_Node2_action["The report line is moved to the
email text message line at the
current line position"]:::main N_AddLinetoEmailMessage_Node2 -- Yes --> N_AddLinetoEmailMessage_Node2_action N_AddLinetoEmailMessage_Node2_action --> E_AddLinetoEmailMessage N_AddLinetoEmailMessage_Node1 -- No --> N_AddLinetoEmailMessage_Node2 N_AddLinetoEmailMessage_Node2 -- No --> E_AddLinetoEmailMessage
message"}:::decision N_AddLinetoEmailMessage_Node0_action["The system shall copy the report
line to the corresponding email text
line position"]:::main N_AddLinetoEmailMessage_Node0 -- Yes --> N_AddLinetoEmailMessage_Node0_action N_AddLinetoEmailMessage_Node0_action --> E_AddLinetoEmailMessage S_AddLinetoEmailMessage --> N_AddLinetoEmailMessage_Node0 N_AddLinetoEmailMessage_Node1{"The system processes the report
line for email inclusion"}:::decision N_AddLinetoEmailMessage_Node1_action["The report line is added to the
email message buffer and the line
counter is incremented by 1"]:::main N_AddLinetoEmailMessage_Node1 -- Yes --> N_AddLinetoEmailMessage_Node1_action N_AddLinetoEmailMessage_Node1_action --> E_AddLinetoEmailMessage N_AddLinetoEmailMessage_Node0 -- No --> N_AddLinetoEmailMessage_Node1 N_AddLinetoEmailMessage_Node2{"A report line needs to be added to
the email"}:::decision N_AddLinetoEmailMessage_Node2_action["The report line is moved to the
email text message line at the
current line position"]:::main N_AddLinetoEmailMessage_Node2 -- Yes --> N_AddLinetoEmailMessage_Node2_action N_AddLinetoEmailMessage_Node2_action --> E_AddLinetoEmailMessage N_AddLinetoEmailMessage_Node1 -- No --> N_AddLinetoEmailMessage_Node2 N_AddLinetoEmailMessage_Node2 -- No --> E_AddLinetoEmailMessage
File: GCX003.cbl
GIVEN:
A report line is available for processing and email buffer has capacity
WHEN:
The line is added to the email message
THEN:
The system shall copy the report line to the corresponding email text line position
File: GCX003.cbl
GIVEN:
A report line exists to be processed for email transmission
WHEN:
The system processes the report line for email inclusion
THEN:
- The report line is added to the email message buffer
- The line counter is incremented by 1
File: GCX003.cbl
GIVEN:
A report line exists in the report table and email message buffer has capacity
WHEN:
A report line needs to be added to the email
THEN:
The report line is moved to the email text message line at the current line position
β Consolidated Acceptance Criteria
- The system checks the current line count → the system shall trigger email transmission if the line count exceeds 699 lines
- The line subscription counter is evaluated → if the line counter exceeds 699 lines, trigger email batch sending process
- The line count reaches or exceeds 699 lines → the current email batch must be sent and a new batch must be started
- The line count reaches 699 lines → the current email batch is sent, email buffer is reset, continuation header is added, and processing continues with remaining lines
- The line counter is evaluated against the maximum limit → if line counter exceeds 699, trigger email batch sending, otherwise continue adding lines
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LineCount699(["Start Step"])
E_LineCount699(["End Step"])
N_LineCount699_Node0{"The system checks the current line
count"}:::decision N_LineCount699_Node0_action["The system shall trigger email
transmission if the line count
exceeds 699 lines"]:::main N_LineCount699_Node0 -- Yes --> N_LineCount699_Node0_action N_LineCount699_Node0_action --> E_LineCount699 S_LineCount699 --> N_LineCount699_Node0 N_LineCount699_Node1{"The line subscription counter is
evaluated"}:::decision N_LineCount699_Node1_action["If the line counter exceeds 699
lines, trigger email batch sending
process"]:::main N_LineCount699_Node1 -- Yes --> N_LineCount699_Node1_action N_LineCount699_Node1_action --> E_LineCount699 N_LineCount699_Node0 -- No --> N_LineCount699_Node1 N_LineCount699_Node2{"The line count reaches or exceeds
699 lines"}:::decision N_LineCount699_Node2_action["The current email batch must be
sent and a new batch must be started"]:::main N_LineCount699_Node2 -- Yes --> N_LineCount699_Node2_action N_LineCount699_Node2_action --> E_LineCount699 N_LineCount699_Node1 -- No --> N_LineCount699_Node2 N_LineCount699_Node3{"The line count reaches 699 lines"}:::decision N_LineCount699_Node3_action["The current email batch is sent,
email buffer is reset, continuation
header is added, and processing
continues with remaining lines"]:::main N_LineCount699_Node3 -- Yes --> N_LineCount699_Node3_action N_LineCount699_Node3_action --> E_LineCount699 N_LineCount699_Node2 -- No --> N_LineCount699_Node3 N_LineCount699_Node4{"The line counter is evaluated
against the maximum limit"}:::decision N_LineCount699_Node4_action["If line counter exceeds 699,
trigger email batch sending,
otherwise continue adding lines"]:::main N_LineCount699_Node4 -- Yes --> N_LineCount699_Node4_action N_LineCount699_Node4_action --> E_LineCount699 N_LineCount699_Node3 -- No --> N_LineCount699_Node4 N_LineCount699_Node4 -- No --> E_LineCount699
count"}:::decision N_LineCount699_Node0_action["The system shall trigger email
transmission if the line count
exceeds 699 lines"]:::main N_LineCount699_Node0 -- Yes --> N_LineCount699_Node0_action N_LineCount699_Node0_action --> E_LineCount699 S_LineCount699 --> N_LineCount699_Node0 N_LineCount699_Node1{"The line subscription counter is
evaluated"}:::decision N_LineCount699_Node1_action["If the line counter exceeds 699
lines, trigger email batch sending
process"]:::main N_LineCount699_Node1 -- Yes --> N_LineCount699_Node1_action N_LineCount699_Node1_action --> E_LineCount699 N_LineCount699_Node0 -- No --> N_LineCount699_Node1 N_LineCount699_Node2{"The line count reaches or exceeds
699 lines"}:::decision N_LineCount699_Node2_action["The current email batch must be
sent and a new batch must be started"]:::main N_LineCount699_Node2 -- Yes --> N_LineCount699_Node2_action N_LineCount699_Node2_action --> E_LineCount699 N_LineCount699_Node1 -- No --> N_LineCount699_Node2 N_LineCount699_Node3{"The line count reaches 699 lines"}:::decision N_LineCount699_Node3_action["The current email batch is sent,
email buffer is reset, continuation
header is added, and processing
continues with remaining lines"]:::main N_LineCount699_Node3 -- Yes --> N_LineCount699_Node3_action N_LineCount699_Node3_action --> E_LineCount699 N_LineCount699_Node2 -- No --> N_LineCount699_Node3 N_LineCount699_Node4{"The line counter is evaluated
against the maximum limit"}:::decision N_LineCount699_Node4_action["If line counter exceeds 699,
trigger email batch sending,
otherwise continue adding lines"]:::main N_LineCount699_Node4 -- Yes --> N_LineCount699_Node4_action N_LineCount699_Node4_action --> E_LineCount699 N_LineCount699_Node3 -- No --> N_LineCount699_Node4 N_LineCount699_Node4 -- No --> E_LineCount699
File: GCX003.cbl
GIVEN:
Lines have been added to the email message buffer
WHEN:
The system checks the current line count
THEN:
The system shall trigger email transmission if the line count exceeds 699 lines
File: GCX003.cbl
GIVEN:
Lines are being added to an email message buffer
WHEN:
The line subscription counter is evaluated
THEN:
If the line counter exceeds 699 lines, trigger email batch sending process
File: GCX003.cbl
GIVEN:
Lines are being added to an email message buffer
WHEN:
The line count reaches or exceeds 699 lines
THEN:
- The current email batch must be sent
- A new batch must be started
File: GCX003.cbl
GIVEN:
Enhanced report lines are being processed for email transmission
WHEN:
The line count reaches 699 lines
THEN:
The current email batch is sent, email buffer is reset, continuation header is added, and processing continues with remaining lines
File: GCX003.cbl
GIVEN:
Lines have been added to the current email batch
WHEN:
The line counter is evaluated against the maximum limit
THEN:
If line counter exceeds 699, trigger email batch sending, otherwise continue adding lines
β Consolidated Acceptance Criteria
- The email send operation is executed → the system shall call the email service with all configured parameters including sender, recipient, subject, content, and formatting options
- The batch size limit is reached → call EMCSEND3 to send the current email batch with all configured parameters including sender, recipient, subject, and message content
- Sending the current email batch using EMCSEND3 → if send fails, redirect to error notification addresses AEI9999 and OM01247, otherwise continue processing
- The batch size limit is reached → the email is sent using EMCSEND3 service, the message buffer is cleared, and the line counter is reset to zero
- The system sends the email batch → the email is transmitted to inbox destination using sender ID, recipient list, subject line, and message content through the email service
- Email batch sending is triggered → the email is sent using EMCSEND3 with all configured parameters and accumulated message lines
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendCurrentEmailBatch(["Start Step"])
E_SendCurrentEmailBatch(["End Step"])
N_SendCurrentEmailBatch_Node0{"The email send operation is
executed"}:::decision N_SendCurrentEmailBatch_Node0_action["The system shall call the email
service with all configured
parameters including sender,
recipient, subject, content, and
formatting options"]:::main N_SendCurrentEmailBatch_Node0 -- Yes --> N_SendCurrentEmailBatch_Node0_action N_SendCurrentEmailBatch_Node0_action --> E_SendCurrentEmailBatch S_SendCurrentEmailBatch --> N_SendCurrentEmailBatch_Node0 N_SendCurrentEmailBatch_Node1{"The batch size limit is reached"}:::decision N_SendCurrentEmailBatch_Node1_action["Call EMCSEND3 to send the current
email batch with all configured
parameters including sender,
recipient, subject, and message
content"]:::main N_SendCurrentEmailBatch_Node1 -- Yes --> N_SendCurrentEmailBatch_Node1_action N_SendCurrentEmailBatch_Node1_action --> E_SendCurrentEmailBatch N_SendCurrentEmailBatch_Node0 -- No --> N_SendCurrentEmailBatch_Node1 N_SendCurrentEmailBatch_Node2{"Sending the current email batch
using EMCSEND3"}:::decision N_SendCurrentEmailBatch_Node2_action["If send fails, redirect to error
notification addresses AEI9999 and
OM01247, otherwise continue
processing"]:::main N_SendCurrentEmailBatch_Node2 -- Yes --> N_SendCurrentEmailBatch_Node2_action N_SendCurrentEmailBatch_Node2_action --> E_SendCurrentEmailBatch N_SendCurrentEmailBatch_Node1 -- No --> N_SendCurrentEmailBatch_Node2 N_SendCurrentEmailBatch_Node3{"The batch size limit is reached"}:::decision N_SendCurrentEmailBatch_Node3_action["The email is sent using EMCSEND3
service, the message buffer is
cleared, and the line counter is
reset to zero"]:::main N_SendCurrentEmailBatch_Node3 -- Yes --> N_SendCurrentEmailBatch_Node3_action N_SendCurrentEmailBatch_Node3_action --> E_SendCurrentEmailBatch N_SendCurrentEmailBatch_Node2 -- No --> N_SendCurrentEmailBatch_Node3 N_SendCurrentEmailBatch_Node4{"The system sends the email batch"}:::decision N_SendCurrentEmailBatch_Node4_action["The email is transmitted to inbox
destination using sender ID,
recipient list, subject line, and
message content through the email
service"]:::main N_SendCurrentEmailBatch_Node4 -- Yes --> N_SendCurrentEmailBatch_Node4_action N_SendCurrentEmailBatch_Node4_action --> E_SendCurrentEmailBatch N_SendCurrentEmailBatch_Node3 -- No --> N_SendCurrentEmailBatch_Node4 N_SendCurrentEmailBatch_Node5{"Email batch sending is triggered"}:::decision N_SendCurrentEmailBatch_Node5_action["The email is sent using EMCSEND3
with all configured parameters and
accumulated message lines"]:::main N_SendCurrentEmailBatch_Node5 -- Yes --> N_SendCurrentEmailBatch_Node5_action N_SendCurrentEmailBatch_Node5_action --> E_SendCurrentEmailBatch N_SendCurrentEmailBatch_Node4 -- No --> N_SendCurrentEmailBatch_Node5 N_SendCurrentEmailBatch_Node5 -- No --> E_SendCurrentEmailBatch
executed"}:::decision N_SendCurrentEmailBatch_Node0_action["The system shall call the email
service with all configured
parameters including sender,
recipient, subject, content, and
formatting options"]:::main N_SendCurrentEmailBatch_Node0 -- Yes --> N_SendCurrentEmailBatch_Node0_action N_SendCurrentEmailBatch_Node0_action --> E_SendCurrentEmailBatch S_SendCurrentEmailBatch --> N_SendCurrentEmailBatch_Node0 N_SendCurrentEmailBatch_Node1{"The batch size limit is reached"}:::decision N_SendCurrentEmailBatch_Node1_action["Call EMCSEND3 to send the current
email batch with all configured
parameters including sender,
recipient, subject, and message
content"]:::main N_SendCurrentEmailBatch_Node1 -- Yes --> N_SendCurrentEmailBatch_Node1_action N_SendCurrentEmailBatch_Node1_action --> E_SendCurrentEmailBatch N_SendCurrentEmailBatch_Node0 -- No --> N_SendCurrentEmailBatch_Node1 N_SendCurrentEmailBatch_Node2{"Sending the current email batch
using EMCSEND3"}:::decision N_SendCurrentEmailBatch_Node2_action["If send fails, redirect to error
notification addresses AEI9999 and
OM01247, otherwise continue
processing"]:::main N_SendCurrentEmailBatch_Node2 -- Yes --> N_SendCurrentEmailBatch_Node2_action N_SendCurrentEmailBatch_Node2_action --> E_SendCurrentEmailBatch N_SendCurrentEmailBatch_Node1 -- No --> N_SendCurrentEmailBatch_Node2 N_SendCurrentEmailBatch_Node3{"The batch size limit is reached"}:::decision N_SendCurrentEmailBatch_Node3_action["The email is sent using EMCSEND3
service, the message buffer is
cleared, and the line counter is
reset to zero"]:::main N_SendCurrentEmailBatch_Node3 -- Yes --> N_SendCurrentEmailBatch_Node3_action N_SendCurrentEmailBatch_Node3_action --> E_SendCurrentEmailBatch N_SendCurrentEmailBatch_Node2 -- No --> N_SendCurrentEmailBatch_Node3 N_SendCurrentEmailBatch_Node4{"The system sends the email batch"}:::decision N_SendCurrentEmailBatch_Node4_action["The email is transmitted to inbox
destination using sender ID,
recipient list, subject line, and
message content through the email
service"]:::main N_SendCurrentEmailBatch_Node4 -- Yes --> N_SendCurrentEmailBatch_Node4_action N_SendCurrentEmailBatch_Node4_action --> E_SendCurrentEmailBatch N_SendCurrentEmailBatch_Node3 -- No --> N_SendCurrentEmailBatch_Node4 N_SendCurrentEmailBatch_Node5{"Email batch sending is triggered"}:::decision N_SendCurrentEmailBatch_Node5_action["The email is sent using EMCSEND3
with all configured parameters and
accumulated message lines"]:::main N_SendCurrentEmailBatch_Node5 -- Yes --> N_SendCurrentEmailBatch_Node5_action N_SendCurrentEmailBatch_Node5_action --> E_SendCurrentEmailBatch N_SendCurrentEmailBatch_Node4 -- No --> N_SendCurrentEmailBatch_Node5 N_SendCurrentEmailBatch_Node5 -- No --> E_SendCurrentEmailBatch
File: GCX003.cbl
GIVEN:
An email message is ready for transmission with proper headers and content
WHEN:
The email send operation is executed
THEN:
The system shall call the email service with all configured parameters including sender, recipient, subject, content, and formatting options
File: GCX003.cbl
GIVEN:
The email message buffer contains 699 or more lines
WHEN:
The batch size limit is reached
THEN:
Call EMCSEND3 to send the current email batch with all configured parameters including sender, recipient, subject, and message content
File: GCX003.cbl
GIVEN:
Email content has reached the 699 line limit
WHEN:
Sending the current email batch using EMCSEND3
THEN:
- If send fails, redirect to error notification addresses aei9999
- Om01247, otherwise continue processing
File: GCX003.cbl
GIVEN:
An email message buffer contains 699 or more lines of report data
WHEN:
The batch size limit is reached
THEN:
The email is sent using EMCSEND3 service, the message buffer is cleared, and the line counter is reset to zero
File: GCX003.cbl
GIVEN:
Email content is prepared with recipients, subject, and message text
WHEN:
The system sends the email batch
THEN:
The email is transmitted to inbox destination using sender ID, recipient list, subject line, and message content through the email service
File: GCX003.cbl
GIVEN:
An email batch is ready for transmission with accumulated report lines
WHEN:
Email batch sending is triggered
THEN:
- The email is sent using emcsend3 with all configured parameters
- Accumulated message lines
β Consolidated Acceptance Criteria
- If the transmission result → the system shall check the email return status flag to determine if the transmission was successful
- The email return status is evaluated → if the email return status is not successful, trigger error handling process
- The system checks the email delivery status → if the email delivery fails, the system should trigger an abend condition, otherwise it should purge the email transaction and continue processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EmailSendSuccessful(["Start Step"])
E_EmailSendSuccessful(["End Step"])
N_EmailSendSuccessful_Node0{"The system evaluates the
transmission result"}:::decision N_EmailSendSuccessful_Node0_action["The system shall check the email
return status flag to determine if
the transmission was successful"]:::main N_EmailSendSuccessful_Node0 -- Yes --> N_EmailSendSuccessful_Node0_action N_EmailSendSuccessful_Node0_action --> E_EmailSendSuccessful S_EmailSendSuccessful --> N_EmailSendSuccessful_Node0 N_EmailSendSuccessful_Node1{"The email return status is
evaluated"}:::decision N_EmailSendSuccessful_Node1_action["If the email return status is not
successful, trigger error handling
process"]:::main N_EmailSendSuccessful_Node1 -- Yes --> N_EmailSendSuccessful_Node1_action N_EmailSendSuccessful_Node1_action --> E_EmailSendSuccessful N_EmailSendSuccessful_Node0 -- No --> N_EmailSendSuccessful_Node1 N_EmailSendSuccessful_Node2{"The system checks the email
delivery status"}:::decision N_EmailSendSuccessful_Node2_action["If the email delivery fails, the
system should trigger an abend
condition, otherwise it should purge
the email transaction and continue
processing"]:::exclusion N_EmailSendSuccessful_Node2 -- Yes -->|Alternative| N_EmailSendSuccessful_Node2_action N_EmailSendSuccessful_Node2_action --> E_EmailSendSuccessful N_EmailSendSuccessful_Node1 -- No --> N_EmailSendSuccessful_Node2 N_EmailSendSuccessful_Node2 -- No --> E_EmailSendSuccessful
transmission result"}:::decision N_EmailSendSuccessful_Node0_action["The system shall check the email
return status flag to determine if
the transmission was successful"]:::main N_EmailSendSuccessful_Node0 -- Yes --> N_EmailSendSuccessful_Node0_action N_EmailSendSuccessful_Node0_action --> E_EmailSendSuccessful S_EmailSendSuccessful --> N_EmailSendSuccessful_Node0 N_EmailSendSuccessful_Node1{"The email return status is
evaluated"}:::decision N_EmailSendSuccessful_Node1_action["If the email return status is not
successful, trigger error handling
process"]:::main N_EmailSendSuccessful_Node1 -- Yes --> N_EmailSendSuccessful_Node1_action N_EmailSendSuccessful_Node1_action --> E_EmailSendSuccessful N_EmailSendSuccessful_Node0 -- No --> N_EmailSendSuccessful_Node1 N_EmailSendSuccessful_Node2{"The system checks the email
delivery status"}:::decision N_EmailSendSuccessful_Node2_action["If the email delivery fails, the
system should trigger an abend
condition, otherwise it should purge
the email transaction and continue
processing"]:::exclusion N_EmailSendSuccessful_Node2 -- Yes -->|Alternative| N_EmailSendSuccessful_Node2_action N_EmailSendSuccessful_Node2_action --> E_EmailSendSuccessful N_EmailSendSuccessful_Node1 -- No --> N_EmailSendSuccessful_Node2 N_EmailSendSuccessful_Node2 -- No --> E_EmailSendSuccessful
File: GCX003.cbl
GIVEN:
An email transmission attempt has been completed
WHEN:
The system evaluates the transmission result
THEN:
The system shall check the email return status flag to determine if the transmission was successful
File: GCX003.cbl
GIVEN:
An email send operation has been attempted
WHEN:
The email return status is evaluated
THEN:
If the email return status is not successful, trigger error handling process
File: GCX003.cbl
GIVEN:
An error notification email has been sent to the support team
WHEN:
The system checks the email delivery status
THEN:
- If the email delivery fails, the system should trigger an abend condition, otherwise it should purge the email transaction
- Continue processing
β Consolidated Acceptance Criteria
- The failure handling process is initiated → the system shall clear the recipient usercode field and prepare alternative recipient addresses for error notification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleEmailFailure(["Start Step"])
E_HandleEmailFailure(["End Step"])
N_HandleEmailFailure_Node0{"The failure handling process is
initiated"}:::decision N_HandleEmailFailure_Node0_action["The system shall clear the
recipient usercode field and prepare
alternative recipient addresses for
error notification"]:::main N_HandleEmailFailure_Node0 -- Yes --> N_HandleEmailFailure_Node0_action N_HandleEmailFailure_Node0_action --> E_HandleEmailFailure S_HandleEmailFailure --> N_HandleEmailFailure_Node0 N_HandleEmailFailure_Node0 -- No --> E_HandleEmailFailure
initiated"}:::decision N_HandleEmailFailure_Node0_action["The system shall clear the
recipient usercode field and prepare
alternative recipient addresses for
error notification"]:::main N_HandleEmailFailure_Node0 -- Yes --> N_HandleEmailFailure_Node0_action N_HandleEmailFailure_Node0_action --> E_HandleEmailFailure S_HandleEmailFailure --> N_HandleEmailFailure_Node0 N_HandleEmailFailure_Node0 -- No --> E_HandleEmailFailure
File: GCX003.cbl
GIVEN:
An email transmission has failed
WHEN:
The failure handling process is initiated
THEN:
- The system shall clear the recipient usercode field
- Prepare alternative recipient addresses for error notification
β Consolidated Acceptance Criteria
- Error notification is sent to support → the system shall set AEI9999 as the first recipient, OM01247 as the second recipient, and attempt to send the error notification
- Error notification needs to be sent → call EMCSEND3 to send error notification to support recipients AND if this also fails, generate system abend with message 'SEND TO FILE OF OM01247 FAILED'
- The EMCSEND3 return status indicates failure → clear recipient addresses, set error notification recipients to AEI9999 and OM01247, and attempt to send error notification
- The system detects email transmission failure → the system clears recipient list, sets AEI9999 and OM01247 as error recipients, and attempts to send error notification using the same email service
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendErrorNotificationtoSupport(["Start Step"])
E_SendErrorNotificationtoSupport(["End Step"])
N_SendErrorNotificationtoSupport_Node0{"Error notification is sent to
support"}:::decision N_SendErrorNotificationtoSupport_Node0_action["The system shall set AEI9999 as the
first recipient, OM01247 as the
second recipient, and attempt to
send the error notification"]:::exclusion N_SendErrorNotificationtoSupport_Node0 -- Yes -->|Alternative| N_SendErrorNotificationtoSupport_Node0_action N_SendErrorNotificationtoSupport_Node0_action --> E_SendErrorNotificationtoSupport S_SendErrorNotificationtoSupport --> N_SendErrorNotificationtoSupport_Node0 N_SendErrorNotificationtoSupport_Node1{"Error notification needs to be sent"}:::decision N_SendErrorNotificationtoSupport_Node1_action["Call EMCSEND3 to send error
notification to support recipients
AND if this also fails, generate
system abend with message SEND TO
FILE OF OM01247 FAILED"]:::exclusion N_SendErrorNotificationtoSupport_Node1 -- Yes -->|Alternative| N_SendErrorNotificationtoSupport_Node1_action N_SendErrorNotificationtoSupport_Node1_action --> E_SendErrorNotificationtoSupport N_SendErrorNotificationtoSupport_Node0 -- No --> N_SendErrorNotificationtoSupport_Node1 N_SendErrorNotificationtoSupport_Node2{"The EMCSEND3 return status
indicates failure"}:::decision N_SendErrorNotificationtoSupport_Node2_action["Clear recipient addresses, set
error notification recipients to
AEI9999 and OM01247, and attempt to
send error notification"]:::main N_SendErrorNotificationtoSupport_Node2 -- Yes --> N_SendErrorNotificationtoSupport_Node2_action N_SendErrorNotificationtoSupport_Node2_action --> E_SendErrorNotificationtoSupport N_SendErrorNotificationtoSupport_Node1 -- No --> N_SendErrorNotificationtoSupport_Node2 N_SendErrorNotificationtoSupport_Node3{"The system detects email
transmission failure"}:::decision N_SendErrorNotificationtoSupport_Node3_action["The system clears recipient list,
sets AEI9999 and OM01247 as error
recipients, and attempts to send
error notification using the same
email service"]:::main N_SendErrorNotificationtoSupport_Node3 -- Yes --> N_SendErrorNotificationtoSupport_Node3_action N_SendErrorNotificationtoSupport_Node3_action --> E_SendErrorNotificationtoSupport N_SendErrorNotificationtoSupport_Node2 -- No --> N_SendErrorNotificationtoSupport_Node3 N_SendErrorNotificationtoSupport_Node3 -- No --> E_SendErrorNotificationtoSupport
support"}:::decision N_SendErrorNotificationtoSupport_Node0_action["The system shall set AEI9999 as the
first recipient, OM01247 as the
second recipient, and attempt to
send the error notification"]:::exclusion N_SendErrorNotificationtoSupport_Node0 -- Yes -->|Alternative| N_SendErrorNotificationtoSupport_Node0_action N_SendErrorNotificationtoSupport_Node0_action --> E_SendErrorNotificationtoSupport S_SendErrorNotificationtoSupport --> N_SendErrorNotificationtoSupport_Node0 N_SendErrorNotificationtoSupport_Node1{"Error notification needs to be sent"}:::decision N_SendErrorNotificationtoSupport_Node1_action["Call EMCSEND3 to send error
notification to support recipients
AND if this also fails, generate
system abend with message SEND TO
FILE OF OM01247 FAILED"]:::exclusion N_SendErrorNotificationtoSupport_Node1 -- Yes -->|Alternative| N_SendErrorNotificationtoSupport_Node1_action N_SendErrorNotificationtoSupport_Node1_action --> E_SendErrorNotificationtoSupport N_SendErrorNotificationtoSupport_Node0 -- No --> N_SendErrorNotificationtoSupport_Node1 N_SendErrorNotificationtoSupport_Node2{"The EMCSEND3 return status
indicates failure"}:::decision N_SendErrorNotificationtoSupport_Node2_action["Clear recipient addresses, set
error notification recipients to
AEI9999 and OM01247, and attempt to
send error notification"]:::main N_SendErrorNotificationtoSupport_Node2 -- Yes --> N_SendErrorNotificationtoSupport_Node2_action N_SendErrorNotificationtoSupport_Node2_action --> E_SendErrorNotificationtoSupport N_SendErrorNotificationtoSupport_Node1 -- No --> N_SendErrorNotificationtoSupport_Node2 N_SendErrorNotificationtoSupport_Node3{"The system detects email
transmission failure"}:::decision N_SendErrorNotificationtoSupport_Node3_action["The system clears recipient list,
sets AEI9999 and OM01247 as error
recipients, and attempts to send
error notification using the same
email service"]:::main N_SendErrorNotificationtoSupport_Node3 -- Yes --> N_SendErrorNotificationtoSupport_Node3_action N_SendErrorNotificationtoSupport_Node3_action --> E_SendErrorNotificationtoSupport N_SendErrorNotificationtoSupport_Node2 -- No --> N_SendErrorNotificationtoSupport_Node3 N_SendErrorNotificationtoSupport_Node3 -- No --> E_SendErrorNotificationtoSupport
File: GCX003.cbl
GIVEN:
An email transmission has failed and error handling is in progress
WHEN:
Error notification is sent to support
THEN:
The system shall set AEI9999 as the first recipient, OM01247 as the second recipient, and attempt to send the error notification
File: GCX003.cbl
GIVEN:
Email send has failed and alternative recipients have been configured
WHEN:
Error notification needs to be sent
THEN:
- Call emcsend3 to send error notification to support recipients
- If this also fails, generate system abend with message 'send to file of om01247 failed'
File: GCX003.cbl
GIVEN:
Email transmission has failed
WHEN:
The EMCSEND3 return status indicates failure
THEN:
- Clear recipient addresses, set error notification recipients to aei9999
- Om01247, and attempt to send error notification
File: GCX003.cbl
GIVEN:
An AEI email send operation fails
WHEN:
The system detects email transmission failure
THEN:
- The system clears recipient list, sets aei9999
- Om01247 as error recipients, and attempts to send error notification using the same email service
β Consolidated Acceptance Criteria
- The message buffer is reset for continuation → the system shall clear the email text content and reset the line counter to zero
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ResetEmailMessageBuffer(["Start Step"])
E_ResetEmailMessageBuffer(["End Step"])
N_ResetEmailMessageBuffer_Node0{"The message buffer is reset for
continuation"}:::decision N_ResetEmailMessageBuffer_Node0_action["The system shall clear the email
text content and reset the line
counter to zero"]:::main N_ResetEmailMessageBuffer_Node0 -- Yes --> N_ResetEmailMessageBuffer_Node0_action N_ResetEmailMessageBuffer_Node0_action --> E_ResetEmailMessageBuffer S_ResetEmailMessageBuffer --> N_ResetEmailMessageBuffer_Node0 N_ResetEmailMessageBuffer_Node0 -- No --> E_ResetEmailMessageBuffer
continuation"}:::decision N_ResetEmailMessageBuffer_Node0_action["The system shall clear the email
text content and reset the line
counter to zero"]:::main N_ResetEmailMessageBuffer_Node0 -- Yes --> N_ResetEmailMessageBuffer_Node0_action N_ResetEmailMessageBuffer_Node0_action --> E_ResetEmailMessageBuffer S_ResetEmailMessageBuffer --> N_ResetEmailMessageBuffer_Node0 N_ResetEmailMessageBuffer_Node0 -- No --> E_ResetEmailMessageBuffer
File: GCX003.cbl
GIVEN:
An email batch has been sent successfully or after error handling
WHEN:
The message buffer is reset for continuation
THEN:
- The system shall clear the email text content
- Reset the line counter to zero
β Consolidated Acceptance Criteria
- Continuation headers are added → the system shall add 'CONTINUATION OF REPORT ....' as the first line and increment the line counter to 1
- The continuation header needs to be added → add 'CONTINUATION OF REPORT ....' message to the first line of the new email batch
- The system initializes the continuation email → a continuation message 'CONTINUATION OF REPORT ....' is added as the first line, followed by report detail headers, and the line counter is incremented by 3
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddContinuationHeader(["Start Step"])
E_AddContinuationHeader(["End Step"])
N_AddContinuationHeader_Node0{"Continuation headers are added"}:::decision
N_AddContinuationHeader_Node0_action["The system shall add CONTINUATION
OF REPORT .... as the first line and
increment the line counter to 1"]:::main N_AddContinuationHeader_Node0 -- Yes --> N_AddContinuationHeader_Node0_action N_AddContinuationHeader_Node0_action --> E_AddContinuationHeader S_AddContinuationHeader --> N_AddContinuationHeader_Node0 N_AddContinuationHeader_Node1{"The continuation header needs to be
added"}:::decision N_AddContinuationHeader_Node1_action["Add CONTINUATION OF REPORT ....
message to the first line of the new
email batch"]:::main N_AddContinuationHeader_Node1 -- Yes --> N_AddContinuationHeader_Node1_action N_AddContinuationHeader_Node1_action --> E_AddContinuationHeader N_AddContinuationHeader_Node0 -- No --> N_AddContinuationHeader_Node1 N_AddContinuationHeader_Node2{"The system initializes the
continuation email"}:::decision N_AddContinuationHeader_Node2_action["A continuation message CONTINUATION
OF REPORT .... is added as the first
line, followed by report detail
headers, and the line counter is
incremented by 3"]:::main N_AddContinuationHeader_Node2 -- Yes --> N_AddContinuationHeader_Node2_action N_AddContinuationHeader_Node2_action --> E_AddContinuationHeader N_AddContinuationHeader_Node1 -- No --> N_AddContinuationHeader_Node2 N_AddContinuationHeader_Node2 -- No --> E_AddContinuationHeader
OF REPORT .... as the first line and
increment the line counter to 1"]:::main N_AddContinuationHeader_Node0 -- Yes --> N_AddContinuationHeader_Node0_action N_AddContinuationHeader_Node0_action --> E_AddContinuationHeader S_AddContinuationHeader --> N_AddContinuationHeader_Node0 N_AddContinuationHeader_Node1{"The continuation header needs to be
added"}:::decision N_AddContinuationHeader_Node1_action["Add CONTINUATION OF REPORT ....
message to the first line of the new
email batch"]:::main N_AddContinuationHeader_Node1 -- Yes --> N_AddContinuationHeader_Node1_action N_AddContinuationHeader_Node1_action --> E_AddContinuationHeader N_AddContinuationHeader_Node0 -- No --> N_AddContinuationHeader_Node1 N_AddContinuationHeader_Node2{"The system initializes the
continuation email"}:::decision N_AddContinuationHeader_Node2_action["A continuation message CONTINUATION
OF REPORT .... is added as the first
line, followed by report detail
headers, and the line counter is
incremented by 3"]:::main N_AddContinuationHeader_Node2 -- Yes --> N_AddContinuationHeader_Node2_action N_AddContinuationHeader_Node2_action --> E_AddContinuationHeader N_AddContinuationHeader_Node1 -- No --> N_AddContinuationHeader_Node2 N_AddContinuationHeader_Node2 -- No --> E_AddContinuationHeader
File: GCX003.cbl
GIVEN:
A large report requires multiple email messages and a new message is being prepared
WHEN:
Continuation headers are added
THEN:
- The system shall add 'continuation of report ....' as the first line
- Increment the line counter to 1
File: GCX003.cbl
GIVEN:
A new email batch is being prepared after sending a previous batch
WHEN:
The continuation header needs to be added
THEN:
Add 'CONTINUATION OF REPORT ....' message to the first line of the new email batch
File: GCX003.cbl
GIVEN:
A new email batch is being prepared after sending a previous batch
WHEN:
The system initializes the continuation email
THEN:
A continuation message 'CONTINUATION OF REPORT ....' is added as the first line, followed by report detail headers, and the line counter is incremented by 3
β Consolidated Acceptance Criteria
- Report headers are added to the new email → the system shall add the detail header lines as the second and third lines and increment the line counter to 3
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddReportHeaderstoNewEmail(["Start Step"])
E_AddReportHeaderstoNewEmail(["End Step"])
N_AddReportHeaderstoNewEmail_Node0{"Report headers are added to the new
email"}:::decision N_AddReportHeaderstoNewEmail_Node0_action["The system shall add the detail
header lines as the second and third
lines and increment the line counter
to 3"]:::main N_AddReportHeaderstoNewEmail_Node0 -- Yes --> N_AddReportHeaderstoNewEmail_Node0_action N_AddReportHeaderstoNewEmail_Node0_action --> E_AddReportHeaderstoNewEmail S_AddReportHeaderstoNewEmail --> N_AddReportHeaderstoNewEmail_Node0 N_AddReportHeaderstoNewEmail_Node0 -- No --> E_AddReportHeaderstoNewEmail
email"}:::decision N_AddReportHeaderstoNewEmail_Node0_action["The system shall add the detail
header lines as the second and third
lines and increment the line counter
to 3"]:::main N_AddReportHeaderstoNewEmail_Node0 -- Yes --> N_AddReportHeaderstoNewEmail_Node0_action N_AddReportHeaderstoNewEmail_Node0_action --> E_AddReportHeaderstoNewEmail S_AddReportHeaderstoNewEmail --> N_AddReportHeaderstoNewEmail_Node0 N_AddReportHeaderstoNewEmail_Node0 -- No --> E_AddReportHeaderstoNewEmail
File: GCX003.cbl
GIVEN:
A continuation email is being prepared with continuation header already added
WHEN:
Report headers are added to the new email
THEN:
- The system shall add the detail header lines as the second
- Third lines
- Increment the line counter to 3
β Consolidated Acceptance Criteria
- Success logging is performed → the system shall record the successful transmission without generating error messages
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEmailSuccess(["Start Step"])
E_LogEmailSuccess(["End Step"])
N_LogEmailSuccess_Node0{"Success logging is performed"}:::decision
N_LogEmailSuccess_Node0_action["The system shall record the
successful transmission without
generating error messages"]:::main N_LogEmailSuccess_Node0 -- Yes --> N_LogEmailSuccess_Node0_action N_LogEmailSuccess_Node0_action --> E_LogEmailSuccess S_LogEmailSuccess --> N_LogEmailSuccess_Node0 N_LogEmailSuccess_Node0 -- No --> E_LogEmailSuccess
successful transmission without
generating error messages"]:::main N_LogEmailSuccess_Node0 -- Yes --> N_LogEmailSuccess_Node0_action N_LogEmailSuccess_Node0_action --> E_LogEmailSuccess S_LogEmailSuccess --> N_LogEmailSuccess_Node0 N_LogEmailSuccess_Node0 -- No --> E_LogEmailSuccess
File: GCX003.cbl
GIVEN:
An email has been successfully transmitted to the customs system
WHEN:
Success logging is performed
THEN:
The system shall record the successful transmission without generating error messages
β Consolidated Acceptance Criteria
- The line is processed for inclusion → the report line is moved to the email text message line at the current line subscription position AND the line subscription counter is incremented by 1 AND the more email flag is set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddReportLinetoEmailMessage(["Start Step"])
E_AddReportLinetoEmailMessage(["End Step"])
N_AddReportLinetoEmailMessage_Node0{"The line is processed for inclusion"}:::decision
N_AddReportLinetoEmailMessage_Node0_action["The report line is moved to the
email text message line at the
current line subscription position
AND the line subscription counter is
incremented by 1 AND the more email
flag is set to true"]:::main N_AddReportLinetoEmailMessage_Node0 -- Yes --> N_AddReportLinetoEmailMessage_Node0_action N_AddReportLinetoEmailMessage_Node0_action --> E_AddReportLinetoEmailMessage S_AddReportLinetoEmailMessage --> N_AddReportLinetoEmailMessage_Node0 N_AddReportLinetoEmailMessage_Node0 -- No --> E_AddReportLinetoEmailMessage
email text message line at the
current line subscription position
AND the line subscription counter is
incremented by 1 AND the more email
flag is set to true"]:::main N_AddReportLinetoEmailMessage_Node0 -- Yes --> N_AddReportLinetoEmailMessage_Node0_action N_AddReportLinetoEmailMessage_Node0_action --> E_AddReportLinetoEmailMessage S_AddReportLinetoEmailMessage --> N_AddReportLinetoEmailMessage_Node0 N_AddReportLinetoEmailMessage_Node0 -- No --> E_AddReportLinetoEmailMessage
File: GCX003.cbl
GIVEN:
A report line exists and needs to be added to the email
WHEN:
The line is processed for inclusion
THEN:
- The report line is moved to the email text message line at the current line subscription position
- The line subscription counter is incremented by 1
- The more email flag is set to true
β Consolidated Acceptance Criteria
- The line counter needs to be updated → add 3 to the line subscription counter to account for the added header lines
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Add3toLineCounter(["Start Step"])
E_Add3toLineCounter(["End Step"])
N_Add3toLineCounter_Node0{"The line counter needs to be
updated"}:::decision N_Add3toLineCounter_Node0_action["Add 3 to the line subscription
counter to account for the added
header lines"]:::main N_Add3toLineCounter_Node0 -- Yes --> N_Add3toLineCounter_Node0_action N_Add3toLineCounter_Node0_action --> E_Add3toLineCounter S_Add3toLineCounter --> N_Add3toLineCounter_Node0 N_Add3toLineCounter_Node0 -- No --> E_Add3toLineCounter
updated"}:::decision N_Add3toLineCounter_Node0_action["Add 3 to the line subscription
counter to account for the added
header lines"]:::main N_Add3toLineCounter_Node0 -- Yes --> N_Add3toLineCounter_Node0_action N_Add3toLineCounter_Node0_action --> E_Add3toLineCounter S_Add3toLineCounter --> N_Add3toLineCounter_Node0 N_Add3toLineCounter_Node0 -- No --> E_Add3toLineCounter
File: GCX003.cbl
GIVEN:
Continuation header and detail headers have been added to the email batch
WHEN:
The line counter needs to be updated
THEN:
Add 3 to the line subscription counter to account for the added header lines
β Consolidated Acceptance Criteria
- Error handling is triggered → clear the current recipient usercode AND set AEI9999 as the first recipient usercode AND set OM01247 as the second recipient usercode
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleEmailSendError(["Start Step"])
E_HandleEmailSendError(["End Step"])
N_HandleEmailSendError_Node0{"Error handling is triggered"}:::decision
N_HandleEmailSendError_Node0_action["Clear the current recipient
usercode AND set AEI9999 as the
first recipient usercode AND set
OM01247 as the second recipient
usercode"]:::exclusion N_HandleEmailSendError_Node0 -- Yes -->|Alternative| N_HandleEmailSendError_Node0_action N_HandleEmailSendError_Node0_action --> E_HandleEmailSendError S_HandleEmailSendError --> N_HandleEmailSendError_Node0 N_HandleEmailSendError_Node0 -- No --> E_HandleEmailSendError
usercode AND set AEI9999 as the
first recipient usercode AND set
OM01247 as the second recipient
usercode"]:::exclusion N_HandleEmailSendError_Node0 -- Yes -->|Alternative| N_HandleEmailSendError_Node0_action N_HandleEmailSendError_Node0_action --> E_HandleEmailSendError S_HandleEmailSendError --> N_HandleEmailSendError_Node0 N_HandleEmailSendError_Node0 -- No --> E_HandleEmailSendError
File: GCX003.cbl
GIVEN:
An email send operation has failed
WHEN:
Error handling is triggered
THEN:
- Clear the current recipient usercode
- Set aei9999 as the first recipient usercode
- Set om01247 as the second recipient usercode
β Consolidated Acceptance Criteria
- The system checks if AEI train send processing is enabled → aEI send report processing is triggered if AEI train send is set to YES
- The request type equals the AEI request type constant → set AEI train send flag to YES, otherwise set to NO
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsAEITrainSendRequest(["Start Step"])
E_IsAEITrainSendRequest(["End Step"])
N_IsAEITrainSendRequest_Node0{"The system checks if AEI train send
processing is enabled"}:::decision N_IsAEITrainSendRequest_Node0_action["AEI send report processing is
triggered if AEI train send is set
to YES"]:::main N_IsAEITrainSendRequest_Node0 -- Yes --> N_IsAEITrainSendRequest_Node0_action N_IsAEITrainSendRequest_Node0_action --> E_IsAEITrainSendRequest S_IsAEITrainSendRequest --> N_IsAEITrainSendRequest_Node0 N_IsAEITrainSendRequest_Node1{"The request type equals the AEI
request type constant"}:::decision N_IsAEITrainSendRequest_Node1_action["Set AEI train send flag to YES,
otherwise set to NO"]:::main N_IsAEITrainSendRequest_Node1 -- Yes --> N_IsAEITrainSendRequest_Node1_action N_IsAEITrainSendRequest_Node1_action --> E_IsAEITrainSendRequest N_IsAEITrainSendRequest_Node0 -- No --> N_IsAEITrainSendRequest_Node1 N_IsAEITrainSendRequest_Node1 -- No --> E_IsAEITrainSendRequest
processing is enabled"}:::decision N_IsAEITrainSendRequest_Node0_action["AEI send report processing is
triggered if AEI train send is set
to YES"]:::main N_IsAEITrainSendRequest_Node0 -- Yes --> N_IsAEITrainSendRequest_Node0_action N_IsAEITrainSendRequest_Node0_action --> E_IsAEITrainSendRequest S_IsAEITrainSendRequest --> N_IsAEITrainSendRequest_Node0 N_IsAEITrainSendRequest_Node1{"The request type equals the AEI
request type constant"}:::decision N_IsAEITrainSendRequest_Node1_action["Set AEI train send flag to YES,
otherwise set to NO"]:::main N_IsAEITrainSendRequest_Node1 -- Yes --> N_IsAEITrainSendRequest_Node1_action N_IsAEITrainSendRequest_Node1_action --> E_IsAEITrainSendRequest N_IsAEITrainSendRequest_Node0 -- No --> N_IsAEITrainSendRequest_Node1 N_IsAEITrainSendRequest_Node1 -- No --> E_IsAEITrainSendRequest
File: GCX003.cbl
GIVEN:
A train processing request is being evaluated
WHEN:
The system checks if AEI train send processing is enabled
THEN:
AEI send report processing is triggered if AEI train send is set to YES
File: GCX003.cbl
GIVEN:
A train request is being processed
WHEN:
The request type equals the AEI request type constant
THEN:
Set AEI train send flag to YES, otherwise set to NO
β Consolidated Acceptance Criteria
- The system queries the customer email table using train origin as the key → email addresses are retrieved for notification distribution or default addresses are used if none found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveEmailDistributionList(["Start Step"])
E_RetrieveEmailDistributionList(["End Step"])
N_RetrieveEmailDistributionList_Node0{"The system queries the customer
email table using train origin as
the key"}:::decision N_RetrieveEmailDistributionList_Node0_action["Email addresses are retrieved for
notification distribution or default
addresses are used if none found"]:::main N_RetrieveEmailDistributionList_Node0 -- Yes --> N_RetrieveEmailDistributionList_Node0_action N_RetrieveEmailDistributionList_Node0_action --> E_RetrieveEmailDistributionList S_RetrieveEmailDistributionList --> N_RetrieveEmailDistributionList_Node0 N_RetrieveEmailDistributionList_Node0 -- No --> E_RetrieveEmailDistributionList
email table using train origin as
the key"}:::decision N_RetrieveEmailDistributionList_Node0_action["Email addresses are retrieved for
notification distribution or default
addresses are used if none found"]:::main N_RetrieveEmailDistributionList_Node0 -- Yes --> N_RetrieveEmailDistributionList_Node0_action N_RetrieveEmailDistributionList_Node0_action --> E_RetrieveEmailDistributionList S_RetrieveEmailDistributionList --> N_RetrieveEmailDistributionList_Node0 N_RetrieveEmailDistributionList_Node0 -- No --> E_RetrieveEmailDistributionList
File: GCX003.cbl
GIVEN:
An AEI train send request requires email notification
WHEN:
The system queries the customer email table using train origin as the key
THEN:
Email addresses are retrieved for notification distribution or default addresses are used if none found
β Consolidated Acceptance Criteria
- If if there are errors in the report → email subject is set to 'US TRAIN [train_id] NOT SENT AT [origin]' for errors or 'US TRAIN [train_id] SENT AT [origin]' for successful processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateEmailSubjectLine(["Start Step"])
E_GenerateEmailSubjectLine(["End Step"])
N_GenerateEmailSubjectLine_Node0{"The system evaluates if there are
errors in the report"}:::decision N_GenerateEmailSubjectLine_Node0_action["Email subject is set to US TRAIN
trainid NOT SENT AT origin for
errors or US TRAIN trainid SENT AT
origin for successful processing"]:::main N_GenerateEmailSubjectLine_Node0 -- Yes --> N_GenerateEmailSubjectLine_Node0_action N_GenerateEmailSubjectLine_Node0_action --> E_GenerateEmailSubjectLine S_GenerateEmailSubjectLine --> N_GenerateEmailSubjectLine_Node0 N_GenerateEmailSubjectLine_Node0 -- No --> E_GenerateEmailSubjectLine
errors in the report"}:::decision N_GenerateEmailSubjectLine_Node0_action["Email subject is set to US TRAIN
trainid NOT SENT AT origin for
errors or US TRAIN trainid SENT AT
origin for successful processing"]:::main N_GenerateEmailSubjectLine_Node0 -- Yes --> N_GenerateEmailSubjectLine_Node0_action N_GenerateEmailSubjectLine_Node0_action --> E_GenerateEmailSubjectLine S_GenerateEmailSubjectLine --> N_GenerateEmailSubjectLine_Node0 N_GenerateEmailSubjectLine_Node0 -- No --> E_GenerateEmailSubjectLine
File: GCX003.cbl
GIVEN:
An AEI email notification needs to be sent
WHEN:
The system evaluates if there are errors in the report
THEN:
Email subject is set to 'US TRAIN [train_id] NOT SENT AT [origin]' for errors or 'US TRAIN [train_id] SENT AT [origin]' for successful processing
β Consolidated Acceptance Criteria
- The system cannot find specific email recipients for the train origin → default Merlin ID is assigned as both sender and recipient for the email notification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseDefaultRecipients(["Start Step"])
E_UseDefaultRecipients(["End Step"])
N_UseDefaultRecipients_Node0{"The system cannot find specific
email recipients for the train
origin"}:::decision N_UseDefaultRecipients_Node0_action["Default Merlin ID is assigned as
both sender and recipient for the
email notification"]:::main N_UseDefaultRecipients_Node0 -- Yes --> N_UseDefaultRecipients_Node0_action N_UseDefaultRecipients_Node0_action --> E_UseDefaultRecipients S_UseDefaultRecipients --> N_UseDefaultRecipients_Node0 N_UseDefaultRecipients_Node0 -- No --> E_UseDefaultRecipients
email recipients for the train
origin"}:::decision N_UseDefaultRecipients_Node0_action["Default Merlin ID is assigned as
both sender and recipient for the
email notification"]:::main N_UseDefaultRecipients_Node0 -- Yes --> N_UseDefaultRecipients_Node0_action N_UseDefaultRecipients_Node0_action --> E_UseDefaultRecipients S_UseDefaultRecipients --> N_UseDefaultRecipients_Node0 N_UseDefaultRecipients_Node0 -- No --> E_UseDefaultRecipients
File: GCX003.cbl
GIVEN:
AEI email distribution list retrieval returns no entries or encounters an error
WHEN:
The system cannot find specific email recipients for the train origin
THEN:
- Default merlin id is assigned as both sender
- Recipient for the email notification
β Consolidated Acceptance Criteria
- The report exceeds 699 lines → the report is split into multiple emails with continuation headers and the current email is sent before starting a new one
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReportSizeExceedsLimit(["Start Step"])
E_ReportSizeExceedsLimit(["End Step"])
N_ReportSizeExceedsLimit_Node0{"The report exceeds 699 lines"}:::decision
N_ReportSizeExceedsLimit_Node0_action["The report is split into multiple
emails with continuation headers and
the current email is sent before
starting a new one"]:::main N_ReportSizeExceedsLimit_Node0 -- Yes --> N_ReportSizeExceedsLimit_Node0_action N_ReportSizeExceedsLimit_Node0_action --> E_ReportSizeExceedsLimit S_ReportSizeExceedsLimit --> N_ReportSizeExceedsLimit_Node0 N_ReportSizeExceedsLimit_Node0 -- No --> E_ReportSizeExceedsLimit
emails with continuation headers and
the current email is sent before
starting a new one"]:::main N_ReportSizeExceedsLimit_Node0 -- Yes --> N_ReportSizeExceedsLimit_Node0_action N_ReportSizeExceedsLimit_Node0_action --> E_ReportSizeExceedsLimit S_ReportSizeExceedsLimit --> N_ReportSizeExceedsLimit_Node0 N_ReportSizeExceedsLimit_Node0 -- No --> E_ReportSizeExceedsLimit
File: GCX003.cbl
GIVEN:
An AEI report is being prepared for email transmission
WHEN:
The report exceeds 699 lines
THEN:
- The report is split into multiple emails with continuation headers
- The current email is sent before starting a new one
β Consolidated Acceptance Criteria
- The email send operation returns an unsuccessful status → an error notification is sent to AEI9999 and OM01247 support addresses, and if that also fails, the system abends with an error message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleEmailSendErrors(["Start Step"])
E_HandleEmailSendErrors(["End Step"])
N_HandleEmailSendErrors_Node0{"The email send operation returns an
unsuccessful status"}:::decision N_HandleEmailSendErrors_Node0_action["An error notification is sent to
AEI9999 and OM01247 support
addresses, and if that also fails,
the system abends with an error
message"]:::main N_HandleEmailSendErrors_Node0 -- Yes --> N_HandleEmailSendErrors_Node0_action N_HandleEmailSendErrors_Node0_action --> E_HandleEmailSendErrors S_HandleEmailSendErrors --> N_HandleEmailSendErrors_Node0 N_HandleEmailSendErrors_Node0 -- No --> E_HandleEmailSendErrors
unsuccessful status"}:::decision N_HandleEmailSendErrors_Node0_action["An error notification is sent to
AEI9999 and OM01247 support
addresses, and if that also fails,
the system abends with an error
message"]:::main N_HandleEmailSendErrors_Node0 -- Yes --> N_HandleEmailSendErrors_Node0_action N_HandleEmailSendErrors_Node0_action --> E_HandleEmailSendErrors S_HandleEmailSendErrors --> N_HandleEmailSendErrors_Node0 N_HandleEmailSendErrors_Node0 -- No --> E_HandleEmailSendErrors
File: GCX003.cbl
GIVEN:
An AEI email transmission fails
WHEN:
The email send operation returns an unsuccessful status
THEN:
- An error notification is sent to aei9999
- Om01247 support addresses, and if that also fails, the system abends with an error message
β Consolidated Acceptance Criteria
- The system checks if an alternate terminal is configured for the user → the alternate terminal is used if available, otherwise the original terminal from the request is used
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineDestinationTerminal(["Start Step"])
E_DetermineDestinationTerminal(["End Step"])
N_DetermineDestinationTerminal_Node0{"The system checks if an alternate
terminal is configured for the user"}:::decision N_DetermineDestinationTerminal_Node0_action["The alternate terminal is used if
available, otherwise the original
terminal from the request is used"]:::main N_DetermineDestinationTerminal_Node0 -- Yes --> N_DetermineDestinationTerminal_Node0_action N_DetermineDestinationTerminal_Node0_action --> E_DetermineDestinationTerminal S_DetermineDestinationTerminal --> N_DetermineDestinationTerminal_Node0 N_DetermineDestinationTerminal_Node0 -- No --> E_DetermineDestinationTerminal
terminal is configured for the user"}:::decision N_DetermineDestinationTerminal_Node0_action["The alternate terminal is used if
available, otherwise the original
terminal from the request is used"]:::main N_DetermineDestinationTerminal_Node0 -- Yes --> N_DetermineDestinationTerminal_Node0_action N_DetermineDestinationTerminal_Node0_action --> E_DetermineDestinationTerminal S_DetermineDestinationTerminal --> N_DetermineDestinationTerminal_Node0 N_DetermineDestinationTerminal_Node0 -- No --> E_DetermineDestinationTerminal
File: GCX003.cbl
GIVEN:
A report needs to be sent to the originating user
WHEN:
The system checks if an alternate terminal is configured for the user
THEN:
The alternate terminal is used if available, otherwise the original terminal from the request is used
β Consolidated Acceptance Criteria
- If the request action type and error status → report type is set to TRAIN-ERROR for error conditions, TRAIN-SENT for successful send actions, or TRAIN-REPORT for report-only actions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReportTypeBasedonAction(["Start Step"])
E_SetReportTypeBasedonAction(["End Step"])
N_SetReportTypeBasedonAction_Node0{"The system evaluates the request
action type and error status"}:::decision N_SetReportTypeBasedonAction_Node0_action["Report type is set to TRAIN-ERROR
for error conditions, TRAIN-SENT for
successful send actions, or
TRAIN-REPORT for report-only actions"]:::exclusion N_SetReportTypeBasedonAction_Node0 -- Yes -->|Alternative| N_SetReportTypeBasedonAction_Node0_action N_SetReportTypeBasedonAction_Node0_action --> E_SetReportTypeBasedonAction S_SetReportTypeBasedonAction --> N_SetReportTypeBasedonAction_Node0 N_SetReportTypeBasedonAction_Node0 -- No --> E_SetReportTypeBasedonAction
action type and error status"}:::decision N_SetReportTypeBasedonAction_Node0_action["Report type is set to TRAIN-ERROR
for error conditions, TRAIN-SENT for
successful send actions, or
TRAIN-REPORT for report-only actions"]:::exclusion N_SetReportTypeBasedonAction_Node0 -- Yes -->|Alternative| N_SetReportTypeBasedonAction_Node0_action N_SetReportTypeBasedonAction_Node0_action --> E_SetReportTypeBasedonAction S_SetReportTypeBasedonAction --> N_SetReportTypeBasedonAction_Node0 N_SetReportTypeBasedonAction_Node0 -- No --> E_SetReportTypeBasedonAction
File: GCX003.cbl
GIVEN:
A report is being prepared for distribution
WHEN:
- The system evaluates the request action type
- Error status
THEN:
Report type is set to TRAIN-ERROR for error conditions, TRAIN-SENT for successful send actions, or TRAIN-REPORT for report-only actions
β Consolidated Acceptance Criteria
- If if the report should show all details or selective content → all report lines are sent for comprehensive reports, or selective content is sent based on warning conditions
- The system checks the report display mode setting → the system sends all report lines if set to all report mode, otherwise sends summary based on warning status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReportDisplayMode(["Start Step"])
E_ReportDisplayMode(["End Step"])
N_ReportDisplayMode_Node0{"The system evaluates if the report
should show all details or selective
content"}:::decision N_ReportDisplayMode_Node0_action["All report lines are sent for
comprehensive reports, or selective
content is sent based on warning
conditions"]:::main N_ReportDisplayMode_Node0 -- Yes --> N_ReportDisplayMode_Node0_action N_ReportDisplayMode_Node0_action --> E_ReportDisplayMode S_ReportDisplayMode --> N_ReportDisplayMode_Node0 N_ReportDisplayMode_Node1{"The system checks the report
display mode setting"}:::decision N_ReportDisplayMode_Node1_action["The system sends all report lines
if set to all report mode, otherwise
sends summary based on warning
status"]:::main N_ReportDisplayMode_Node1 -- Yes --> N_ReportDisplayMode_Node1_action N_ReportDisplayMode_Node1_action --> E_ReportDisplayMode N_ReportDisplayMode_Node0 -- No --> N_ReportDisplayMode_Node1 N_ReportDisplayMode_Node1 -- No --> E_ReportDisplayMode
should show all details or selective
content"}:::decision N_ReportDisplayMode_Node0_action["All report lines are sent for
comprehensive reports, or selective
content is sent based on warning
conditions"]:::main N_ReportDisplayMode_Node0 -- Yes --> N_ReportDisplayMode_Node0_action N_ReportDisplayMode_Node0_action --> E_ReportDisplayMode S_ReportDisplayMode --> N_ReportDisplayMode_Node0 N_ReportDisplayMode_Node1{"The system checks the report
display mode setting"}:::decision N_ReportDisplayMode_Node1_action["The system sends all report lines
if set to all report mode, otherwise
sends summary based on warning
status"]:::main N_ReportDisplayMode_Node1 -- Yes --> N_ReportDisplayMode_Node1_action N_ReportDisplayMode_Node1_action --> E_ReportDisplayMode N_ReportDisplayMode_Node0 -- No --> N_ReportDisplayMode_Node1 N_ReportDisplayMode_Node1 -- No --> E_ReportDisplayMode
File: GCX003.cbl
GIVEN:
A report is ready for transmission to the originator
WHEN:
The system evaluates if the report should show all details or selective content
THEN:
All report lines are sent for comprehensive reports, or selective content is sent based on warning conditions
File: GCX003.cbl
GIVEN:
A report is ready for transmission to the originator
WHEN:
The system checks the report display mode setting
THEN:
The system sends all report lines if set to all report mode, otherwise sends summary based on warning status
β Consolidated Acceptance Criteria
- The system checks for warning conditions in the report → only header lines are sent if no warnings exist, otherwise header and warning lines from the equipment section are included
- The system checks if the report contains warning messages → the system sends only header lines if no warnings exist, otherwise sends header plus all warning message lines
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HasWarnings(["Start Step"])
E_HasWarnings(["End Step"])
N_HasWarnings_Node0{"The system checks for warning
conditions in the report"}:::decision N_HasWarnings_Node0_action["Only header lines are sent if no
warnings exist, otherwise header and
warning lines from the equipment
section are included"]:::main N_HasWarnings_Node0 -- Yes --> N_HasWarnings_Node0_action N_HasWarnings_Node0_action --> E_HasWarnings S_HasWarnings --> N_HasWarnings_Node0 N_HasWarnings_Node1{"The system checks if the report
contains warning messages"}:::decision N_HasWarnings_Node1_action["The system sends only header lines
if no warnings exist, otherwise
sends header plus all warning
message lines"]:::main N_HasWarnings_Node1 -- Yes --> N_HasWarnings_Node1_action N_HasWarnings_Node1_action --> E_HasWarnings N_HasWarnings_Node0 -- No --> N_HasWarnings_Node1 N_HasWarnings_Node1 -- No --> E_HasWarnings
conditions in the report"}:::decision N_HasWarnings_Node0_action["Only header lines are sent if no
warnings exist, otherwise header and
warning lines from the equipment
section are included"]:::main N_HasWarnings_Node0 -- Yes --> N_HasWarnings_Node0_action N_HasWarnings_Node0_action --> E_HasWarnings S_HasWarnings --> N_HasWarnings_Node0 N_HasWarnings_Node1{"The system checks if the report
contains warning messages"}:::decision N_HasWarnings_Node1_action["The system sends only header lines
if no warnings exist, otherwise
sends header plus all warning
message lines"]:::main N_HasWarnings_Node1 -- Yes --> N_HasWarnings_Node1_action N_HasWarnings_Node1_action --> E_HasWarnings N_HasWarnings_Node0 -- No --> N_HasWarnings_Node1 N_HasWarnings_Node1 -- No --> E_HasWarnings
File: GCX003.cbl
GIVEN:
A selective report display mode is active
WHEN:
The system checks for warning conditions in the report
THEN:
- Only header lines are sent if no warnings exist, otherwise header
- Warning lines from the equipment section are included
File: GCX003.cbl
GIVEN:
A summary report mode is selected and report content needs to be determined
WHEN:
The system checks if the report contains warning messages
THEN:
The system sends only header lines if no warnings exist, otherwise sends header plus all warning message lines
β Consolidated Acceptance Criteria
- The system calls AECWRKTB with train origin as record key and CUSEMAIL as record type → return the email distribution configuration for the specified origin
- The system queries the AEI work table using train origin as the key with record type 'CUSEMAIL' → return the configured email distribution list or indicate no entry found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveAEIEmailDistributionList(["Start Step"])
E_RetrieveAEIEmailDistributionList(["End Step"])
N_RetrieveAEIEmailDistributionList_Node0{"The system calls AECWRKTB with
train origin as record key and
CUSEMAIL as record type"}:::decision N_RetrieveAEIEmailDistributionList_Node0_action["Return the email distribution
configuration for the specified
origin"]:::main N_RetrieveAEIEmailDistributionList_Node0 -- Yes --> N_RetrieveAEIEmailDistributionList_Node0_action N_RetrieveAEIEmailDistributionList_Node0_action --> E_RetrieveAEIEmailDistributionList S_RetrieveAEIEmailDistributionList --> N_RetrieveAEIEmailDistributionList_Node0 N_RetrieveAEIEmailDistributionList_Node1{"The system queries the AEI work
table using train origin as the key
with record type CUSEMAIL"}:::decision N_RetrieveAEIEmailDistributionList_Node1_action["Return the configured email
distribution list or indicate no
entry found"]:::main N_RetrieveAEIEmailDistributionList_Node1 -- Yes --> N_RetrieveAEIEmailDistributionList_Node1_action N_RetrieveAEIEmailDistributionList_Node1_action --> E_RetrieveAEIEmailDistributionList N_RetrieveAEIEmailDistributionList_Node0 -- No --> N_RetrieveAEIEmailDistributionList_Node1 N_RetrieveAEIEmailDistributionList_Node1 -- No --> E_RetrieveAEIEmailDistributionList
train origin as record key and
CUSEMAIL as record type"}:::decision N_RetrieveAEIEmailDistributionList_Node0_action["Return the email distribution
configuration for the specified
origin"]:::main N_RetrieveAEIEmailDistributionList_Node0 -- Yes --> N_RetrieveAEIEmailDistributionList_Node0_action N_RetrieveAEIEmailDistributionList_Node0_action --> E_RetrieveAEIEmailDistributionList S_RetrieveAEIEmailDistributionList --> N_RetrieveAEIEmailDistributionList_Node0 N_RetrieveAEIEmailDistributionList_Node1{"The system queries the AEI work
table using train origin as the key
with record type CUSEMAIL"}:::decision N_RetrieveAEIEmailDistributionList_Node1_action["Return the configured email
distribution list or indicate no
entry found"]:::main N_RetrieveAEIEmailDistributionList_Node1 -- Yes --> N_RetrieveAEIEmailDistributionList_Node1_action N_RetrieveAEIEmailDistributionList_Node1_action --> E_RetrieveAEIEmailDistributionList N_RetrieveAEIEmailDistributionList_Node0 -- No --> N_RetrieveAEIEmailDistributionList_Node1 N_RetrieveAEIEmailDistributionList_Node1 -- No --> E_RetrieveAEIEmailDistributionList
File: GCX003.cbl
GIVEN:
An AEI train send request is being processed
WHEN:
- The system calls aecwrktb with train origin as record key
- Cusemail as record type
THEN:
Return the email distribution configuration for the specified origin
File: GCX003.cbl
GIVEN:
An AEI train send request is being processed
WHEN:
The system queries the AEI work table using train origin as the key with record type 'CUSEMAIL'
THEN:
Return the configured email distribution list or indicate no entry found
β Consolidated Acceptance Criteria
- The return code equals AEI success constant → use retrieved email recipients, otherwise use default MERLIN recipients
- The return code indicates successful retrieval → use the retrieved email addresses for up to 10 recipients, otherwise use default MERLIN email address
- The system processes the query results → the system sets default MERLIN ID as sender and populates up to 10 recipient email addresses from the distribution list, stopping when a blank recipient is encountered
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EmailDistributionFound(["Start Step"])
E_EmailDistributionFound(["End Step"])
N_EmailDistributionFound_Node0{"The return code equals AEI success
constant"}:::decision N_EmailDistributionFound_Node0_action["Use retrieved email recipients,
otherwise use default MERLIN
recipients"]:::main N_EmailDistributionFound_Node0 -- Yes --> N_EmailDistributionFound_Node0_action N_EmailDistributionFound_Node0_action --> E_EmailDistributionFound S_EmailDistributionFound --> N_EmailDistributionFound_Node0 N_EmailDistributionFound_Node1{"The return code indicates
successful retrieval"}:::decision N_EmailDistributionFound_Node1_action["Use the retrieved email addresses
for up to 10 recipients, otherwise
use default MERLIN email address"]:::main N_EmailDistributionFound_Node1 -- Yes --> N_EmailDistributionFound_Node1_action N_EmailDistributionFound_Node1_action --> E_EmailDistributionFound N_EmailDistributionFound_Node0 -- No --> N_EmailDistributionFound_Node1 N_EmailDistributionFound_Node2{"The system processes the query
results"}:::decision N_EmailDistributionFound_Node2_action["The system sets default MERLIN ID
as sender and populates up to 10
recipient email addresses from the
distribution list, stopping when a
blank recipient is encountered"]:::main N_EmailDistributionFound_Node2 -- Yes --> N_EmailDistributionFound_Node2_action N_EmailDistributionFound_Node2_action --> E_EmailDistributionFound N_EmailDistributionFound_Node1 -- No --> N_EmailDistributionFound_Node2 N_EmailDistributionFound_Node2 -- No --> E_EmailDistributionFound
constant"}:::decision N_EmailDistributionFound_Node0_action["Use retrieved email recipients,
otherwise use default MERLIN
recipients"]:::main N_EmailDistributionFound_Node0 -- Yes --> N_EmailDistributionFound_Node0_action N_EmailDistributionFound_Node0_action --> E_EmailDistributionFound S_EmailDistributionFound --> N_EmailDistributionFound_Node0 N_EmailDistributionFound_Node1{"The return code indicates
successful retrieval"}:::decision N_EmailDistributionFound_Node1_action["Use the retrieved email addresses
for up to 10 recipients, otherwise
use default MERLIN email address"]:::main N_EmailDistributionFound_Node1 -- Yes --> N_EmailDistributionFound_Node1_action N_EmailDistributionFound_Node1_action --> E_EmailDistributionFound N_EmailDistributionFound_Node0 -- No --> N_EmailDistributionFound_Node1 N_EmailDistributionFound_Node2{"The system processes the query
results"}:::decision N_EmailDistributionFound_Node2_action["The system sets default MERLIN ID
as sender and populates up to 10
recipient email addresses from the
distribution list, stopping when a
blank recipient is encountered"]:::main N_EmailDistributionFound_Node2 -- Yes --> N_EmailDistributionFound_Node2_action N_EmailDistributionFound_Node2_action --> E_EmailDistributionFound N_EmailDistributionFound_Node1 -- No --> N_EmailDistributionFound_Node2 N_EmailDistributionFound_Node2 -- No --> E_EmailDistributionFound
File: GCX003.cbl
GIVEN:
AEI email distribution retrieval has been attempted
WHEN:
The return code equals AEI success constant
THEN:
Use retrieved email recipients, otherwise use default MERLIN recipients
File: GCX003.cbl
GIVEN:
AEI email distribution retrieval has been attempted
WHEN:
The return code indicates successful retrieval
THEN:
Use the retrieved email addresses for up to 10 recipients, otherwise use default MERLIN email address
File: GCX003.cbl
GIVEN:
The AEI email distribution query returns success status
WHEN:
The system processes the query results
THEN:
- The system sets default merlin id as sender
- Populates up to 10 recipient email addresses from the distribution list, stopping when a blank recipient is encountered
β Consolidated Acceptance Criteria
- Processing email recipients from CUSEMAIL user IDs → assign each non-blank CUSEMAIL user ID to email recipient list up to maximum of 10 recipients
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseRetrievedEmailRecipients(["Start Step"])
E_UseRetrievedEmailRecipients(["End Step"])
N_UseRetrievedEmailRecipients_Node0{"Processing email recipients from
CUSEMAIL user IDs"}:::decision N_UseRetrievedEmailRecipients_Node0_action["Assign each non-blank CUSEMAIL user
ID to email recipient list up to
maximum of 10 recipients"]:::main N_UseRetrievedEmailRecipients_Node0 -- Yes --> N_UseRetrievedEmailRecipients_Node0_action N_UseRetrievedEmailRecipients_Node0_action --> E_UseRetrievedEmailRecipients S_UseRetrievedEmailRecipients --> N_UseRetrievedEmailRecipients_Node0 N_UseRetrievedEmailRecipients_Node0 -- No --> E_UseRetrievedEmailRecipients
CUSEMAIL user IDs"}:::decision N_UseRetrievedEmailRecipients_Node0_action["Assign each non-blank CUSEMAIL user
ID to email recipient list up to
maximum of 10 recipients"]:::main N_UseRetrievedEmailRecipients_Node0 -- Yes --> N_UseRetrievedEmailRecipients_Node0_action N_UseRetrievedEmailRecipients_Node0_action --> E_UseRetrievedEmailRecipients S_UseRetrievedEmailRecipients --> N_UseRetrievedEmailRecipients_Node0 N_UseRetrievedEmailRecipients_Node0 -- No --> E_UseRetrievedEmailRecipients
File: GCX003.cbl
GIVEN:
AEI email distribution list was successfully retrieved
WHEN:
Processing email recipients from CUSEMAIL user IDs
THEN:
Assign each non-blank CUSEMAIL user ID to email recipient list up to maximum of 10 recipients
β Consolidated Acceptance Criteria
- No specific email recipients are configured → set both FROM and TO email addresses to default MERLIN ID constant
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseDefaultMERLINRecipients(["Start Step"])
E_UseDefaultMERLINRecipients(["End Step"])
N_UseDefaultMERLINRecipients_Node0{"No specific email recipients are
configured"}:::decision N_UseDefaultMERLINRecipients_Node0_action["Set both FROM and TO email
addresses to default MERLIN ID
constant"]:::main N_UseDefaultMERLINRecipients_Node0 -- Yes --> N_UseDefaultMERLINRecipients_Node0_action N_UseDefaultMERLINRecipients_Node0_action --> E_UseDefaultMERLINRecipients S_UseDefaultMERLINRecipients --> N_UseDefaultMERLINRecipients_Node0 N_UseDefaultMERLINRecipients_Node0 -- No --> E_UseDefaultMERLINRecipients
configured"}:::decision N_UseDefaultMERLINRecipients_Node0_action["Set both FROM and TO email
addresses to default MERLIN ID
constant"]:::main N_UseDefaultMERLINRecipients_Node0 -- Yes --> N_UseDefaultMERLINRecipients_Node0_action N_UseDefaultMERLINRecipients_Node0_action --> E_UseDefaultMERLINRecipients S_UseDefaultMERLINRecipients --> N_UseDefaultMERLINRecipients_Node0 N_UseDefaultMERLINRecipients_Node0 -- No --> E_UseDefaultMERLINRecipients
File: GCX003.cbl
GIVEN:
AEI email distribution list retrieval failed or returned no entry
WHEN:
No specific email recipients are configured
THEN:
- Set both from
- To email addresses to default merlin id constant
β Consolidated Acceptance Criteria
- The alternate terminal field in GCSTBRT terminal configuration is not blank → use the alternate terminal, otherwise use the original request terminal
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AlternateTerminalConfigured(["Start Step"])
E_AlternateTerminalConfigured(["End Step"])
N_AlternateTerminalConfigured_Node0{"The alternate terminal field in
GCSTBRT terminal configuration is
not blank"}:::decision N_AlternateTerminalConfigured_Node0_action["Use the alternate terminal,
otherwise use the original request
terminal"]:::main N_AlternateTerminalConfigured_Node0 -- Yes --> N_AlternateTerminalConfigured_Node0_action N_AlternateTerminalConfigured_Node0_action --> E_AlternateTerminalConfigured S_AlternateTerminalConfigured --> N_AlternateTerminalConfigured_Node0 N_AlternateTerminalConfigured_Node0 -- No --> E_AlternateTerminalConfigured
GCSTBRT terminal configuration is
not blank"}:::decision N_AlternateTerminalConfigured_Node0_action["Use the alternate terminal,
otherwise use the original request
terminal"]:::main N_AlternateTerminalConfigured_Node0 -- Yes --> N_AlternateTerminalConfigured_Node0_action N_AlternateTerminalConfigured_Node0_action --> E_AlternateTerminalConfigured S_AlternateTerminalConfigured --> N_AlternateTerminalConfigured_Node0 N_AlternateTerminalConfigured_Node0 -- No --> E_AlternateTerminalConfigured
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Report distribution is being configured
WHEN:
The alternate terminal field in GCSTBRT terminal configuration is not blank
THEN:
Use the alternate terminal, otherwise use the original request terminal
β Consolidated Acceptance Criteria
- The report distribution mode is evaluated → send all report lines for full reports, or send selective lines based on warning presence for summary reports
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReportDistributionMode(["Start Step"])
E_ReportDistributionMode(["End Step"])
N_ReportDistributionMode_Node0{"The report distribution mode is
evaluated"}:::decision N_ReportDistributionMode_Node0_action["Send all report lines for full
reports, or send selective lines
based on warning presence for
summary reports"]:::main N_ReportDistributionMode_Node0 -- Yes --> N_ReportDistributionMode_Node0_action N_ReportDistributionMode_Node0_action --> E_ReportDistributionMode S_ReportDistributionMode --> N_ReportDistributionMode_Node0 N_ReportDistributionMode_Node0 -- No --> E_ReportDistributionMode
evaluated"}:::decision N_ReportDistributionMode_Node0_action["Send all report lines for full
reports, or send selective lines
based on warning presence for
summary reports"]:::main N_ReportDistributionMode_Node0 -- Yes --> N_ReportDistributionMode_Node0_action N_ReportDistributionMode_Node0_action --> E_ReportDistributionMode S_ReportDistributionMode --> N_ReportDistributionMode_Node0 N_ReportDistributionMode_Node0 -- No --> E_ReportDistributionMode
File: GCX003.cbl
GIVEN:
Report classification has been determined
WHEN:
The report distribution mode is evaluated
THEN:
Send all report lines for full reports, or send selective lines based on warning presence for summary reports
β Consolidated Acceptance Criteria
- The report warning status is evaluated → send header lines only if no warnings exist, otherwise send header plus warning lines
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnyWarningsPresent(["Start Step"])
E_AnyWarningsPresent(["End Step"])
N_AnyWarningsPresent_Node0{"The report warning status is
evaluated"}:::decision N_AnyWarningsPresent_Node0_action["Send header lines only if no
warnings exist, otherwise send
header plus warning lines"]:::main N_AnyWarningsPresent_Node0 -- Yes --> N_AnyWarningsPresent_Node0_action N_AnyWarningsPresent_Node0_action --> E_AnyWarningsPresent S_AnyWarningsPresent --> N_AnyWarningsPresent_Node0 N_AnyWarningsPresent_Node0 -- No --> E_AnyWarningsPresent
evaluated"}:::decision N_AnyWarningsPresent_Node0_action["Send header lines only if no
warnings exist, otherwise send
header plus warning lines"]:::main N_AnyWarningsPresent_Node0 -- Yes --> N_AnyWarningsPresent_Node0_action N_AnyWarningsPresent_Node0_action --> E_AnyWarningsPresent S_AnyWarningsPresent --> N_AnyWarningsPresent_Node0 N_AnyWarningsPresent_Node0 -- No --> E_AnyWarningsPresent
File: GCX003.cbl
GIVEN:
Selective report distribution mode is active
WHEN:
The report warning status is evaluated
THEN:
Send header lines only if no warnings exist, otherwise send header plus warning lines
β Consolidated Acceptance Criteria
- The report transmission status is evaluated → generate 'NOT SENT' subject line for errors or failed transmissions, otherwise generate 'SENT' subject line for successful transmissions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReportStatus(["Start Step"])
E_ReportStatus(["End Step"])
N_ReportStatus_Node0{"The report transmission status is
evaluated"}:::decision N_ReportStatus_Node0_action["Generate NOT SENT subject line for
errors or failed transmissions,
otherwise generate SENT subject line
for successful transmissions"]:::main N_ReportStatus_Node0 -- Yes --> N_ReportStatus_Node0_action N_ReportStatus_Node0_action --> E_ReportStatus S_ReportStatus --> N_ReportStatus_Node0 N_ReportStatus_Node0 -- No --> E_ReportStatus
evaluated"}:::decision N_ReportStatus_Node0_action["Generate NOT SENT subject line for
errors or failed transmissions,
otherwise generate SENT subject line
for successful transmissions"]:::main N_ReportStatus_Node0 -- Yes --> N_ReportStatus_Node0_action N_ReportStatus_Node0_action --> E_ReportStatus S_ReportStatus --> N_ReportStatus_Node0 N_ReportStatus_Node0 -- No --> E_ReportStatus
File: GCX003.cbl
GIVEN:
Report distribution parameters are being finalized
WHEN:
The report transmission status is evaluated
THEN:
Generate 'NOT SENT' subject line for errors or failed transmissions, otherwise generate 'SENT' subject line for successful transmissions
β Consolidated Acceptance Criteria
- Generating the email subject line → create subject line with format 'US TRAIN [train_id] SENT AT [origin]' using report header train ID and origin
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateSENTSubject(["Start Step"])
E_GenerateSENTSubject(["End Step"])
N_GenerateSENTSubject_Node0{"Generating the email subject line"}:::decision
N_GenerateSENTSubject_Node0_action["Create subject line with format US
TRAIN trainid SENT AT origin using
report header train ID and origin"]:::main N_GenerateSENTSubject_Node0 -- Yes --> N_GenerateSENTSubject_Node0_action N_GenerateSENTSubject_Node0_action --> E_GenerateSENTSubject S_GenerateSENTSubject --> N_GenerateSENTSubject_Node0 N_GenerateSENTSubject_Node0 -- No --> E_GenerateSENTSubject
TRAIN trainid SENT AT origin using
report header train ID and origin"]:::main N_GenerateSENTSubject_Node0 -- Yes --> N_GenerateSENTSubject_Node0_action N_GenerateSENTSubject_Node0_action --> E_GenerateSENTSubject S_GenerateSENTSubject --> N_GenerateSENTSubject_Node0 N_GenerateSENTSubject_Node0 -- No --> E_GenerateSENTSubject
File: GCX003.cbl
GIVEN:
An AEI train report was successfully transmitted
WHEN:
Generating the email subject line
THEN:
- Create subject line with format 'us train [train_id] sent at [origin]' using report header train id
- Origin
β Consolidated Acceptance Criteria
- Generating the email subject line → create subject line with format 'US TRAIN [train_id] NOT SENT AT [origin]' using report header train ID and origin
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateNOTSENTSubject(["Start Step"])
E_GenerateNOTSENTSubject(["End Step"])
N_GenerateNOTSENTSubject_Node0{"Generating the email subject line"}:::decision
N_GenerateNOTSENTSubject_Node0_action["Create subject line with format US
TRAIN trainid NOT SENT AT origin
using report header train ID and
origin"]:::main N_GenerateNOTSENTSubject_Node0 -- Yes --> N_GenerateNOTSENTSubject_Node0_action N_GenerateNOTSENTSubject_Node0_action --> E_GenerateNOTSENTSubject S_GenerateNOTSENTSubject --> N_GenerateNOTSENTSubject_Node0 N_GenerateNOTSENTSubject_Node0 -- No --> E_GenerateNOTSENTSubject
TRAIN trainid NOT SENT AT origin
using report header train ID and
origin"]:::main N_GenerateNOTSENTSubject_Node0 -- Yes --> N_GenerateNOTSENTSubject_Node0_action N_GenerateNOTSENTSubject_Node0_action --> E_GenerateNOTSENTSubject S_GenerateNOTSENTSubject --> N_GenerateNOTSENTSubject_Node0 N_GenerateNOTSENTSubject_Node0 -- No --> E_GenerateNOTSENTSubject
File: GCX003.cbl
GIVEN:
An AEI train report failed transmission or contains errors
WHEN:
Generating the email subject line
THEN:
- Create subject line with format 'us train [train_id] not sent at [origin]' using report header train id
- Origin
β Consolidated Acceptance Criteria
- The system needs to assign email recipients → set both sender and recipient to the default MERLIN ID
- The system cannot retrieve specific email distribution configuration → the system uses default MERLIN ID for both sender and recipient email addresses
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UseDefaultMERLINEmail(["Start Step"])
E_UseDefaultMERLINEmail(["End Step"])
N_UseDefaultMERLINEmail_Node0{"The system needs to assign email
recipients"}:::decision N_UseDefaultMERLINEmail_Node0_action["Set both sender and recipient to
the default MERLIN ID"]:::main N_UseDefaultMERLINEmail_Node0 -- Yes --> N_UseDefaultMERLINEmail_Node0_action N_UseDefaultMERLINEmail_Node0_action --> E_UseDefaultMERLINEmail S_UseDefaultMERLINEmail --> N_UseDefaultMERLINEmail_Node0 N_UseDefaultMERLINEmail_Node1{"The system cannot retrieve specific
email distribution configuration"}:::decision N_UseDefaultMERLINEmail_Node1_action["The system uses default MERLIN ID
for both sender and recipient email
addresses"]:::main N_UseDefaultMERLINEmail_Node1 -- Yes --> N_UseDefaultMERLINEmail_Node1_action N_UseDefaultMERLINEmail_Node1_action --> E_UseDefaultMERLINEmail N_UseDefaultMERLINEmail_Node0 -- No --> N_UseDefaultMERLINEmail_Node1 N_UseDefaultMERLINEmail_Node1 -- No --> E_UseDefaultMERLINEmail
recipients"}:::decision N_UseDefaultMERLINEmail_Node0_action["Set both sender and recipient to
the default MERLIN ID"]:::main N_UseDefaultMERLINEmail_Node0 -- Yes --> N_UseDefaultMERLINEmail_Node0_action N_UseDefaultMERLINEmail_Node0_action --> E_UseDefaultMERLINEmail S_UseDefaultMERLINEmail --> N_UseDefaultMERLINEmail_Node0 N_UseDefaultMERLINEmail_Node1{"The system cannot retrieve specific
email distribution configuration"}:::decision N_UseDefaultMERLINEmail_Node1_action["The system uses default MERLIN ID
for both sender and recipient email
addresses"]:::main N_UseDefaultMERLINEmail_Node1 -- Yes --> N_UseDefaultMERLINEmail_Node1_action N_UseDefaultMERLINEmail_Node1_action --> E_UseDefaultMERLINEmail N_UseDefaultMERLINEmail_Node0 -- No --> N_UseDefaultMERLINEmail_Node1 N_UseDefaultMERLINEmail_Node1 -- No --> E_UseDefaultMERLINEmail
File: GCX003.cbl
GIVEN:
No AEI email distribution list was found or database error occurred
WHEN:
The system needs to assign email recipients
THEN:
- Set both sender
- Recipient to the default merlin id
File: GCX003.cbl
GIVEN:
The AEI email distribution query fails or returns no entry status
WHEN:
The system cannot retrieve specific email distribution configuration
THEN:
- The system uses default merlin id for both sender
- Recipient email addresses
β Consolidated Acceptance Criteria
- Processing email recipient configuration → set sender to default MERLIN ID and assign up to 10 recipient email addresses from the distribution list until a blank entry is encountered
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMultipleEmailRecipients(["Start Step"])
E_SetMultipleEmailRecipients(["End Step"])
N_SetMultipleEmailRecipients_Node0{"Processing email recipient
configuration"}:::decision N_SetMultipleEmailRecipients_Node0_action["Set sender to default MERLIN ID and
assign up to 10 recipient email
addresses from the distribution list
until a blank entry is encountered"]:::main N_SetMultipleEmailRecipients_Node0 -- Yes --> N_SetMultipleEmailRecipients_Node0_action N_SetMultipleEmailRecipients_Node0_action --> E_SetMultipleEmailRecipients S_SetMultipleEmailRecipients --> N_SetMultipleEmailRecipients_Node0 N_SetMultipleEmailRecipients_Node0 -- No --> E_SetMultipleEmailRecipients
configuration"}:::decision N_SetMultipleEmailRecipients_Node0_action["Set sender to default MERLIN ID and
assign up to 10 recipient email
addresses from the distribution list
until a blank entry is encountered"]:::main N_SetMultipleEmailRecipients_Node0 -- Yes --> N_SetMultipleEmailRecipients_Node0_action N_SetMultipleEmailRecipients_Node0_action --> E_SetMultipleEmailRecipients S_SetMultipleEmailRecipients --> N_SetMultipleEmailRecipients_Node0 N_SetMultipleEmailRecipients_Node0 -- No --> E_SetMultipleEmailRecipients
File: GCX003.cbl
GIVEN:
AEI email distribution list was successfully retrieved
WHEN:
Processing email recipient configuration
THEN:
- Set sender to default merlin id
- Assign up to 10 recipient email addresses from the distribution list until a blank entry is encountered
β Consolidated Acceptance Criteria
- Building the email subject line → if errors occurred, create subject 'US TRAIN [train_id] NOT SENT AT [origin]', otherwise create 'US TRAIN [train_id] SENT AT [origin]'
- The system builds the email subject line → the subject contains 'US TRAIN [train_id] NOT SENT AT [origin]' if errors occurred, or 'US TRAIN [train_id] SENT AT [origin]' if processing was successful
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildEmailSubjectLine(["Start Step"])
E_BuildEmailSubjectLine(["End Step"])
N_BuildEmailSubjectLine_Node0{"Building the email subject line"}:::decision
N_BuildEmailSubjectLine_Node0_action["If errors occurred, create subject
US TRAIN trainid NOT SENT AT origin
, otherwise create US TRAIN trainid
SENT AT origin"]:::main N_BuildEmailSubjectLine_Node0 -- Yes --> N_BuildEmailSubjectLine_Node0_action N_BuildEmailSubjectLine_Node0_action --> E_BuildEmailSubjectLine S_BuildEmailSubjectLine --> N_BuildEmailSubjectLine_Node0 N_BuildEmailSubjectLine_Node1{"The system builds the email subject
line"}:::decision N_BuildEmailSubjectLine_Node1_action["The subject contains US TRAIN
trainid NOT SENT AT origin if errors
occurred, or US TRAIN trainid SENT
AT origin if processing was
successful"]:::main N_BuildEmailSubjectLine_Node1 -- Yes --> N_BuildEmailSubjectLine_Node1_action N_BuildEmailSubjectLine_Node1_action --> E_BuildEmailSubjectLine N_BuildEmailSubjectLine_Node0 -- No --> N_BuildEmailSubjectLine_Node1 N_BuildEmailSubjectLine_Node1 -- No --> E_BuildEmailSubjectLine
US TRAIN trainid NOT SENT AT origin
, otherwise create US TRAIN trainid
SENT AT origin"]:::main N_BuildEmailSubjectLine_Node0 -- Yes --> N_BuildEmailSubjectLine_Node0_action N_BuildEmailSubjectLine_Node0_action --> E_BuildEmailSubjectLine S_BuildEmailSubjectLine --> N_BuildEmailSubjectLine_Node0 N_BuildEmailSubjectLine_Node1{"The system builds the email subject
line"}:::decision N_BuildEmailSubjectLine_Node1_action["The subject contains US TRAIN
trainid NOT SENT AT origin if errors
occurred, or US TRAIN trainid SENT
AT origin if processing was
successful"]:::main N_BuildEmailSubjectLine_Node1 -- Yes --> N_BuildEmailSubjectLine_Node1_action N_BuildEmailSubjectLine_Node1_action --> E_BuildEmailSubjectLine N_BuildEmailSubjectLine_Node0 -- No --> N_BuildEmailSubjectLine_Node1 N_BuildEmailSubjectLine_Node1 -- No --> E_BuildEmailSubjectLine
File: GCX003.cbl
GIVEN:
Email recipients have been configured
WHEN:
Building the email subject line
THEN:
If errors occurred, create subject 'US TRAIN [train_id] NOT SENT AT [origin]', otherwise create 'US TRAIN [train_id] SENT AT [origin]'
File: GCX003.cbl
GIVEN:
A train processing result status and train identification information are available
WHEN:
The system builds the email subject line
THEN:
The subject contains 'US TRAIN [train_id] NOT SENT AT [origin]' if errors occurred, or 'US TRAIN [train_id] SENT AT [origin]' if processing was successful
β Consolidated Acceptance Criteria
- Preparing to build email content → set line counter to 1, initialize email text structure, and set email parameters including destination filename and item width
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeEmailContent(["Start Step"])
E_InitializeEmailContent(["End Step"])
N_InitializeEmailContent_Node0{"Preparing to build email content"}:::decision
N_InitializeEmailContent_Node0_action["Set line counter to 1, initialize
email text structure, and set email
parameters including destination
filename and item width"]:::main N_InitializeEmailContent_Node0 -- Yes --> N_InitializeEmailContent_Node0_action N_InitializeEmailContent_Node0_action --> E_InitializeEmailContent S_InitializeEmailContent --> N_InitializeEmailContent_Node0 N_InitializeEmailContent_Node0 -- No --> E_InitializeEmailContent
email text structure, and set email
parameters including destination
filename and item width"]:::main N_InitializeEmailContent_Node0 -- Yes --> N_InitializeEmailContent_Node0_action N_InitializeEmailContent_Node0_action --> E_InitializeEmailContent S_InitializeEmailContent --> N_InitializeEmailContent_Node0 N_InitializeEmailContent_Node0 -- No --> E_InitializeEmailContent
File: GCX003.cbl
GIVEN:
Email subject line has been created
WHEN:
Preparing to build email content
THEN:
- Set line counter to 1, initialize email text structure, and set email parameters including destination filename
- Item width
β Consolidated Acceptance Criteria
- Processing each report line up to the last line → add each report line to email text, increment line counter, and set more email flag to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddReportLinestoEmail(["Start Step"])
E_AddReportLinestoEmail(["End Step"])
N_AddReportLinestoEmail_Node0{"Processing each report line up to
the last line"}:::decision N_AddReportLinestoEmail_Node0_action["Add each report line to email text,
increment line counter, and set more
email flag to true"]:::main N_AddReportLinestoEmail_Node0 -- Yes --> N_AddReportLinestoEmail_Node0_action N_AddReportLinestoEmail_Node0_action --> E_AddReportLinestoEmail S_AddReportLinestoEmail --> N_AddReportLinestoEmail_Node0 N_AddReportLinestoEmail_Node0 -- No --> E_AddReportLinestoEmail
the last line"}:::decision N_AddReportLinestoEmail_Node0_action["Add each report line to email text,
increment line counter, and set more
email flag to true"]:::main N_AddReportLinestoEmail_Node0 -- Yes --> N_AddReportLinestoEmail_Node0_action N_AddReportLinestoEmail_Node0_action --> E_AddReportLinestoEmail S_AddReportLinestoEmail --> N_AddReportLinestoEmail_Node0 N_AddReportLinestoEmail_Node0 -- No --> E_AddReportLinestoEmail
File: GCX003.cbl
GIVEN:
Email content is initialized and report lines are available
WHEN:
Processing each report line up to the last line
THEN:
Add each report line to email text, increment line counter, and set more email flag to true
β Consolidated Acceptance Criteria
- The line counter exceeds 699 lines → trigger immediate email send and prepare for continuation email
- The email line count exceeds 699 lines → the system sets no-more-email flag, sends current email batch, clears email text, resets line counter to 1, and adds continuation header lines
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EmailSizeLimitReached(["Start Step"])
E_EmailSizeLimitReached(["End Step"])
N_EmailSizeLimitReached_Node0{"The line counter exceeds 699 lines"}:::decision
N_EmailSizeLimitReached_Node0_action["Trigger immediate email send and
prepare for continuation email"]:::main N_EmailSizeLimitReached_Node0 -- Yes --> N_EmailSizeLimitReached_Node0_action N_EmailSizeLimitReached_Node0_action --> E_EmailSizeLimitReached S_EmailSizeLimitReached --> N_EmailSizeLimitReached_Node0 N_EmailSizeLimitReached_Node1{"The email line count exceeds 699
lines"}:::decision N_EmailSizeLimitReached_Node1_action["The system sets no-more-email flag,
sends current email batch, clears
email text, resets line counter to
1, and adds continuation header
lines"]:::main N_EmailSizeLimitReached_Node1 -- Yes --> N_EmailSizeLimitReached_Node1_action N_EmailSizeLimitReached_Node1_action --> E_EmailSizeLimitReached N_EmailSizeLimitReached_Node0 -- No --> N_EmailSizeLimitReached_Node1 N_EmailSizeLimitReached_Node1 -- No --> E_EmailSizeLimitReached
prepare for continuation email"]:::main N_EmailSizeLimitReached_Node0 -- Yes --> N_EmailSizeLimitReached_Node0_action N_EmailSizeLimitReached_Node0_action --> E_EmailSizeLimitReached S_EmailSizeLimitReached --> N_EmailSizeLimitReached_Node0 N_EmailSizeLimitReached_Node1{"The email line count exceeds 699
lines"}:::decision N_EmailSizeLimitReached_Node1_action["The system sets no-more-email flag,
sends current email batch, clears
email text, resets line counter to
1, and adds continuation header
lines"]:::main N_EmailSizeLimitReached_Node1 -- Yes --> N_EmailSizeLimitReached_Node1_action N_EmailSizeLimitReached_Node1_action --> E_EmailSizeLimitReached N_EmailSizeLimitReached_Node0 -- No --> N_EmailSizeLimitReached_Node1 N_EmailSizeLimitReached_Node1 -- No --> E_EmailSizeLimitReached
File: GCX003.cbl
GIVEN:
Report lines are being added to email content
WHEN:
The line counter exceeds 699 lines
THEN:
- Trigger immediate email send
- Prepare for continuation email
File: GCX003.cbl
GIVEN:
Report lines are being loaded into email message
WHEN:
The email line count exceeds 699 lines
THEN:
The system sets no-more-email flag, sends current email batch, clears email text, resets line counter to 1, and adds continuation header lines
β Consolidated Acceptance Criteria
- Starting a new continuation email → clear email text, reset line counter to 1, add continuation message, and add detail headers starting at line 3
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StartNewEmailwithContinuationHeader(["Start Step"])
E_StartNewEmailwithContinuationHeader(["End Step"])
N_StartNewEmailwithContinuationHeader_Node0{"Starting a new continuation email"}:::decision
N_StartNewEmailwithContinuationHeader_Node0_action["Clear email text, reset line
counter to 1, add continuation
message, and add detail headers
starting at line 3"]:::main N_StartNewEmailwithContinuationHeader_Node0 -- Yes --> N_StartNewEmailwithContinuationHeader_Node0_action N_StartNewEmailwithContinuationHeader_Node0_action --> E_StartNewEmailwithContinuationHeader S_StartNewEmailwithContinuationHeader --> N_StartNewEmailwithContinuationHeader_Node0 N_StartNewEmailwithContinuationHeader_Node0 -- No --> E_StartNewEmailwithContinuationHeader
counter to 1, add continuation
message, and add detail headers
starting at line 3"]:::main N_StartNewEmailwithContinuationHeader_Node0 -- Yes --> N_StartNewEmailwithContinuationHeader_Node0_action N_StartNewEmailwithContinuationHeader_Node0_action --> E_StartNewEmailwithContinuationHeader S_StartNewEmailwithContinuationHeader --> N_StartNewEmailwithContinuationHeader_Node0 N_StartNewEmailwithContinuationHeader_Node0 -- No --> E_StartNewEmailwithContinuationHeader
File: GCX003.cbl
GIVEN:
A previous email batch was sent due to size limits
WHEN:
Starting a new continuation email
THEN:
Clear email text, reset line counter to 1, add continuation message, and add detail headers starting at line 3
β Consolidated Acceptance Criteria
- The system cannot send any email notifications → generate system error message 'SEND TO FILE OF OM01247 FAILED' and perform system abend
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogEmailFailure(["Start Step"])
E_LogEmailFailure(["End Step"])
N_LogEmailFailure_Node0{"The system cannot send any email
notifications"}:::decision N_LogEmailFailure_Node0_action["Generate system error message SEND
TO FILE OF OM01247 FAILED and
perform system abend"]:::exclusion N_LogEmailFailure_Node0 -- Yes -->|Alternative| N_LogEmailFailure_Node0_action N_LogEmailFailure_Node0_action --> E_LogEmailFailure S_LogEmailFailure --> N_LogEmailFailure_Node0 N_LogEmailFailure_Node0 -- No --> E_LogEmailFailure
notifications"}:::decision N_LogEmailFailure_Node0_action["Generate system error message SEND
TO FILE OF OM01247 FAILED and
perform system abend"]:::exclusion N_LogEmailFailure_Node0 -- Yes -->|Alternative| N_LogEmailFailure_Node0_action N_LogEmailFailure_Node0_action --> E_LogEmailFailure S_LogEmailFailure --> N_LogEmailFailure_Node0 N_LogEmailFailure_Node0 -- No --> E_LogEmailFailure
File: GCX003.cbl
GIVEN:
Error notification email transmission has also failed
WHEN:
The system cannot send any email notifications
THEN:
Generate system error message 'SEND TO FILE OF OM01247 FAILED' and perform system abend
β Consolidated Acceptance Criteria
- Performing transaction cleanup → initialize accept status, call CIMS with PURG function, and set destination filename to export file
- The system finalizes email operations → the system clears accept status and purges the email transaction using the alternate PCB
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PurgeEmailTransaction(["Start Step"])
E_PurgeEmailTransaction(["End Step"])
N_PurgeEmailTransaction_Node0{"Performing transaction cleanup"}:::decision
N_PurgeEmailTransaction_Node0_action["Initialize accept status, call CIMS
with PURG function, and set
destination filename to export file"]:::main N_PurgeEmailTransaction_Node0 -- Yes --> N_PurgeEmailTransaction_Node0_action N_PurgeEmailTransaction_Node0_action --> E_PurgeEmailTransaction S_PurgeEmailTransaction --> N_PurgeEmailTransaction_Node0 N_PurgeEmailTransaction_Node1{"The system finalizes email
operations"}:::decision N_PurgeEmailTransaction_Node1_action["The system clears accept status and
purges the email transaction using
the alternate PCB"]:::main N_PurgeEmailTransaction_Node1 -- Yes --> N_PurgeEmailTransaction_Node1_action N_PurgeEmailTransaction_Node1_action --> E_PurgeEmailTransaction N_PurgeEmailTransaction_Node0 -- No --> N_PurgeEmailTransaction_Node1 N_PurgeEmailTransaction_Node1 -- No --> E_PurgeEmailTransaction
with PURG function, and set
destination filename to export file"]:::main N_PurgeEmailTransaction_Node0 -- Yes --> N_PurgeEmailTransaction_Node0_action N_PurgeEmailTransaction_Node0_action --> E_PurgeEmailTransaction S_PurgeEmailTransaction --> N_PurgeEmailTransaction_Node0 N_PurgeEmailTransaction_Node1{"The system finalizes email
operations"}:::decision N_PurgeEmailTransaction_Node1_action["The system clears accept status and
purges the email transaction using
the alternate PCB"]:::main N_PurgeEmailTransaction_Node1 -- Yes --> N_PurgeEmailTransaction_Node1_action N_PurgeEmailTransaction_Node1_action --> E_PurgeEmailTransaction N_PurgeEmailTransaction_Node0 -- No --> N_PurgeEmailTransaction_Node1 N_PurgeEmailTransaction_Node1 -- No --> E_PurgeEmailTransaction
File: GCX003.cbl
GIVEN:
Email processing has completed successfully or error handling is complete
WHEN:
Performing transaction cleanup
THEN:
Initialize accept status, call CIMS with PURG function, and set destination filename to export file
File: GCX003.cbl
GIVEN:
Email processing is complete regardless of success or failure
WHEN:
The system finalizes email operations
THEN:
- The system clears accept status
- Purges the email transaction using the alternate pcb
β Consolidated Acceptance Criteria
- The system begins creating a log entry → the log entry structure is initialized to prepare for data population
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeLogEntryStructure(["Start Step"])
E_InitializeLogEntryStructure(["End Step"])
N_InitializeLogEntryStructure_Node0{"The system begins creating a log
entry"}:::decision N_InitializeLogEntryStructure_Node0_action["The log entry structure is
initialized to prepare for data
population"]:::main N_InitializeLogEntryStructure_Node0 -- Yes --> N_InitializeLogEntryStructure_Node0_action N_InitializeLogEntryStructure_Node0_action --> E_InitializeLogEntryStructure S_InitializeLogEntryStructure --> N_InitializeLogEntryStructure_Node0 N_InitializeLogEntryStructure_Node0 -- No --> E_InitializeLogEntryStructure
entry"}:::decision N_InitializeLogEntryStructure_Node0_action["The log entry structure is
initialized to prepare for data
population"]:::main N_InitializeLogEntryStructure_Node0 -- Yes --> N_InitializeLogEntryStructure_Node0_action N_InitializeLogEntryStructure_Node0_action --> E_InitializeLogEntryStructure S_InitializeLogEntryStructure --> N_InitializeLogEntryStructure_Node0 N_InitializeLogEntryStructure_Node0 -- No --> E_InitializeLogEntryStructure
File: GCX003.cbl
GIVEN:
AEI activity logging is triggered
WHEN:
The system begins creating a log entry
THEN:
The log entry structure is initialized to prepare for data population
β Consolidated Acceptance Criteria
- Security level needs to be assigned → the security byte is set to HIGH-VALUES to indicate maximum security classification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSecurityLeveltoHigh(["Start Step"])
E_SetSecurityLeveltoHigh(["End Step"])
N_SetSecurityLeveltoHigh_Node0{"Security level needs to be assigned"}:::decision
N_SetSecurityLeveltoHigh_Node0_action["The security byte is set to
HIGH-VALUES to indicate maximum
security classification"]:::main N_SetSecurityLeveltoHigh_Node0 -- Yes --> N_SetSecurityLeveltoHigh_Node0_action N_SetSecurityLeveltoHigh_Node0_action --> E_SetSecurityLeveltoHigh S_SetSecurityLeveltoHigh --> N_SetSecurityLeveltoHigh_Node0 N_SetSecurityLeveltoHigh_Node0 -- No --> E_SetSecurityLeveltoHigh
HIGH-VALUES to indicate maximum
security classification"]:::main N_SetSecurityLeveltoHigh_Node0 -- Yes --> N_SetSecurityLeveltoHigh_Node0_action N_SetSecurityLeveltoHigh_Node0_action --> E_SetSecurityLeveltoHigh S_SetSecurityLeveltoHigh --> N_SetSecurityLeveltoHigh_Node0 N_SetSecurityLeveltoHigh_Node0 -- No --> E_SetSecurityLeveltoHigh
File: GCX003.cbl
GIVEN:
An AEI log entry is being created
WHEN:
Security level needs to be assigned
THEN:
The security byte is set to HIGH-VALUES to indicate maximum security classification
β Consolidated Acceptance Criteria
- Record type classification is required → the record type is set to US-TRAIN to identify this as a US train activity log
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRecordTypeasUSTrain(["Start Step"])
E_SetRecordTypeasUSTrain(["End Step"])
N_SetRecordTypeasUSTrain_Node0{"Record type classification is
required"}:::decision N_SetRecordTypeasUSTrain_Node0_action["The record type is set to US-TRAIN
to identify this as a US train
activity log"]:::main N_SetRecordTypeasUSTrain_Node0 -- Yes --> N_SetRecordTypeasUSTrain_Node0_action N_SetRecordTypeasUSTrain_Node0_action --> E_SetRecordTypeasUSTrain S_SetRecordTypeasUSTrain --> N_SetRecordTypeasUSTrain_Node0 N_SetRecordTypeasUSTrain_Node0 -- No --> E_SetRecordTypeasUSTrain
required"}:::decision N_SetRecordTypeasUSTrain_Node0_action["The record type is set to US-TRAIN
to identify this as a US train
activity log"]:::main N_SetRecordTypeasUSTrain_Node0 -- Yes --> N_SetRecordTypeasUSTrain_Node0_action N_SetRecordTypeasUSTrain_Node0_action --> E_SetRecordTypeasUSTrain S_SetRecordTypeasUSTrain --> N_SetRecordTypeasUSTrain_Node0 N_SetRecordTypeasUSTrain_Node0 -- No --> E_SetRecordTypeasUSTrain
File: GCX003.cbl
GIVEN:
An AEI activity log entry is being prepared
WHEN:
Record type classification is required
THEN:
The record type is set to US-TRAIN to identify this as a US train activity log
β Consolidated Acceptance Criteria
- The action code field needs to be populated → the action code is set to 'ZZZ' as the standard identifier for AEI send activities
- The system assigns an action code to categorize the audit activity → the action code is set to 'ZZZ' as the standard code for this type of audit logging
- The system assigns an action code to the log message → the GCX105-ACTION-CODE is set to 'ZZZ'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetActionCodetoZZZ(["Start Step"])
E_SetActionCodetoZZZ(["End Step"])
N_SetActionCodetoZZZ_Node0{"The action code field needs to be
populated"}:::decision N_SetActionCodetoZZZ_Node0_action["The action code is set to ZZZ as
the standard identifier for AEI send
activities"]:::main N_SetActionCodetoZZZ_Node0 -- Yes --> N_SetActionCodetoZZZ_Node0_action N_SetActionCodetoZZZ_Node0_action --> E_SetActionCodetoZZZ S_SetActionCodetoZZZ --> N_SetActionCodetoZZZ_Node0 N_SetActionCodetoZZZ_Node1{"The system assigns an action code
to categorize the audit activity"}:::decision N_SetActionCodetoZZZ_Node1_action["The action code is set to ZZZ as
the standard code for this type of
audit logging"]:::main N_SetActionCodetoZZZ_Node1 -- Yes --> N_SetActionCodetoZZZ_Node1_action N_SetActionCodetoZZZ_Node1_action --> E_SetActionCodetoZZZ N_SetActionCodetoZZZ_Node0 -- No --> N_SetActionCodetoZZZ_Node1 N_SetActionCodetoZZZ_Node2{"The system assigns an action code
to the log message"}:::decision N_SetActionCodetoZZZ_Node2_action["The GCX105-ACTION-CODE is set to
ZZZ"]:::main N_SetActionCodetoZZZ_Node2 -- Yes --> N_SetActionCodetoZZZ_Node2_action N_SetActionCodetoZZZ_Node2_action --> E_SetActionCodetoZZZ N_SetActionCodetoZZZ_Node1 -- No --> N_SetActionCodetoZZZ_Node2 N_SetActionCodetoZZZ_Node2 -- No --> E_SetActionCodetoZZZ
populated"}:::decision N_SetActionCodetoZZZ_Node0_action["The action code is set to ZZZ as
the standard identifier for AEI send
activities"]:::main N_SetActionCodetoZZZ_Node0 -- Yes --> N_SetActionCodetoZZZ_Node0_action N_SetActionCodetoZZZ_Node0_action --> E_SetActionCodetoZZZ S_SetActionCodetoZZZ --> N_SetActionCodetoZZZ_Node0 N_SetActionCodetoZZZ_Node1{"The system assigns an action code
to categorize the audit activity"}:::decision N_SetActionCodetoZZZ_Node1_action["The action code is set to ZZZ as
the standard code for this type of
audit logging"]:::main N_SetActionCodetoZZZ_Node1 -- Yes --> N_SetActionCodetoZZZ_Node1_action N_SetActionCodetoZZZ_Node1_action --> E_SetActionCodetoZZZ N_SetActionCodetoZZZ_Node0 -- No --> N_SetActionCodetoZZZ_Node1 N_SetActionCodetoZZZ_Node2{"The system assigns an action code
to the log message"}:::decision N_SetActionCodetoZZZ_Node2_action["The GCX105-ACTION-CODE is set to
ZZZ"]:::main N_SetActionCodetoZZZ_Node2 -- Yes --> N_SetActionCodetoZZZ_Node2_action N_SetActionCodetoZZZ_Node2_action --> E_SetActionCodetoZZZ N_SetActionCodetoZZZ_Node1 -- No --> N_SetActionCodetoZZZ_Node2 N_SetActionCodetoZZZ_Node2 -- No --> E_SetActionCodetoZZZ
File: GCX003.cbl
GIVEN:
An AEI log entry requires an action code
WHEN:
The action code field needs to be populated
THEN:
The action code is set to 'ZZZ' as the standard identifier for AEI send activities
File: GCX003.cbl
GIVEN:
An audit log entry is being created
WHEN:
The system assigns an action code to categorize the audit activity
THEN:
The action code is set to 'ZZZ' as the standard code for this type of audit logging
File: GCX003.cbl
GIVEN:
The record type is set to US cargo
WHEN:
The system assigns an action code to the log message
THEN:
The GCX105-ACTION-CODE is set to 'ZZZ'
β Consolidated Acceptance Criteria
- The originating transaction needs to be identified → the sending transaction is set to 'GCT0031E' to identify the source transaction
- The system records the source transaction information → the sending transaction is set to 'GCT0031E' to identify the originating transaction type
- The system assigns a transaction identifier → the GCX105-SENDING-TRANSACTION is set to 'GCT0031E'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSendingTransactionID(["Start Step"])
E_SetSendingTransactionID(["End Step"])
N_SetSendingTransactionID_Node0{"The originating transaction needs
to be identified"}:::decision N_SetSendingTransactionID_Node0_action["The sending transaction is set to
GCT0031E to identify the source
transaction"]:::main N_SetSendingTransactionID_Node0 -- Yes --> N_SetSendingTransactionID_Node0_action N_SetSendingTransactionID_Node0_action --> E_SetSendingTransactionID S_SetSendingTransactionID --> N_SetSendingTransactionID_Node0 N_SetSendingTransactionID_Node1{"The system records the source
transaction information"}:::decision N_SetSendingTransactionID_Node1_action["The sending transaction is set to
GCT0031E to identify the originating
transaction type"]:::main N_SetSendingTransactionID_Node1 -- Yes --> N_SetSendingTransactionID_Node1_action N_SetSendingTransactionID_Node1_action --> E_SetSendingTransactionID N_SetSendingTransactionID_Node0 -- No --> N_SetSendingTransactionID_Node1 N_SetSendingTransactionID_Node2{"The system assigns a transaction
identifier"}:::decision N_SetSendingTransactionID_Node2_action["The GCX105-SENDING-TRANSACTION is
set to GCT0031E"]:::main N_SetSendingTransactionID_Node2 -- Yes --> N_SetSendingTransactionID_Node2_action N_SetSendingTransactionID_Node2_action --> E_SetSendingTransactionID N_SetSendingTransactionID_Node1 -- No --> N_SetSendingTransactionID_Node2 N_SetSendingTransactionID_Node2 -- No --> E_SetSendingTransactionID
to be identified"}:::decision N_SetSendingTransactionID_Node0_action["The sending transaction is set to
GCT0031E to identify the source
transaction"]:::main N_SetSendingTransactionID_Node0 -- Yes --> N_SetSendingTransactionID_Node0_action N_SetSendingTransactionID_Node0_action --> E_SetSendingTransactionID S_SetSendingTransactionID --> N_SetSendingTransactionID_Node0 N_SetSendingTransactionID_Node1{"The system records the source
transaction information"}:::decision N_SetSendingTransactionID_Node1_action["The sending transaction is set to
GCT0031E to identify the originating
transaction type"]:::main N_SetSendingTransactionID_Node1 -- Yes --> N_SetSendingTransactionID_Node1_action N_SetSendingTransactionID_Node1_action --> E_SetSendingTransactionID N_SetSendingTransactionID_Node0 -- No --> N_SetSendingTransactionID_Node1 N_SetSendingTransactionID_Node2{"The system assigns a transaction
identifier"}:::decision N_SetSendingTransactionID_Node2_action["The GCX105-SENDING-TRANSACTION is
set to GCT0031E"]:::main N_SetSendingTransactionID_Node2 -- Yes --> N_SetSendingTransactionID_Node2_action N_SetSendingTransactionID_Node2_action --> E_SetSendingTransactionID N_SetSendingTransactionID_Node1 -- No --> N_SetSendingTransactionID_Node2 N_SetSendingTransactionID_Node2 -- No --> E_SetSendingTransactionID
File: GCX003.cbl
GIVEN:
An AEI log entry is being created
WHEN:
The originating transaction needs to be identified
THEN:
The sending transaction is set to 'GCT0031E' to identify the source transaction
File: GCX003.cbl
GIVEN:
An audit log entry is being created
WHEN:
The system records the source transaction information
THEN:
The sending transaction is set to 'GCT0031E' to identify the originating transaction type
File: GCX003.cbl
GIVEN:
The action code is set to ZZZ
WHEN:
The system assigns a transaction identifier
THEN:
The GCX105-SENDING-TRANSACTION is set to 'GCT0031E'
β Consolidated Acceptance Criteria
- User identification is required for the log entry → the ACF2 user ID from the current session is captured and stored in the log entry
- The system records user identification information → the ACF2 user ID from the common communication area is captured in the audit log
- The activity log record is being populated → the user's ACF2 ID from the common communication area is captured and recorded in the log
- The system captures user identification information → the GCX105-ACF2-ID is populated with CC-ACF2-USERID from CCCOM
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CaptureUserACF2ID(["Start Step"])
E_CaptureUserACF2ID(["End Step"])
N_CaptureUserACF2ID_Node0{"User identification is required for
the log entry"}:::decision N_CaptureUserACF2ID_Node0_action["The ACF2 user ID from the current
session is captured and stored in
the log entry"]:::main N_CaptureUserACF2ID_Node0 -- Yes --> N_CaptureUserACF2ID_Node0_action N_CaptureUserACF2ID_Node0_action --> E_CaptureUserACF2ID S_CaptureUserACF2ID --> N_CaptureUserACF2ID_Node0 N_CaptureUserACF2ID_Node1{"The system records user
identification information"}:::decision N_CaptureUserACF2ID_Node1_action["The ACF2 user ID from the common
communication area is captured in
the audit log"]:::main N_CaptureUserACF2ID_Node1 -- Yes --> N_CaptureUserACF2ID_Node1_action N_CaptureUserACF2ID_Node1_action --> E_CaptureUserACF2ID N_CaptureUserACF2ID_Node0 -- No --> N_CaptureUserACF2ID_Node1 N_CaptureUserACF2ID_Node2{"The activity log record is being
populated"}:::decision N_CaptureUserACF2ID_Node2_action["The user s ACF2 ID from the common
communication area is captured and
recorded in the log"]:::main N_CaptureUserACF2ID_Node2 -- Yes --> N_CaptureUserACF2ID_Node2_action N_CaptureUserACF2ID_Node2_action --> E_CaptureUserACF2ID N_CaptureUserACF2ID_Node1 -- No --> N_CaptureUserACF2ID_Node2 N_CaptureUserACF2ID_Node3{"The system captures user
identification information"}:::decision N_CaptureUserACF2ID_Node3_action["The GCX105-ACF2-ID is populated
with CC-ACF2-USERID from CCCOM"]:::main N_CaptureUserACF2ID_Node3 -- Yes --> N_CaptureUserACF2ID_Node3_action N_CaptureUserACF2ID_Node3_action --> E_CaptureUserACF2ID N_CaptureUserACF2ID_Node2 -- No --> N_CaptureUserACF2ID_Node3 N_CaptureUserACF2ID_Node3 -- No --> E_CaptureUserACF2ID
the log entry"}:::decision N_CaptureUserACF2ID_Node0_action["The ACF2 user ID from the current
session is captured and stored in
the log entry"]:::main N_CaptureUserACF2ID_Node0 -- Yes --> N_CaptureUserACF2ID_Node0_action N_CaptureUserACF2ID_Node0_action --> E_CaptureUserACF2ID S_CaptureUserACF2ID --> N_CaptureUserACF2ID_Node0 N_CaptureUserACF2ID_Node1{"The system records user
identification information"}:::decision N_CaptureUserACF2ID_Node1_action["The ACF2 user ID from the common
communication area is captured in
the audit log"]:::main N_CaptureUserACF2ID_Node1 -- Yes --> N_CaptureUserACF2ID_Node1_action N_CaptureUserACF2ID_Node1_action --> E_CaptureUserACF2ID N_CaptureUserACF2ID_Node0 -- No --> N_CaptureUserACF2ID_Node1 N_CaptureUserACF2ID_Node2{"The activity log record is being
populated"}:::decision N_CaptureUserACF2ID_Node2_action["The user s ACF2 ID from the common
communication area is captured and
recorded in the log"]:::main N_CaptureUserACF2ID_Node2 -- Yes --> N_CaptureUserACF2ID_Node2_action N_CaptureUserACF2ID_Node2_action --> E_CaptureUserACF2ID N_CaptureUserACF2ID_Node1 -- No --> N_CaptureUserACF2ID_Node2 N_CaptureUserACF2ID_Node3{"The system captures user
identification information"}:::decision N_CaptureUserACF2ID_Node3_action["The GCX105-ACF2-ID is populated
with CC-ACF2-USERID from CCCOM"]:::main N_CaptureUserACF2ID_Node3 -- Yes --> N_CaptureUserACF2ID_Node3_action N_CaptureUserACF2ID_Node3_action --> E_CaptureUserACF2ID N_CaptureUserACF2ID_Node2 -- No --> N_CaptureUserACF2ID_Node3 N_CaptureUserACF2ID_Node3 -- No --> E_CaptureUserACF2ID
File: GCX003.cbl
GIVEN:
An AEI activity is being logged
WHEN:
User identification is required for the log entry
THEN:
- The acf2 user id from the current session is captured
- Stored in the log entry
File: GCX003.cbl
GIVEN:
An audit log entry is being created
WHEN:
The system records user identification information
THEN:
The ACF2 user ID from the common communication area is captured in the audit log
File: GCX003.cbl
GIVEN:
An AEI train send operation was initiated by a user
WHEN:
The activity log record is being populated
THEN:
- The user's acf2 id from the common communication area is captured
- Recorded in the log
File: GCX003.cbl
GIVEN:
The transaction identifier is assigned
WHEN:
The system captures user identification information
THEN:
The GCX105-ACF2-ID is populated with CC-ACF2-USERID from CCCOM
β Consolidated Acceptance Criteria
- The current date needs to be recorded → the system date is formatted by concatenating machine century and machine date into the log entry date field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatCurrentDate(["Start Step"])
E_FormatCurrentDate(["End Step"])
N_FormatCurrentDate_Node0{"The current date needs to be
recorded"}:::decision N_FormatCurrentDate_Node0_action["The system date is formatted by
concatenating machine century and
machine date into the log entry date
field"]:::main N_FormatCurrentDate_Node0 -- Yes --> N_FormatCurrentDate_Node0_action N_FormatCurrentDate_Node0_action --> E_FormatCurrentDate S_FormatCurrentDate --> N_FormatCurrentDate_Node0 N_FormatCurrentDate_Node0 -- No --> E_FormatCurrentDate
recorded"}:::decision N_FormatCurrentDate_Node0_action["The system date is formatted by
concatenating machine century and
machine date into the log entry date
field"]:::main N_FormatCurrentDate_Node0 -- Yes --> N_FormatCurrentDate_Node0_action N_FormatCurrentDate_Node0_action --> E_FormatCurrentDate S_FormatCurrentDate --> N_FormatCurrentDate_Node0 N_FormatCurrentDate_Node0 -- No --> E_FormatCurrentDate
File: GCX003.cbl
GIVEN:
An AEI log entry requires a date timestamp
WHEN:
The current date needs to be recorded
THEN:
- The system date is formatted by concatenating machine century
- Machine date into the log entry date field
β Consolidated Acceptance Criteria
- A time timestamp is required → the current machine time is captured and stored in the log entry time field
- The system records timestamp information → the current machine time is captured and stored in the audit log
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CaptureCurrentTime(["Start Step"])
E_CaptureCurrentTime(["End Step"])
N_CaptureCurrentTime_Node0{"A time timestamp is required"}:::decision
N_CaptureCurrentTime_Node0_action["The current machine time is
captured and stored in the log entry
time field"]:::main N_CaptureCurrentTime_Node0 -- Yes --> N_CaptureCurrentTime_Node0_action N_CaptureCurrentTime_Node0_action --> E_CaptureCurrentTime S_CaptureCurrentTime --> N_CaptureCurrentTime_Node0 N_CaptureCurrentTime_Node1{"The system records timestamp
information"}:::decision N_CaptureCurrentTime_Node1_action["The current machine time is
captured and stored in the audit log"]:::main N_CaptureCurrentTime_Node1 -- Yes --> N_CaptureCurrentTime_Node1_action N_CaptureCurrentTime_Node1_action --> E_CaptureCurrentTime N_CaptureCurrentTime_Node0 -- No --> N_CaptureCurrentTime_Node1 N_CaptureCurrentTime_Node1 -- No --> E_CaptureCurrentTime
captured and stored in the log entry
time field"]:::main N_CaptureCurrentTime_Node0 -- Yes --> N_CaptureCurrentTime_Node0_action N_CaptureCurrentTime_Node0_action --> E_CaptureCurrentTime S_CaptureCurrentTime --> N_CaptureCurrentTime_Node0 N_CaptureCurrentTime_Node1{"The system records timestamp
information"}:::decision N_CaptureCurrentTime_Node1_action["The current machine time is
captured and stored in the audit log"]:::main N_CaptureCurrentTime_Node1 -- Yes --> N_CaptureCurrentTime_Node1_action N_CaptureCurrentTime_Node1_action --> E_CaptureCurrentTime N_CaptureCurrentTime_Node0 -- No --> N_CaptureCurrentTime_Node1 N_CaptureCurrentTime_Node1 -- No --> E_CaptureCurrentTime
File: GCX003.cbl
GIVEN:
An AEI activity log entry is being created
WHEN:
A time timestamp is required
THEN:
- The current machine time is captured
- Stored in the log entry time field
File: GCX003.cbl
GIVEN:
An audit log entry is being created
WHEN:
The system records timestamp information
THEN:
- The current machine time is captured
- Stored in the audit log
β Consolidated Acceptance Criteria
- The train identifier needs to be recorded → the US Customs train ID from the train list is stored in the log entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RecordTrainIDfromCustoms(["Start Step"])
E_RecordTrainIDfromCustoms(["End Step"])
N_RecordTrainIDfromCustoms_Node0{"The train identifier needs to be
recorded"}:::decision N_RecordTrainIDfromCustoms_Node0_action["The US Customs train ID from the
train list is stored in the log
entry"]:::main N_RecordTrainIDfromCustoms_Node0 -- Yes --> N_RecordTrainIDfromCustoms_Node0_action N_RecordTrainIDfromCustoms_Node0_action --> E_RecordTrainIDfromCustoms S_RecordTrainIDfromCustoms --> N_RecordTrainIDfromCustoms_Node0 N_RecordTrainIDfromCustoms_Node0 -- No --> E_RecordTrainIDfromCustoms
recorded"}:::decision N_RecordTrainIDfromCustoms_Node0_action["The US Customs train ID from the
train list is stored in the log
entry"]:::main N_RecordTrainIDfromCustoms_Node0 -- Yes --> N_RecordTrainIDfromCustoms_Node0_action N_RecordTrainIDfromCustoms_Node0_action --> E_RecordTrainIDfromCustoms S_RecordTrainIDfromCustoms --> N_RecordTrainIDfromCustoms_Node0 N_RecordTrainIDfromCustoms_Node0 -- No --> E_RecordTrainIDfromCustoms
File: GCX003.cbl
GIVEN:
An AEI send activity is being logged
WHEN:
The train identifier needs to be recorded
THEN:
The US Customs train ID from the train list is stored in the log entry
β Consolidated Acceptance Criteria
- The message field needs to be populated → the standard AEI send log message is assigned to describe the activity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStandardAEISendMessage(["Start Step"])
E_SetStandardAEISendMessage(["End Step"])
N_SetStandardAEISendMessage_Node0{"The message field needs to be
populated"}:::decision N_SetStandardAEISendMessage_Node0_action["The standard AEI send log message
is assigned to describe the activity"]:::main N_SetStandardAEISendMessage_Node0 -- Yes --> N_SetStandardAEISendMessage_Node0_action N_SetStandardAEISendMessage_Node0_action --> E_SetStandardAEISendMessage S_SetStandardAEISendMessage --> N_SetStandardAEISendMessage_Node0 N_SetStandardAEISendMessage_Node0 -- No --> E_SetStandardAEISendMessage
populated"}:::decision N_SetStandardAEISendMessage_Node0_action["The standard AEI send log message
is assigned to describe the activity"]:::main N_SetStandardAEISendMessage_Node0 -- Yes --> N_SetStandardAEISendMessage_Node0_action N_SetStandardAEISendMessage_Node0_action --> E_SetStandardAEISendMessage S_SetStandardAEISendMessage --> N_SetStandardAEISendMessage_Node0 N_SetStandardAEISendMessage_Node0 -- No --> E_SetStandardAEISendMessage
File: GCX003.cbl
GIVEN:
An AEI activity log entry requires a descriptive message
WHEN:
The message field needs to be populated
THEN:
The standard AEI send log message is assigned to describe the activity
β Consolidated Acceptance Criteria
- The log entry needs to be queued for processing → the log input structure is moved to the message format for queue transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareLogMessageforQueue(["Start Step"])
E_PrepareLogMessageforQueue(["End Step"])
N_PrepareLogMessageforQueue_Node0{"The log entry needs to be queued
for processing"}:::decision N_PrepareLogMessageforQueue_Node0_action["The log input structure is moved to
the message format for queue
transmission"]:::main N_PrepareLogMessageforQueue_Node0 -- Yes --> N_PrepareLogMessageforQueue_Node0_action N_PrepareLogMessageforQueue_Node0_action --> E_PrepareLogMessageforQueue S_PrepareLogMessageforQueue --> N_PrepareLogMessageforQueue_Node0 N_PrepareLogMessageforQueue_Node0 -- No --> E_PrepareLogMessageforQueue
for processing"}:::decision N_PrepareLogMessageforQueue_Node0_action["The log input structure is moved to
the message format for queue
transmission"]:::main N_PrepareLogMessageforQueue_Node0 -- Yes --> N_PrepareLogMessageforQueue_Node0_action N_PrepareLogMessageforQueue_Node0_action --> E_PrepareLogMessageforQueue S_PrepareLogMessageforQueue --> N_PrepareLogMessageforQueue_Node0 N_PrepareLogMessageforQueue_Node0 -- No --> E_PrepareLogMessageforQueue
File: GCX003.cbl
GIVEN:
An AEI log entry has been populated with all required data
WHEN:
The log entry needs to be queued for processing
THEN:
The log input structure is moved to the message format for queue transmission
β Consolidated Acceptance Criteria
- The log needs to be sent to the queue system → the system calls the message queue service to transmit the log entry
- The system sends the message to the queue → the message is sent using CIMS with CHNG function to the alternate PCB for the GCT1051E message type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendLogtoMessageQueue(["Start Step"])
E_SendLogtoMessageQueue(["End Step"])
N_SendLogtoMessageQueue_Node0{"The log needs to be sent to the
queue system"}:::decision N_SendLogtoMessageQueue_Node0_action["The system calls the message queue
service to transmit the log entry"]:::main N_SendLogtoMessageQueue_Node0 -- Yes --> N_SendLogtoMessageQueue_Node0_action N_SendLogtoMessageQueue_Node0_action --> E_SendLogtoMessageQueue S_SendLogtoMessageQueue --> N_SendLogtoMessageQueue_Node0 N_SendLogtoMessageQueue_Node1{"The system sends the message to the
queue"}:::decision N_SendLogtoMessageQueue_Node1_action["The message is sent using CIMS with
CHNG function to the alternate PCB
for the GCT1051E message type"]:::main N_SendLogtoMessageQueue_Node1 -- Yes --> N_SendLogtoMessageQueue_Node1_action N_SendLogtoMessageQueue_Node1_action --> E_SendLogtoMessageQueue N_SendLogtoMessageQueue_Node0 -- No --> N_SendLogtoMessageQueue_Node1 N_SendLogtoMessageQueue_Node1 -- No --> E_SendLogtoMessageQueue
queue system"}:::decision N_SendLogtoMessageQueue_Node0_action["The system calls the message queue
service to transmit the log entry"]:::main N_SendLogtoMessageQueue_Node0 -- Yes --> N_SendLogtoMessageQueue_Node0_action N_SendLogtoMessageQueue_Node0_action --> E_SendLogtoMessageQueue S_SendLogtoMessageQueue --> N_SendLogtoMessageQueue_Node0 N_SendLogtoMessageQueue_Node1{"The system sends the message to the
queue"}:::decision N_SendLogtoMessageQueue_Node1_action["The message is sent using CIMS with
CHNG function to the alternate PCB
for the GCT1051E message type"]:::main N_SendLogtoMessageQueue_Node1 -- Yes --> N_SendLogtoMessageQueue_Node1_action N_SendLogtoMessageQueue_Node1_action --> E_SendLogtoMessageQueue N_SendLogtoMessageQueue_Node0 -- No --> N_SendLogtoMessageQueue_Node1 N_SendLogtoMessageQueue_Node1 -- No --> E_SendLogtoMessageQueue
File: GCX003.cbl
GIVEN:
An AEI log entry is prepared for transmission
WHEN:
The log needs to be sent to the queue system
THEN:
The system calls the message queue service to transmit the log entry
File: GCX003.cbl
GIVEN:
A complete audit log message has been formatted
WHEN:
The system sends the message to the queue
THEN:
The message is sent using CIMS with CHNG function to the alternate PCB for the GCT1051E message type
β Consolidated Acceptance Criteria
- The log message needs to be written to system storage → the system writes the log message using the message logging service
- The system writes the message to the system log → the message is written using WRITMSGL with the message code, content, length, and module name
- The record needs to be permanently logged → the system calls the message writing service with the log message code, content, length, and module name
- The system writes the log message → wRITMSGL is called with ALT-PCB, message code, message content, message length, and module name
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WriteLogMessagetoSystem(["Start Step"])
E_WriteLogMessagetoSystem(["End Step"])
N_WriteLogMessagetoSystem_Node0{"The log message needs to be written
to system storage"}:::decision N_WriteLogMessagetoSystem_Node0_action["The system writes the log message
using the message logging service"]:::main N_WriteLogMessagetoSystem_Node0 -- Yes --> N_WriteLogMessagetoSystem_Node0_action N_WriteLogMessagetoSystem_Node0_action --> E_WriteLogMessagetoSystem S_WriteLogMessagetoSystem --> N_WriteLogMessagetoSystem_Node0 N_WriteLogMessagetoSystem_Node1{"The system writes the message to
the system log"}:::decision N_WriteLogMessagetoSystem_Node1_action["The message is written using
WRITMSGL with the message code,
content, length, and module name"]:::main N_WriteLogMessagetoSystem_Node1 -- Yes --> N_WriteLogMessagetoSystem_Node1_action N_WriteLogMessagetoSystem_Node1_action --> E_WriteLogMessagetoSystem N_WriteLogMessagetoSystem_Node0 -- No --> N_WriteLogMessagetoSystem_Node1 N_WriteLogMessagetoSystem_Node2{"The record needs to be permanently
logged"}:::decision N_WriteLogMessagetoSystem_Node2_action["The system calls the message
writing service with the log message
code, content, length, and module
name"]:::main N_WriteLogMessagetoSystem_Node2 -- Yes --> N_WriteLogMessagetoSystem_Node2_action N_WriteLogMessagetoSystem_Node2_action --> E_WriteLogMessagetoSystem N_WriteLogMessagetoSystem_Node1 -- No --> N_WriteLogMessagetoSystem_Node2 N_WriteLogMessagetoSystem_Node3{"The system writes the log message"}:::decision N_WriteLogMessagetoSystem_Node3_action["WRITMSGL is called with ALT-PCB,
message code, message content,
message length, and module name"]:::main N_WriteLogMessagetoSystem_Node3 -- Yes --> N_WriteLogMessagetoSystem_Node3_action N_WriteLogMessagetoSystem_Node3_action --> E_WriteLogMessagetoSystem N_WriteLogMessagetoSystem_Node2 -- No --> N_WriteLogMessagetoSystem_Node3 N_WriteLogMessagetoSystem_Node3 -- No --> E_WriteLogMessagetoSystem
to system storage"}:::decision N_WriteLogMessagetoSystem_Node0_action["The system writes the log message
using the message logging service"]:::main N_WriteLogMessagetoSystem_Node0 -- Yes --> N_WriteLogMessagetoSystem_Node0_action N_WriteLogMessagetoSystem_Node0_action --> E_WriteLogMessagetoSystem S_WriteLogMessagetoSystem --> N_WriteLogMessagetoSystem_Node0 N_WriteLogMessagetoSystem_Node1{"The system writes the message to
the system log"}:::decision N_WriteLogMessagetoSystem_Node1_action["The message is written using
WRITMSGL with the message code,
content, length, and module name"]:::main N_WriteLogMessagetoSystem_Node1 -- Yes --> N_WriteLogMessagetoSystem_Node1_action N_WriteLogMessagetoSystem_Node1_action --> E_WriteLogMessagetoSystem N_WriteLogMessagetoSystem_Node0 -- No --> N_WriteLogMessagetoSystem_Node1 N_WriteLogMessagetoSystem_Node2{"The record needs to be permanently
logged"}:::decision N_WriteLogMessagetoSystem_Node2_action["The system calls the message
writing service with the log message
code, content, length, and module
name"]:::main N_WriteLogMessagetoSystem_Node2 -- Yes --> N_WriteLogMessagetoSystem_Node2_action N_WriteLogMessagetoSystem_Node2_action --> E_WriteLogMessagetoSystem N_WriteLogMessagetoSystem_Node1 -- No --> N_WriteLogMessagetoSystem_Node2 N_WriteLogMessagetoSystem_Node3{"The system writes the log message"}:::decision N_WriteLogMessagetoSystem_Node3_action["WRITMSGL is called with ALT-PCB,
message code, message content,
message length, and module name"]:::main N_WriteLogMessagetoSystem_Node3 -- Yes --> N_WriteLogMessagetoSystem_Node3_action N_WriteLogMessagetoSystem_Node3_action --> E_WriteLogMessagetoSystem N_WriteLogMessagetoSystem_Node2 -- No --> N_WriteLogMessagetoSystem_Node3 N_WriteLogMessagetoSystem_Node3 -- No --> E_WriteLogMessagetoSystem
File: GCX003.cbl
GIVEN:
An AEI log entry has been queued
WHEN:
The log message needs to be written to system storage
THEN:
The system writes the log message using the message logging service
File: GCX003.cbl
GIVEN:
An audit log message has been queued
WHEN:
The system writes the message to the system log
THEN:
The message is written using WRITMSGL with the message code, content, length, and module name
File: GCX003.cbl
GIVEN:
An AEI activity log record has been queued for processing
WHEN:
The record needs to be permanently logged
THEN:
The system calls the message writing service with the log message code, content, length, and module name
File: GCX003.cbl
GIVEN:
The log message is sent to Alt PCB
WHEN:
The system writes the log message
THEN:
WRITMSGL is called with ALT-PCB, message code, message content, message length, and module name
β Consolidated Acceptance Criteria
- If the train processing outcome → canadian export report generation is triggered only if the train was successfully sent without errors and without spawn conditions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifTrainSuccessfullySent(["Start Step"])
E_CheckifTrainSuccessfullySent(["End Step"])
N_CheckifTrainSuccessfullySent_Node0{"The system evaluates the train
processing outcome"}:::decision N_CheckifTrainSuccessfullySent_Node0_action["Canadian export report generation
is triggered only if the train was
successfully sent without errors and
without spawn conditions"]:::main N_CheckifTrainSuccessfullySent_Node0 -- Yes --> N_CheckifTrainSuccessfullySent_Node0_action N_CheckifTrainSuccessfullySent_Node0_action --> E_CheckifTrainSuccessfullySent S_CheckifTrainSuccessfullySent --> N_CheckifTrainSuccessfullySent_Node0 N_CheckifTrainSuccessfullySent_Node0 -- No --> E_CheckifTrainSuccessfullySent
processing outcome"}:::decision N_CheckifTrainSuccessfullySent_Node0_action["Canadian export report generation
is triggered only if the train was
successfully sent without errors and
without spawn conditions"]:::main N_CheckifTrainSuccessfullySent_Node0 -- Yes --> N_CheckifTrainSuccessfullySent_Node0_action N_CheckifTrainSuccessfullySent_Node0_action --> E_CheckifTrainSuccessfullySent S_CheckifTrainSuccessfullySent --> N_CheckifTrainSuccessfullySent_Node0 N_CheckifTrainSuccessfullySent_Node0 -- No --> E_CheckifTrainSuccessfullySent
File: GCX003.cbl
GIVEN:
A train processing request has been completed
WHEN:
The system evaluates the train processing outcome
THEN:
- Canadian export report generation is triggered only if the train was successfully sent without errors
- Without spawn conditions
β Consolidated Acceptance Criteria
- The system prepares the export report message → all GCX141 input parameters are cleared and reset to initial state
- The system begins the report generation process → all GCX141 input parameters are initialized to blank values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeGCX141MessageParameters(["Start Step"])
E_InitializeGCX141MessageParameters(["End Step"])
N_InitializeGCX141MessageParameters_Node0{"The system prepares the export
report message"}:::decision N_InitializeGCX141MessageParameters_Node0_action["All GCX141 input parameters are
cleared and reset to initial state"]:::main N_InitializeGCX141MessageParameters_Node0 -- Yes --> N_InitializeGCX141MessageParameters_Node0_action N_InitializeGCX141MessageParameters_Node0_action --> E_InitializeGCX141MessageParameters S_InitializeGCX141MessageParameters --> N_InitializeGCX141MessageParameters_Node0 N_InitializeGCX141MessageParameters_Node1{"The system begins the report
generation process"}:::decision N_InitializeGCX141MessageParameters_Node1_action["All GCX141 input parameters are
initialized to blank values"]:::main N_InitializeGCX141MessageParameters_Node1 -- Yes --> N_InitializeGCX141MessageParameters_Node1_action N_InitializeGCX141MessageParameters_Node1_action --> E_InitializeGCX141MessageParameters N_InitializeGCX141MessageParameters_Node0 -- No --> N_InitializeGCX141MessageParameters_Node1 N_InitializeGCX141MessageParameters_Node1 -- No --> E_InitializeGCX141MessageParameters
report message"}:::decision N_InitializeGCX141MessageParameters_Node0_action["All GCX141 input parameters are
cleared and reset to initial state"]:::main N_InitializeGCX141MessageParameters_Node0 -- Yes --> N_InitializeGCX141MessageParameters_Node0_action N_InitializeGCX141MessageParameters_Node0_action --> E_InitializeGCX141MessageParameters S_InitializeGCX141MessageParameters --> N_InitializeGCX141MessageParameters_Node0 N_InitializeGCX141MessageParameters_Node1{"The system begins the report
generation process"}:::decision N_InitializeGCX141MessageParameters_Node1_action["All GCX141 input parameters are
initialized to blank values"]:::main N_InitializeGCX141MessageParameters_Node1 -- Yes --> N_InitializeGCX141MessageParameters_Node1_action N_InitializeGCX141MessageParameters_Node1_action --> E_InitializeGCX141MessageParameters N_InitializeGCX141MessageParameters_Node0 -- No --> N_InitializeGCX141MessageParameters_Node1 N_InitializeGCX141MessageParameters_Node1 -- No --> E_InitializeGCX141MessageParameters
File: GCX003.cbl
GIVEN:
Canadian export report generation has been triggered
WHEN:
The system prepares the export report message
THEN:
- All gcx141 input parameters are cleared
- Reset to initial state
File: GCX003.cbl
GIVEN:
A Canadian export report needs to be generated
WHEN:
The system begins the report generation process
THEN:
All GCX141 input parameters are initialized to blank values
β Consolidated Acceptance Criteria
- The system configures the message function type → the message function name flag is set to indicate export report generation
- The system configures the message type → the message function name flag is set to TRUE
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMessageFunctionNameFlag(["Start Step"])
E_SetMessageFunctionNameFlag(["End Step"])
N_SetMessageFunctionNameFlag_Node0{"The system configures the message
function type"}:::decision N_SetMessageFunctionNameFlag_Node0_action["The message function name flag is
set to indicate export report
generation"]:::main N_SetMessageFunctionNameFlag_Node0 -- Yes --> N_SetMessageFunctionNameFlag_Node0_action N_SetMessageFunctionNameFlag_Node0_action --> E_SetMessageFunctionNameFlag S_SetMessageFunctionNameFlag --> N_SetMessageFunctionNameFlag_Node0 N_SetMessageFunctionNameFlag_Node1{"The system configures the message
type"}:::decision N_SetMessageFunctionNameFlag_Node1_action["The message function name flag is
set to TRUE"]:::main N_SetMessageFunctionNameFlag_Node1 -- Yes --> N_SetMessageFunctionNameFlag_Node1_action N_SetMessageFunctionNameFlag_Node1_action --> E_SetMessageFunctionNameFlag N_SetMessageFunctionNameFlag_Node0 -- No --> N_SetMessageFunctionNameFlag_Node1 N_SetMessageFunctionNameFlag_Node1 -- No --> E_SetMessageFunctionNameFlag
function type"}:::decision N_SetMessageFunctionNameFlag_Node0_action["The message function name flag is
set to indicate export report
generation"]:::main N_SetMessageFunctionNameFlag_Node0 -- Yes --> N_SetMessageFunctionNameFlag_Node0_action N_SetMessageFunctionNameFlag_Node0_action --> E_SetMessageFunctionNameFlag S_SetMessageFunctionNameFlag --> N_SetMessageFunctionNameFlag_Node0 N_SetMessageFunctionNameFlag_Node1{"The system configures the message
type"}:::decision N_SetMessageFunctionNameFlag_Node1_action["The message function name flag is
set to TRUE"]:::main N_SetMessageFunctionNameFlag_Node1 -- Yes --> N_SetMessageFunctionNameFlag_Node1_action N_SetMessageFunctionNameFlag_Node1_action --> E_SetMessageFunctionNameFlag N_SetMessageFunctionNameFlag_Node0 -- No --> N_SetMessageFunctionNameFlag_Node1 N_SetMessageFunctionNameFlag_Node1 -- No --> E_SetMessageFunctionNameFlag
File: GCX003.cbl
GIVEN:
GCX141 message parameters have been initialized
WHEN:
The system configures the message function type
THEN:
The message function name flag is set to indicate export report generation
File: GCX003.cbl
GIVEN:
GCX141 message parameters are initialized
WHEN:
The system configures the message type
THEN:
The message function name flag is set to TRUE
β Consolidated Acceptance Criteria
- The system sets security parameters for the message → the security byte is set to high values to ensure proper authorization level
- The system sets security parameters for the log entry → the security byte is set to high values to ensure proper security classification
- Security parameters need to be established → the security byte is set to high values for maximum security clearance
- The system configures security settings for the log message → the GCX105-SECURITY-BYTE is set to HIGH-VALUES
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSecurityBytetoHighValues(["Start Step"])
E_SetSecurityBytetoHighValues(["End Step"])
N_SetSecurityBytetoHighValues_Node0{"The system sets security parameters
for the message"}:::decision N_SetSecurityBytetoHighValues_Node0_action["The security byte is set to high
values to ensure proper
authorization level"]:::main N_SetSecurityBytetoHighValues_Node0 -- Yes --> N_SetSecurityBytetoHighValues_Node0_action N_SetSecurityBytetoHighValues_Node0_action --> E_SetSecurityBytetoHighValues S_SetSecurityBytetoHighValues --> N_SetSecurityBytetoHighValues_Node0 N_SetSecurityBytetoHighValues_Node1{"The system sets security parameters
for the log entry"}:::decision N_SetSecurityBytetoHighValues_Node1_action["The security byte is set to high
values to ensure proper security
classification"]:::main N_SetSecurityBytetoHighValues_Node1 -- Yes --> N_SetSecurityBytetoHighValues_Node1_action N_SetSecurityBytetoHighValues_Node1_action --> E_SetSecurityBytetoHighValues N_SetSecurityBytetoHighValues_Node0 -- No --> N_SetSecurityBytetoHighValues_Node1 N_SetSecurityBytetoHighValues_Node2{"Security parameters need to be
established"}:::decision N_SetSecurityBytetoHighValues_Node2_action["The security byte is set to high
values for maximum security
clearance"]:::main N_SetSecurityBytetoHighValues_Node2 -- Yes --> N_SetSecurityBytetoHighValues_Node2_action N_SetSecurityBytetoHighValues_Node2_action --> E_SetSecurityBytetoHighValues N_SetSecurityBytetoHighValues_Node1 -- No --> N_SetSecurityBytetoHighValues_Node2 N_SetSecurityBytetoHighValues_Node3{"The system configures security
settings for the log message"}:::decision N_SetSecurityBytetoHighValues_Node3_action["The GCX105-SECURITY-BYTE is set to
HIGH-VALUES"]:::main N_SetSecurityBytetoHighValues_Node3 -- Yes --> N_SetSecurityBytetoHighValues_Node3_action N_SetSecurityBytetoHighValues_Node3_action --> E_SetSecurityBytetoHighValues N_SetSecurityBytetoHighValues_Node2 -- No --> N_SetSecurityBytetoHighValues_Node3 N_SetSecurityBytetoHighValues_Node3 -- No --> E_SetSecurityBytetoHighValues
for the message"}:::decision N_SetSecurityBytetoHighValues_Node0_action["The security byte is set to high
values to ensure proper
authorization level"]:::main N_SetSecurityBytetoHighValues_Node0 -- Yes --> N_SetSecurityBytetoHighValues_Node0_action N_SetSecurityBytetoHighValues_Node0_action --> E_SetSecurityBytetoHighValues S_SetSecurityBytetoHighValues --> N_SetSecurityBytetoHighValues_Node0 N_SetSecurityBytetoHighValues_Node1{"The system sets security parameters
for the log entry"}:::decision N_SetSecurityBytetoHighValues_Node1_action["The security byte is set to high
values to ensure proper security
classification"]:::main N_SetSecurityBytetoHighValues_Node1 -- Yes --> N_SetSecurityBytetoHighValues_Node1_action N_SetSecurityBytetoHighValues_Node1_action --> E_SetSecurityBytetoHighValues N_SetSecurityBytetoHighValues_Node0 -- No --> N_SetSecurityBytetoHighValues_Node1 N_SetSecurityBytetoHighValues_Node2{"Security parameters need to be
established"}:::decision N_SetSecurityBytetoHighValues_Node2_action["The security byte is set to high
values for maximum security
clearance"]:::main N_SetSecurityBytetoHighValues_Node2 -- Yes --> N_SetSecurityBytetoHighValues_Node2_action N_SetSecurityBytetoHighValues_Node2_action --> E_SetSecurityBytetoHighValues N_SetSecurityBytetoHighValues_Node1 -- No --> N_SetSecurityBytetoHighValues_Node2 N_SetSecurityBytetoHighValues_Node3{"The system configures security
settings for the log message"}:::decision N_SetSecurityBytetoHighValues_Node3_action["The GCX105-SECURITY-BYTE is set to
HIGH-VALUES"]:::main N_SetSecurityBytetoHighValues_Node3 -- Yes --> N_SetSecurityBytetoHighValues_Node3_action N_SetSecurityBytetoHighValues_Node3_action --> E_SetSecurityBytetoHighValues N_SetSecurityBytetoHighValues_Node2 -- No --> N_SetSecurityBytetoHighValues_Node3 N_SetSecurityBytetoHighValues_Node3 -- No --> E_SetSecurityBytetoHighValues
File: GCX003.cbl
GIVEN:
Export report message function has been configured
WHEN:
The system sets security parameters for the message
THEN:
The security byte is set to high values to ensure proper authorization level
File: GCX003.cbl
GIVEN:
An audit log entry is being created
WHEN:
The system sets security parameters for the log entry
THEN:
The security byte is set to high values to ensure proper security classification
File: GCX003.cbl
GIVEN:
A Canadian export message is being prepared
WHEN:
Security parameters need to be established
THEN:
The security byte is set to high values for maximum security clearance
File: GCX003.cbl
GIVEN:
The log message structure is initialized
WHEN:
The system configures security settings for the log message
THEN:
The GCX105-SECURITY-BYTE is set to HIGH-VALUES
β Consolidated Acceptance Criteria
- The system populates the train identifier in the message → the US customs train ID from the train list is assigned to the GCX141 train ID field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveUSCustomsTrainIDtoMessage(["Start Step"])
E_MoveUSCustomsTrainIDtoMessage(["End Step"])
N_MoveUSCustomsTrainIDtoMessage_Node0{"The system populates the train
identifier in the message"}:::decision N_MoveUSCustomsTrainIDtoMessage_Node0_action["The US customs train ID from the
train list is assigned to the GCX141
train ID field"]:::main N_MoveUSCustomsTrainIDtoMessage_Node0 -- Yes --> N_MoveUSCustomsTrainIDtoMessage_Node0_action N_MoveUSCustomsTrainIDtoMessage_Node0_action --> E_MoveUSCustomsTrainIDtoMessage S_MoveUSCustomsTrainIDtoMessage --> N_MoveUSCustomsTrainIDtoMessage_Node0 N_MoveUSCustomsTrainIDtoMessage_Node0 -- No --> E_MoveUSCustomsTrainIDtoMessage
identifier in the message"}:::decision N_MoveUSCustomsTrainIDtoMessage_Node0_action["The US customs train ID from the
train list is assigned to the GCX141
train ID field"]:::main N_MoveUSCustomsTrainIDtoMessage_Node0 -- Yes --> N_MoveUSCustomsTrainIDtoMessage_Node0_action N_MoveUSCustomsTrainIDtoMessage_Node0_action --> E_MoveUSCustomsTrainIDtoMessage S_MoveUSCustomsTrainIDtoMessage --> N_MoveUSCustomsTrainIDtoMessage_Node0 N_MoveUSCustomsTrainIDtoMessage_Node0 -- No --> E_MoveUSCustomsTrainIDtoMessage
File: GCX003.cbl
GIVEN:
Export report security has been configured
WHEN:
The system populates the train identifier in the message
THEN:
The US customs train ID from the train list is assigned to the GCX141 train ID field
β Consolidated Acceptance Criteria
- The system finalizes message configuration → the message function length flag is set to indicate proper message sizing
- Message length parameters need to be configured → the message function length flag is set to TRUE
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMessageFunctionLengthFlag(["Start Step"])
E_SetMessageFunctionLengthFlag(["End Step"])
N_SetMessageFunctionLengthFlag_Node0{"The system finalizes message
configuration"}:::decision N_SetMessageFunctionLengthFlag_Node0_action["The message function length flag is
set to indicate proper message
sizing"]:::main N_SetMessageFunctionLengthFlag_Node0 -- Yes --> N_SetMessageFunctionLengthFlag_Node0_action N_SetMessageFunctionLengthFlag_Node0_action --> E_SetMessageFunctionLengthFlag S_SetMessageFunctionLengthFlag --> N_SetMessageFunctionLengthFlag_Node0 N_SetMessageFunctionLengthFlag_Node1{"Message length parameters need to
be configured"}:::decision N_SetMessageFunctionLengthFlag_Node1_action["The message function length flag is
set to TRUE"]:::main N_SetMessageFunctionLengthFlag_Node1 -- Yes --> N_SetMessageFunctionLengthFlag_Node1_action N_SetMessageFunctionLengthFlag_Node1_action --> E_SetMessageFunctionLengthFlag N_SetMessageFunctionLengthFlag_Node0 -- No --> N_SetMessageFunctionLengthFlag_Node1 N_SetMessageFunctionLengthFlag_Node1 -- No --> E_SetMessageFunctionLengthFlag
configuration"}:::decision N_SetMessageFunctionLengthFlag_Node0_action["The message function length flag is
set to indicate proper message
sizing"]:::main N_SetMessageFunctionLengthFlag_Node0 -- Yes --> N_SetMessageFunctionLengthFlag_Node0_action N_SetMessageFunctionLengthFlag_Node0_action --> E_SetMessageFunctionLengthFlag S_SetMessageFunctionLengthFlag --> N_SetMessageFunctionLengthFlag_Node0 N_SetMessageFunctionLengthFlag_Node1{"Message length parameters need to
be configured"}:::decision N_SetMessageFunctionLengthFlag_Node1_action["The message function length flag is
set to TRUE"]:::main N_SetMessageFunctionLengthFlag_Node1 -- Yes --> N_SetMessageFunctionLengthFlag_Node1_action N_SetMessageFunctionLengthFlag_Node1_action --> E_SetMessageFunctionLengthFlag N_SetMessageFunctionLengthFlag_Node0 -- No --> N_SetMessageFunctionLengthFlag_Node1 N_SetMessageFunctionLengthFlag_Node1 -- No --> E_SetMessageFunctionLengthFlag
File: GCX003.cbl
GIVEN:
Train identifier has been assigned to the export report message
WHEN:
The system finalizes message configuration
THEN:
The message function length flag is set to indicate proper message sizing
File: GCX003.cbl
GIVEN:
Train ID has been set in the GCX141 message
WHEN:
Message length parameters need to be configured
THEN:
The message function length flag is set to TRUE
β Consolidated Acceptance Criteria
- The system prepares the message for transmission → the complete GCX141 input structure is moved to the message output text field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveInputParameterstoMessageOutput(["Start Step"])
E_MoveInputParameterstoMessageOutput(["End Step"])
N_MoveInputParameterstoMessageOutput_Node0{"The system prepares the message for
transmission"}:::decision N_MoveInputParameterstoMessageOutput_Node0_action["The complete GCX141 input structure
is moved to the message output text
field"]:::main N_MoveInputParameterstoMessageOutput_Node0 -- Yes --> N_MoveInputParameterstoMessageOutput_Node0_action N_MoveInputParameterstoMessageOutput_Node0_action --> E_MoveInputParameterstoMessageOutput S_MoveInputParameterstoMessageOutput --> N_MoveInputParameterstoMessageOutput_Node0 N_MoveInputParameterstoMessageOutput_Node0 -- No --> E_MoveInputParameterstoMessageOutput
transmission"}:::decision N_MoveInputParameterstoMessageOutput_Node0_action["The complete GCX141 input structure
is moved to the message output text
field"]:::main N_MoveInputParameterstoMessageOutput_Node0 -- Yes --> N_MoveInputParameterstoMessageOutput_Node0_action N_MoveInputParameterstoMessageOutput_Node0_action --> E_MoveInputParameterstoMessageOutput S_MoveInputParameterstoMessageOutput --> N_MoveInputParameterstoMessageOutput_Node0 N_MoveInputParameterstoMessageOutput_Node0 -- No --> E_MoveInputParameterstoMessageOutput
File: GCX003.cbl
GIVEN:
All GCX141 message parameters have been configured
WHEN:
The system prepares the message for transmission
THEN:
The complete GCX141 input structure is moved to the message output text field
β Consolidated Acceptance Criteria
- The system sends the message to the GCX141 processing queue → the message is inserted into the queue for Canadian export report generation
- The message needs to be queued for processing → the GCX141 message is inserted into the processing queue via Z750-ISRT-GCX141-MSG procedure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InsertGCX141MessagetoQueue(["Start Step"])
E_InsertGCX141MessagetoQueue(["End Step"])
N_InsertGCX141MessagetoQueue_Node0{"The system sends the message to the
GCX141 processing queue"}:::decision N_InsertGCX141MessagetoQueue_Node0_action["The message is inserted into the
queue for Canadian export report
generation"]:::main N_InsertGCX141MessagetoQueue_Node0 -- Yes --> N_InsertGCX141MessagetoQueue_Node0_action N_InsertGCX141MessagetoQueue_Node0_action --> E_InsertGCX141MessagetoQueue S_InsertGCX141MessagetoQueue --> N_InsertGCX141MessagetoQueue_Node0 N_InsertGCX141MessagetoQueue_Node1{"The message needs to be queued for
processing"}:::decision N_InsertGCX141MessagetoQueue_Node1_action["The GCX141 message is inserted into
the processing queue via
Z750-ISRT-GCX141-MSG procedure"]:::main N_InsertGCX141MessagetoQueue_Node1 -- Yes --> N_InsertGCX141MessagetoQueue_Node1_action N_InsertGCX141MessagetoQueue_Node1_action --> E_InsertGCX141MessagetoQueue N_InsertGCX141MessagetoQueue_Node0 -- No --> N_InsertGCX141MessagetoQueue_Node1 N_InsertGCX141MessagetoQueue_Node1 -- No --> E_InsertGCX141MessagetoQueue
GCX141 processing queue"}:::decision N_InsertGCX141MessagetoQueue_Node0_action["The message is inserted into the
queue for Canadian export report
generation"]:::main N_InsertGCX141MessagetoQueue_Node0 -- Yes --> N_InsertGCX141MessagetoQueue_Node0_action N_InsertGCX141MessagetoQueue_Node0_action --> E_InsertGCX141MessagetoQueue S_InsertGCX141MessagetoQueue --> N_InsertGCX141MessagetoQueue_Node0 N_InsertGCX141MessagetoQueue_Node1{"The message needs to be queued for
processing"}:::decision N_InsertGCX141MessagetoQueue_Node1_action["The GCX141 message is inserted into
the processing queue via
Z750-ISRT-GCX141-MSG procedure"]:::main N_InsertGCX141MessagetoQueue_Node1 -- Yes --> N_InsertGCX141MessagetoQueue_Node1_action N_InsertGCX141MessagetoQueue_Node1_action --> E_InsertGCX141MessagetoQueue N_InsertGCX141MessagetoQueue_Node0 -- No --> N_InsertGCX141MessagetoQueue_Node1 N_InsertGCX141MessagetoQueue_Node1 -- No --> E_InsertGCX141MessagetoQueue
File: GCX003.cbl
GIVEN:
Export report message has been prepared with all required parameters
WHEN:
The system sends the message to the GCX141 processing queue
THEN:
The message is inserted into the queue for Canadian export report generation
File: GCX003.cbl
GIVEN:
A complete Canadian export message is prepared in the output text field
WHEN:
The message needs to be queued for processing
THEN:
The GCX141 message is inserted into the processing queue via Z750-ISRT-GCX141-MSG procedure
β Consolidated Acceptance Criteria
- The system checks the crossing port station code → enhanced report generation is triggered only for Laredo TX station (CST-LAREDO-TX-STATION)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifLaredoTXStation(["Start Step"])
E_CheckifLaredoTXStation(["End Step"])
N_CheckifLaredoTXStation_Node0{"The system checks the crossing port
station code"}:::decision N_CheckifLaredoTXStation_Node0_action["Enhanced report generation is
triggered only for Laredo TX station
CST-LAREDO-TX-STATION"]:::main N_CheckifLaredoTXStation_Node0 -- Yes --> N_CheckifLaredoTXStation_Node0_action N_CheckifLaredoTXStation_Node0_action --> E_CheckifLaredoTXStation S_CheckifLaredoTXStation --> N_CheckifLaredoTXStation_Node0 N_CheckifLaredoTXStation_Node0 -- No --> E_CheckifLaredoTXStation
station code"}:::decision N_CheckifLaredoTXStation_Node0_action["Enhanced report generation is
triggered only for Laredo TX station
CST-LAREDO-TX-STATION"]:::main N_CheckifLaredoTXStation_Node0 -- Yes --> N_CheckifLaredoTXStation_Node0_action N_CheckifLaredoTXStation_Node0_action --> E_CheckifLaredoTXStation S_CheckifLaredoTXStation --> N_CheckifLaredoTXStation_Node0 N_CheckifLaredoTXStation_Node0 -- No --> E_CheckifLaredoTXStation
File: GCX003.cbl
GIVEN:
A train processing request is being finalized
WHEN:
The system checks the crossing port station code
THEN:
Enhanced report generation is triggered only for Laredo TX station (CST-LAREDO-TX-STATION)
β Consolidated Acceptance Criteria
- The system builds the first header line → the header includes US customer train ID, total loaded cars count, and total empty cars count
- The system builds the first header line → the header includes the US customer train ID, total loaded cars count, and total empty cars count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildHeaderLine1TrainIDandCarCounts(["Start Step"])
E_BuildHeaderLine1TrainIDandCarCounts(["End Step"])
N_BuildHeaderLine1TrainIDandCarCounts_Node0{"The system builds the first header
line"}:::decision N_BuildHeaderLine1TrainIDandCarCounts_Node0_action["The header includes US customer
train ID, total loaded cars count,
and total empty cars count"]:::main N_BuildHeaderLine1TrainIDandCarCounts_Node0 -- Yes --> N_BuildHeaderLine1TrainIDandCarCounts_Node0_action N_BuildHeaderLine1TrainIDandCarCounts_Node0_action --> E_BuildHeaderLine1TrainIDandCarCounts S_BuildHeaderLine1TrainIDandCarCounts --> N_BuildHeaderLine1TrainIDandCarCounts_Node0 N_BuildHeaderLine1TrainIDandCarCounts_Node1{"The system builds the first header
line"}:::decision N_BuildHeaderLine1TrainIDandCarCounts_Node1_action["The header includes the US customer
train ID, total loaded cars count,
and total empty cars count"]:::main N_BuildHeaderLine1TrainIDandCarCounts_Node1 -- Yes --> N_BuildHeaderLine1TrainIDandCarCounts_Node1_action N_BuildHeaderLine1TrainIDandCarCounts_Node1_action --> E_BuildHeaderLine1TrainIDandCarCounts N_BuildHeaderLine1TrainIDandCarCounts_Node0 -- No --> N_BuildHeaderLine1TrainIDandCarCounts_Node1 N_BuildHeaderLine1TrainIDandCarCounts_Node1 -- No --> E_BuildHeaderLine1TrainIDandCarCounts
line"}:::decision N_BuildHeaderLine1TrainIDandCarCounts_Node0_action["The header includes US customer
train ID, total loaded cars count,
and total empty cars count"]:::main N_BuildHeaderLine1TrainIDandCarCounts_Node0 -- Yes --> N_BuildHeaderLine1TrainIDandCarCounts_Node0_action N_BuildHeaderLine1TrainIDandCarCounts_Node0_action --> E_BuildHeaderLine1TrainIDandCarCounts S_BuildHeaderLine1TrainIDandCarCounts --> N_BuildHeaderLine1TrainIDandCarCounts_Node0 N_BuildHeaderLine1TrainIDandCarCounts_Node1{"The system builds the first header
line"}:::decision N_BuildHeaderLine1TrainIDandCarCounts_Node1_action["The header includes the US customer
train ID, total loaded cars count,
and total empty cars count"]:::main N_BuildHeaderLine1TrainIDandCarCounts_Node1 -- Yes --> N_BuildHeaderLine1TrainIDandCarCounts_Node1_action N_BuildHeaderLine1TrainIDandCarCounts_Node1_action --> E_BuildHeaderLine1TrainIDandCarCounts N_BuildHeaderLine1TrainIDandCarCounts_Node0 -- No --> N_BuildHeaderLine1TrainIDandCarCounts_Node1 N_BuildHeaderLine1TrainIDandCarCounts_Node1 -- No --> E_BuildHeaderLine1TrainIDandCarCounts
File: GCX003.cbl
GIVEN:
Enhanced report generation is active for Laredo TX station
WHEN:
The system builds the first header line
THEN:
The header includes US customer train ID, total loaded cars count, and total empty cars count
File: GCX003.cbl
GIVEN:
Enhanced report generation is active for Laredo TX station
WHEN:
The system builds the first header line
THEN:
The header includes the US customer train ID, total loaded cars count, and total empty cars count
β Consolidated Acceptance Criteria
- The system builds the second header line → the header includes ETA century (19 for years >94, 20 otherwise), ETA year/month/day/hour/minute, total loaded containers count, and total empty containers count
- The system builds the second header line → the header includes ETA date with century calculation (19xx for years >94, 20xx otherwise), ETA time, loaded container count, and empty container count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildHeaderLine2ETADateTimeandContainerCounts(["Start Step"])
E_BuildHeaderLine2ETADateTimeandContainerCounts(["End Step"])
N_BuildHeaderLine2ETADateTimeandContainerCounts_Node0{"The system builds the second header
line"}:::decision N_BuildHeaderLine2ETADateTimeandContainerCounts_Node0_action["The header includes ETA century 19
for years 94, 20 otherwise, ETA
yearmonthdayhourminute, total loaded
containers count, and total empty
containers count"]:::main N_BuildHeaderLine2ETADateTimeandContainerCounts_Node0 -- Yes --> N_BuildHeaderLine2ETADateTimeandContainerCounts_Node0_action N_BuildHeaderLine2ETADateTimeandContainerCounts_Node0_action --> E_BuildHeaderLine2ETADateTimeandContainerCounts S_BuildHeaderLine2ETADateTimeandContainerCounts --> N_BuildHeaderLine2ETADateTimeandContainerCounts_Node0 N_BuildHeaderLine2ETADateTimeandContainerCounts_Node1{"The system builds the second header
line"}:::decision N_BuildHeaderLine2ETADateTimeandContainerCounts_Node1_action["The header includes ETA date with
century calculation 19xx for years
94, 20xx otherwise, ETA time, loaded
container count, and empty container
count"]:::main N_BuildHeaderLine2ETADateTimeandContainerCounts_Node1 -- Yes --> N_BuildHeaderLine2ETADateTimeandContainerCounts_Node1_action N_BuildHeaderLine2ETADateTimeandContainerCounts_Node1_action --> E_BuildHeaderLine2ETADateTimeandContainerCounts N_BuildHeaderLine2ETADateTimeandContainerCounts_Node0 -- No --> N_BuildHeaderLine2ETADateTimeandContainerCounts_Node1 N_BuildHeaderLine2ETADateTimeandContainerCounts_Node1 -- No --> E_BuildHeaderLine2ETADateTimeandContainerCounts
line"}:::decision N_BuildHeaderLine2ETADateTimeandContainerCounts_Node0_action["The header includes ETA century 19
for years 94, 20 otherwise, ETA
yearmonthdayhourminute, total loaded
containers count, and total empty
containers count"]:::main N_BuildHeaderLine2ETADateTimeandContainerCounts_Node0 -- Yes --> N_BuildHeaderLine2ETADateTimeandContainerCounts_Node0_action N_BuildHeaderLine2ETADateTimeandContainerCounts_Node0_action --> E_BuildHeaderLine2ETADateTimeandContainerCounts S_BuildHeaderLine2ETADateTimeandContainerCounts --> N_BuildHeaderLine2ETADateTimeandContainerCounts_Node0 N_BuildHeaderLine2ETADateTimeandContainerCounts_Node1{"The system builds the second header
line"}:::decision N_BuildHeaderLine2ETADateTimeandContainerCounts_Node1_action["The header includes ETA date with
century calculation 19xx for years
94, 20xx otherwise, ETA time, loaded
container count, and empty container
count"]:::main N_BuildHeaderLine2ETADateTimeandContainerCounts_Node1 -- Yes --> N_BuildHeaderLine2ETADateTimeandContainerCounts_Node1_action N_BuildHeaderLine2ETADateTimeandContainerCounts_Node1_action --> E_BuildHeaderLine2ETADateTimeandContainerCounts N_BuildHeaderLine2ETADateTimeandContainerCounts_Node0 -- No --> N_BuildHeaderLine2ETADateTimeandContainerCounts_Node1 N_BuildHeaderLine2ETADateTimeandContainerCounts_Node1 -- No --> E_BuildHeaderLine2ETADateTimeandContainerCounts
File: GCX003.cbl
GIVEN:
Enhanced report generation is active and first header is complete
WHEN:
The system builds the second header line
THEN:
The header includes ETA century (19 for years >94, 20 otherwise), ETA year/month/day/hour/minute, total loaded containers count, and total empty containers count
File: GCX003.cbl
GIVEN:
Enhanced report generation is active
WHEN:
The system builds the second header line
THEN:
The header includes ETA date with century calculation (19xx for years >94, 20xx otherwise), ETA time, loaded container count, and empty container count
β Consolidated Acceptance Criteria
- The system builds the third header line → the header includes US station code, US station name, total locomotives count, and calculated total equipment count (cars + containers + locomotives)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildHeaderLine3PortCodeNameandLocomotiveCount(["Start Step"])
E_BuildHeaderLine3PortCodeNameandLocomotiveCount(["End Step"])
N_BuildHeaderLine3PortCodeNameandLocomotiveCount_Node0{"The system builds the third header
line"}:::decision N_BuildHeaderLine3PortCodeNameandLocomotiveCount_Node0_action["The header includes US station
code, US station name, total
locomotives count, and calculated
total equipment count cars
containers locomotives"]:::main N_BuildHeaderLine3PortCodeNameandLocomotiveCount_Node0 -- Yes --> N_BuildHeaderLine3PortCodeNameandLocomotiveCount_Node0_action N_BuildHeaderLine3PortCodeNameandLocomotiveCount_Node0_action --> E_BuildHeaderLine3PortCodeNameandLocomotiveCount S_BuildHeaderLine3PortCodeNameandLocomotiveCount --> N_BuildHeaderLine3PortCodeNameandLocomotiveCount_Node0 N_BuildHeaderLine3PortCodeNameandLocomotiveCount_Node0 -- No --> E_BuildHeaderLine3PortCodeNameandLocomotiveCount
line"}:::decision N_BuildHeaderLine3PortCodeNameandLocomotiveCount_Node0_action["The header includes US station
code, US station name, total
locomotives count, and calculated
total equipment count cars
containers locomotives"]:::main N_BuildHeaderLine3PortCodeNameandLocomotiveCount_Node0 -- Yes --> N_BuildHeaderLine3PortCodeNameandLocomotiveCount_Node0_action N_BuildHeaderLine3PortCodeNameandLocomotiveCount_Node0_action --> E_BuildHeaderLine3PortCodeNameandLocomotiveCount S_BuildHeaderLine3PortCodeNameandLocomotiveCount --> N_BuildHeaderLine3PortCodeNameandLocomotiveCount_Node0 N_BuildHeaderLine3PortCodeNameandLocomotiveCount_Node0 -- No --> E_BuildHeaderLine3PortCodeNameandLocomotiveCount
File: GCX003.cbl
GIVEN:
Enhanced report generation is active and previous headers are complete
WHEN:
The system builds the third header line
THEN:
The header includes US station code, US station name, total locomotives count, and calculated total equipment count (cars + containers + locomotives)
β Consolidated Acceptance Criteria
- The system calculates total equipment → total equals the sum of loaded cars + empty cars + loaded containers + empty containers + locomotives
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateTotalEquipmentCount(["Start Step"])
E_CalculateTotalEquipmentCount(["End Step"])
N_CalculateTotalEquipmentCount_Node0{"The system calculates total
equipment"}:::decision N_CalculateTotalEquipmentCount_Node0_action["Total equals the sum of loaded cars
empty cars loaded containers empty
containers locomotives"]:::main N_CalculateTotalEquipmentCount_Node0 -- Yes --> N_CalculateTotalEquipmentCount_Node0_action N_CalculateTotalEquipmentCount_Node0_action --> E_CalculateTotalEquipmentCount S_CalculateTotalEquipmentCount --> N_CalculateTotalEquipmentCount_Node0 N_CalculateTotalEquipmentCount_Node0 -- No --> E_CalculateTotalEquipmentCount
equipment"}:::decision N_CalculateTotalEquipmentCount_Node0_action["Total equals the sum of loaded cars
empty cars loaded containers empty
containers locomotives"]:::main N_CalculateTotalEquipmentCount_Node0 -- Yes --> N_CalculateTotalEquipmentCount_Node0_action N_CalculateTotalEquipmentCount_Node0_action --> E_CalculateTotalEquipmentCount S_CalculateTotalEquipmentCount --> N_CalculateTotalEquipmentCount_Node0 N_CalculateTotalEquipmentCount_Node0 -- No --> E_CalculateTotalEquipmentCount
File: GCX003.cbl
GIVEN:
Individual equipment counts are available (loaded cars, empty cars, loaded containers, empty containers, locomotives)
WHEN:
The system calculates total equipment
THEN:
Total equals the sum of loaded cars + empty cars + loaded containers + empty containers + locomotives
β Consolidated Acceptance Criteria
- The system checks if message size limit is reached → if line count exceeds 699 lines, send current batch and initialize continuation email with headers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EmailMessageSizeLimitReached(["Start Step"])
E_EmailMessageSizeLimitReached(["End Step"])
N_EmailMessageSizeLimitReached_Node0{"The system checks if message size
limit is reached"}:::decision N_EmailMessageSizeLimitReached_Node0_action["If line count exceeds 699 lines,
send current batch and initialize
continuation email with headers"]:::main N_EmailMessageSizeLimitReached_Node0 -- Yes --> N_EmailMessageSizeLimitReached_Node0_action N_EmailMessageSizeLimitReached_Node0_action --> E_EmailMessageSizeLimitReached S_EmailMessageSizeLimitReached --> N_EmailMessageSizeLimitReached_Node0 N_EmailMessageSizeLimitReached_Node0 -- No --> E_EmailMessageSizeLimitReached
limit is reached"}:::decision N_EmailMessageSizeLimitReached_Node0_action["If line count exceeds 699 lines,
send current batch and initialize
continuation email with headers"]:::main N_EmailMessageSizeLimitReached_Node0 -- Yes --> N_EmailMessageSizeLimitReached_Node0_action N_EmailMessageSizeLimitReached_Node0_action --> E_EmailMessageSizeLimitReached S_EmailMessageSizeLimitReached --> N_EmailMessageSizeLimitReached_Node0 N_EmailMessageSizeLimitReached_Node0 -- No --> E_EmailMessageSizeLimitReached
File: GCX003.cbl
GIVEN:
Enhanced report lines are being added to email message
WHEN:
The system checks if message size limit is reached
THEN:
- If line count exceeds 699 lines, send current batch
- Initialize continuation email with headers
β Consolidated Acceptance Criteria
- The system initializes a continuation email → email message is cleared, line counter is reset, continuation message is added, and detail headers are re-added
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeContinuationEmail(["Start Step"])
E_InitializeContinuationEmail(["End Step"])
N_InitializeContinuationEmail_Node0{"The system initializes a
continuation email"}:::decision N_InitializeContinuationEmail_Node0_action["Email message is cleared, line
counter is reset, continuation
message is added, and detail headers
are re-added"]:::main N_InitializeContinuationEmail_Node0 -- Yes --> N_InitializeContinuationEmail_Node0_action N_InitializeContinuationEmail_Node0_action --> E_InitializeContinuationEmail S_InitializeContinuationEmail --> N_InitializeContinuationEmail_Node0 N_InitializeContinuationEmail_Node0 -- No --> E_InitializeContinuationEmail
continuation email"}:::decision N_InitializeContinuationEmail_Node0_action["Email message is cleared, line
counter is reset, continuation
message is added, and detail headers
are re-added"]:::main N_InitializeContinuationEmail_Node0 -- Yes --> N_InitializeContinuationEmail_Node0_action N_InitializeContinuationEmail_Node0_action --> E_InitializeContinuationEmail S_InitializeContinuationEmail --> N_InitializeContinuationEmail_Node0 N_InitializeContinuationEmail_Node0 -- No --> E_InitializeContinuationEmail
File: GCX003.cbl
GIVEN:
Email message size limit of 699 lines has been reached
WHEN:
The system initializes a continuation email
THEN:
Email message is cleared, line counter is reset, continuation message is added, and detail headers are re-added
β Consolidated Acceptance Criteria
- The system starts the PDF generation process → the report message data should be cleared to prepare for new content
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StartPDFReportGeneration(["Start Step"])
E_StartPDFReportGeneration(["End Step"])
N_StartPDFReportGeneration_Node0{"the system starts the PDF
generation process"}:::decision N_StartPDFReportGeneration_Node0_action["the report message data should be
cleared to prepare for new content"]:::main N_StartPDFReportGeneration_Node0 -- Yes --> N_StartPDFReportGeneration_Node0_action N_StartPDFReportGeneration_Node0_action --> E_StartPDFReportGeneration S_StartPDFReportGeneration --> N_StartPDFReportGeneration_Node0 N_StartPDFReportGeneration_Node0 -- No --> E_StartPDFReportGeneration
generation process"}:::decision N_StartPDFReportGeneration_Node0_action["the report message data should be
cleared to prepare for new content"]:::main N_StartPDFReportGeneration_Node0 -- Yes --> N_StartPDFReportGeneration_Node0_action N_StartPDFReportGeneration_Node0_action --> E_StartPDFReportGeneration S_StartPDFReportGeneration --> N_StartPDFReportGeneration_Node0 N_StartPDFReportGeneration_Node0 -- No --> E_StartPDFReportGeneration
File: GCX003.cbl
GIVEN:
PDF report generation is initiated
WHEN:
the system starts the PDF generation process
THEN:
the report message data should be cleared to prepare for new content
β Consolidated Acceptance Criteria
- Preparing the report data → the report message should be populated with the existing email text content and email subject should be set from the first report line
- The system prepares data for PDF report creation → the system should extract train ID for report identification, use email subject line as PDF subject, format report content for PDF output, and include report statistics with line count calculations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PreparePreExitReportData(["Start Step"])
E_PreparePreExitReportData(["End Step"])
N_PreparePreExitReportData_Node0{"preparing the report data"}:::decision
N_PreparePreExitReportData_Node0_action["the report message should be
populated with the existing email
text content and email subject
should be set from the first report
line"]:::main N_PreparePreExitReportData_Node0 -- Yes --> N_PreparePreExitReportData_Node0_action N_PreparePreExitReportData_Node0_action --> E_PreparePreExitReportData S_PreparePreExitReportData --> N_PreparePreExitReportData_Node0 N_PreparePreExitReportData_Node1{"The system prepares data for PDF
report creation"}:::decision N_PreparePreExitReportData_Node1_action["The system should extract train ID
for report identification, use email
subject line as PDF subject, format
report content for PDF output, and
include report statistics with line
count calculations"]:::main N_PreparePreExitReportData_Node1 -- Yes --> N_PreparePreExitReportData_Node1_action N_PreparePreExitReportData_Node1_action --> E_PreparePreExitReportData N_PreparePreExitReportData_Node0 -- No --> N_PreparePreExitReportData_Node1 N_PreparePreExitReportData_Node1 -- No --> E_PreparePreExitReportData
populated with the existing email
text content and email subject
should be set from the first report
line"]:::main N_PreparePreExitReportData_Node0 -- Yes --> N_PreparePreExitReportData_Node0_action N_PreparePreExitReportData_Node0_action --> E_PreparePreExitReportData S_PreparePreExitReportData --> N_PreparePreExitReportData_Node0 N_PreparePreExitReportData_Node1{"The system prepares data for PDF
report creation"}:::decision N_PreparePreExitReportData_Node1_action["The system should extract train ID
for report identification, use email
subject line as PDF subject, format
report content for PDF output, and
include report statistics with line
count calculations"]:::main N_PreparePreExitReportData_Node1 -- Yes --> N_PreparePreExitReportData_Node1_action N_PreparePreExitReportData_Node1_action --> E_PreparePreExitReportData N_PreparePreExitReportData_Node0 -- No --> N_PreparePreExitReportData_Node1 N_PreparePreExitReportData_Node1 -- No --> E_PreparePreExitReportData
File: GCX003.cbl
GIVEN:
a pre-exit report needs to be generated
WHEN:
preparing the report data
THEN:
- The report message should be populated with the existing email text content
- Email subject should be set from the first report line
File: GCX003.cbl
GIVEN:
Train processing has completed and report generation is requested
WHEN:
The system prepares data for PDF report creation
THEN:
The system should extract train ID for report identification, use email subject line as PDF subject, format report content for PDF output, and include report statistics with line count calculations
β Consolidated Acceptance Criteria
- Setting up the report parameters → the report title should be set to 'Pre-Exit Report', report type to 'EXPORT', PDF length to 80 characters, train ID from the train list, and number of lines from the current report
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReportTitlePreExitReport(["Start Step"])
E_SetReportTitlePreExitReport(["End Step"])
N_SetReportTitlePreExitReport_Node0{"setting up the report parameters"}:::decision
N_SetReportTitlePreExitReport_Node0_action["the report title should be set to
Pre-Exit Report , report type to
EXPORT , PDF length to 80
characters, train ID from the train
list, and number of lines from the
current report"]:::main N_SetReportTitlePreExitReport_Node0 -- Yes --> N_SetReportTitlePreExitReport_Node0_action N_SetReportTitlePreExitReport_Node0_action --> E_SetReportTitlePreExitReport S_SetReportTitlePreExitReport --> N_SetReportTitlePreExitReport_Node0 N_SetReportTitlePreExitReport_Node0 -- No --> E_SetReportTitlePreExitReport
Pre-Exit Report , report type to
EXPORT , PDF length to 80
characters, train ID from the train
list, and number of lines from the
current report"]:::main N_SetReportTitlePreExitReport_Node0 -- Yes --> N_SetReportTitlePreExitReport_Node0_action N_SetReportTitlePreExitReport_Node0_action --> E_SetReportTitlePreExitReport S_SetReportTitlePreExitReport --> N_SetReportTitlePreExitReport_Node0 N_SetReportTitlePreExitReport_Node0 -- No --> E_SetReportTitlePreExitReport
File: GCX003.cbl
GIVEN:
a pre-exit report is being configured
WHEN:
setting up the report parameters
THEN:
the report title should be set to 'Pre-Exit Report', report type to 'EXPORT', PDF length to 80 characters, train ID from the train list, and number of lines from the current report
β Consolidated Acceptance Criteria
- Generating the PDF document → the GCX904R service should be called to create the PDF with the prepared report data
- The system initiates PDF report generation for pre-exit documentation → the system should prepare report data, set report title to 'Pre-Exit Report', set report type to 'EXPORT', configure PDF line length to 80 characters, calculate total number of report lines, and call GCX904R module to generate the PDF report
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCX904RforPreExitPDF(["Start Step"])
E_CallGCX904RforPreExitPDF(["End Step"])
N_CallGCX904RforPreExitPDF_Node0{"generating the PDF document"}:::decision
N_CallGCX904RforPreExitPDF_Node0_action["the GCX904R service should be
called to create the PDF with the
prepared report data"]:::main N_CallGCX904RforPreExitPDF_Node0 -- Yes --> N_CallGCX904RforPreExitPDF_Node0_action N_CallGCX904RforPreExitPDF_Node0_action --> E_CallGCX904RforPreExitPDF S_CallGCX904RforPreExitPDF --> N_CallGCX904RforPreExitPDF_Node0 N_CallGCX904RforPreExitPDF_Node1{"The system initiates PDF report
generation for pre-exit
documentation"}:::decision N_CallGCX904RforPreExitPDF_Node1_action["The system should prepare report
data, set report title to Pre-Exit
Report , set report type to EXPORT ,
configure PDF line length to 80
characters, calculate total number
of report lines, and call GCX904R
module to generate the PDF report"]:::main N_CallGCX904RforPreExitPDF_Node1 -- Yes --> N_CallGCX904RforPreExitPDF_Node1_action N_CallGCX904RforPreExitPDF_Node1_action --> E_CallGCX904RforPreExitPDF N_CallGCX904RforPreExitPDF_Node0 -- No --> N_CallGCX904RforPreExitPDF_Node1 N_CallGCX904RforPreExitPDF_Node1 -- No --> E_CallGCX904RforPreExitPDF
called to create the PDF with the
prepared report data"]:::main N_CallGCX904RforPreExitPDF_Node0 -- Yes --> N_CallGCX904RforPreExitPDF_Node0_action N_CallGCX904RforPreExitPDF_Node0_action --> E_CallGCX904RforPreExitPDF S_CallGCX904RforPreExitPDF --> N_CallGCX904RforPreExitPDF_Node0 N_CallGCX904RforPreExitPDF_Node1{"The system initiates PDF report
generation for pre-exit
documentation"}:::decision N_CallGCX904RforPreExitPDF_Node1_action["The system should prepare report
data, set report title to Pre-Exit
Report , set report type to EXPORT ,
configure PDF line length to 80
characters, calculate total number
of report lines, and call GCX904R
module to generate the PDF report"]:::main N_CallGCX904RforPreExitPDF_Node1 -- Yes --> N_CallGCX904RforPreExitPDF_Node1_action N_CallGCX904RforPreExitPDF_Node1_action --> E_CallGCX904RforPreExitPDF N_CallGCX904RforPreExitPDF_Node0 -- No --> N_CallGCX904RforPreExitPDF_Node1 N_CallGCX904RforPreExitPDF_Node1 -- No --> E_CallGCX904RforPreExitPDF
File: GCX003.cbl
GIVEN:
pre-exit report data is prepared and configured
WHEN:
generating the PDF document
THEN:
the GCX904R service should be called to create the PDF with the prepared report data
File: GCX003.cbl
GIVEN:
A train export report has been processed and report data is available
WHEN:
The system initiates PDF report generation for pre-exit documentation
THEN:
The system should prepare report data, set report title to 'Pre-Exit Report', set report type to 'EXPORT', configure PDF line length to 80 characters, calculate total number of report lines, and call GCX904R module to generate the PDF report
β Consolidated Acceptance Criteria
- Preparing the report data → the report message should be populated with the new report table content and email subject should be set from the new report subject
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareExportTrainReportData(["Start Step"])
E_PrepareExportTrainReportData(["End Step"])
N_PrepareExportTrainReportData_Node0{"preparing the report data"}:::decision
N_PrepareExportTrainReportData_Node0_action["the report message should be
populated with the new report table
content and email subject should be
set from the new report subject"]:::main N_PrepareExportTrainReportData_Node0 -- Yes --> N_PrepareExportTrainReportData_Node0_action N_PrepareExportTrainReportData_Node0_action --> E_PrepareExportTrainReportData S_PrepareExportTrainReportData --> N_PrepareExportTrainReportData_Node0 N_PrepareExportTrainReportData_Node0 -- No --> E_PrepareExportTrainReportData
populated with the new report table
content and email subject should be
set from the new report subject"]:::main N_PrepareExportTrainReportData_Node0 -- Yes --> N_PrepareExportTrainReportData_Node0_action N_PrepareExportTrainReportData_Node0_action --> E_PrepareExportTrainReportData S_PrepareExportTrainReportData --> N_PrepareExportTrainReportData_Node0 N_PrepareExportTrainReportData_Node0 -- No --> E_PrepareExportTrainReportData
File: GCX003.cbl
GIVEN:
an export train report needs to be generated
WHEN:
preparing the report data
THEN:
- The report message should be populated with the new report table content
- Email subject should be set from the new report subject
β Consolidated Acceptance Criteria
- Setting up the report parameters → the report title should be set to 'Export Train Report', report type to 'EXPORT', PDF length to 132 characters, train ID from the train list, and number of lines from the new report
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReportTitleExportTrainReport(["Start Step"])
E_SetReportTitleExportTrainReport(["End Step"])
N_SetReportTitleExportTrainReport_Node0{"setting up the report parameters"}:::decision
N_SetReportTitleExportTrainReport_Node0_action["the report title should be set to
Export Train Report , report type to
EXPORT , PDF length to 132
characters, train ID from the train
list, and number of lines from the
new report"]:::main N_SetReportTitleExportTrainReport_Node0 -- Yes --> N_SetReportTitleExportTrainReport_Node0_action N_SetReportTitleExportTrainReport_Node0_action --> E_SetReportTitleExportTrainReport S_SetReportTitleExportTrainReport --> N_SetReportTitleExportTrainReport_Node0 N_SetReportTitleExportTrainReport_Node0 -- No --> E_SetReportTitleExportTrainReport
Export Train Report , report type to
EXPORT , PDF length to 132
characters, train ID from the train
list, and number of lines from the
new report"]:::main N_SetReportTitleExportTrainReport_Node0 -- Yes --> N_SetReportTitleExportTrainReport_Node0_action N_SetReportTitleExportTrainReport_Node0_action --> E_SetReportTitleExportTrainReport S_SetReportTitleExportTrainReport --> N_SetReportTitleExportTrainReport_Node0 N_SetReportTitleExportTrainReport_Node0 -- No --> E_SetReportTitleExportTrainReport
File: GCX003.cbl
GIVEN:
an export train report is being configured
WHEN:
setting up the report parameters
THEN:
the report title should be set to 'Export Train Report', report type to 'EXPORT', PDF length to 132 characters, train ID from the train list, and number of lines from the new report
β Consolidated Acceptance Criteria
- Generating the PDF document → the GCX904R service should be called to create the PDF with the prepared report data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCX904RforExportTrainPDF(["Start Step"])
E_CallGCX904RforExportTrainPDF(["End Step"])
N_CallGCX904RforExportTrainPDF_Node0{"generating the PDF document"}:::decision
N_CallGCX904RforExportTrainPDF_Node0_action["the GCX904R service should be
called to create the PDF with the
prepared report data"]:::main N_CallGCX904RforExportTrainPDF_Node0 -- Yes --> N_CallGCX904RforExportTrainPDF_Node0_action N_CallGCX904RforExportTrainPDF_Node0_action --> E_CallGCX904RforExportTrainPDF S_CallGCX904RforExportTrainPDF --> N_CallGCX904RforExportTrainPDF_Node0 N_CallGCX904RforExportTrainPDF_Node0 -- No --> E_CallGCX904RforExportTrainPDF
called to create the PDF with the
prepared report data"]:::main N_CallGCX904RforExportTrainPDF_Node0 -- Yes --> N_CallGCX904RforExportTrainPDF_Node0_action N_CallGCX904RforExportTrainPDF_Node0_action --> E_CallGCX904RforExportTrainPDF S_CallGCX904RforExportTrainPDF --> N_CallGCX904RforExportTrainPDF_Node0 N_CallGCX904RforExportTrainPDF_Node0 -- No --> E_CallGCX904RforExportTrainPDF
File: GCX003.cbl
GIVEN:
export train report data is prepared and configured
WHEN:
generating the PDF document
THEN:
the GCX904R service should be called to create the PDF with the prepared report data
β Consolidated Acceptance Criteria
- The origin-destination country codes are not 'CAMX' or 'MXCA' → generate message twenty-seven indicating empty equipment issue
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckEquipmentType(["Start Step"])
E_CheckEquipmentType(["End Step"])
N_CheckEquipmentType_Node0{"The origin-destination country
codes are not CAMX or MXCA"}:::decision N_CheckEquipmentType_Node0_action["Generate message twenty-seven
indicating empty equipment issue"]:::main N_CheckEquipmentType_Node0 -- Yes --> N_CheckEquipmentType_Node0_action N_CheckEquipmentType_Node0_action --> E_CheckEquipmentType S_CheckEquipmentType --> N_CheckEquipmentType_Node0 N_CheckEquipmentType_Node0 -- No --> E_CheckEquipmentType
codes are not CAMX or MXCA"}:::decision N_CheckEquipmentType_Node0_action["Generate message twenty-seven
indicating empty equipment issue"]:::main N_CheckEquipmentType_Node0 -- Yes --> N_CheckEquipmentType_Node0_action N_CheckEquipmentType_Node0_action --> E_CheckEquipmentType S_CheckEquipmentType --> N_CheckEquipmentType_Node0 N_CheckEquipmentType_Node0 -- No --> E_CheckEquipmentType
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo is found and classified as empty equipment
WHEN:
The origin-destination country codes are not 'CAMX' or 'MXCA'
THEN:
Generate message twenty-seven indicating empty equipment issue
β Consolidated Acceptance Criteria
- The cargo requires IT bond processing → execute Crowley process for IT bond handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckBondType(["Start Step"])
E_CheckBondType(["End Step"])
N_CheckBondType_Node0{"The cargo requires IT bond
processing"}:::decision N_CheckBondType_Node0_action["Execute Crowley process for IT bond
handling"]:::main N_CheckBondType_Node0 -- Yes --> N_CheckBondType_Node0_action N_CheckBondType_Node0_action --> E_CheckBondType S_CheckBondType --> N_CheckBondType_Node0 N_CheckBondType_Node0 -- No --> E_CheckBondType
processing"}:::decision N_CheckBondType_Node0_action["Execute Crowley process for IT bond
handling"]:::main N_CheckBondType_Node0 -- Yes --> N_CheckBondType_Node0_action N_CheckBondType_Node0_action --> E_CheckBondType S_CheckBondType --> N_CheckBondType_Node0 N_CheckBondType_Node0 -- No --> E_CheckBondType
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is found with IT bond type and special manifest origin is not set
WHEN:
The cargo requires IT bond processing
THEN:
Execute Crowley process for IT bond handling
β Consolidated Acceptance Criteria
- The crossing port is Woburn PQ station → continue processing without generating error messages
- The crossing port is not Woburn PQ station → continue processing without generating error messages
- The crossing port is not Laredo TX station → set US-Mexico 88 found flag and continue processing
- The crossing port is Laredo TX station → set special TR found flag and continue processing
- Cargo location ID does not match station code → execute detour process for TE bond
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckSpecialConditions(["Start Step"])
E_CheckSpecialConditions(["End Step"])
N_CheckSpecialConditions_Node0{"The crossing port is Woburn PQ
station"}:::decision N_CheckSpecialConditions_Node0_action["Continue processing without
generating error messages"]:::main N_CheckSpecialConditions_Node0 -- Yes --> N_CheckSpecialConditions_Node0_action N_CheckSpecialConditions_Node0_action --> E_CheckSpecialConditions S_CheckSpecialConditions --> N_CheckSpecialConditions_Node0 N_CheckSpecialConditions_Node1{"The crossing port is not Woburn PQ
station"}:::decision N_CheckSpecialConditions_Node1_action["Continue processing without
generating error messages"]:::main N_CheckSpecialConditions_Node1 -- Yes --> N_CheckSpecialConditions_Node1_action N_CheckSpecialConditions_Node1_action --> E_CheckSpecialConditions N_CheckSpecialConditions_Node0 -- No --> N_CheckSpecialConditions_Node1 N_CheckSpecialConditions_Node2{"The crossing port is not Laredo TX
station"}:::decision N_CheckSpecialConditions_Node2_action["Set US-Mexico 88 found flag and
continue processing"]:::main N_CheckSpecialConditions_Node2 -- Yes --> N_CheckSpecialConditions_Node2_action N_CheckSpecialConditions_Node2_action --> E_CheckSpecialConditions N_CheckSpecialConditions_Node1 -- No --> N_CheckSpecialConditions_Node2 N_CheckSpecialConditions_Node3{"The crossing port is Laredo TX
station"}:::decision N_CheckSpecialConditions_Node3_action["Set special TR found flag and
continue processing"]:::main N_CheckSpecialConditions_Node3 -- Yes --> N_CheckSpecialConditions_Node3_action N_CheckSpecialConditions_Node3_action --> E_CheckSpecialConditions N_CheckSpecialConditions_Node2 -- No --> N_CheckSpecialConditions_Node3 N_CheckSpecialConditions_Node4{"Cargo location ID does not match
station code"}:::decision N_CheckSpecialConditions_Node4_action["Execute detour process for TE bond"]:::main N_CheckSpecialConditions_Node4 -- Yes --> N_CheckSpecialConditions_Node4_action N_CheckSpecialConditions_Node4_action --> E_CheckSpecialConditions N_CheckSpecialConditions_Node3 -- No --> N_CheckSpecialConditions_Node4 N_CheckSpecialConditions_Node4 -- No --> E_CheckSpecialConditions
station"}:::decision N_CheckSpecialConditions_Node0_action["Continue processing without
generating error messages"]:::main N_CheckSpecialConditions_Node0 -- Yes --> N_CheckSpecialConditions_Node0_action N_CheckSpecialConditions_Node0_action --> E_CheckSpecialConditions S_CheckSpecialConditions --> N_CheckSpecialConditions_Node0 N_CheckSpecialConditions_Node1{"The crossing port is not Woburn PQ
station"}:::decision N_CheckSpecialConditions_Node1_action["Continue processing without
generating error messages"]:::main N_CheckSpecialConditions_Node1 -- Yes --> N_CheckSpecialConditions_Node1_action N_CheckSpecialConditions_Node1_action --> E_CheckSpecialConditions N_CheckSpecialConditions_Node0 -- No --> N_CheckSpecialConditions_Node1 N_CheckSpecialConditions_Node2{"The crossing port is not Laredo TX
station"}:::decision N_CheckSpecialConditions_Node2_action["Set US-Mexico 88 found flag and
continue processing"]:::main N_CheckSpecialConditions_Node2 -- Yes --> N_CheckSpecialConditions_Node2_action N_CheckSpecialConditions_Node2_action --> E_CheckSpecialConditions N_CheckSpecialConditions_Node1 -- No --> N_CheckSpecialConditions_Node2 N_CheckSpecialConditions_Node3{"The crossing port is Laredo TX
station"}:::decision N_CheckSpecialConditions_Node3_action["Set special TR found flag and
continue processing"]:::main N_CheckSpecialConditions_Node3 -- Yes --> N_CheckSpecialConditions_Node3_action N_CheckSpecialConditions_Node3_action --> E_CheckSpecialConditions N_CheckSpecialConditions_Node2 -- No --> N_CheckSpecialConditions_Node3 N_CheckSpecialConditions_Node4{"Cargo location ID does not match
station code"}:::decision N_CheckSpecialConditions_Node4_action["Execute detour process for TE bond"]:::main N_CheckSpecialConditions_Node4 -- Yes --> N_CheckSpecialConditions_Node4_action N_CheckSpecialConditions_Node4_action --> E_CheckSpecialConditions N_CheckSpecialConditions_Node3 -- No --> N_CheckSpecialConditions_Node4 N_CheckSpecialConditions_Node4 -- No --> E_CheckSpecialConditions
File: GCX003.cbl
GIVEN:
Waybill and cargo are found with special manifest origin flag set
WHEN:
The crossing port is Woburn PQ station
THEN:
Continue processing without generating error messages
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Waybill and cargo are found with special manifest special flag set
WHEN:
The crossing port is not Woburn PQ station
THEN:
Continue processing without generating error messages
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Waybill and cargo are found with export type and US-Mexico country codes and special 88 flag
WHEN:
The crossing port is not Laredo TX station
THEN:
- Set us-mexico 88 found flag
- Continue processing
File: GCX003.cbl
GIVEN:
Waybill and cargo are found with US-Canada-US type and special TR flag
WHEN:
The crossing port is Laredo TX station
THEN:
- Set special tr found flag
- Continue processing
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is found with transport export type and not created for IT and not export status and bills as CPRS
WHEN:
Cargo location ID does not match station code
THEN:
Execute detour process for TE bond
β Consolidated Acceptance Criteria
- Processing equipment validation → continue processing without generating specific error for this condition
- Equipment is not a unit SBU van → generate message ten indicating waybill not found
- Processing waybill validation → generate message twenty-six indicating waybill processing error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateEquipmentTypeError(["Start Step"])
E_GenerateEquipmentTypeError(["End Step"])
N_GenerateEquipmentTypeError_Node0{"Processing equipment validation"}:::decision
N_GenerateEquipmentTypeError_Node0_action["Continue processing without
generating specific error for this
condition"]:::main N_GenerateEquipmentTypeError_Node0 -- Yes --> N_GenerateEquipmentTypeError_Node0_action N_GenerateEquipmentTypeError_Node0_action --> E_GenerateEquipmentTypeError S_GenerateEquipmentTypeError --> N_GenerateEquipmentTypeError_Node0 N_GenerateEquipmentTypeError_Node1{"Equipment is not a unit SBU van"}:::decision N_GenerateEquipmentTypeError_Node1_action["Generate message ten indicating
waybill not found"]:::main N_GenerateEquipmentTypeError_Node1 -- Yes --> N_GenerateEquipmentTypeError_Node1_action N_GenerateEquipmentTypeError_Node1_action --> E_GenerateEquipmentTypeError N_GenerateEquipmentTypeError_Node0 -- No --> N_GenerateEquipmentTypeError_Node1 N_GenerateEquipmentTypeError_Node2{"Processing waybill validation"}:::decision N_GenerateEquipmentTypeError_Node2_action["Generate message twenty-six
indicating waybill processing error"]:::main N_GenerateEquipmentTypeError_Node2 -- Yes --> N_GenerateEquipmentTypeError_Node2_action N_GenerateEquipmentTypeError_Node2_action --> E_GenerateEquipmentTypeError N_GenerateEquipmentTypeError_Node1 -- No --> N_GenerateEquipmentTypeError_Node2 N_GenerateEquipmentTypeError_Node2 -- No --> E_GenerateEquipmentTypeError
generating specific error for this
condition"]:::main N_GenerateEquipmentTypeError_Node0 -- Yes --> N_GenerateEquipmentTypeError_Node0_action N_GenerateEquipmentTypeError_Node0_action --> E_GenerateEquipmentTypeError S_GenerateEquipmentTypeError --> N_GenerateEquipmentTypeError_Node0 N_GenerateEquipmentTypeError_Node1{"Equipment is not a unit SBU van"}:::decision N_GenerateEquipmentTypeError_Node1_action["Generate message ten indicating
waybill not found"]:::main N_GenerateEquipmentTypeError_Node1 -- Yes --> N_GenerateEquipmentTypeError_Node1_action N_GenerateEquipmentTypeError_Node1_action --> E_GenerateEquipmentTypeError N_GenerateEquipmentTypeError_Node0 -- No --> N_GenerateEquipmentTypeError_Node1 N_GenerateEquipmentTypeError_Node2{"Processing waybill validation"}:::decision N_GenerateEquipmentTypeError_Node2_action["Generate message twenty-six
indicating waybill processing error"]:::main N_GenerateEquipmentTypeError_Node2 -- Yes --> N_GenerateEquipmentTypeError_Node2_action N_GenerateEquipmentTypeError_Node2_action --> E_GenerateEquipmentTypeError N_GenerateEquipmentTypeError_Node1 -- No --> N_GenerateEquipmentTypeError_Node2 N_GenerateEquipmentTypeError_Node2 -- No --> E_GenerateEquipmentTypeError
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Waybill is not found and container is found
WHEN:
Processing equipment validation
THEN:
Continue processing without generating specific error for this condition
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Waybill is not found and container is not found and equipment is loaded
WHEN:
Equipment is not a unit SBU van
THEN:
Generate message ten indicating waybill not found
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Waybill status is neither found nor not found
WHEN:
Processing waybill validation
THEN:
Generate message twenty-six indicating waybill processing error
β Consolidated Acceptance Criteria
- Processing cargo validation → generate message fifteen with waybill root key and date
- Status is pending, deleted, or error → generate message sixteen indicating invalid cargo status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateCargoStatusError(["Start Step"])
E_GenerateCargoStatusError(["End Step"])
N_GenerateCargoStatusError_Node0{"Processing cargo validation"}:::decision
N_GenerateCargoStatusError_Node0_action["Generate message fifteen with
waybill root key and date"]:::main N_GenerateCargoStatusError_Node0 -- Yes --> N_GenerateCargoStatusError_Node0_action N_GenerateCargoStatusError_Node0_action --> E_GenerateCargoStatusError S_GenerateCargoStatusError --> N_GenerateCargoStatusError_Node0 N_GenerateCargoStatusError_Node1{"Status is pending, deleted, or
error"}:::decision N_GenerateCargoStatusError_Node1_action["Generate message sixteen indicating
invalid cargo status"]:::exclusion N_GenerateCargoStatusError_Node1 -- Yes -->|Alternative| N_GenerateCargoStatusError_Node1_action N_GenerateCargoStatusError_Node1_action --> E_GenerateCargoStatusError N_GenerateCargoStatusError_Node0 -- No --> N_GenerateCargoStatusError_Node1 N_GenerateCargoStatusError_Node1 -- No --> E_GenerateCargoStatusError
waybill root key and date"]:::main N_GenerateCargoStatusError_Node0 -- Yes --> N_GenerateCargoStatusError_Node0_action N_GenerateCargoStatusError_Node0_action --> E_GenerateCargoStatusError S_GenerateCargoStatusError --> N_GenerateCargoStatusError_Node0 N_GenerateCargoStatusError_Node1{"Status is pending, deleted, or
error"}:::decision N_GenerateCargoStatusError_Node1_action["Generate message sixteen indicating
invalid cargo status"]:::exclusion N_GenerateCargoStatusError_Node1 -- Yes -->|Alternative| N_GenerateCargoStatusError_Node1_action N_GenerateCargoStatusError_Node1_action --> E_GenerateCargoStatusError N_GenerateCargoStatusError_Node0 -- No --> N_GenerateCargoStatusError_Node1 N_GenerateCargoStatusError_Node1 -- No --> E_GenerateCargoStatusError
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Waybill is found and no cargo is found and idler indicator is not spaces
WHEN:
Processing cargo validation
THEN:
- Generate message fifteen with waybill root key
- Date
File: GCX003.cbl
GIVEN:
Cargo is found with CP cargo status
WHEN:
Status is pending, deleted, or error
THEN:
Generate message sixteen indicating invalid cargo status
β Consolidated Acceptance Criteria
- Idler indicator is not 'I' → generate message forty-four with waybill root key and date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateLoadStatusWarning(["Start Step"])
E_GenerateLoadStatusWarning(["End Step"])
N_GenerateLoadStatusWarning_Node0{"Idler indicator is not I"}:::decision
N_GenerateLoadStatusWarning_Node0_action["Generate message forty-four with
waybill root key and date"]:::main N_GenerateLoadStatusWarning_Node0 -- Yes --> N_GenerateLoadStatusWarning_Node0_action N_GenerateLoadStatusWarning_Node0_action --> E_GenerateLoadStatusWarning S_GenerateLoadStatusWarning --> N_GenerateLoadStatusWarning_Node0 N_GenerateLoadStatusWarning_Node0 -- No --> E_GenerateLoadStatusWarning
waybill root key and date"]:::main N_GenerateLoadStatusWarning_Node0 -- Yes --> N_GenerateLoadStatusWarning_Node0_action N_GenerateLoadStatusWarning_Node0_action --> E_GenerateLoadStatusWarning S_GenerateLoadStatusWarning --> N_GenerateLoadStatusWarning_Node0 N_GenerateLoadStatusWarning_Node0 -- No --> E_GenerateLoadStatusWarning
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Waybill is found and no cargo is found and residue weight threshold is greater than 7 and equipment is empty
WHEN:
Idler indicator is not 'I'
THEN:
- Generate message forty-four with waybill root key
- Date
β Consolidated Acceptance Criteria
- Equipment is not a conveying car → execute detour process
- Equipment is not a conveying car → execute detour process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckLoadStatusConsistent(["Start Step"])
E_CheckLoadStatusConsistent(["End Step"])
N_CheckLoadStatusConsistent_Node0{"Equipment is not a conveying car"}:::decision
N_CheckLoadStatusConsistent_Node0_action["Execute detour process"]:::main
N_CheckLoadStatusConsistent_Node0 -- Yes --> N_CheckLoadStatusConsistent_Node0_action
N_CheckLoadStatusConsistent_Node0_action --> E_CheckLoadStatusConsistent
S_CheckLoadStatusConsistent --> N_CheckLoadStatusConsistent_Node0
N_CheckLoadStatusConsistent_Node1{"Equipment is not a conveying car"}:::decision
N_CheckLoadStatusConsistent_Node1_action["Execute detour process"]:::main
N_CheckLoadStatusConsistent_Node1 -- Yes --> N_CheckLoadStatusConsistent_Node1_action
N_CheckLoadStatusConsistent_Node1_action --> E_CheckLoadStatusConsistent
N_CheckLoadStatusConsistent_Node0 -- No --> N_CheckLoadStatusConsistent_Node1
N_CheckLoadStatusConsistent_Node1 -- No --> E_CheckLoadStatusConsistent
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Waybill is found and no cargo is found and origin state is US and destination state is US and equipment is loaded
WHEN:
Equipment is not a conveying car
THEN:
Execute detour process
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Waybill is found and no cargo is found and origin state is US and destination state is US and equipment is empty and residue weight is greater than 0 and ER is found
WHEN:
Equipment is not a conveying car
THEN:
Execute detour process
β Consolidated Acceptance Criteria
- Equipment is not conveying car and idler indicator is not 'I' → generate message fifteen with waybill root key and date
- FEN reference number is not found in segment data → generate message forty-six indicating missing FEN reference
- KCM reference number is not found in segment data → generate message forty-seven indicating missing KCM reference
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateDocumentationWarning(["Start Step"])
E_GenerateDocumentationWarning(["End Step"])
N_GenerateDocumentationWarning_Node0{"Equipment is not conveying car and
idler indicator is not I"}:::decision N_GenerateDocumentationWarning_Node0_action["Generate message fifteen with
waybill root key and date"]:::main N_GenerateDocumentationWarning_Node0 -- Yes --> N_GenerateDocumentationWarning_Node0_action N_GenerateDocumentationWarning_Node0_action --> E_GenerateDocumentationWarning S_GenerateDocumentationWarning --> N_GenerateDocumentationWarning_Node0 N_GenerateDocumentationWarning_Node1{"FEN reference number is not found
in segment data"}:::decision N_GenerateDocumentationWarning_Node1_action["Generate message forty-six
indicating missing FEN reference"]:::main N_GenerateDocumentationWarning_Node1 -- Yes --> N_GenerateDocumentationWarning_Node1_action N_GenerateDocumentationWarning_Node1_action --> E_GenerateDocumentationWarning N_GenerateDocumentationWarning_Node0 -- No --> N_GenerateDocumentationWarning_Node1 N_GenerateDocumentationWarning_Node2{"KCM reference number is not found
in segment data"}:::decision N_GenerateDocumentationWarning_Node2_action["Generate message forty-seven
indicating missing KCM reference"]:::main N_GenerateDocumentationWarning_Node2 -- Yes --> N_GenerateDocumentationWarning_Node2_action N_GenerateDocumentationWarning_Node2_action --> E_GenerateDocumentationWarning N_GenerateDocumentationWarning_Node1 -- No --> N_GenerateDocumentationWarning_Node2 N_GenerateDocumentationWarning_Node2 -- No --> E_GenerateDocumentationWarning
idler indicator is not I"}:::decision N_GenerateDocumentationWarning_Node0_action["Generate message fifteen with
waybill root key and date"]:::main N_GenerateDocumentationWarning_Node0 -- Yes --> N_GenerateDocumentationWarning_Node0_action N_GenerateDocumentationWarning_Node0_action --> E_GenerateDocumentationWarning S_GenerateDocumentationWarning --> N_GenerateDocumentationWarning_Node0 N_GenerateDocumentationWarning_Node1{"FEN reference number is not found
in segment data"}:::decision N_GenerateDocumentationWarning_Node1_action["Generate message forty-six
indicating missing FEN reference"]:::main N_GenerateDocumentationWarning_Node1 -- Yes --> N_GenerateDocumentationWarning_Node1_action N_GenerateDocumentationWarning_Node1_action --> E_GenerateDocumentationWarning N_GenerateDocumentationWarning_Node0 -- No --> N_GenerateDocumentationWarning_Node1 N_GenerateDocumentationWarning_Node2{"KCM reference number is not found
in segment data"}:::decision N_GenerateDocumentationWarning_Node2_action["Generate message forty-seven
indicating missing KCM reference"]:::main N_GenerateDocumentationWarning_Node2 -- Yes --> N_GenerateDocumentationWarning_Node2_action N_GenerateDocumentationWarning_Node2_action --> E_GenerateDocumentationWarning N_GenerateDocumentationWarning_Node1 -- No --> N_GenerateDocumentationWarning_Node2 N_GenerateDocumentationWarning_Node2 -- No --> E_GenerateDocumentationWarning
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Waybill is found and no cargo is found and container is not found and equipment is loaded
WHEN:
- Equipment is not conveying car
- Idler indicator is not 'i'
THEN:
- Generate message fifteen with waybill root key
- Date
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is found at Laredo TX station and segment 02 is found
WHEN:
FEN reference number is not found in segment data
THEN:
Generate message forty-six indicating missing FEN reference
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is found at Laredo TX station and segment 02 is found
WHEN:
KCM reference number is not found in segment data
THEN:
Generate message forty-seven indicating missing KCM reference
β Consolidated Acceptance Criteria
- Cargo status description equals export status → generate message twelve indicating TR bond export issue
- Station code matches cargo location ID → generate message twenty-five indicating MT bond location issue
- Vessel name character at position 23 is 'T' → generate message seventeen indicating invalid vessel name
- Vessel name is not 'TRAIN' → generate message seventeen indicating invalid vessel name
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateBondTypeError(["Start Step"])
E_GenerateBondTypeError(["End Step"])
N_GenerateBondTypeError_Node0{"Cargo status description equals
export status"}:::decision N_GenerateBondTypeError_Node0_action["Generate message twelve indicating
TR bond export issue"]:::main N_GenerateBondTypeError_Node0 -- Yes --> N_GenerateBondTypeError_Node0_action N_GenerateBondTypeError_Node0_action --> E_GenerateBondTypeError S_GenerateBondTypeError --> N_GenerateBondTypeError_Node0 N_GenerateBondTypeError_Node1{"Station code matches cargo location
ID"}:::decision N_GenerateBondTypeError_Node1_action["Generate message twenty-five
indicating MT bond location issue"]:::main N_GenerateBondTypeError_Node1 -- Yes --> N_GenerateBondTypeError_Node1_action N_GenerateBondTypeError_Node1_action --> E_GenerateBondTypeError N_GenerateBondTypeError_Node0 -- No --> N_GenerateBondTypeError_Node1 N_GenerateBondTypeError_Node2{"Vessel name character at position
23 is T"}:::decision N_GenerateBondTypeError_Node2_action["Generate message seventeen
indicating invalid vessel name"]:::main N_GenerateBondTypeError_Node2 -- Yes --> N_GenerateBondTypeError_Node2_action N_GenerateBondTypeError_Node2_action --> E_GenerateBondTypeError N_GenerateBondTypeError_Node1 -- No --> N_GenerateBondTypeError_Node2 N_GenerateBondTypeError_Node3{"Vessel name is not TRAIN"}:::decision N_GenerateBondTypeError_Node3_action["Generate message seventeen
indicating invalid vessel name"]:::main N_GenerateBondTypeError_Node3 -- Yes --> N_GenerateBondTypeError_Node3_action N_GenerateBondTypeError_Node3_action --> E_GenerateBondTypeError N_GenerateBondTypeError_Node2 -- No --> N_GenerateBondTypeError_Node3 N_GenerateBondTypeError_Node3 -- No --> E_GenerateBondTypeError
export status"}:::decision N_GenerateBondTypeError_Node0_action["Generate message twelve indicating
TR bond export issue"]:::main N_GenerateBondTypeError_Node0 -- Yes --> N_GenerateBondTypeError_Node0_action N_GenerateBondTypeError_Node0_action --> E_GenerateBondTypeError S_GenerateBondTypeError --> N_GenerateBondTypeError_Node0 N_GenerateBondTypeError_Node1{"Station code matches cargo location
ID"}:::decision N_GenerateBondTypeError_Node1_action["Generate message twenty-five
indicating MT bond location issue"]:::main N_GenerateBondTypeError_Node1 -- Yes --> N_GenerateBondTypeError_Node1_action N_GenerateBondTypeError_Node1_action --> E_GenerateBondTypeError N_GenerateBondTypeError_Node0 -- No --> N_GenerateBondTypeError_Node1 N_GenerateBondTypeError_Node2{"Vessel name character at position
23 is T"}:::decision N_GenerateBondTypeError_Node2_action["Generate message seventeen
indicating invalid vessel name"]:::main N_GenerateBondTypeError_Node2 -- Yes --> N_GenerateBondTypeError_Node2_action N_GenerateBondTypeError_Node2_action --> E_GenerateBondTypeError N_GenerateBondTypeError_Node1 -- No --> N_GenerateBondTypeError_Node2 N_GenerateBondTypeError_Node3{"Vessel name is not TRAIN"}:::decision N_GenerateBondTypeError_Node3_action["Generate message seventeen
indicating invalid vessel name"]:::main N_GenerateBondTypeError_Node3 -- Yes --> N_GenerateBondTypeError_Node3_action N_GenerateBondTypeError_Node3_action --> E_GenerateBondTypeError N_GenerateBondTypeError_Node2 -- No --> N_GenerateBondTypeError_Node3 N_GenerateBondTypeError_Node3 -- No --> E_GenerateBondTypeError
File: GCX003.cbl
GIVEN:
Cargo is found with TR bond type
WHEN:
Cargo status description equals export status
THEN:
Generate message twelve indicating TR bond export issue
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is found with MT bond type and vessel name is not 'TRAIN' and not spaces
WHEN:
Station code matches cargo location ID
THEN:
Generate message twenty-five indicating MT bond location issue
File: GCX003.cbl
GIVEN:
Cargo is found with TE bond type
WHEN:
Vessel name character at position 23 is 'T'
THEN:
Generate message seventeen indicating invalid vessel name
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is found with bond type not TE and not MT
WHEN:
Vessel name is not 'TRAIN'
THEN:
Generate message seventeen indicating invalid vessel name
β Consolidated Acceptance Criteria
- DSP hold status is yes → generate message fifty-two indicating hold border with DSP hold
- DSP hold status is yes → generate message forty-nine indicating DSP hold
- Cargo status description equals hold border → generate message forty-eight indicating hold border without DSP
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GeneratePortRequirementError(["Start Step"])
E_GeneratePortRequirementError(["End Step"])
N_GeneratePortRequirementError_Node0{"DSP hold status is yes"}:::decision
N_GeneratePortRequirementError_Node0_action["Generate message fifty-two
indicating hold border with DSP hold"]:::main N_GeneratePortRequirementError_Node0 -- Yes --> N_GeneratePortRequirementError_Node0_action N_GeneratePortRequirementError_Node0_action --> E_GeneratePortRequirementError S_GeneratePortRequirementError --> N_GeneratePortRequirementError_Node0 N_GeneratePortRequirementError_Node1{"DSP hold status is yes"}:::decision N_GeneratePortRequirementError_Node1_action["Generate message forty-nine
indicating DSP hold"]:::main N_GeneratePortRequirementError_Node1 -- Yes --> N_GeneratePortRequirementError_Node1_action N_GeneratePortRequirementError_Node1_action --> E_GeneratePortRequirementError N_GeneratePortRequirementError_Node0 -- No --> N_GeneratePortRequirementError_Node1 N_GeneratePortRequirementError_Node2{"Cargo status description equals
hold border"}:::decision N_GeneratePortRequirementError_Node2_action["Generate message forty-eight
indicating hold border without DSP"]:::main N_GeneratePortRequirementError_Node2 -- Yes --> N_GeneratePortRequirementError_Node2_action N_GeneratePortRequirementError_Node2_action --> E_GeneratePortRequirementError N_GeneratePortRequirementError_Node1 -- No --> N_GeneratePortRequirementError_Node2 N_GeneratePortRequirementError_Node2 -- No --> E_GeneratePortRequirementError
indicating hold border with DSP hold"]:::main N_GeneratePortRequirementError_Node0 -- Yes --> N_GeneratePortRequirementError_Node0_action N_GeneratePortRequirementError_Node0_action --> E_GeneratePortRequirementError S_GeneratePortRequirementError --> N_GeneratePortRequirementError_Node0 N_GeneratePortRequirementError_Node1{"DSP hold status is yes"}:::decision N_GeneratePortRequirementError_Node1_action["Generate message forty-nine
indicating DSP hold"]:::main N_GeneratePortRequirementError_Node1 -- Yes --> N_GeneratePortRequirementError_Node1_action N_GeneratePortRequirementError_Node1_action --> E_GeneratePortRequirementError N_GeneratePortRequirementError_Node0 -- No --> N_GeneratePortRequirementError_Node1 N_GeneratePortRequirementError_Node2{"Cargo status description equals
hold border"}:::decision N_GeneratePortRequirementError_Node2_action["Generate message forty-eight
indicating hold border without DSP"]:::main N_GeneratePortRequirementError_Node2 -- Yes --> N_GeneratePortRequirementError_Node2_action N_GeneratePortRequirementError_Node2_action --> E_GeneratePortRequirementError N_GeneratePortRequirementError_Node1 -- No --> N_GeneratePortRequirementError_Node2 N_GeneratePortRequirementError_Node2 -- No --> E_GeneratePortRequirementError
File: GCX003.cbl
GIVEN:
Cargo is found at Laredo TX station with cargo status description equal to hold border
WHEN:
DSP hold status is yes
THEN:
Generate message fifty-two indicating hold border with DSP hold
File: GCX003.cbl
GIVEN:
Cargo is found at Laredo TX station
WHEN:
DSP hold status is yes
THEN:
Generate message forty-nine indicating DSP hold
File: GCX003.cbl
GIVEN:
Cargo is found at Laredo TX station
WHEN:
Cargo status description equals hold border
THEN:
Generate message forty-eight indicating hold border without DSP
β Consolidated Acceptance Criteria
- The message type is determined → set appropriate error, warning, or info flag and increment corresponding counter
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CategorizeMessageType(["Start Step"])
E_CategorizeMessageType(["End Step"])
N_CategorizeMessageType_Node0{"The message type is determined"}:::decision
N_CategorizeMessageType_Node0_action["Set appropriate error, warning, or
info flag and increment
corresponding counter"]:::main N_CategorizeMessageType_Node0 -- Yes --> N_CategorizeMessageType_Node0_action N_CategorizeMessageType_Node0_action --> E_CategorizeMessageType S_CategorizeMessageType --> N_CategorizeMessageType_Node0 N_CategorizeMessageType_Node0 -- No --> E_CategorizeMessageType
info flag and increment
corresponding counter"]:::main N_CategorizeMessageType_Node0 -- Yes --> N_CategorizeMessageType_Node0_action N_CategorizeMessageType_Node0_action --> E_CategorizeMessageType S_CategorizeMessageType --> N_CategorizeMessageType_Node0 N_CategorizeMessageType_Node0 -- No --> E_CategorizeMessageType
File: GCX003.cbl
GIVEN:
A message has been generated during processing
WHEN:
The message type is determined
THEN:
- Set appropriate error, warning, or info flag
- Increment corresponding counter
β Consolidated Acceptance Criteria
- The message is classified as an error message (MSG-ERR) → increment the total error count by 1
- The message is classified as an error message → the system increments the error counter by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ErrorMessage(["Start Step"])
E_ErrorMessage(["End Step"])
N_ErrorMessage_Node0{"The message is classified as an
error message MSG-ERR"}:::decision N_ErrorMessage_Node0_action["Increment the total error count by
1"]:::exclusion N_ErrorMessage_Node0 -- Yes -->|Alternative| N_ErrorMessage_Node0_action N_ErrorMessage_Node0_action --> E_ErrorMessage S_ErrorMessage --> N_ErrorMessage_Node0 N_ErrorMessage_Node1{"The message is classified as an
error message"}:::decision N_ErrorMessage_Node1_action["The system increments the error
counter by 1"]:::exclusion N_ErrorMessage_Node1 -- Yes -->|Alternative| N_ErrorMessage_Node1_action N_ErrorMessage_Node1_action --> E_ErrorMessage N_ErrorMessage_Node0 -- No --> N_ErrorMessage_Node1 N_ErrorMessage_Node1 -- No --> E_ErrorMessage
error message MSG-ERR"}:::decision N_ErrorMessage_Node0_action["Increment the total error count by
1"]:::exclusion N_ErrorMessage_Node0 -- Yes -->|Alternative| N_ErrorMessage_Node0_action N_ErrorMessage_Node0_action --> E_ErrorMessage S_ErrorMessage --> N_ErrorMessage_Node0 N_ErrorMessage_Node1{"The message is classified as an
error message"}:::decision N_ErrorMessage_Node1_action["The system increments the error
counter by 1"]:::exclusion N_ErrorMessage_Node1 -- Yes -->|Alternative| N_ErrorMessage_Node1_action N_ErrorMessage_Node1_action --> E_ErrorMessage N_ErrorMessage_Node0 -- No --> N_ErrorMessage_Node1 N_ErrorMessage_Node1 -- No --> E_ErrorMessage
File: GCX003.cbl
GIVEN:
A non-spawn message line exists in the report
WHEN:
The message is classified as an error message (MSG-ERR)
THEN:
Increment the total error count by 1
File: GCX003.cbl
GIVEN:
A non-spawn message line is being processed for severity classification
WHEN:
The message is classified as an error message
THEN:
The system increments the error counter by 1
β Consolidated Acceptance Criteria
- The message type indicator equals 43 → increment the type 43 error count by 1
- The message type indicator equals 43 → the system increments the Type 43 error count by 1 in addition to the general error count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifMessageType43(["Start Step"])
E_CheckifMessageType43(["End Step"])
N_CheckifMessageType43_Node0{"The message type indicator equals
43"}:::decision N_CheckifMessageType43_Node0_action["Increment the type 43 error count
by 1"]:::main N_CheckifMessageType43_Node0 -- Yes --> N_CheckifMessageType43_Node0_action N_CheckifMessageType43_Node0_action --> E_CheckifMessageType43 S_CheckifMessageType43 --> N_CheckifMessageType43_Node0 N_CheckifMessageType43_Node1{"The message type indicator equals
43"}:::decision N_CheckifMessageType43_Node1_action["The system increments the Type 43
error count by 1 in addition to the
general error count"]:::main N_CheckifMessageType43_Node1 -- Yes --> N_CheckifMessageType43_Node1_action N_CheckifMessageType43_Node1_action --> E_CheckifMessageType43 N_CheckifMessageType43_Node0 -- No --> N_CheckifMessageType43_Node1 N_CheckifMessageType43_Node1 -- No --> E_CheckifMessageType43
43"}:::decision N_CheckifMessageType43_Node0_action["Increment the type 43 error count
by 1"]:::main N_CheckifMessageType43_Node0 -- Yes --> N_CheckifMessageType43_Node0_action N_CheckifMessageType43_Node0_action --> E_CheckifMessageType43 S_CheckifMessageType43 --> N_CheckifMessageType43_Node0 N_CheckifMessageType43_Node1{"The message type indicator equals
43"}:::decision N_CheckifMessageType43_Node1_action["The system increments the Type 43
error count by 1 in addition to the
general error count"]:::main N_CheckifMessageType43_Node1 -- Yes --> N_CheckifMessageType43_Node1_action N_CheckifMessageType43_Node1_action --> E_CheckifMessageType43 N_CheckifMessageType43_Node0 -- No --> N_CheckifMessageType43_Node1 N_CheckifMessageType43_Node1 -- No --> E_CheckifMessageType43
File: GCX003.cbl
GIVEN:
An error message has been identified
WHEN:
The message type indicator equals 43
THEN:
Increment the type 43 error count by 1
File: GCX003.cbl
GIVEN:
An error message has been identified and error count has been incremented
WHEN:
The message type indicator equals 43
THEN:
The system increments the Type 43 error count by 1 in addition to the general error count
β Consolidated Acceptance Criteria
- The message is classified as a warning message (MSG-WRN) → increment the total warning count by 1
- The message is classified as a warning message → the system increments the warning counter by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WarningMessage(["Start Step"])
E_WarningMessage(["End Step"])
N_WarningMessage_Node0{"The message is classified as a
warning message MSG-WRN"}:::decision N_WarningMessage_Node0_action["Increment the total warning count
by 1"]:::main N_WarningMessage_Node0 -- Yes --> N_WarningMessage_Node0_action N_WarningMessage_Node0_action --> E_WarningMessage S_WarningMessage --> N_WarningMessage_Node0 N_WarningMessage_Node1{"The message is classified as a
warning message"}:::decision N_WarningMessage_Node1_action["The system increments the warning
counter by 1"]:::main N_WarningMessage_Node1 -- Yes --> N_WarningMessage_Node1_action N_WarningMessage_Node1_action --> E_WarningMessage N_WarningMessage_Node0 -- No --> N_WarningMessage_Node1 N_WarningMessage_Node1 -- No --> E_WarningMessage
warning message MSG-WRN"}:::decision N_WarningMessage_Node0_action["Increment the total warning count
by 1"]:::main N_WarningMessage_Node0 -- Yes --> N_WarningMessage_Node0_action N_WarningMessage_Node0_action --> E_WarningMessage S_WarningMessage --> N_WarningMessage_Node0 N_WarningMessage_Node1{"The message is classified as a
warning message"}:::decision N_WarningMessage_Node1_action["The system increments the warning
counter by 1"]:::main N_WarningMessage_Node1 -- Yes --> N_WarningMessage_Node1_action N_WarningMessage_Node1_action --> E_WarningMessage N_WarningMessage_Node0 -- No --> N_WarningMessage_Node1 N_WarningMessage_Node1 -- No --> E_WarningMessage
File: GCX003.cbl
GIVEN:
A non-spawn message line exists in the report
WHEN:
The message is classified as a warning message (MSG-WRN)
THEN:
Increment the total warning count by 1
File: GCX003.cbl
GIVEN:
A non-spawn, non-error message line is being processed for severity classification
WHEN:
The message is classified as a warning message
THEN:
The system increments the warning counter by 1
β Consolidated Acceptance Criteria
- The message type indicator equals 49 or 52 → increment the dispatcher count by 1
- The message type indicator equals 49 or 52 → the system increments the DSP counter by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DSPMessageType49or52(["Start Step"])
E_DSPMessageType49or52(["End Step"])
N_DSPMessageType49or52_Node0{"The message type indicator equals
49 or 52"}:::decision N_DSPMessageType49or52_Node0_action["Increment the dispatcher count by 1"]:::main N_DSPMessageType49or52_Node0 -- Yes --> N_DSPMessageType49or52_Node0_action N_DSPMessageType49or52_Node0_action --> E_DSPMessageType49or52 S_DSPMessageType49or52 --> N_DSPMessageType49or52_Node0 N_DSPMessageType49or52_Node1{"The message type indicator equals
49 or 52"}:::decision N_DSPMessageType49or52_Node1_action["The system increments the DSP
counter by 1"]:::main N_DSPMessageType49or52_Node1 -- Yes --> N_DSPMessageType49or52_Node1_action N_DSPMessageType49or52_Node1_action --> E_DSPMessageType49or52 N_DSPMessageType49or52_Node0 -- No --> N_DSPMessageType49or52_Node1 N_DSPMessageType49or52_Node1 -- No --> E_DSPMessageType49or52
49 or 52"}:::decision N_DSPMessageType49or52_Node0_action["Increment the dispatcher count by 1"]:::main N_DSPMessageType49or52_Node0 -- Yes --> N_DSPMessageType49or52_Node0_action N_DSPMessageType49or52_Node0_action --> E_DSPMessageType49or52 S_DSPMessageType49or52 --> N_DSPMessageType49or52_Node0 N_DSPMessageType49or52_Node1{"The message type indicator equals
49 or 52"}:::decision N_DSPMessageType49or52_Node1_action["The system increments the DSP
counter by 1"]:::main N_DSPMessageType49or52_Node1 -- Yes --> N_DSPMessageType49or52_Node1_action N_DSPMessageType49or52_Node1_action --> E_DSPMessageType49or52 N_DSPMessageType49or52_Node0 -- No --> N_DSPMessageType49or52_Node1 N_DSPMessageType49or52_Node1 -- No --> E_DSPMessageType49or52
File: GCX003.cbl
GIVEN:
A warning message has been identified
WHEN:
The message type indicator equals 49 or 52
THEN:
Increment the dispatcher count by 1
File: GCX003.cbl
GIVEN:
A warning message is being processed
WHEN:
The message type indicator equals 49 or 52
THEN:
The system increments the DSP counter by 1
β Consolidated Acceptance Criteria
- The message is classified as an information message (MSG-INF) → increment the total information count by 1
- The message is classified as an information message → the system increments the information counter by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InformationMessage(["Start Step"])
E_InformationMessage(["End Step"])
N_InformationMessage_Node0{"The message is classified as an
information message MSG-INF"}:::decision N_InformationMessage_Node0_action["Increment the total information
count by 1"]:::main N_InformationMessage_Node0 -- Yes --> N_InformationMessage_Node0_action N_InformationMessage_Node0_action --> E_InformationMessage S_InformationMessage --> N_InformationMessage_Node0 N_InformationMessage_Node1{"The message is classified as an
information message"}:::decision N_InformationMessage_Node1_action["The system increments the
information counter by 1"]:::main N_InformationMessage_Node1 -- Yes --> N_InformationMessage_Node1_action N_InformationMessage_Node1_action --> E_InformationMessage N_InformationMessage_Node0 -- No --> N_InformationMessage_Node1 N_InformationMessage_Node1 -- No --> E_InformationMessage
information message MSG-INF"}:::decision N_InformationMessage_Node0_action["Increment the total information
count by 1"]:::main N_InformationMessage_Node0 -- Yes --> N_InformationMessage_Node0_action N_InformationMessage_Node0_action --> E_InformationMessage S_InformationMessage --> N_InformationMessage_Node0 N_InformationMessage_Node1{"The message is classified as an
information message"}:::decision N_InformationMessage_Node1_action["The system increments the
information counter by 1"]:::main N_InformationMessage_Node1 -- Yes --> N_InformationMessage_Node1_action N_InformationMessage_Node1_action --> E_InformationMessage N_InformationMessage_Node0 -- No --> N_InformationMessage_Node1 N_InformationMessage_Node1 -- No --> E_InformationMessage
File: GCX003.cbl
GIVEN:
A non-spawn message line exists in the report
WHEN:
The message is classified as an information message (MSG-INF)
THEN:
Increment the total information count by 1
File: GCX003.cbl
GIVEN:
A non-spawn, non-error, non-warning message line is being processed for severity classification
WHEN:
The message is classified as an information message
THEN:
The system increments the information counter by 1
β Consolidated Acceptance Criteria
- The message is classified as an error type → the system increments the error count by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ErrorMessageAddtoErrorCount(["Start Step"])
E_ErrorMessageAddtoErrorCount(["End Step"])
N_ErrorMessageAddtoErrorCount_Node0{"The message is classified as an
error type"}:::decision N_ErrorMessageAddtoErrorCount_Node0_action["The system increments the error
count by 1"]:::exclusion N_ErrorMessageAddtoErrorCount_Node0 -- Yes -->|Alternative| N_ErrorMessageAddtoErrorCount_Node0_action N_ErrorMessageAddtoErrorCount_Node0_action --> E_ErrorMessageAddtoErrorCount S_ErrorMessageAddtoErrorCount --> N_ErrorMessageAddtoErrorCount_Node0 N_ErrorMessageAddtoErrorCount_Node0 -- No --> E_ErrorMessageAddtoErrorCount
error type"}:::decision N_ErrorMessageAddtoErrorCount_Node0_action["The system increments the error
count by 1"]:::exclusion N_ErrorMessageAddtoErrorCount_Node0 -- Yes -->|Alternative| N_ErrorMessageAddtoErrorCount_Node0_action N_ErrorMessageAddtoErrorCount_Node0_action --> E_ErrorMessageAddtoErrorCount S_ErrorMessageAddtoErrorCount --> N_ErrorMessageAddtoErrorCount_Node0 N_ErrorMessageAddtoErrorCount_Node0 -- No --> E_ErrorMessageAddtoErrorCount
File: GCX003.cbl
GIVEN:
A non-spawn message line exists in the report
WHEN:
The message is classified as an error type
THEN:
The system increments the error count by 1
β Consolidated Acceptance Criteria
- The error message type is 43 (authorization failure) → the system increments the special error count 43 by 1 in addition to the general error count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsMessageType43(["Start Step"])
E_IsMessageType43(["End Step"])
N_IsMessageType43_Node0{"The error message type is 43
authorization failure"}:::decision N_IsMessageType43_Node0_action["The system increments the special
error count 43 by 1 in addition to
the general error count"]:::exclusion N_IsMessageType43_Node0 -- Yes -->|Alternative| N_IsMessageType43_Node0_action N_IsMessageType43_Node0_action --> E_IsMessageType43 S_IsMessageType43 --> N_IsMessageType43_Node0 N_IsMessageType43_Node0 -- No --> E_IsMessageType43
authorization failure"}:::decision N_IsMessageType43_Node0_action["The system increments the special
error count 43 by 1 in addition to
the general error count"]:::exclusion N_IsMessageType43_Node0 -- Yes -->|Alternative| N_IsMessageType43_Node0_action N_IsMessageType43_Node0_action --> E_IsMessageType43 S_IsMessageType43 --> N_IsMessageType43_Node0 N_IsMessageType43_Node0 -- No --> E_IsMessageType43
File: GCX003.cbl
GIVEN:
An error message has been identified and counted
WHEN:
The error message type is 43 (authorization failure)
THEN:
The system increments the special error count 43 by 1 in addition to the general error count
β Consolidated Acceptance Criteria
- The message is classified as a warning type → the system increments the warning count by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WarningMessageAddtoWarningCount(["Start Step"])
E_WarningMessageAddtoWarningCount(["End Step"])
N_WarningMessageAddtoWarningCount_Node0{"The message is classified as a
warning type"}:::decision N_WarningMessageAddtoWarningCount_Node0_action["The system increments the warning
count by 1"]:::main N_WarningMessageAddtoWarningCount_Node0 -- Yes --> N_WarningMessageAddtoWarningCount_Node0_action N_WarningMessageAddtoWarningCount_Node0_action --> E_WarningMessageAddtoWarningCount S_WarningMessageAddtoWarningCount --> N_WarningMessageAddtoWarningCount_Node0 N_WarningMessageAddtoWarningCount_Node0 -- No --> E_WarningMessageAddtoWarningCount
warning type"}:::decision N_WarningMessageAddtoWarningCount_Node0_action["The system increments the warning
count by 1"]:::main N_WarningMessageAddtoWarningCount_Node0 -- Yes --> N_WarningMessageAddtoWarningCount_Node0_action N_WarningMessageAddtoWarningCount_Node0_action --> E_WarningMessageAddtoWarningCount S_WarningMessageAddtoWarningCount --> N_WarningMessageAddtoWarningCount_Node0 N_WarningMessageAddtoWarningCount_Node0 -- No --> E_WarningMessageAddtoWarningCount
File: GCX003.cbl
GIVEN:
A non-spawn message line exists in the report
WHEN:
The message is classified as a warning type
THEN:
The system increments the warning count by 1
β Consolidated Acceptance Criteria
- The warning message type is 49 or 52 (DSP hold conditions) → the system increments the DSP hold count by 1 in addition to the general warning count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsMessageType49or52(["Start Step"])
E_IsMessageType49or52(["End Step"])
N_IsMessageType49or52_Node0{"The warning message type is 49 or
52 DSP hold conditions"}:::decision N_IsMessageType49or52_Node0_action["The system increments the DSP hold
count by 1 in addition to the
general warning count"]:::main N_IsMessageType49or52_Node0 -- Yes --> N_IsMessageType49or52_Node0_action N_IsMessageType49or52_Node0_action --> E_IsMessageType49or52 S_IsMessageType49or52 --> N_IsMessageType49or52_Node0 N_IsMessageType49or52_Node0 -- No --> E_IsMessageType49or52
52 DSP hold conditions"}:::decision N_IsMessageType49or52_Node0_action["The system increments the DSP hold
count by 1 in addition to the
general warning count"]:::main N_IsMessageType49or52_Node0 -- Yes --> N_IsMessageType49or52_Node0_action N_IsMessageType49or52_Node0_action --> E_IsMessageType49or52 S_IsMessageType49or52 --> N_IsMessageType49or52_Node0 N_IsMessageType49or52_Node0 -- No --> E_IsMessageType49or52
File: GCX003.cbl
GIVEN:
A warning message has been identified and counted
WHEN:
The warning message type is 49 or 52 (DSP hold conditions)
THEN:
The system increments the DSP hold count by 1 in addition to the general warning count
β Consolidated Acceptance Criteria
- The message is classified as an information type → the system increments the information count by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InformationMessageAddtoInfoCount(["Start Step"])
E_InformationMessageAddtoInfoCount(["End Step"])
N_InformationMessageAddtoInfoCount_Node0{"The message is classified as an
information type"}:::decision N_InformationMessageAddtoInfoCount_Node0_action["The system increments the
information count by 1"]:::main N_InformationMessageAddtoInfoCount_Node0 -- Yes --> N_InformationMessageAddtoInfoCount_Node0_action N_InformationMessageAddtoInfoCount_Node0_action --> E_InformationMessageAddtoInfoCount S_InformationMessageAddtoInfoCount --> N_InformationMessageAddtoInfoCount_Node0 N_InformationMessageAddtoInfoCount_Node0 -- No --> E_InformationMessageAddtoInfoCount
information type"}:::decision N_InformationMessageAddtoInfoCount_Node0_action["The system increments the
information count by 1"]:::main N_InformationMessageAddtoInfoCount_Node0 -- Yes --> N_InformationMessageAddtoInfoCount_Node0_action N_InformationMessageAddtoInfoCount_Node0_action --> E_InformationMessageAddtoInfoCount S_InformationMessageAddtoInfoCount --> N_InformationMessageAddtoInfoCount_Node0 N_InformationMessageAddtoInfoCount_Node0 -- No --> E_InformationMessageAddtoInfoCount
File: GCX003.cbl
GIVEN:
A non-spawn message line exists in the report
WHEN:
The message is classified as an information type
THEN:
The system increments the information count by 1
β Consolidated Acceptance Criteria
- The system completes message processing → the report index is incremented by 1 to point to the next available report line
- The system completes processing of the current report line → the system increments the report index by 1 to move to the next report line position
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementReportIndex(["Start Step"])
E_IncrementReportIndex(["End Step"])
N_IncrementReportIndex_Node0{"The system completes message
processing"}:::decision N_IncrementReportIndex_Node0_action["The report index is incremented by
1 to point to the next available
report line"]:::main N_IncrementReportIndex_Node0 -- Yes --> N_IncrementReportIndex_Node0_action N_IncrementReportIndex_Node0_action --> E_IncrementReportIndex S_IncrementReportIndex --> N_IncrementReportIndex_Node0 N_IncrementReportIndex_Node1{"The system completes processing of
the current report line"}:::decision N_IncrementReportIndex_Node1_action["The system increments the report
index by 1 to move to the next
report line position"]:::main N_IncrementReportIndex_Node1 -- Yes --> N_IncrementReportIndex_Node1_action N_IncrementReportIndex_Node1_action --> E_IncrementReportIndex N_IncrementReportIndex_Node0 -- No --> N_IncrementReportIndex_Node1 N_IncrementReportIndex_Node1 -- No --> E_IncrementReportIndex
processing"}:::decision N_IncrementReportIndex_Node0_action["The report index is incremented by
1 to point to the next available
report line"]:::main N_IncrementReportIndex_Node0 -- Yes --> N_IncrementReportIndex_Node0_action N_IncrementReportIndex_Node0_action --> E_IncrementReportIndex S_IncrementReportIndex --> N_IncrementReportIndex_Node0 N_IncrementReportIndex_Node1{"The system completes processing of
the current report line"}:::decision N_IncrementReportIndex_Node1_action["The system increments the report
index by 1 to move to the next
report line position"]:::main N_IncrementReportIndex_Node1 -- Yes --> N_IncrementReportIndex_Node1_action N_IncrementReportIndex_Node1_action --> E_IncrementReportIndex N_IncrementReportIndex_Node0 -- No --> N_IncrementReportIndex_Node1 N_IncrementReportIndex_Node1 -- No --> E_IncrementReportIndex
File: GCX003.cbl
GIVEN:
A message has been processed and classified
WHEN:
The system completes message processing
THEN:
The report index is incremented by 1 to point to the next available report line
File: GCX003.cbl
GIVEN:
A report line has been processed (either message classified or non-message line handled)
WHEN:
The system completes processing of the current report line
THEN:
The system increments the report index by 1 to move to the next report line position
β Consolidated Acceptance Criteria
- The report index reaches the maximum allowed report lines → the system detects a report overflow condition
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReportIndexatMaximum(["Start Step"])
E_ReportIndexatMaximum(["End Step"])
N_ReportIndexatMaximum_Node0{"The report index reaches the
maximum allowed report lines"}:::decision N_ReportIndexatMaximum_Node0_action["The system detects a report
overflow condition"]:::main N_ReportIndexatMaximum_Node0 -- Yes --> N_ReportIndexatMaximum_Node0_action N_ReportIndexatMaximum_Node0_action --> E_ReportIndexatMaximum S_ReportIndexatMaximum --> N_ReportIndexatMaximum_Node0 N_ReportIndexatMaximum_Node0 -- No --> E_ReportIndexatMaximum
maximum allowed report lines"}:::decision N_ReportIndexatMaximum_Node0_action["The system detects a report
overflow condition"]:::main N_ReportIndexatMaximum_Node0 -- Yes --> N_ReportIndexatMaximum_Node0_action N_ReportIndexatMaximum_Node0_action --> E_ReportIndexatMaximum S_ReportIndexatMaximum --> N_ReportIndexatMaximum_Node0 N_ReportIndexatMaximum_Node0 -- No --> E_ReportIndexatMaximum
File: GCX003.cbl
GIVEN:
The report index has been incremented
WHEN:
The report index reaches the maximum allowed report lines
THEN:
The system detects a report overflow condition
β Consolidated Acceptance Criteria
- A report overflow condition is detected → the system sets message type 9 (report overflow) to notify users that the report is truncated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetReportOverflowMessage(["Start Step"])
E_SetReportOverflowMessage(["End Step"])
N_SetReportOverflowMessage_Node0{"A report overflow condition is
detected"}:::decision N_SetReportOverflowMessage_Node0_action["The system sets message type 9
report overflow to notify users that
the report is truncated"]:::main N_SetReportOverflowMessage_Node0 -- Yes --> N_SetReportOverflowMessage_Node0_action N_SetReportOverflowMessage_Node0_action --> E_SetReportOverflowMessage S_SetReportOverflowMessage --> N_SetReportOverflowMessage_Node0 N_SetReportOverflowMessage_Node0 -- No --> E_SetReportOverflowMessage
detected"}:::decision N_SetReportOverflowMessage_Node0_action["The system sets message type 9
report overflow to notify users that
the report is truncated"]:::main N_SetReportOverflowMessage_Node0 -- Yes --> N_SetReportOverflowMessage_Node0_action N_SetReportOverflowMessage_Node0_action --> E_SetReportOverflowMessage S_SetReportOverflowMessage --> N_SetReportOverflowMessage_Node0 N_SetReportOverflowMessage_Node0 -- No --> E_SetReportOverflowMessage
File: GCX003.cbl
GIVEN:
The report index has reached maximum capacity
WHEN:
A report overflow condition is detected
THEN:
The system sets message type 9 (report overflow) to notify users that the report is truncated
β Consolidated Acceptance Criteria
- The system checks if the report entry is a message line type → if the entry is not a message line type, skip all message processing and complete classification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsMessageLineType(["Start Step"])
E_IsMessageLineType(["End Step"])
N_IsMessageLineType_Node0{"The system checks if the report
entry is a message line type"}:::decision N_IsMessageLineType_Node0_action["If the entry is not a message line
type, skip all message processing
and complete classification"]:::main N_IsMessageLineType_Node0 -- Yes --> N_IsMessageLineType_Node0_action N_IsMessageLineType_Node0_action --> E_IsMessageLineType S_IsMessageLineType --> N_IsMessageLineType_Node0 N_IsMessageLineType_Node0 -- No --> E_IsMessageLineType
entry is a message line type"}:::decision N_IsMessageLineType_Node0_action["If the entry is not a message line
type, skip all message processing
and complete classification"]:::main N_IsMessageLineType_Node0 -- Yes --> N_IsMessageLineType_Node0_action N_IsMessageLineType_Node0_action --> E_IsMessageLineType S_IsMessageLineType --> N_IsMessageLineType_Node0 N_IsMessageLineType_Node0 -- No --> E_IsMessageLineType
File: GCX003.cbl
GIVEN:
A report entry is being processed for message classification
WHEN:
The system checks if the report entry is a message line type
THEN:
- If the entry is not a message line type, skip all message processing
- Complete classification
β Consolidated Acceptance Criteria
- The report index is incremented by 1 → if the maximum report line limit is reached, set message type 9 (overflow message) at the current report index position
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReportLineLimitReached(["Start Step"])
E_ReportLineLimitReached(["End Step"])
N_ReportLineLimitReached_Node0{"The report index is incremented by
1"}:::decision N_ReportLineLimitReached_Node0_action["If the maximum report line limit is
reached, set message type 9 overflow
message at the current report index
position"]:::main N_ReportLineLimitReached_Node0 -- Yes --> N_ReportLineLimitReached_Node0_action N_ReportLineLimitReached_Node0_action --> E_ReportLineLimitReached S_ReportLineLimitReached --> N_ReportLineLimitReached_Node0 N_ReportLineLimitReached_Node0 -- No --> E_ReportLineLimitReached
1"}:::decision N_ReportLineLimitReached_Node0_action["If the maximum report line limit is
reached, set message type 9 overflow
message at the current report index
position"]:::main N_ReportLineLimitReached_Node0 -- Yes --> N_ReportLineLimitReached_Node0_action N_ReportLineLimitReached_Node0_action --> E_ReportLineLimitReached S_ReportLineLimitReached --> N_ReportLineLimitReached_Node0 N_ReportLineLimitReached_Node0 -- No --> E_ReportLineLimitReached
File: GCX003.cbl
GIVEN:
A message has been classified and counters updated
WHEN:
The report index is incremented by 1
THEN:
If the maximum report line limit is reached, set message type 9 (overflow message) at the current report index position
β Consolidated Acceptance Criteria
- The error message type indicator equals 43 → the system increments the Type 43 error counter by 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Type43Error(["Start Step"])
E_Type43Error(["End Step"])
N_Type43Error_Node0{"The error message type indicator
equals 43"}:::decision N_Type43Error_Node0_action["The system increments the Type 43
error counter by 1"]:::exclusion N_Type43Error_Node0 -- Yes -->|Alternative| N_Type43Error_Node0_action N_Type43Error_Node0_action --> E_Type43Error S_Type43Error --> N_Type43Error_Node0 N_Type43Error_Node0 -- No --> E_Type43Error
equals 43"}:::decision N_Type43Error_Node0_action["The system increments the Type 43
error counter by 1"]:::exclusion N_Type43Error_Node0 -- Yes -->|Alternative| N_Type43Error_Node0_action N_Type43Error_Node0_action --> E_Type43Error S_Type43Error --> N_Type43Error_Node0 N_Type43Error_Node0 -- No --> E_Type43Error
File: GCX003.cbl
GIVEN:
An error message is being processed
WHEN:
The error message type indicator equals 43
THEN:
The system increments the Type 43 error counter by 1
β Consolidated Acceptance Criteria
- The message line is identified as a spawn message type → the system skips all counter updates and proceeds to report index management
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipCounterUpdate(["Start Step"])
E_SkipCounterUpdate(["End Step"])
N_SkipCounterUpdate_Node0{"The message line is identified as a
spawn message type"}:::decision N_SkipCounterUpdate_Node0_action["The system skips all counter
updates and proceeds to report index
management"]:::main N_SkipCounterUpdate_Node0 -- Yes --> N_SkipCounterUpdate_Node0_action N_SkipCounterUpdate_Node0_action --> E_SkipCounterUpdate S_SkipCounterUpdate --> N_SkipCounterUpdate_Node0 N_SkipCounterUpdate_Node0 -- No --> E_SkipCounterUpdate
spawn message type"}:::decision N_SkipCounterUpdate_Node0_action["The system skips all counter
updates and proceeds to report index
management"]:::main N_SkipCounterUpdate_Node0 -- Yes --> N_SkipCounterUpdate_Node0_action N_SkipCounterUpdate_Node0_action --> E_SkipCounterUpdate S_SkipCounterUpdate --> N_SkipCounterUpdate_Node0 N_SkipCounterUpdate_Node0 -- No --> E_SkipCounterUpdate
File: GCX003.cbl
GIVEN:
A message line is being processed for counter updates
WHEN:
The message line is identified as a spawn message type
THEN:
- The system skips all counter updates
- Proceeds to report index management
β Consolidated Acceptance Criteria
- The message type is determined to be an error → the system adds 1 to the error message counter
- The system processes the error message → the report error counter is incremented by one
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementErrorCounter(["Start Step"])
E_IncrementErrorCounter(["End Step"])
N_IncrementErrorCounter_Node0{"The message type is determined to
be an error"}:::decision N_IncrementErrorCounter_Node0_action["The system adds 1 to the error
message counter"]:::exclusion N_IncrementErrorCounter_Node0 -- Yes -->|Alternative| N_IncrementErrorCounter_Node0_action N_IncrementErrorCounter_Node0_action --> E_IncrementErrorCounter S_IncrementErrorCounter --> N_IncrementErrorCounter_Node0 N_IncrementErrorCounter_Node1{"The system processes the error
message"}:::decision N_IncrementErrorCounter_Node1_action["The report error counter is
incremented by one"]:::exclusion N_IncrementErrorCounter_Node1 -- Yes -->|Alternative| N_IncrementErrorCounter_Node1_action N_IncrementErrorCounter_Node1_action --> E_IncrementErrorCounter N_IncrementErrorCounter_Node0 -- No --> N_IncrementErrorCounter_Node1 N_IncrementErrorCounter_Node1 -- No --> E_IncrementErrorCounter
be an error"}:::decision N_IncrementErrorCounter_Node0_action["The system adds 1 to the error
message counter"]:::exclusion N_IncrementErrorCounter_Node0 -- Yes -->|Alternative| N_IncrementErrorCounter_Node0_action N_IncrementErrorCounter_Node0_action --> E_IncrementErrorCounter S_IncrementErrorCounter --> N_IncrementErrorCounter_Node0 N_IncrementErrorCounter_Node1{"The system processes the error
message"}:::decision N_IncrementErrorCounter_Node1_action["The report error counter is
incremented by one"]:::exclusion N_IncrementErrorCounter_Node1 -- Yes -->|Alternative| N_IncrementErrorCounter_Node1_action N_IncrementErrorCounter_Node1_action --> E_IncrementErrorCounter N_IncrementErrorCounter_Node0 -- No --> N_IncrementErrorCounter_Node1 N_IncrementErrorCounter_Node1 -- No --> E_IncrementErrorCounter
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A message line is classified as an error message and is not a spawn message
WHEN:
The message type is determined to be an error
THEN:
The system adds 1 to the error message counter
File: GCX003.cbl
GIVEN:
A message has been classified as an error type
WHEN:
The system processes the error message
THEN:
The report error counter is incremented by one
β Consolidated Acceptance Criteria
- The message type indicator equals 43 → the system adds 1 to the ERR-43 counter in addition to the general error counter
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementERR43Counter(["Start Step"])
E_IncrementERR43Counter(["End Step"])
N_IncrementERR43Counter_Node0{"The message type indicator equals
43"}:::decision N_IncrementERR43Counter_Node0_action["The system adds 1 to the ERR-43
counter in addition to the general
error counter"]:::main N_IncrementERR43Counter_Node0 -- Yes --> N_IncrementERR43Counter_Node0_action N_IncrementERR43Counter_Node0_action --> E_IncrementERR43Counter S_IncrementERR43Counter --> N_IncrementERR43Counter_Node0 N_IncrementERR43Counter_Node0 -- No --> E_IncrementERR43Counter
43"}:::decision N_IncrementERR43Counter_Node0_action["The system adds 1 to the ERR-43
counter in addition to the general
error counter"]:::main N_IncrementERR43Counter_Node0 -- Yes --> N_IncrementERR43Counter_Node0_action N_IncrementERR43Counter_Node0_action --> E_IncrementERR43Counter S_IncrementERR43Counter --> N_IncrementERR43Counter_Node0 N_IncrementERR43Counter_Node0 -- No --> E_IncrementERR43Counter
File: GCX003.cbl
GIVEN:
An error message is being processed
WHEN:
The message type indicator equals 43
THEN:
The system adds 1 to the ERR-43 counter in addition to the general error counter
β Consolidated Acceptance Criteria
- Counter processing is complete → the system adds 1 to the report line index
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateReportIndex(["Start Step"])
E_UpdateReportIndex(["End Step"])
N_UpdateReportIndex_Node0{"Counter processing is complete"}:::decision
N_UpdateReportIndex_Node0_action["The system adds 1 to the report
line index"]:::main N_UpdateReportIndex_Node0 -- Yes --> N_UpdateReportIndex_Node0_action N_UpdateReportIndex_Node0_action --> E_UpdateReportIndex S_UpdateReportIndex --> N_UpdateReportIndex_Node0 N_UpdateReportIndex_Node0 -- No --> E_UpdateReportIndex
line index"]:::main N_UpdateReportIndex_Node0 -- Yes --> N_UpdateReportIndex_Node0_action N_UpdateReportIndex_Node0_action --> E_UpdateReportIndex S_UpdateReportIndex --> N_UpdateReportIndex_Node0 N_UpdateReportIndex_Node0 -- No --> E_UpdateReportIndex
File: GCX003.cbl
GIVEN:
A message line has been processed for counter updates
WHEN:
Counter processing is complete
THEN:
The system adds 1 to the report line index
β Consolidated Acceptance Criteria
- The system scans through report lines up to position 700 and encounters equipment entries with car IDs → the system should remove duplicate car ID entries while preserving all message lines (error, warning, information) and maintain the first occurrence of each unique car ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Removeduplicatecarentriesfromreportswhilepreservingmessages(["Start Step"])
E_Removeduplicatecarentriesfromreportswhilepreservingmessages(["End Step"])
N_Removeduplicatecarentriesfromreportswhilepreservingmessages_Node0{"The system scans through report
lines up to position 700 and
encounters equipment entries with
car IDs"}:::decision N_Removeduplicatecarentriesfromreportswhilepreservingmessages_Node0_action["The system should remove duplicate
car ID entries while preserving all
message lines error, warning,
information and maintain the first
occurrence of each unique car ID"]:::main N_Removeduplicatecarentriesfromreportswhilepreservingmessages_Node0 -- Yes --> N_Removeduplicatecarentriesfromreportswhilepreservingmessages_Node0_action N_Removeduplicatecarentriesfromreportswhilepreservingmessages_Node0_action --> E_Removeduplicatecarentriesfromreportswhilepreservingmessages S_Removeduplicatecarentriesfromreportswhilepreservingmessages --> N_Removeduplicatecarentriesfromreportswhilepreservingmessages_Node0 N_Removeduplicatecarentriesfromreportswhilepreservingmessages_Node0 -- No --> E_Removeduplicatecarentriesfromreportswhilepreservingmessages
lines up to position 700 and
encounters equipment entries with
car IDs"}:::decision N_Removeduplicatecarentriesfromreportswhilepreservingmessages_Node0_action["The system should remove duplicate
car ID entries while preserving all
message lines error, warning,
information and maintain the first
occurrence of each unique car ID"]:::main N_Removeduplicatecarentriesfromreportswhilepreservingmessages_Node0 -- Yes --> N_Removeduplicatecarentriesfromreportswhilepreservingmessages_Node0_action N_Removeduplicatecarentriesfromreportswhilepreservingmessages_Node0_action --> E_Removeduplicatecarentriesfromreportswhilepreservingmessages S_Removeduplicatecarentriesfromreportswhilepreservingmessages --> N_Removeduplicatecarentriesfromreportswhilepreservingmessages_Node0 N_Removeduplicatecarentriesfromreportswhilepreservingmessages_Node0 -- No --> E_Removeduplicatecarentriesfromreportswhilepreservingmessages
File: GCX003.cbl
GIVEN:
A report contains multiple lines with equipment information and message lines
WHEN:
- The system scans through report lines up to position 700
- Encounters equipment entries with car ids
THEN:
The system should remove duplicate car ID entries while preserving all message lines (error, warning, information) and maintain the first occurrence of each unique car ID
β Consolidated Acceptance Criteria
- A report line contains an empty car ID or represents a message line with prefixes 'ERR>', 'WRN>', or 'INF>' → the system should skip processing this line and continue to the next report line without any duplicate checking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetCurrentReportLine(["Start Step"])
E_GetCurrentReportLine(["End Step"])
N_GetCurrentReportLine_Node0{"A report line contains an empty car
ID or represents a message line with
prefixes ERR , WRN , or INF"}:::decision N_GetCurrentReportLine_Node0_action["The system should skip processing
this line and continue to the next
report line without any duplicate
checking"]:::main N_GetCurrentReportLine_Node0 -- Yes --> N_GetCurrentReportLine_Node0_action N_GetCurrentReportLine_Node0_action --> E_GetCurrentReportLine S_GetCurrentReportLine --> N_GetCurrentReportLine_Node0 N_GetCurrentReportLine_Node0 -- No --> E_GetCurrentReportLine
ID or represents a message line with
prefixes ERR , WRN , or INF"}:::decision N_GetCurrentReportLine_Node0_action["The system should skip processing
this line and continue to the next
report line without any duplicate
checking"]:::main N_GetCurrentReportLine_Node0 -- Yes --> N_GetCurrentReportLine_Node0_action N_GetCurrentReportLine_Node0_action --> E_GetCurrentReportLine S_GetCurrentReportLine --> N_GetCurrentReportLine_Node0 N_GetCurrentReportLine_Node0 -- No --> E_GetCurrentReportLine
File: GCX003.cbl
GIVEN:
The system is processing report lines for duplicate removal
WHEN:
A report line contains an empty car ID or represents a message line with prefixes 'ERR>', 'WRN>', or 'INF>'
THEN:
- The system should skip processing this line
- Continue to the next report line without any duplicate checking
β Consolidated Acceptance Criteria
- The car ID is not empty and not a message line → the system should store this car ID as the new reference for subsequent duplicate comparisons
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreCarIDasPrevious(["Start Step"])
E_StoreCarIDasPrevious(["End Step"])
N_StoreCarIDasPrevious_Node0{"The car ID is not empty and not a
message line"}:::decision N_StoreCarIDasPrevious_Node0_action["The system should store this car ID
as the new reference for subsequent
duplicate comparisons"]:::main N_StoreCarIDasPrevious_Node0 -- Yes --> N_StoreCarIDasPrevious_Node0_action N_StoreCarIDasPrevious_Node0_action --> E_StoreCarIDasPrevious S_StoreCarIDasPrevious --> N_StoreCarIDasPrevious_Node0 N_StoreCarIDasPrevious_Node0 -- No --> E_StoreCarIDasPrevious
message line"}:::decision N_StoreCarIDasPrevious_Node0_action["The system should store this car ID
as the new reference for subsequent
duplicate comparisons"]:::main N_StoreCarIDasPrevious_Node0 -- Yes --> N_StoreCarIDasPrevious_Node0_action N_StoreCarIDasPrevious_Node0_action --> E_StoreCarIDasPrevious S_StoreCarIDasPrevious --> N_StoreCarIDasPrevious_Node0 N_StoreCarIDasPrevious_Node0 -- No --> E_StoreCarIDasPrevious
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
The system encounters a valid car ID that is different from the previously stored car ID
WHEN:
- The car id is not empty
- Not a message line
THEN:
The system should store this car ID as the new reference for subsequent duplicate comparisons
β Consolidated Acceptance Criteria
- The current car ID is identical to the held car ID from previous processing → the system should clear the car ID from the current report line by setting it to spaces, effectively removing the duplicate entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ClearDuplicateCarIDfromReport(["Start Step"])
E_ClearDuplicateCarIDfromReport(["End Step"])
N_ClearDuplicateCarIDfromReport_Node0{"The current car ID is identical to
the held car ID from previous
processing"}:::decision N_ClearDuplicateCarIDfromReport_Node0_action["The system should clear the car ID
from the current report line by
setting it to spaces, effectively
removing the duplicate entry"]:::main N_ClearDuplicateCarIDfromReport_Node0 -- Yes --> N_ClearDuplicateCarIDfromReport_Node0_action N_ClearDuplicateCarIDfromReport_Node0_action --> E_ClearDuplicateCarIDfromReport S_ClearDuplicateCarIDfromReport --> N_ClearDuplicateCarIDfromReport_Node0 N_ClearDuplicateCarIDfromReport_Node0 -- No --> E_ClearDuplicateCarIDfromReport
the held car ID from previous
processing"}:::decision N_ClearDuplicateCarIDfromReport_Node0_action["The system should clear the car ID
from the current report line by
setting it to spaces, effectively
removing the duplicate entry"]:::main N_ClearDuplicateCarIDfromReport_Node0 -- Yes --> N_ClearDuplicateCarIDfromReport_Node0_action N_ClearDuplicateCarIDfromReport_Node0_action --> E_ClearDuplicateCarIDfromReport S_ClearDuplicateCarIDfromReport --> N_ClearDuplicateCarIDfromReport_Node0 N_ClearDuplicateCarIDfromReport_Node0 -- No --> E_ClearDuplicateCarIDfromReport
File: GCX003.cbl
GIVEN:
The system finds a car ID that matches the previously stored car ID reference
WHEN:
The current car ID is identical to the held car ID from previous processing
THEN:
The system should clear the car ID from the current report line by setting it to spaces, effectively removing the duplicate entry
β Consolidated Acceptance Criteria
- The system checks if the cargo record contains valid US CCN data → the cargo record is considered valid if US CCN is not spaces and logging proceeds, otherwise the record is skipped
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifCargoRecordisValid(["Start Step"])
E_CheckifCargoRecordisValid(["End Step"])
N_CheckifCargoRecordisValid_Node0{"The system checks if the cargo
record contains valid US CCN data"}:::decision N_CheckifCargoRecordisValid_Node0_action["The cargo record is considered
valid if US CCN is not spaces and
logging proceeds, otherwise the
record is skipped"]:::main N_CheckifCargoRecordisValid_Node0 -- Yes --> N_CheckifCargoRecordisValid_Node0_action N_CheckifCargoRecordisValid_Node0_action --> E_CheckifCargoRecordisValid S_CheckifCargoRecordisValid --> N_CheckifCargoRecordisValid_Node0 N_CheckifCargoRecordisValid_Node0 -- No --> E_CheckifCargoRecordisValid
record contains valid US CCN data"}:::decision N_CheckifCargoRecordisValid_Node0_action["The cargo record is considered
valid if US CCN is not spaces and
logging proceeds, otherwise the
record is skipped"]:::main N_CheckifCargoRecordisValid_Node0 -- Yes --> N_CheckifCargoRecordisValid_Node0_action N_CheckifCargoRecordisValid_Node0_action --> E_CheckifCargoRecordisValid S_CheckifCargoRecordisValid --> N_CheckifCargoRecordisValid_Node0 N_CheckifCargoRecordisValid_Node0 -- No --> E_CheckifCargoRecordisValid
File: GCX003.cbl
GIVEN:
A cargo record needs to be logged for audit purposes
WHEN:
The system checks if the cargo record contains valid US CCN data
THEN:
- The cargo record is considered valid if us ccn is not spaces
- Logging proceeds, otherwise the record is skipped
β Consolidated Acceptance Criteria
- The system prepares to create an audit log entry → the GCX105 input structure is initialized to clear any previous data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeAuditLogEntry(["Start Step"])
E_InitializeAuditLogEntry(["End Step"])
N_InitializeAuditLogEntry_Node0{"The system prepares to create an
audit log entry"}:::decision N_InitializeAuditLogEntry_Node0_action["The GCX105 input structure is
initialized to clear any previous
data"]:::main N_InitializeAuditLogEntry_Node0 -- Yes --> N_InitializeAuditLogEntry_Node0_action N_InitializeAuditLogEntry_Node0_action --> E_InitializeAuditLogEntry S_InitializeAuditLogEntry --> N_InitializeAuditLogEntry_Node0 N_InitializeAuditLogEntry_Node0 -- No --> E_InitializeAuditLogEntry
audit log entry"}:::decision N_InitializeAuditLogEntry_Node0_action["The GCX105 input structure is
initialized to clear any previous
data"]:::main N_InitializeAuditLogEntry_Node0 -- Yes --> N_InitializeAuditLogEntry_Node0_action N_InitializeAuditLogEntry_Node0_action --> E_InitializeAuditLogEntry S_InitializeAuditLogEntry --> N_InitializeAuditLogEntry_Node0 N_InitializeAuditLogEntry_Node0 -- No --> E_InitializeAuditLogEntry
File: GCX003.cbl
GIVEN:
A valid cargo record needs to be logged
WHEN:
The system prepares to create an audit log entry
THEN:
The GCX105 input structure is initialized to clear any previous data
β Consolidated Acceptance Criteria
- The system sets the record type classification → the record type is set to 'US-CARGO' to identify this as a cargo-related audit entry
- The system sets the record type for the log message → the GCX105-US-CARGO flag is set to TRUE to indicate US cargo logging
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRecordTypetoUSCargo(["Start Step"])
E_SetRecordTypetoUSCargo(["End Step"])
N_SetRecordTypetoUSCargo_Node0{"The system sets the record type
classification"}:::decision N_SetRecordTypetoUSCargo_Node0_action["The record type is set to US-CARGO
to identify this as a cargo-related
audit entry"]:::main N_SetRecordTypetoUSCargo_Node0 -- Yes --> N_SetRecordTypetoUSCargo_Node0_action N_SetRecordTypetoUSCargo_Node0_action --> E_SetRecordTypetoUSCargo S_SetRecordTypetoUSCargo --> N_SetRecordTypetoUSCargo_Node0 N_SetRecordTypetoUSCargo_Node1{"The system sets the record type for
the log message"}:::decision N_SetRecordTypetoUSCargo_Node1_action["The GCX105-US-CARGO flag is set to
TRUE to indicate US cargo logging"]:::main N_SetRecordTypetoUSCargo_Node1 -- Yes --> N_SetRecordTypetoUSCargo_Node1_action N_SetRecordTypetoUSCargo_Node1_action --> E_SetRecordTypetoUSCargo N_SetRecordTypetoUSCargo_Node0 -- No --> N_SetRecordTypetoUSCargo_Node1 N_SetRecordTypetoUSCargo_Node1 -- No --> E_SetRecordTypetoUSCargo
classification"}:::decision N_SetRecordTypetoUSCargo_Node0_action["The record type is set to US-CARGO
to identify this as a cargo-related
audit entry"]:::main N_SetRecordTypetoUSCargo_Node0 -- Yes --> N_SetRecordTypetoUSCargo_Node0_action N_SetRecordTypetoUSCargo_Node0_action --> E_SetRecordTypetoUSCargo S_SetRecordTypetoUSCargo --> N_SetRecordTypetoUSCargo_Node0 N_SetRecordTypetoUSCargo_Node1{"The system sets the record type for
the log message"}:::decision N_SetRecordTypetoUSCargo_Node1_action["The GCX105-US-CARGO flag is set to
TRUE to indicate US cargo logging"]:::main N_SetRecordTypetoUSCargo_Node1 -- Yes --> N_SetRecordTypetoUSCargo_Node1_action N_SetRecordTypetoUSCargo_Node1_action --> E_SetRecordTypetoUSCargo N_SetRecordTypetoUSCargo_Node0 -- No --> N_SetRecordTypetoUSCargo_Node1 N_SetRecordTypetoUSCargo_Node1 -- No --> E_SetRecordTypetoUSCargo
File: GCX003.cbl
GIVEN:
An audit log entry is being created for cargo operations
WHEN:
The system sets the record type classification
THEN:
The record type is set to 'US-CARGO' to identify this as a cargo-related audit entry
File: GCX003.cbl
GIVEN:
The security byte is configured
WHEN:
The system sets the record type for the log message
THEN:
The GCX105-US-CARGO flag is set to TRUE to indicate US cargo logging
β Consolidated Acceptance Criteria
- The system records timestamp information → the current machine date including century and date components are concatenated and stored in the audit log
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CaptureCurrentDate(["Start Step"])
E_CaptureCurrentDate(["End Step"])
N_CaptureCurrentDate_Node0{"The system records timestamp
information"}:::decision N_CaptureCurrentDate_Node0_action["The current machine date including
century and date components are
concatenated and stored in the audit
log"]:::main N_CaptureCurrentDate_Node0 -- Yes --> N_CaptureCurrentDate_Node0_action N_CaptureCurrentDate_Node0_action --> E_CaptureCurrentDate S_CaptureCurrentDate --> N_CaptureCurrentDate_Node0 N_CaptureCurrentDate_Node0 -- No --> E_CaptureCurrentDate
information"}:::decision N_CaptureCurrentDate_Node0_action["The current machine date including
century and date components are
concatenated and stored in the audit
log"]:::main N_CaptureCurrentDate_Node0 -- Yes --> N_CaptureCurrentDate_Node0_action N_CaptureCurrentDate_Node0_action --> E_CaptureCurrentDate S_CaptureCurrentDate --> N_CaptureCurrentDate_Node0 N_CaptureCurrentDate_Node0 -- No --> E_CaptureCurrentDate
File: GCX003.cbl
GIVEN:
An audit log entry is being created
WHEN:
The system records timestamp information
THEN:
- The current machine date including century
- Date components are concatenated
- Stored in the audit log
β Consolidated Acceptance Criteria
- The system sets the primary identifier for the audit entry → the US CCN from the cargo record is used as the train or CCN identifier in the audit log
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCargoCCNasTrainCCNID(["Start Step"])
E_SetCargoCCNasTrainCCNID(["End Step"])
N_SetCargoCCNasTrainCCNID_Node0{"The system sets the primary
identifier for the audit entry"}:::decision N_SetCargoCCNasTrainCCNID_Node0_action["The US CCN from the cargo record is
used as the train or CCN identifier
in the audit log"]:::main N_SetCargoCCNasTrainCCNID_Node0 -- Yes --> N_SetCargoCCNasTrainCCNID_Node0_action N_SetCargoCCNasTrainCCNID_Node0_action --> E_SetCargoCCNasTrainCCNID S_SetCargoCCNasTrainCCNID --> N_SetCargoCCNasTrainCCNID_Node0 N_SetCargoCCNasTrainCCNID_Node0 -- No --> E_SetCargoCCNasTrainCCNID
identifier for the audit entry"}:::decision N_SetCargoCCNasTrainCCNID_Node0_action["The US CCN from the cargo record is
used as the train or CCN identifier
in the audit log"]:::main N_SetCargoCCNasTrainCCNID_Node0 -- Yes --> N_SetCargoCCNasTrainCCNID_Node0_action N_SetCargoCCNasTrainCCNID_Node0_action --> E_SetCargoCCNasTrainCCNID S_SetCargoCCNasTrainCCNID --> N_SetCargoCCNasTrainCCNID_Node0 N_SetCargoCCNasTrainCCNID_Node0 -- No --> E_SetCargoCCNasTrainCCNID
File: GCX003.cbl
GIVEN:
An audit log entry is being created for a cargo record
WHEN:
The system sets the primary identifier for the audit entry
THEN:
The US CCN from the cargo record is used as the train or CCN identifier in the audit log
β Consolidated Acceptance Criteria
- The system categorizes the type of audit message → the message type is set to the predefined 'CAR-ADDED-LOG-MESSAGE' to indicate cargo addition activity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetLogMessageType(["Start Step"])
E_SetLogMessageType(["End Step"])
N_SetLogMessageType_Node0{"The system categorizes the type of
audit message"}:::decision N_SetLogMessageType_Node0_action["The message type is set to the
predefined CAR-ADDED-LOG-MESSAGE to
indicate cargo addition activity"]:::main N_SetLogMessageType_Node0 -- Yes --> N_SetLogMessageType_Node0_action N_SetLogMessageType_Node0_action --> E_SetLogMessageType S_SetLogMessageType --> N_SetLogMessageType_Node0 N_SetLogMessageType_Node0 -- No --> E_SetLogMessageType
audit message"}:::decision N_SetLogMessageType_Node0_action["The message type is set to the
predefined CAR-ADDED-LOG-MESSAGE to
indicate cargo addition activity"]:::main N_SetLogMessageType_Node0 -- Yes --> N_SetLogMessageType_Node0_action N_SetLogMessageType_Node0_action --> E_SetLogMessageType S_SetLogMessageType --> N_SetLogMessageType_Node0 N_SetLogMessageType_Node0 -- No --> E_SetLogMessageType
File: GCX003.cbl
GIVEN:
An audit log entry is being created
WHEN:
The system categorizes the type of audit message
THEN:
The message type is set to the predefined 'CAR-ADDED-LOG-MESSAGE' to indicate cargo addition activity
β Consolidated Acceptance Criteria
- The system prepares the final audit message → the complete GCX105 input structure is moved to the GCT1051E message format for transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatCompleteLogMessage(["Start Step"])
E_FormatCompleteLogMessage(["End Step"])
N_FormatCompleteLogMessage_Node0{"The system prepares the final audit
message"}:::decision N_FormatCompleteLogMessage_Node0_action["The complete GCX105 input structure
is moved to the GCT1051E message
format for transmission"]:::main N_FormatCompleteLogMessage_Node0 -- Yes --> N_FormatCompleteLogMessage_Node0_action N_FormatCompleteLogMessage_Node0_action --> E_FormatCompleteLogMessage S_FormatCompleteLogMessage --> N_FormatCompleteLogMessage_Node0 N_FormatCompleteLogMessage_Node0 -- No --> E_FormatCompleteLogMessage
message"}:::decision N_FormatCompleteLogMessage_Node0_action["The complete GCX105 input structure
is moved to the GCT1051E message
format for transmission"]:::main N_FormatCompleteLogMessage_Node0 -- Yes --> N_FormatCompleteLogMessage_Node0_action N_FormatCompleteLogMessage_Node0_action --> E_FormatCompleteLogMessage S_FormatCompleteLogMessage --> N_FormatCompleteLogMessage_Node0 N_FormatCompleteLogMessage_Node0 -- No --> E_FormatCompleteLogMessage
File: GCX003.cbl
GIVEN:
All audit log components have been populated
WHEN:
The system prepares the final audit message
THEN:
The complete GCX105 input structure is moved to the GCT1051E message format for transmission
β Consolidated Acceptance Criteria
- The system continues processing the cargo collection → the cargo counter is incremented to move to the next cargo record in the added US CCN table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MovetoNextCargoRecord(["Start Step"])
E_MovetoNextCargoRecord(["End Step"])
N_MovetoNextCargoRecord_Node0{"The system continues processing the
cargo collection"}:::decision N_MovetoNextCargoRecord_Node0_action["The cargo counter is incremented to
move to the next cargo record in the
added US CCN table"]:::main N_MovetoNextCargoRecord_Node0 -- Yes --> N_MovetoNextCargoRecord_Node0_action N_MovetoNextCargoRecord_Node0_action --> E_MovetoNextCargoRecord S_MovetoNextCargoRecord --> N_MovetoNextCargoRecord_Node0 N_MovetoNextCargoRecord_Node0 -- No --> E_MovetoNextCargoRecord
cargo collection"}:::decision N_MovetoNextCargoRecord_Node0_action["The cargo counter is incremented to
move to the next cargo record in the
added US CCN table"]:::main N_MovetoNextCargoRecord_Node0 -- Yes --> N_MovetoNextCargoRecord_Node0_action N_MovetoNextCargoRecord_Node0_action --> E_MovetoNextCargoRecord S_MovetoNextCargoRecord --> N_MovetoNextCargoRecord_Node0 N_MovetoNextCargoRecord_Node0 -- No --> E_MovetoNextCargoRecord
File: GCX003.cbl
GIVEN:
The current cargo record has been processed for audit logging
WHEN:
The system continues processing the cargo collection
THEN:
The cargo counter is incremented to move to the next cargo record in the added US CCN table
β Consolidated Acceptance Criteria
- The system checks for more records to process → processing continues if the current cargo CCN is not spaces and the counter has not exceeded 2499 records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreCargoRecordstoLog(["Start Step"])
E_MoreCargoRecordstoLog(["End Step"])
N_MoreCargoRecordstoLog_Node0{"The system checks for more records
to process"}:::decision N_MoreCargoRecordstoLog_Node0_action["Processing continues if the current
cargo CCN is not spaces and the
counter has not exceeded 2499
records"]:::main N_MoreCargoRecordstoLog_Node0 -- Yes --> N_MoreCargoRecordstoLog_Node0_action N_MoreCargoRecordstoLog_Node0_action --> E_MoreCargoRecordstoLog S_MoreCargoRecordstoLog --> N_MoreCargoRecordstoLog_Node0 N_MoreCargoRecordstoLog_Node0 -- No --> E_MoreCargoRecordstoLog
to process"}:::decision N_MoreCargoRecordstoLog_Node0_action["Processing continues if the current
cargo CCN is not spaces and the
counter has not exceeded 2499
records"]:::main N_MoreCargoRecordstoLog_Node0 -- Yes --> N_MoreCargoRecordstoLog_Node0_action N_MoreCargoRecordstoLog_Node0_action --> E_MoreCargoRecordstoLog S_MoreCargoRecordstoLog --> N_MoreCargoRecordstoLog_Node0 N_MoreCargoRecordstoLog_Node0 -- No --> E_MoreCargoRecordstoLog
File: GCX003.cbl
GIVEN:
The system is processing cargo records for audit logging
WHEN:
The system checks for more records to process
THEN:
- Processing continues if the current cargo ccn is not spaces
- The counter has not exceeded 2499 records
β Consolidated Acceptance Criteria
- An error is detected during processing that requires transaction rollback → the system should execute database rollback to undo all uncommitted changes and restore the database to its previous consistent state
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ErrorDetectedDuringProcessing(["Start Step"])
E_ErrorDetectedDuringProcessing(["End Step"])
N_ErrorDetectedDuringProcessing_Node0{"An error is detected during
processing that requires transaction
rollback"}:::decision N_ErrorDetectedDuringProcessing_Node0_action["The system should execute database
rollback to undo all uncommitted
changes and restore the database to
its previous consistent state"]:::exclusion N_ErrorDetectedDuringProcessing_Node0 -- Yes -->|Alternative| N_ErrorDetectedDuringProcessing_Node0_action N_ErrorDetectedDuringProcessing_Node0_action --> E_ErrorDetectedDuringProcessing S_ErrorDetectedDuringProcessing --> N_ErrorDetectedDuringProcessing_Node0 N_ErrorDetectedDuringProcessing_Node0 -- No --> E_ErrorDetectedDuringProcessing
processing that requires transaction
rollback"}:::decision N_ErrorDetectedDuringProcessing_Node0_action["The system should execute database
rollback to undo all uncommitted
changes and restore the database to
its previous consistent state"]:::exclusion N_ErrorDetectedDuringProcessing_Node0 -- Yes -->|Alternative| N_ErrorDetectedDuringProcessing_Node0_action N_ErrorDetectedDuringProcessing_Node0_action --> E_ErrorDetectedDuringProcessing S_ErrorDetectedDuringProcessing --> N_ErrorDetectedDuringProcessing_Node0 N_ErrorDetectedDuringProcessing_Node0 -- No --> E_ErrorDetectedDuringProcessing
File: GCX003.cbl
GIVEN:
A train manifest processing operation is in progress with database changes pending
WHEN:
An error is detected during processing that requires transaction rollback
THEN:
- The system should execute database rollback to undo all uncommitted changes
- Restore the database to its previous consistent state
β Consolidated Acceptance Criteria
- The rollback process is initiated → the system should initialize the accept status to prepare for rollback command execution
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeRollbackStatus(["Start Step"])
E_InitializeRollbackStatus(["End Step"])
N_InitializeRollbackStatus_Node0{"The rollback process is initiated"}:::decision
N_InitializeRollbackStatus_Node0_action["The system should initialize the
accept status to prepare for
rollback command execution"]:::main N_InitializeRollbackStatus_Node0 -- Yes --> N_InitializeRollbackStatus_Node0_action N_InitializeRollbackStatus_Node0_action --> E_InitializeRollbackStatus S_InitializeRollbackStatus --> N_InitializeRollbackStatus_Node0 N_InitializeRollbackStatus_Node0 -- No --> E_InitializeRollbackStatus
accept status to prepare for
rollback command execution"]:::main N_InitializeRollbackStatus_Node0 -- Yes --> N_InitializeRollbackStatus_Node0_action N_InitializeRollbackStatus_Node0_action --> E_InitializeRollbackStatus S_InitializeRollbackStatus --> N_InitializeRollbackStatus_Node0 N_InitializeRollbackStatus_Node0 -- No --> E_InitializeRollbackStatus
File: GCX003.cbl
GIVEN:
A database rollback operation needs to be performed
WHEN:
The rollback process is initiated
THEN:
The system should initialize the accept status to prepare for rollback command execution
β Consolidated Acceptance Criteria
- The database rollback command is executed → the system should call the database rollback function to undo all pending changes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExecuteDatabaseRollbackCommand(["Start Step"])
E_ExecuteDatabaseRollbackCommand(["End Step"])
N_ExecuteDatabaseRollbackCommand_Node0{"The database rollback command is
executed"}:::decision N_ExecuteDatabaseRollbackCommand_Node0_action["The system should call the database
rollback function to undo all
pending changes"]:::main N_ExecuteDatabaseRollbackCommand_Node0 -- Yes --> N_ExecuteDatabaseRollbackCommand_Node0_action N_ExecuteDatabaseRollbackCommand_Node0_action --> E_ExecuteDatabaseRollbackCommand S_ExecuteDatabaseRollbackCommand --> N_ExecuteDatabaseRollbackCommand_Node0 N_ExecuteDatabaseRollbackCommand_Node0 -- No --> E_ExecuteDatabaseRollbackCommand
executed"}:::decision N_ExecuteDatabaseRollbackCommand_Node0_action["The system should call the database
rollback function to undo all
pending changes"]:::main N_ExecuteDatabaseRollbackCommand_Node0 -- Yes --> N_ExecuteDatabaseRollbackCommand_Node0_action N_ExecuteDatabaseRollbackCommand_Node0_action --> E_ExecuteDatabaseRollbackCommand S_ExecuteDatabaseRollbackCommand --> N_ExecuteDatabaseRollbackCommand_Node0 N_ExecuteDatabaseRollbackCommand_Node0 -- No --> E_ExecuteDatabaseRollbackCommand
File: GCX003.cbl
GIVEN:
The rollback status has been initialized
WHEN:
The database rollback command is executed
THEN:
The system should call the database rollback function to undo all pending changes
β Consolidated Acceptance Criteria
- If whether processing errors have occurred → if no errors occurred, continue normal processing; if errors occurred, trigger rollback processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessingErrorOccurred(["Start Step"])
E_ProcessingErrorOccurred(["End Step"])
N_ProcessingErrorOccurred_Node0{"The system evaluates whether
processing errors have occurred"}:::decision N_ProcessingErrorOccurred_Node0_action["If no errors occurred, continue
normal processing if errors
occurred, trigger rollback
processing"]:::main N_ProcessingErrorOccurred_Node0 -- Yes --> N_ProcessingErrorOccurred_Node0_action N_ProcessingErrorOccurred_Node0_action --> E_ProcessingErrorOccurred S_ProcessingErrorOccurred --> N_ProcessingErrorOccurred_Node0 N_ProcessingErrorOccurred_Node0 -- No --> E_ProcessingErrorOccurred
processing errors have occurred"}:::decision N_ProcessingErrorOccurred_Node0_action["If no errors occurred, continue
normal processing if errors
occurred, trigger rollback
processing"]:::main N_ProcessingErrorOccurred_Node0 -- Yes --> N_ProcessingErrorOccurred_Node0_action N_ProcessingErrorOccurred_Node0_action --> E_ProcessingErrorOccurred S_ProcessingErrorOccurred --> N_ProcessingErrorOccurred_Node0 N_ProcessingErrorOccurred_Node0 -- No --> E_ProcessingErrorOccurred
File: GCX003.cbl
GIVEN:
Train manifest processing is executing with potential for errors
WHEN:
The system evaluates whether processing errors have occurred
THEN:
If no errors occurred, continue normal processing; if errors occurred, trigger rollback processing
β Consolidated Acceptance Criteria
- The cargo SCAC is 'CPRS' and the train origin is not '9089' → the port is classified as automated for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CPRSSCACandOrigin9089(["Start Step"])
E_CPRSSCACandOrigin9089(["End Step"])
N_CPRSSCACandOrigin9089_Node0{"The cargo SCAC is CPRS and the
train origin is not 9089"}:::decision N_CPRSSCACandOrigin9089_Node0_action["The port is classified as automated
for processing"]:::main N_CPRSSCACandOrigin9089_Node0 -- Yes --> N_CPRSSCACandOrigin9089_Node0_action N_CPRSSCACandOrigin9089_Node0_action --> E_CPRSSCACandOrigin9089 S_CPRSSCACandOrigin9089 --> N_CPRSSCACandOrigin9089_Node0 N_CPRSSCACandOrigin9089_Node0 -- No --> E_CPRSSCACandOrigin9089
train origin is not 9089"}:::decision N_CPRSSCACandOrigin9089_Node0_action["The port is classified as automated
for processing"]:::main N_CPRSSCACandOrigin9089_Node0 -- Yes --> N_CPRSSCACandOrigin9089_Node0_action N_CPRSSCACandOrigin9089_Node0_action --> E_CPRSSCACandOrigin9089 S_CPRSSCACandOrigin9089 --> N_CPRSSCACandOrigin9089_Node0 N_CPRSSCACandOrigin9089_Node0 -- No --> E_CPRSSCACandOrigin9089
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record with SCAC code and train origin station
WHEN:
The cargo SCAC is 'CPRS' and the train origin is not '9089'
THEN:
The port is classified as automated for processing
β Consolidated Acceptance Criteria
- The cargo SCAC is 'UPRR' and the train origin is '9089' → the port is classified as automated for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UPRRSCACandOrigin9089(["Start Step"])
E_UPRRSCACandOrigin9089(["End Step"])
N_UPRRSCACandOrigin9089_Node0{"The cargo SCAC is UPRR and the
train origin is 9089"}:::decision N_UPRRSCACandOrigin9089_Node0_action["The port is classified as automated
for processing"]:::main N_UPRRSCACandOrigin9089_Node0 -- Yes --> N_UPRRSCACandOrigin9089_Node0_action N_UPRRSCACandOrigin9089_Node0_action --> E_UPRRSCACandOrigin9089 S_UPRRSCACandOrigin9089 --> N_UPRRSCACandOrigin9089_Node0 N_UPRRSCACandOrigin9089_Node0 -- No --> E_UPRRSCACandOrigin9089
train origin is 9089"}:::decision N_UPRRSCACandOrigin9089_Node0_action["The port is classified as automated
for processing"]:::main N_UPRRSCACandOrigin9089_Node0 -- Yes --> N_UPRRSCACandOrigin9089_Node0_action N_UPRRSCACandOrigin9089_Node0_action --> E_UPRRSCACandOrigin9089 S_UPRRSCACandOrigin9089 --> N_UPRRSCACandOrigin9089_Node0 N_UPRRSCACandOrigin9089_Node0 -- No --> E_UPRRSCACandOrigin9089
File: GCX003.cbl
GIVEN:
A cargo record with SCAC code and train origin station
WHEN:
The cargo SCAC is 'UPRR' and the train origin is '9089'
THEN:
The port is classified as automated for processing
β Consolidated Acceptance Criteria
- The system needs to determine port automation status → look up the port configuration in GCSTBRT SS segment using cargo SCAC and station code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookupPortinReferenceTable(["Start Step"])
E_LookupPortinReferenceTable(["End Step"])
N_LookupPortinReferenceTable_Node0{"The system needs to determine port
automation status"}:::decision N_LookupPortinReferenceTable_Node0_action["Look up the port configuration in
GCSTBRT SS segment using cargo SCAC
and station code"]:::main N_LookupPortinReferenceTable_Node0 -- Yes --> N_LookupPortinReferenceTable_Node0_action N_LookupPortinReferenceTable_Node0_action --> E_LookupPortinReferenceTable S_LookupPortinReferenceTable --> N_LookupPortinReferenceTable_Node0 N_LookupPortinReferenceTable_Node0 -- No --> E_LookupPortinReferenceTable
automation status"}:::decision N_LookupPortinReferenceTable_Node0_action["Look up the port configuration in
GCSTBRT SS segment using cargo SCAC
and station code"]:::main N_LookupPortinReferenceTable_Node0 -- Yes --> N_LookupPortinReferenceTable_Node0_action N_LookupPortinReferenceTable_Node0_action --> E_LookupPortinReferenceTable S_LookupPortinReferenceTable --> N_LookupPortinReferenceTable_Node0 N_LookupPortinReferenceTable_Node0 -- No --> E_LookupPortinReferenceTable
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo that does not meet CPRS or UPRR automated port criteria
WHEN:
The system needs to determine port automation status
THEN:
- Look up the port configuration in gcstbrt ss segment using cargo scac
- Station code
β Consolidated Acceptance Criteria
- The automated carrier flag is evaluated → if flag equals 'Y' then classify port as automated, otherwise classify as paper-based
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AutomatedCarrierFlagY(["Start Step"])
E_AutomatedCarrierFlagY(["End Step"])
N_AutomatedCarrierFlagY_Node0{"The automated carrier flag is
evaluated"}:::decision N_AutomatedCarrierFlagY_Node0_action["If flag equals Y then classify port
as automated, otherwise classify as
paper-based"]:::main N_AutomatedCarrierFlagY_Node0 -- Yes --> N_AutomatedCarrierFlagY_Node0_action N_AutomatedCarrierFlagY_Node0_action --> E_AutomatedCarrierFlagY S_AutomatedCarrierFlagY --> N_AutomatedCarrierFlagY_Node0 N_AutomatedCarrierFlagY_Node0 -- No --> E_AutomatedCarrierFlagY
evaluated"}:::decision N_AutomatedCarrierFlagY_Node0_action["If flag equals Y then classify port
as automated, otherwise classify as
paper-based"]:::main N_AutomatedCarrierFlagY_Node0 -- Yes --> N_AutomatedCarrierFlagY_Node0_action N_AutomatedCarrierFlagY_Node0_action --> E_AutomatedCarrierFlagY S_AutomatedCarrierFlagY --> N_AutomatedCarrierFlagY_Node0 N_AutomatedCarrierFlagY_Node0 -- No --> E_AutomatedCarrierFlagY
File: GCX003.cbl
GIVEN:
A port configuration record retrieved from reference table
WHEN:
The automated carrier flag is evaluated
THEN:
If flag equals 'Y' then classify port as automated, otherwise classify as paper-based
β Consolidated Acceptance Criteria
- The request action is SEND and the cargo has haulage processing → update the cargo haulage automated flag to 'N' for manual processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateHaulageFlagtoManualN(["Start Step"])
E_UpdateHaulageFlagtoManualN(["End Step"])
N_UpdateHaulageFlagtoManualN_Node0{"The request action is SEND and the
cargo has haulage processing"}:::decision N_UpdateHaulageFlagtoManualN_Node0_action["Update the cargo haulage automated
flag to N for manual processing"]:::main N_UpdateHaulageFlagtoManualN_Node0 -- Yes --> N_UpdateHaulageFlagtoManualN_Node0_action N_UpdateHaulageFlagtoManualN_Node0_action --> E_UpdateHaulageFlagtoManualN S_UpdateHaulageFlagtoManualN --> N_UpdateHaulageFlagtoManualN_Node0 N_UpdateHaulageFlagtoManualN_Node0 -- No --> E_UpdateHaulageFlagtoManualN
cargo has haulage processing"}:::decision N_UpdateHaulageFlagtoManualN_Node0_action["Update the cargo haulage automated
flag to N for manual processing"]:::main N_UpdateHaulageFlagtoManualN_Node0 -- Yes --> N_UpdateHaulageFlagtoManualN_Node0_action N_UpdateHaulageFlagtoManualN_Node0_action --> E_UpdateHaulageFlagtoManualN S_UpdateHaulageFlagtoManualN --> N_UpdateHaulageFlagtoManualN_Node0 N_UpdateHaulageFlagtoManualN_Node0 -- No --> E_UpdateHaulageFlagtoManualN
File: GCX003.cbl
GIVEN:
A cargo record with automated haulage flag and a paper-based port classification
WHEN:
- The request action is send
- The cargo has haulage processing
THEN:
Update the cargo haulage automated flag to 'N' for manual processing
β Consolidated Acceptance Criteria
- The request action is SEND and the cargo has haulage processing → update the cargo haulage automated flag to 'Y' for automated processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateHaulageFlagtoAutomatedY(["Start Step"])
E_UpdateHaulageFlagtoAutomatedY(["End Step"])
N_UpdateHaulageFlagtoAutomatedY_Node0{"The request action is SEND and the
cargo has haulage processing"}:::decision N_UpdateHaulageFlagtoAutomatedY_Node0_action["Update the cargo haulage automated
flag to Y for automated processing"]:::main N_UpdateHaulageFlagtoAutomatedY_Node0 -- Yes --> N_UpdateHaulageFlagtoAutomatedY_Node0_action N_UpdateHaulageFlagtoAutomatedY_Node0_action --> E_UpdateHaulageFlagtoAutomatedY S_UpdateHaulageFlagtoAutomatedY --> N_UpdateHaulageFlagtoAutomatedY_Node0 N_UpdateHaulageFlagtoAutomatedY_Node0 -- No --> E_UpdateHaulageFlagtoAutomatedY
cargo has haulage processing"}:::decision N_UpdateHaulageFlagtoAutomatedY_Node0_action["Update the cargo haulage automated
flag to Y for automated processing"]:::main N_UpdateHaulageFlagtoAutomatedY_Node0 -- Yes --> N_UpdateHaulageFlagtoAutomatedY_Node0_action N_UpdateHaulageFlagtoAutomatedY_Node0_action --> E_UpdateHaulageFlagtoAutomatedY S_UpdateHaulageFlagtoAutomatedY --> N_UpdateHaulageFlagtoAutomatedY_Node0 N_UpdateHaulageFlagtoAutomatedY_Node0 -- No --> E_UpdateHaulageFlagtoAutomatedY
File: GCX003.cbl
GIVEN:
A cargo record with manual haulage flag and an automated port classification
WHEN:
- The request action is send
- The cargo has haulage processing
THEN:
Update the cargo haulage automated flag to 'Y' for automated processing
β Consolidated Acceptance Criteria
- If the request type against the AEI request type constant → if the request type equals the AEI request type constant, the AEI train send flag is set to YES, otherwise the AEI train send flag is set to NO
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckRequestType(["Start Step"])
E_CheckRequestType(["End Step"])
N_CheckRequestType_Node0{"The system evaluates the request
type against the AEI request type
constant"}:::decision N_CheckRequestType_Node0_action["If the request type equals the AEI
request type constant, the AEI train
send flag is set to YES, otherwise
the AEI train send flag is set to NO"]:::main N_CheckRequestType_Node0 -- Yes --> N_CheckRequestType_Node0_action N_CheckRequestType_Node0_action --> E_CheckRequestType S_CheckRequestType --> N_CheckRequestType_Node0 N_CheckRequestType_Node0 -- No --> E_CheckRequestType
type against the AEI request type
constant"}:::decision N_CheckRequestType_Node0_action["If the request type equals the AEI
request type constant, the AEI train
send flag is set to YES, otherwise
the AEI train send flag is set to NO"]:::main N_CheckRequestType_Node0 -- Yes --> N_CheckRequestType_Node0_action N_CheckRequestType_Node0_action --> E_CheckRequestType S_CheckRequestType --> N_CheckRequestType_Node0 N_CheckRequestType_Node0 -- No --> E_CheckRequestType
File: GCX003.cbl
GIVEN:
A train export request is received with a specific request type code
WHEN:
The system evaluates the request type against the AEI request type constant
THEN:
If the request type equals the AEI request type constant, the AEI train send flag is set to YES, otherwise the AEI train send flag is set to NO
β Consolidated Acceptance Criteria
- The first equipment entry in the request is empty (REQ-NO-MORE-EQP(1) is true) → the system sets error message MSG-FIVE and adds it to the report index to indicate no equipment was provided
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FirstEquipmentEntryEmpty(["Start Step"])
E_FirstEquipmentEntryEmpty(["End Step"])
N_FirstEquipmentEntryEmpty_Node0{"The first equipment entry in the
request is empty REQ-NO-MORE-EQP1 is
true"}:::decision N_FirstEquipmentEntryEmpty_Node0_action["The system sets error message
MSG-FIVE and adds it to the report
index to indicate no equipment was
provided"]:::main N_FirstEquipmentEntryEmpty_Node0 -- Yes --> N_FirstEquipmentEntryEmpty_Node0_action N_FirstEquipmentEntryEmpty_Node0_action --> E_FirstEquipmentEntryEmpty S_FirstEquipmentEntryEmpty --> N_FirstEquipmentEntryEmpty_Node0 N_FirstEquipmentEntryEmpty_Node0 -- No --> E_FirstEquipmentEntryEmpty
request is empty REQ-NO-MORE-EQP1 is
true"}:::decision N_FirstEquipmentEntryEmpty_Node0_action["The system sets error message
MSG-FIVE and adds it to the report
index to indicate no equipment was
provided"]:::main N_FirstEquipmentEntryEmpty_Node0 -- Yes --> N_FirstEquipmentEntryEmpty_Node0_action N_FirstEquipmentEntryEmpty_Node0_action --> E_FirstEquipmentEntryEmpty S_FirstEquipmentEntryEmpty --> N_FirstEquipmentEntryEmpty_Node0 N_FirstEquipmentEntryEmpty_Node0 -- No --> E_FirstEquipmentEntryEmpty
File: GCX003.cbl
GIVEN:
A train manifest request is being processed and no errors have occurred so far
WHEN:
The first equipment entry in the request is empty (REQ-NO-MORE-EQP(1) is true)
THEN:
- The system sets error message msg-five
- Adds it to the report index to indicate no equipment was provided
β Consolidated Acceptance Criteria
- The equipment list contains more than 499 items (NOT REQ-NO-MORE-EQP(500) is true) → the system sets error message MSG-FIVE and adds it to the report index to indicate too many equipment items were provided
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentCount499(["Start Step"])
E_EquipmentCount499(["End Step"])
N_EquipmentCount499_Node0{"The equipment list contains more
than 499 items NOT
REQ-NO-MORE-EQP500 is true"}:::decision N_EquipmentCount499_Node0_action["The system sets error message
MSG-FIVE and adds it to the report
index to indicate too many equipment
items were provided"]:::main N_EquipmentCount499_Node0 -- Yes --> N_EquipmentCount499_Node0_action N_EquipmentCount499_Node0_action --> E_EquipmentCount499 S_EquipmentCount499 --> N_EquipmentCount499_Node0 N_EquipmentCount499_Node0 -- No --> E_EquipmentCount499
than 499 items NOT
REQ-NO-MORE-EQP500 is true"}:::decision N_EquipmentCount499_Node0_action["The system sets error message
MSG-FIVE and adds it to the report
index to indicate too many equipment
items were provided"]:::main N_EquipmentCount499_Node0 -- Yes --> N_EquipmentCount499_Node0_action N_EquipmentCount499_Node0_action --> E_EquipmentCount499 S_EquipmentCount499 --> N_EquipmentCount499_Node0 N_EquipmentCount499_Node0 -- No --> E_EquipmentCount499
File: GCX003.cbl
GIVEN:
A train manifest request is being processed and no errors have occurred so far
WHEN:
The equipment list contains more than 499 items (NOT REQ-NO-MORE-EQP(500) is true)
THEN:
- The system sets error message msg-five
- Adds it to the report index to indicate too many equipment items were provided
β Consolidated Acceptance Criteria
- Previous validation steps have resulted in errors (RPT-NO-ERROR is false) → the system skips equipment limit validation and continues with subsequent processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifNoErrorsSoFar(["Start Step"])
E_CheckifNoErrorsSoFar(["End Step"])
N_CheckifNoErrorsSoFar_Node0{"Previous validation steps have
resulted in errors RPT-NO-ERROR is
false"}:::decision N_CheckifNoErrorsSoFar_Node0_action["The system skips equipment limit
validation and continues with
subsequent processing"]:::exclusion N_CheckifNoErrorsSoFar_Node0 -- Yes -->|Alternative| N_CheckifNoErrorsSoFar_Node0_action N_CheckifNoErrorsSoFar_Node0_action --> E_CheckifNoErrorsSoFar S_CheckifNoErrorsSoFar --> N_CheckifNoErrorsSoFar_Node0 N_CheckifNoErrorsSoFar_Node0 -- No --> E_CheckifNoErrorsSoFar
resulted in errors RPT-NO-ERROR is
false"}:::decision N_CheckifNoErrorsSoFar_Node0_action["The system skips equipment limit
validation and continues with
subsequent processing"]:::exclusion N_CheckifNoErrorsSoFar_Node0 -- Yes -->|Alternative| N_CheckifNoErrorsSoFar_Node0_action N_CheckifNoErrorsSoFar_Node0_action --> E_CheckifNoErrorsSoFar S_CheckifNoErrorsSoFar --> N_CheckifNoErrorsSoFar_Node0 N_CheckifNoErrorsSoFar_Node0 -- No --> E_CheckifNoErrorsSoFar
File: GCX003.cbl
GIVEN:
A train manifest request is being processed
WHEN:
Previous validation steps have resulted in errors (RPT-NO-ERROR is false)
THEN:
- The system skips equipment limit validation
- Continues with subsequent processing
β Consolidated Acceptance Criteria
- The equipment type code is evaluated → if equipment type is 'SK' then proceed to double stack counting, otherwise continue with normal equipment processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentTypeSKDoubleStack(["Start Step"])
E_EquipmentTypeSKDoubleStack(["End Step"])
N_EquipmentTypeSKDoubleStack_Node0{"The equipment type code is
evaluated"}:::decision N_EquipmentTypeSKDoubleStack_Node0_action["If equipment type is SK then
proceed to double stack counting,
otherwise continue with normal
equipment processing"]:::main N_EquipmentTypeSKDoubleStack_Node0 -- Yes --> N_EquipmentTypeSKDoubleStack_Node0_action N_EquipmentTypeSKDoubleStack_Node0_action --> E_EquipmentTypeSKDoubleStack S_EquipmentTypeSKDoubleStack --> N_EquipmentTypeSKDoubleStack_Node0 N_EquipmentTypeSKDoubleStack_Node0 -- No --> E_EquipmentTypeSKDoubleStack
evaluated"}:::decision N_EquipmentTypeSKDoubleStack_Node0_action["If equipment type is SK then
proceed to double stack counting,
otherwise continue with normal
equipment processing"]:::main N_EquipmentTypeSKDoubleStack_Node0 -- Yes --> N_EquipmentTypeSKDoubleStack_Node0_action N_EquipmentTypeSKDoubleStack_Node0_action --> E_EquipmentTypeSKDoubleStack S_EquipmentTypeSKDoubleStack --> N_EquipmentTypeSKDoubleStack_Node0 N_EquipmentTypeSKDoubleStack_Node0 -- No --> E_EquipmentTypeSKDoubleStack
File: GCX003.cbl
GIVEN:
A waybill is found and equipment type code is available
WHEN:
The equipment type code is evaluated
THEN:
If equipment type is 'SK' then proceed to double stack counting, otherwise continue with normal equipment processing
β Consolidated Acceptance Criteria
- The GCCDBL module is called with the waybill number → double stack traffic type and count information is returned for further processing
- GCCDBL module is called with the waybill number from shipment root → double stack container count and traffic type information is retrieved from the module
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCDBLModulewithWaybillNumber(["Start Step"])
E_CallGCCDBLModulewithWaybillNumber(["End Step"])
N_CallGCCDBLModulewithWaybillNumber_Node0{"The GCCDBL module is called with
the waybill number"}:::decision N_CallGCCDBLModulewithWaybillNumber_Node0_action["Double stack traffic type and count
information is returned for further
processing"]:::main N_CallGCCDBLModulewithWaybillNumber_Node0 -- Yes --> N_CallGCCDBLModulewithWaybillNumber_Node0_action N_CallGCCDBLModulewithWaybillNumber_Node0_action --> E_CallGCCDBLModulewithWaybillNumber S_CallGCCDBLModulewithWaybillNumber --> N_CallGCCDBLModulewithWaybillNumber_Node0 N_CallGCCDBLModulewithWaybillNumber_Node1{"GCCDBL module is called with the
waybill number from shipment root"}:::decision N_CallGCCDBLModulewithWaybillNumber_Node1_action["Double stack container count and
traffic type information is
retrieved from the module"]:::main N_CallGCCDBLModulewithWaybillNumber_Node1 -- Yes --> N_CallGCCDBLModulewithWaybillNumber_Node1_action N_CallGCCDBLModulewithWaybillNumber_Node1_action --> E_CallGCCDBLModulewithWaybillNumber N_CallGCCDBLModulewithWaybillNumber_Node0 -- No --> N_CallGCCDBLModulewithWaybillNumber_Node1 N_CallGCCDBLModulewithWaybillNumber_Node1 -- No --> E_CallGCCDBLModulewithWaybillNumber
the waybill number"}:::decision N_CallGCCDBLModulewithWaybillNumber_Node0_action["Double stack traffic type and count
information is returned for further
processing"]:::main N_CallGCCDBLModulewithWaybillNumber_Node0 -- Yes --> N_CallGCCDBLModulewithWaybillNumber_Node0_action N_CallGCCDBLModulewithWaybillNumber_Node0_action --> E_CallGCCDBLModulewithWaybillNumber S_CallGCCDBLModulewithWaybillNumber --> N_CallGCCDBLModulewithWaybillNumber_Node0 N_CallGCCDBLModulewithWaybillNumber_Node1{"GCCDBL module is called with the
waybill number from shipment root"}:::decision N_CallGCCDBLModulewithWaybillNumber_Node1_action["Double stack container count and
traffic type information is
retrieved from the module"]:::main N_CallGCCDBLModulewithWaybillNumber_Node1 -- Yes --> N_CallGCCDBLModulewithWaybillNumber_Node1_action N_CallGCCDBLModulewithWaybillNumber_Node1_action --> E_CallGCCDBLModulewithWaybillNumber N_CallGCCDBLModulewithWaybillNumber_Node0 -- No --> N_CallGCCDBLModulewithWaybillNumber_Node1 N_CallGCCDBLModulewithWaybillNumber_Node1 -- No --> E_CallGCCDBLModulewithWaybillNumber
File: GCX003.cbl
GIVEN:
Equipment type is confirmed as double stack ('SK') and waybill root key is available
WHEN:
The GCCDBL module is called with the waybill number
THEN:
- Double stack traffic type
- Count information is returned for further processing
File: GCX003.cbl
GIVEN:
Equipment is identified as double stack container type 'SK' and waybill information is available
WHEN:
GCCDBL module is called with the waybill number from shipment root
THEN:
- Double stack container count
- Traffic type information is retrieved from the module
β Consolidated Acceptance Criteria
- The traffic type is CPRS double stack traffic → add the double stack count to the CPRS double stack counter in the train list
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementCPRSDoubleStackCount(["Start Step"])
E_IncrementCPRSDoubleStackCount(["End Step"])
N_IncrementCPRSDoubleStackCount_Node0{"The traffic type is CPRS double
stack traffic"}:::decision N_IncrementCPRSDoubleStackCount_Node0_action["Add the double stack count to the
CPRS double stack counter in the
train list"]:::main N_IncrementCPRSDoubleStackCount_Node0 -- Yes --> N_IncrementCPRSDoubleStackCount_Node0_action N_IncrementCPRSDoubleStackCount_Node0_action --> E_IncrementCPRSDoubleStackCount S_IncrementCPRSDoubleStackCount --> N_IncrementCPRSDoubleStackCount_Node0 N_IncrementCPRSDoubleStackCount_Node0 -- No --> E_IncrementCPRSDoubleStackCount
stack traffic"}:::decision N_IncrementCPRSDoubleStackCount_Node0_action["Add the double stack count to the
CPRS double stack counter in the
train list"]:::main N_IncrementCPRSDoubleStackCount_Node0 -- Yes --> N_IncrementCPRSDoubleStackCount_Node0_action N_IncrementCPRSDoubleStackCount_Node0_action --> E_IncrementCPRSDoubleStackCount S_IncrementCPRSDoubleStackCount --> N_IncrementCPRSDoubleStackCount_Node0 N_IncrementCPRSDoubleStackCount_Node0 -- No --> E_IncrementCPRSDoubleStackCount
File: GCX003.cbl
GIVEN:
Double stack container information is retrieved and traffic type is determined
WHEN:
The traffic type is CPRS double stack traffic
THEN:
Add the double stack count to the CPRS double stack counter in the train list
β Consolidated Acceptance Criteria
- The traffic type is CSXT double stack traffic → add the double stack count to the CSXT double stack counter in the train list
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementCSXTDoubleStackCount(["Start Step"])
E_IncrementCSXTDoubleStackCount(["End Step"])
N_IncrementCSXTDoubleStackCount_Node0{"The traffic type is CSXT double
stack traffic"}:::decision N_IncrementCSXTDoubleStackCount_Node0_action["Add the double stack count to the
CSXT double stack counter in the
train list"]:::main N_IncrementCSXTDoubleStackCount_Node0 -- Yes --> N_IncrementCSXTDoubleStackCount_Node0_action N_IncrementCSXTDoubleStackCount_Node0_action --> E_IncrementCSXTDoubleStackCount S_IncrementCSXTDoubleStackCount --> N_IncrementCSXTDoubleStackCount_Node0 N_IncrementCSXTDoubleStackCount_Node0 -- No --> E_IncrementCSXTDoubleStackCount
stack traffic"}:::decision N_IncrementCSXTDoubleStackCount_Node0_action["Add the double stack count to the
CSXT double stack counter in the
train list"]:::main N_IncrementCSXTDoubleStackCount_Node0 -- Yes --> N_IncrementCSXTDoubleStackCount_Node0_action N_IncrementCSXTDoubleStackCount_Node0_action --> E_IncrementCSXTDoubleStackCount S_IncrementCSXTDoubleStackCount --> N_IncrementCSXTDoubleStackCount_Node0 N_IncrementCSXTDoubleStackCount_Node0 -- No --> E_IncrementCSXTDoubleStackCount
File: GCX003.cbl
GIVEN:
Double stack container information is retrieved and traffic type is determined
WHEN:
The traffic type is CSXT double stack traffic
THEN:
Add the double stack count to the CSXT double stack counter in the train list
β Consolidated Acceptance Criteria
- The traffic type is NS double stack traffic → add the double stack count to the NS double stack counter in the train list
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementNSDoubleStackCount(["Start Step"])
E_IncrementNSDoubleStackCount(["End Step"])
N_IncrementNSDoubleStackCount_Node0{"The traffic type is NS double stack
traffic"}:::decision N_IncrementNSDoubleStackCount_Node0_action["Add the double stack count to the
NS double stack counter in the train
list"]:::main N_IncrementNSDoubleStackCount_Node0 -- Yes --> N_IncrementNSDoubleStackCount_Node0_action N_IncrementNSDoubleStackCount_Node0_action --> E_IncrementNSDoubleStackCount S_IncrementNSDoubleStackCount --> N_IncrementNSDoubleStackCount_Node0 N_IncrementNSDoubleStackCount_Node0 -- No --> E_IncrementNSDoubleStackCount
traffic"}:::decision N_IncrementNSDoubleStackCount_Node0_action["Add the double stack count to the
NS double stack counter in the train
list"]:::main N_IncrementNSDoubleStackCount_Node0 -- Yes --> N_IncrementNSDoubleStackCount_Node0_action N_IncrementNSDoubleStackCount_Node0_action --> E_IncrementNSDoubleStackCount S_IncrementNSDoubleStackCount --> N_IncrementNSDoubleStackCount_Node0 N_IncrementNSDoubleStackCount_Node0 -- No --> E_IncrementNSDoubleStackCount
File: GCX003.cbl
GIVEN:
Double stack container information is retrieved and traffic type is determined
WHEN:
The traffic type is NS double stack traffic
THEN:
Add the double stack count to the NS double stack counter in the train list
β Consolidated Acceptance Criteria
- The traffic type is HAUL double stack traffic → add the double stack count to the HAUL double stack counter in the train list
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementHAULDoubleStackCount(["Start Step"])
E_IncrementHAULDoubleStackCount(["End Step"])
N_IncrementHAULDoubleStackCount_Node0{"The traffic type is HAUL double
stack traffic"}:::decision N_IncrementHAULDoubleStackCount_Node0_action["Add the double stack count to the
HAUL double stack counter in the
train list"]:::main N_IncrementHAULDoubleStackCount_Node0 -- Yes --> N_IncrementHAULDoubleStackCount_Node0_action N_IncrementHAULDoubleStackCount_Node0_action --> E_IncrementHAULDoubleStackCount S_IncrementHAULDoubleStackCount --> N_IncrementHAULDoubleStackCount_Node0 N_IncrementHAULDoubleStackCount_Node0 -- No --> E_IncrementHAULDoubleStackCount
stack traffic"}:::decision N_IncrementHAULDoubleStackCount_Node0_action["Add the double stack count to the
HAUL double stack counter in the
train list"]:::main N_IncrementHAULDoubleStackCount_Node0 -- Yes --> N_IncrementHAULDoubleStackCount_Node0_action N_IncrementHAULDoubleStackCount_Node0_action --> E_IncrementHAULDoubleStackCount S_IncrementHAULDoubleStackCount --> N_IncrementHAULDoubleStackCount_Node0 N_IncrementHAULDoubleStackCount_Node0 -- No --> E_IncrementHAULDoubleStackCount
File: GCX003.cbl
GIVEN:
Double stack container information is retrieved and traffic type is determined
WHEN:
The traffic type is HAUL double stack traffic
THEN:
Add the double stack count to the HAUL double stack counter in the train list
β Consolidated Acceptance Criteria
- The system processes each route entry up to 9 positions or until route is found → sCAC code and junction/R260 code are extracted from current route position for evaluation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckRouteEntry(["Start Step"])
E_CheckRouteEntry(["End Step"])
N_CheckRouteEntry_Node0{"The system processes each route
entry up to 9 positions or until
route is found"}:::decision N_CheckRouteEntry_Node0_action["SCAC code and junctionR260 code are
extracted from current route
position for evaluation"]:::main N_CheckRouteEntry_Node0 -- Yes --> N_CheckRouteEntry_Node0_action N_CheckRouteEntry_Node0_action --> E_CheckRouteEntry S_CheckRouteEntry --> N_CheckRouteEntry_Node0 N_CheckRouteEntry_Node0 -- No --> E_CheckRouteEntry
entry up to 9 positions or until
route is found"}:::decision N_CheckRouteEntry_Node0_action["SCAC code and junctionR260 code are
extracted from current route
position for evaluation"]:::main N_CheckRouteEntry_Node0 -- Yes --> N_CheckRouteEntry_Node0_action N_CheckRouteEntry_Node0_action --> E_CheckRouteEntry S_CheckRouteEntry --> N_CheckRouteEntry_Node0 N_CheckRouteEntry_Node0 -- No --> E_CheckRouteEntry
File: GCX003.cbl
GIVEN:
Route analysis variables are initialized and routing information is available
WHEN:
The system processes each route entry up to 9 positions or until route is found
THEN:
- Scac code
- Junction/r260 code are extracted from current route position for evaluation
β Consolidated Acceptance Criteria
- First route SCAC is CSXT and second route SCAC is CPRS and junction is DET → equipment is classified as type 3 for CSXT haulage and marked for report inclusion with route found status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentType3CSXTHaulage(["Start Step"])
E_SetEquipmentType3CSXTHaulage(["End Step"])
N_SetEquipmentType3CSXTHaulage_Node0{"First route SCAC is CSXT and second
route SCAC is CPRS and junction is
DET"}:::decision N_SetEquipmentType3CSXTHaulage_Node0_action["Equipment is classified as type 3
for CSXT haulage and marked for
report inclusion with route found
status"]:::main N_SetEquipmentType3CSXTHaulage_Node0 -- Yes --> N_SetEquipmentType3CSXTHaulage_Node0_action N_SetEquipmentType3CSXTHaulage_Node0_action --> E_SetEquipmentType3CSXTHaulage S_SetEquipmentType3CSXTHaulage --> N_SetEquipmentType3CSXTHaulage_Node0 N_SetEquipmentType3CSXTHaulage_Node0 -- No --> E_SetEquipmentType3CSXTHaulage
route SCAC is CPRS and junction is
DET"}:::decision N_SetEquipmentType3CSXTHaulage_Node0_action["Equipment is classified as type 3
for CSXT haulage and marked for
report inclusion with route found
status"]:::main N_SetEquipmentType3CSXTHaulage_Node0 -- Yes --> N_SetEquipmentType3CSXTHaulage_Node0_action N_SetEquipmentType3CSXTHaulage_Node0_action --> E_SetEquipmentType3CSXTHaulage S_SetEquipmentType3CSXTHaulage --> N_SetEquipmentType3CSXTHaulage_Node0 N_SetEquipmentType3CSXTHaulage_Node0 -- No --> E_SetEquipmentType3CSXTHaulage
File: GCX003.cbl
GIVEN:
Route entry contains SCAC codes and junction information
WHEN:
- First route scac is csxt
- Second route scac is cprs
- Junction is det
THEN:
- Equipment is classified as type 3 for csxt haulage
- Marked for report inclusion with route found status
β Consolidated Acceptance Criteria
- First route SCAC is NS and second route SCAC is CPRS and junction is DET → equipment is classified as type 4 for NS haulage and marked for report inclusion with route found status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentType4NSHaulage(["Start Step"])
E_SetEquipmentType4NSHaulage(["End Step"])
N_SetEquipmentType4NSHaulage_Node0{"First route SCAC is NS and second
route SCAC is CPRS and junction is
DET"}:::decision N_SetEquipmentType4NSHaulage_Node0_action["Equipment is classified as type 4
for NS haulage and marked for report
inclusion with route found status"]:::main N_SetEquipmentType4NSHaulage_Node0 -- Yes --> N_SetEquipmentType4NSHaulage_Node0_action N_SetEquipmentType4NSHaulage_Node0_action --> E_SetEquipmentType4NSHaulage S_SetEquipmentType4NSHaulage --> N_SetEquipmentType4NSHaulage_Node0 N_SetEquipmentType4NSHaulage_Node0 -- No --> E_SetEquipmentType4NSHaulage
route SCAC is CPRS and junction is
DET"}:::decision N_SetEquipmentType4NSHaulage_Node0_action["Equipment is classified as type 4
for NS haulage and marked for report
inclusion with route found status"]:::main N_SetEquipmentType4NSHaulage_Node0 -- Yes --> N_SetEquipmentType4NSHaulage_Node0_action N_SetEquipmentType4NSHaulage_Node0_action --> E_SetEquipmentType4NSHaulage S_SetEquipmentType4NSHaulage --> N_SetEquipmentType4NSHaulage_Node0 N_SetEquipmentType4NSHaulage_Node0 -- No --> E_SetEquipmentType4NSHaulage
File: GCX003.cbl
GIVEN:
Route entry contains SCAC codes and junction information
WHEN:
- First route scac is ns
- Second route scac is cprs
- Junction is det
THEN:
- Equipment is classified as type 4 for ns haulage
- Marked for report inclusion with route found status
β Consolidated Acceptance Criteria
- Equipment IMA code equals 'HM' indicating hazardous materials → equipment is classified as type 2 for hazmat and marked for report inclusion with route found status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentType2Hazmat(["Start Step"])
E_SetEquipmentType2Hazmat(["End Step"])
N_SetEquipmentType2Hazmat_Node0{"Equipment IMA code equals HM
indicating hazardous materials"}:::decision N_SetEquipmentType2Hazmat_Node0_action["Equipment is classified as type 2
for hazmat and marked for report
inclusion with route found status"]:::main N_SetEquipmentType2Hazmat_Node0 -- Yes --> N_SetEquipmentType2Hazmat_Node0_action N_SetEquipmentType2Hazmat_Node0_action --> E_SetEquipmentType2Hazmat S_SetEquipmentType2Hazmat --> N_SetEquipmentType2Hazmat_Node0 N_SetEquipmentType2Hazmat_Node0 -- No --> E_SetEquipmentType2Hazmat
indicating hazardous materials"}:::decision N_SetEquipmentType2Hazmat_Node0_action["Equipment is classified as type 2
for hazmat and marked for report
inclusion with route found status"]:::main N_SetEquipmentType2Hazmat_Node0 -- Yes --> N_SetEquipmentType2Hazmat_Node0_action N_SetEquipmentType2Hazmat_Node0_action --> E_SetEquipmentType2Hazmat S_SetEquipmentType2Hazmat --> N_SetEquipmentType2Hazmat_Node0 N_SetEquipmentType2Hazmat_Node0 -- No --> E_SetEquipmentType2Hazmat
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Equipment routing does not match CSXT or NS to CPRS patterns
WHEN:
Equipment IMA code equals 'HM' indicating hazardous materials
THEN:
- Equipment is classified as type 2 for hazmat
- Marked for report inclusion with route found status
β Consolidated Acceptance Criteria
- Equipment does not match CSXT haulage, NS haulage, or hazmat criteria and no route is found after checking all positions → equipment empty indicator is set to 1 to exclude from detailed manifest reporting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkEquipmentasEmptyExcludefromReport(["Start Step"])
E_MarkEquipmentasEmptyExcludefromReport(["End Step"])
N_MarkEquipmentasEmptyExcludefromReport_Node0{"Equipment does not match CSXT
haulage, NS haulage, or hazmat
criteria and no route is found after
checking all positions"}:::decision N_MarkEquipmentasEmptyExcludefromReport_Node0_action["Equipment empty indicator is set to
1 to exclude from detailed manifest
reporting"]:::main N_MarkEquipmentasEmptyExcludefromReport_Node0 -- Yes --> N_MarkEquipmentasEmptyExcludefromReport_Node0_action N_MarkEquipmentasEmptyExcludefromReport_Node0_action --> E_MarkEquipmentasEmptyExcludefromReport S_MarkEquipmentasEmptyExcludefromReport --> N_MarkEquipmentasEmptyExcludefromReport_Node0 N_MarkEquipmentasEmptyExcludefromReport_Node0 -- No --> E_MarkEquipmentasEmptyExcludefromReport
haulage, NS haulage, or hazmat
criteria and no route is found after
checking all positions"}:::decision N_MarkEquipmentasEmptyExcludefromReport_Node0_action["Equipment empty indicator is set to
1 to exclude from detailed manifest
reporting"]:::main N_MarkEquipmentasEmptyExcludefromReport_Node0 -- Yes --> N_MarkEquipmentasEmptyExcludefromReport_Node0_action N_MarkEquipmentasEmptyExcludefromReport_Node0_action --> E_MarkEquipmentasEmptyExcludefromReport S_MarkEquipmentasEmptyExcludefromReport --> N_MarkEquipmentasEmptyExcludefromReport_Node0 N_MarkEquipmentasEmptyExcludefromReport_Node0 -- No --> E_MarkEquipmentasEmptyExcludefromReport
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Equipment has been analyzed for routing patterns and hazmat status
WHEN:
- Equipment does not match csxt haulage, ns haulage, or hazmat criteria
- No route is found after checking all positions
THEN:
Equipment empty indicator is set to 1 to exclude from detailed manifest reporting
β Consolidated Acceptance Criteria
- The equipment load indicator is 'E' (empty) AND the residue weight in shipment commodity is greater than 0 → initialize special handling code processing for empty residue validation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifEquipmentisEmptyandHasResidueWeight(["Start Step"])
E_CheckifEquipmentisEmptyandHasResidueWeight(["End Step"])
N_CheckifEquipmentisEmptyandHasResidueWeight_Node0{"The equipment load indicator is E
empty AND the residue weight in
shipment commodity is greater than 0"}:::decision N_CheckifEquipmentisEmptyandHasResidueWeight_Node0_action["Initialize special handling code
processing for empty residue
validation"]:::main N_CheckifEquipmentisEmptyandHasResidueWeight_Node0 -- Yes --> N_CheckifEquipmentisEmptyandHasResidueWeight_Node0_action N_CheckifEquipmentisEmptyandHasResidueWeight_Node0_action --> E_CheckifEquipmentisEmptyandHasResidueWeight S_CheckifEquipmentisEmptyandHasResidueWeight --> N_CheckifEquipmentisEmptyandHasResidueWeight_Node0 N_CheckifEquipmentisEmptyandHasResidueWeight_Node0 -- No --> E_CheckifEquipmentisEmptyandHasResidueWeight
empty AND the residue weight in
shipment commodity is greater than 0"}:::decision N_CheckifEquipmentisEmptyandHasResidueWeight_Node0_action["Initialize special handling code
processing for empty residue
validation"]:::main N_CheckifEquipmentisEmptyandHasResidueWeight_Node0 -- Yes --> N_CheckifEquipmentisEmptyandHasResidueWeight_Node0_action N_CheckifEquipmentisEmptyandHasResidueWeight_Node0_action --> E_CheckifEquipmentisEmptyandHasResidueWeight S_CheckifEquipmentisEmptyandHasResidueWeight --> N_CheckifEquipmentisEmptyandHasResidueWeight_Node0 N_CheckifEquipmentisEmptyandHasResidueWeight_Node0 -- No --> E_CheckifEquipmentisEmptyandHasResidueWeight
File: GCX003.cbl
GIVEN:
Equipment has been retrieved from waybill and shipment commodity information is available
WHEN:
The equipment load indicator is 'E' (empty) AND the residue weight in shipment commodity is greater than 0
THEN:
Initialize special handling code processing for empty residue validation
β Consolidated Acceptance Criteria
- Any special handling code (positions 1-8) equals the ER threshold code → set ER found flag to true to indicate empty residue threshold validation is required
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpecialHandlingCodeERThresholdCode(["Start Step"])
E_SpecialHandlingCodeERThresholdCode(["End Step"])
N_SpecialHandlingCodeERThresholdCode_Node0{"Any special handling code positions
1-8 equals the ER threshold code"}:::decision N_SpecialHandlingCodeERThresholdCode_Node0_action["Set ER found flag to true to
indicate empty residue threshold
validation is required"]:::main N_SpecialHandlingCodeERThresholdCode_Node0 -- Yes --> N_SpecialHandlingCodeERThresholdCode_Node0_action N_SpecialHandlingCodeERThresholdCode_Node0_action --> E_SpecialHandlingCodeERThresholdCode S_SpecialHandlingCodeERThresholdCode --> N_SpecialHandlingCodeERThresholdCode_Node0 N_SpecialHandlingCodeERThresholdCode_Node0 -- No --> E_SpecialHandlingCodeERThresholdCode
1-8 equals the ER threshold code"}:::decision N_SpecialHandlingCodeERThresholdCode_Node0_action["Set ER found flag to true to
indicate empty residue threshold
validation is required"]:::main N_SpecialHandlingCodeERThresholdCode_Node0 -- Yes --> N_SpecialHandlingCodeERThresholdCode_Node0_action N_SpecialHandlingCodeERThresholdCode_Node0_action --> E_SpecialHandlingCodeERThresholdCode S_SpecialHandlingCodeERThresholdCode --> N_SpecialHandlingCodeERThresholdCode_Node0 N_SpecialHandlingCodeERThresholdCode_Node0 -- No --> E_SpecialHandlingCodeERThresholdCode
File: GCX003.cbl
GIVEN:
Equipment is empty with residue weight greater than 0 AND special handling codes are available in shipment commodity
WHEN:
Any special handling code (positions 1-8) equals the ER threshold code
THEN:
Set ER found flag to true to indicate empty residue threshold validation is required
β Consolidated Acceptance Criteria
- No cargo is found for the waybill → generate error message 44 with waybill root key and date information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateErrorMessage44EmptyResidueThresholdExceeded(["Start Step"])
E_GenerateErrorMessage44EmptyResidueThresholdExceeded(["End Step"])
N_GenerateErrorMessage44EmptyResidueThresholdExceeded_Node0{"No cargo is found for the waybill"}:::decision
N_GenerateErrorMessage44EmptyResidueThresholdExceeded_Node0_action["Generate error message 44 with
waybill root key and date
information"]:::main N_GenerateErrorMessage44EmptyResidueThresholdExceeded_Node0 -- Yes --> N_GenerateErrorMessage44EmptyResidueThresholdExceeded_Node0_action N_GenerateErrorMessage44EmptyResidueThresholdExceeded_Node0_action --> E_GenerateErrorMessage44EmptyResidueThresholdExceeded S_GenerateErrorMessage44EmptyResidueThresholdExceeded --> N_GenerateErrorMessage44EmptyResidueThresholdExceeded_Node0 N_GenerateErrorMessage44EmptyResidueThresholdExceeded_Node0 -- No --> E_GenerateErrorMessage44EmptyResidueThresholdExceeded
waybill root key and date
information"]:::main N_GenerateErrorMessage44EmptyResidueThresholdExceeded_Node0 -- Yes --> N_GenerateErrorMessage44EmptyResidueThresholdExceeded_Node0_action N_GenerateErrorMessage44EmptyResidueThresholdExceeded_Node0_action --> E_GenerateErrorMessage44EmptyResidueThresholdExceeded S_GenerateErrorMessage44EmptyResidueThresholdExceeded --> N_GenerateErrorMessage44EmptyResidueThresholdExceeded_Node0 N_GenerateErrorMessage44EmptyResidueThresholdExceeded_Node0 -- No --> E_GenerateErrorMessage44EmptyResidueThresholdExceeded
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Equipment is empty AND has residue weight greater than 7 AND ER threshold code is found AND equipment load indicator is 'E' AND idler indicator is not 'I'
WHEN:
No cargo is found for the waybill
THEN:
- Generate error message 44 with waybill root key
- Date information
β Consolidated Acceptance Criteria
- The equipment meets empty residue criteria for special processing → skip the equipment from standard cargo attachment and report generation processes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipEquipmentfromReport(["Start Step"])
E_SkipEquipmentfromReport(["End Step"])
N_SkipEquipmentfromReport_Node0{"The equipment meets empty residue
criteria for special processing"}:::decision N_SkipEquipmentfromReport_Node0_action["Skip the equipment from standard
cargo attachment and report
generation processes"]:::main N_SkipEquipmentfromReport_Node0 -- Yes --> N_SkipEquipmentfromReport_Node0_action N_SkipEquipmentfromReport_Node0_action --> E_SkipEquipmentfromReport S_SkipEquipmentfromReport --> N_SkipEquipmentfromReport_Node0 N_SkipEquipmentfromReport_Node0 -- No --> E_SkipEquipmentfromReport
criteria for special processing"}:::decision N_SkipEquipmentfromReport_Node0_action["Skip the equipment from standard
cargo attachment and report
generation processes"]:::main N_SkipEquipmentfromReport_Node0 -- Yes --> N_SkipEquipmentfromReport_Node0_action N_SkipEquipmentfromReport_Node0_action --> E_SkipEquipmentfromReport S_SkipEquipmentfromReport --> N_SkipEquipmentfromReport_Node0 N_SkipEquipmentfromReport_Node0 -- No --> E_SkipEquipmentfromReport
File: GCX003.cbl
GIVEN:
Equipment has residue weight greater than 0 AND ER threshold code is found in special handling codes
WHEN:
The equipment meets empty residue criteria for special processing
THEN:
- Skip the equipment from standard cargo attachment
- Report generation processes
β Consolidated Acceptance Criteria
- The cargo qualifies as empty residue type in the cargo classification → continue with normal cargo processing and report generation without applying empty residue restrictions
- The system determines the processing path → standard equipment and cargo processing procedures are executed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinueNormalProcessing(["Start Step"])
E_ContinueNormalProcessing(["End Step"])
N_ContinueNormalProcessing_Node0{"The cargo qualifies as empty
residue type in the cargo
classification"}:::decision N_ContinueNormalProcessing_Node0_action["Continue with normal cargo
processing and report generation
without applying empty residue
restrictions"]:::main N_ContinueNormalProcessing_Node0 -- Yes --> N_ContinueNormalProcessing_Node0_action N_ContinueNormalProcessing_Node0_action --> E_ContinueNormalProcessing S_ContinueNormalProcessing --> N_ContinueNormalProcessing_Node0 N_ContinueNormalProcessing_Node1{"The system determines the
processing path"}:::decision N_ContinueNormalProcessing_Node1_action["Standard equipment and cargo
processing procedures are executed"]:::main N_ContinueNormalProcessing_Node1 -- Yes --> N_ContinueNormalProcessing_Node1_action N_ContinueNormalProcessing_Node1_action --> E_ContinueNormalProcessing N_ContinueNormalProcessing_Node0 -- No --> N_ContinueNormalProcessing_Node1 N_ContinueNormalProcessing_Node1 -- No --> E_ContinueNormalProcessing
residue type in the cargo
classification"}:::decision N_ContinueNormalProcessing_Node0_action["Continue with normal cargo
processing and report generation
without applying empty residue
restrictions"]:::main N_ContinueNormalProcessing_Node0 -- Yes --> N_ContinueNormalProcessing_Node0_action N_ContinueNormalProcessing_Node0_action --> E_ContinueNormalProcessing S_ContinueNormalProcessing --> N_ContinueNormalProcessing_Node0 N_ContinueNormalProcessing_Node1{"The system determines the
processing path"}:::decision N_ContinueNormalProcessing_Node1_action["Standard equipment and cargo
processing procedures are executed"]:::main N_ContinueNormalProcessing_Node1 -- Yes --> N_ContinueNormalProcessing_Node1_action N_ContinueNormalProcessing_Node1_action --> E_ContinueNormalProcessing N_ContinueNormalProcessing_Node0 -- No --> N_ContinueNormalProcessing_Node1 N_ContinueNormalProcessing_Node1 -- No --> E_ContinueNormalProcessing
File: GCX003.cbl
GIVEN:
Cargo is found AND cargo type is empty residue
WHEN:
The cargo qualifies as empty residue type in the cargo classification
THEN:
- Continue with normal cargo processing
- Report generation without applying empty residue restrictions
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
The equipment is either not a conveying car or is a conveying car with containers loaded
WHEN:
The system determines the processing path
THEN:
- Standard equipment
- Cargo processing procedures are executed
β Consolidated Acceptance Criteria
- The system processes the container equipment → the equipment ID should be set to the container ID from the equipment record and the container ID should be assigned to the car type validation input parameter
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentIDforContainer(["Start Step"])
E_SetEquipmentIDforContainer(["End Step"])
N_SetEquipmentIDforContainer_Node0{"The system processes the container
equipment"}:::decision N_SetEquipmentIDforContainer_Node0_action["The equipment ID should be set to
the container ID from the equipment
record and the container ID should
be assigned to the car type
validation input parameter"]:::main N_SetEquipmentIDforContainer_Node0 -- Yes --> N_SetEquipmentIDforContainer_Node0_action N_SetEquipmentIDforContainer_Node0_action --> E_SetEquipmentIDforContainer S_SetEquipmentIDforContainer --> N_SetEquipmentIDforContainer_Node0 N_SetEquipmentIDforContainer_Node0 -- No --> E_SetEquipmentIDforContainer
equipment"}:::decision N_SetEquipmentIDforContainer_Node0_action["The equipment ID should be set to
the container ID from the equipment
record and the container ID should
be assigned to the car type
validation input parameter"]:::main N_SetEquipmentIDforContainer_Node0 -- Yes --> N_SetEquipmentIDforContainer_Node0_action N_SetEquipmentIDforContainer_Node0_action --> E_SetEquipmentIDforContainer S_SetEquipmentIDforContainer --> N_SetEquipmentIDforContainer_Node0 N_SetEquipmentIDforContainer_Node0 -- No --> E_SetEquipmentIDforContainer
File: GCX003.cbl
GIVEN:
A container has been found in the waybill system
WHEN:
The system processes the container equipment
THEN:
- The equipment id should be set to the container id from the equipment record
- The container id should be assigned to the car type validation input parameter
β Consolidated Acceptance Criteria
- The system processes the car equipment → the equipment ID should be constructed from the request car ID and assigned to the car type validation input parameter
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentIDforCar(["Start Step"])
E_SetEquipmentIDforCar(["End Step"])
N_SetEquipmentIDforCar_Node0{"The system processes the car
equipment"}:::decision N_SetEquipmentIDforCar_Node0_action["The equipment ID should be
constructed from the request car ID
and assigned to the car type
validation input parameter"]:::main N_SetEquipmentIDforCar_Node0 -- Yes --> N_SetEquipmentIDforCar_Node0_action N_SetEquipmentIDforCar_Node0_action --> E_SetEquipmentIDforCar S_SetEquipmentIDforCar --> N_SetEquipmentIDforCar_Node0 N_SetEquipmentIDforCar_Node0 -- No --> E_SetEquipmentIDforCar
equipment"}:::decision N_SetEquipmentIDforCar_Node0_action["The equipment ID should be
constructed from the request car ID
and assigned to the car type
validation input parameter"]:::main N_SetEquipmentIDforCar_Node0 -- Yes --> N_SetEquipmentIDforCar_Node0_action N_SetEquipmentIDforCar_Node0_action --> E_SetEquipmentIDforCar S_SetEquipmentIDforCar --> N_SetEquipmentIDforCar_Node0 N_SetEquipmentIDforCar_Node0 -- No --> E_SetEquipmentIDforCar
File: GCX003.cbl
GIVEN:
A car equipment is being processed from the request
WHEN:
The system processes the car equipment
THEN:
- The equipment id should be constructed from the request car id
- Assigned to the car type validation input parameter
β Consolidated Acceptance Criteria
- The system prepares for equipment type validation → the equipment type flag should be set to container type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentTypeFlagContainer(["Start Step"])
E_SetEquipmentTypeFlagContainer(["End Step"])
N_SetEquipmentTypeFlagContainer_Node0{"The system prepares for equipment
type validation"}:::decision N_SetEquipmentTypeFlagContainer_Node0_action["The equipment type flag should be
set to container type"]:::main N_SetEquipmentTypeFlagContainer_Node0 -- Yes --> N_SetEquipmentTypeFlagContainer_Node0_action N_SetEquipmentTypeFlagContainer_Node0_action --> E_SetEquipmentTypeFlagContainer S_SetEquipmentTypeFlagContainer --> N_SetEquipmentTypeFlagContainer_Node0 N_SetEquipmentTypeFlagContainer_Node0 -- No --> E_SetEquipmentTypeFlagContainer
type validation"}:::decision N_SetEquipmentTypeFlagContainer_Node0_action["The equipment type flag should be
set to container type"]:::main N_SetEquipmentTypeFlagContainer_Node0 -- Yes --> N_SetEquipmentTypeFlagContainer_Node0_action N_SetEquipmentTypeFlagContainer_Node0_action --> E_SetEquipmentTypeFlagContainer S_SetEquipmentTypeFlagContainer --> N_SetEquipmentTypeFlagContainer_Node0 N_SetEquipmentTypeFlagContainer_Node0 -- No --> E_SetEquipmentTypeFlagContainer
File: GCX003.cbl
GIVEN:
Container equipment is being processed
WHEN:
The system prepares for equipment type validation
THEN:
The equipment type flag should be set to container type
β Consolidated Acceptance Criteria
- The system prepares for equipment type validation → the equipment type flag should be set to car type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentTypeFlagCar(["Start Step"])
E_SetEquipmentTypeFlagCar(["End Step"])
N_SetEquipmentTypeFlagCar_Node0{"The system prepares for equipment
type validation"}:::decision N_SetEquipmentTypeFlagCar_Node0_action["The equipment type flag should be
set to car type"]:::main N_SetEquipmentTypeFlagCar_Node0 -- Yes --> N_SetEquipmentTypeFlagCar_Node0_action N_SetEquipmentTypeFlagCar_Node0_action --> E_SetEquipmentTypeFlagCar S_SetEquipmentTypeFlagCar --> N_SetEquipmentTypeFlagCar_Node0 N_SetEquipmentTypeFlagCar_Node0 -- No --> E_SetEquipmentTypeFlagCar
type validation"}:::decision N_SetEquipmentTypeFlagCar_Node0_action["The equipment type flag should be
set to car type"]:::main N_SetEquipmentTypeFlagCar_Node0 -- Yes --> N_SetEquipmentTypeFlagCar_Node0_action N_SetEquipmentTypeFlagCar_Node0_action --> E_SetEquipmentTypeFlagCar S_SetEquipmentTypeFlagCar --> N_SetEquipmentTypeFlagCar_Node0 N_SetEquipmentTypeFlagCar_Node0 -- No --> E_SetEquipmentTypeFlagCar
File: GCX003.cbl
GIVEN:
Car equipment is being processed
WHEN:
The system prepares for equipment type validation
THEN:
The equipment type flag should be set to car type
β Consolidated Acceptance Criteria
- The system checks for special equipment characteristics → the trailer flag should be set in addition to the container flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrailerFlagforContainer(["Start Step"])
E_SetTrailerFlagforContainer(["End Step"])
N_SetTrailerFlagforContainer_Node0{"The system checks for special
equipment characteristics"}:::decision N_SetTrailerFlagforContainer_Node0_action["The trailer flag should be set in
addition to the container flag"]:::main N_SetTrailerFlagforContainer_Node0 -- Yes --> N_SetTrailerFlagforContainer_Node0_action N_SetTrailerFlagforContainer_Node0_action --> E_SetTrailerFlagforContainer S_SetTrailerFlagforContainer --> N_SetTrailerFlagforContainer_Node0 N_SetTrailerFlagforContainer_Node0 -- No --> E_SetTrailerFlagforContainer
equipment characteristics"}:::decision N_SetTrailerFlagforContainer_Node0_action["The trailer flag should be set in
addition to the container flag"]:::main N_SetTrailerFlagforContainer_Node0 -- Yes --> N_SetTrailerFlagforContainer_Node0_action N_SetTrailerFlagforContainer_Node0_action --> E_SetTrailerFlagforContainer S_SetTrailerFlagforContainer --> N_SetTrailerFlagforContainer_Node0 N_SetTrailerFlagforContainer_Node0 -- No --> E_SetTrailerFlagforContainer
File: GCX003.cbl
GIVEN:
A container equipment is being processed and the shipment record indicates trailer type
WHEN:
The system checks for special equipment characteristics
THEN:
The trailer flag should be set in addition to the container flag
β Consolidated Acceptance Criteria
- The system checks the service response → if the call was not successful, an equipment error should be generated, otherwise processing should continue with type code retrieval
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentTypeCallSuccessful(["Start Step"])
E_EquipmentTypeCallSuccessful(["End Step"])
N_EquipmentTypeCallSuccessful_Node0{"The system checks the service
response"}:::decision N_EquipmentTypeCallSuccessful_Node0_action["If the call was not successful, an
equipment error should be generated,
otherwise processing should continue
with type code retrieval"]:::main N_EquipmentTypeCallSuccessful_Node0 -- Yes --> N_EquipmentTypeCallSuccessful_Node0_action N_EquipmentTypeCallSuccessful_Node0_action --> E_EquipmentTypeCallSuccessful S_EquipmentTypeCallSuccessful --> N_EquipmentTypeCallSuccessful_Node0 N_EquipmentTypeCallSuccessful_Node0 -- No --> E_EquipmentTypeCallSuccessful
response"}:::decision N_EquipmentTypeCallSuccessful_Node0_action["If the call was not successful, an
equipment error should be generated,
otherwise processing should continue
with type code retrieval"]:::main N_EquipmentTypeCallSuccessful_Node0 -- Yes --> N_EquipmentTypeCallSuccessful_Node0_action N_EquipmentTypeCallSuccessful_Node0_action --> E_EquipmentTypeCallSuccessful S_EquipmentTypeCallSuccessful --> N_EquipmentTypeCallSuccessful_Node0 N_EquipmentTypeCallSuccessful_Node0 -- No --> E_EquipmentTypeCallSuccessful
File: GCX003.cbl
GIVEN:
The equipment type validation service has been called
WHEN:
The system checks the service response
THEN:
If the call was not successful, an equipment error should be generated, otherwise processing should continue with type code retrieval
β Consolidated Acceptance Criteria
- The system processes the validation response → the equipment type code should be retrieved from the service response
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveEquipmentTypeCode(["Start Step"])
E_RetrieveEquipmentTypeCode(["End Step"])
N_RetrieveEquipmentTypeCode_Node0{"The system processes the validation
response"}:::decision N_RetrieveEquipmentTypeCode_Node0_action["The equipment type code should be
retrieved from the service response"]:::main N_RetrieveEquipmentTypeCode_Node0 -- Yes --> N_RetrieveEquipmentTypeCode_Node0_action N_RetrieveEquipmentTypeCode_Node0_action --> E_RetrieveEquipmentTypeCode S_RetrieveEquipmentTypeCode --> N_RetrieveEquipmentTypeCode_Node0 N_RetrieveEquipmentTypeCode_Node0 -- No --> E_RetrieveEquipmentTypeCode
response"}:::decision N_RetrieveEquipmentTypeCode_Node0_action["The equipment type code should be
retrieved from the service response"]:::main N_RetrieveEquipmentTypeCode_Node0 -- Yes --> N_RetrieveEquipmentTypeCode_Node0_action N_RetrieveEquipmentTypeCode_Node0_action --> E_RetrieveEquipmentTypeCode S_RetrieveEquipmentTypeCode --> N_RetrieveEquipmentTypeCode_Node0 N_RetrieveEquipmentTypeCode_Node0 -- No --> E_RetrieveEquipmentTypeCode
File: GCX003.cbl
GIVEN:
The equipment type validation service call was successful
WHEN:
The system processes the validation response
THEN:
The equipment type code should be retrieved from the service response
β Consolidated Acceptance Criteria
- The system needs to get the equipment type description → the GCSTBRT-VI reference table should be queried using the equipment type code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookUpEquipmentTypeDescriptioninReferenceTable(["Start Step"])
E_LookUpEquipmentTypeDescriptioninReferenceTable(["End Step"])
N_LookUpEquipmentTypeDescriptioninReferenceTable_Node0{"The system needs to get the
equipment type description"}:::decision N_LookUpEquipmentTypeDescriptioninReferenceTable_Node0_action["The GCSTBRT-VI reference table
should be queried using the
equipment type code"]:::main N_LookUpEquipmentTypeDescriptioninReferenceTable_Node0 -- Yes --> N_LookUpEquipmentTypeDescriptioninReferenceTable_Node0_action N_LookUpEquipmentTypeDescriptioninReferenceTable_Node0_action --> E_LookUpEquipmentTypeDescriptioninReferenceTable S_LookUpEquipmentTypeDescriptioninReferenceTable --> N_LookUpEquipmentTypeDescriptioninReferenceTable_Node0 N_LookUpEquipmentTypeDescriptioninReferenceTable_Node0 -- No --> E_LookUpEquipmentTypeDescriptioninReferenceTable
equipment type description"}:::decision N_LookUpEquipmentTypeDescriptioninReferenceTable_Node0_action["The GCSTBRT-VI reference table
should be queried using the
equipment type code"]:::main N_LookUpEquipmentTypeDescriptioninReferenceTable_Node0 -- Yes --> N_LookUpEquipmentTypeDescriptioninReferenceTable_Node0_action N_LookUpEquipmentTypeDescriptioninReferenceTable_Node0_action --> E_LookUpEquipmentTypeDescriptioninReferenceTable S_LookUpEquipmentTypeDescriptioninReferenceTable --> N_LookUpEquipmentTypeDescriptioninReferenceTable_Node0 N_LookUpEquipmentTypeDescriptioninReferenceTable_Node0 -- No --> E_LookUpEquipmentTypeDescriptioninReferenceTable
File: GCX003.cbl
GIVEN:
An equipment type code has been retrieved from the validation service
WHEN:
The system needs to get the equipment type description
THEN:
The GCSTBRT-VI reference table should be queried using the equipment type code
β Consolidated Acceptance Criteria
- The system processes the lookup result → the equipment type description should be assigned to the US CCN report field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AssignEquipmentTypeDescription(["Start Step"])
E_AssignEquipmentTypeDescription(["End Step"])
N_AssignEquipmentTypeDescription_Node0{"The system processes the lookup
result"}:::decision N_AssignEquipmentTypeDescription_Node0_action["The equipment type description
should be assigned to the US CCN
report field"]:::main N_AssignEquipmentTypeDescription_Node0 -- Yes --> N_AssignEquipmentTypeDescription_Node0_action N_AssignEquipmentTypeDescription_Node0_action --> E_AssignEquipmentTypeDescription S_AssignEquipmentTypeDescription --> N_AssignEquipmentTypeDescription_Node0 N_AssignEquipmentTypeDescription_Node0 -- No --> E_AssignEquipmentTypeDescription
result"}:::decision N_AssignEquipmentTypeDescription_Node0_action["The equipment type description
should be assigned to the US CCN
report field"]:::main N_AssignEquipmentTypeDescription_Node0 -- Yes --> N_AssignEquipmentTypeDescription_Node0_action N_AssignEquipmentTypeDescription_Node0_action --> E_AssignEquipmentTypeDescription S_AssignEquipmentTypeDescription --> N_AssignEquipmentTypeDescription_Node0 N_AssignEquipmentTypeDescription_Node0 -- No --> E_AssignEquipmentTypeDescription
File: GCX003.cbl
GIVEN:
The equipment type description lookup was successful
WHEN:
The system processes the lookup result
THEN:
The equipment type description should be assigned to the US CCN report field
β Consolidated Acceptance Criteria
- The system processes the lookup failure → the equipment type description should be set to spaces as default
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultDescriptionasSpaces(["Start Step"])
E_SetDefaultDescriptionasSpaces(["End Step"])
N_SetDefaultDescriptionasSpaces_Node0{"The system processes the lookup
failure"}:::decision N_SetDefaultDescriptionasSpaces_Node0_action["The equipment type description
should be set to spaces as default"]:::main N_SetDefaultDescriptionasSpaces_Node0 -- Yes --> N_SetDefaultDescriptionasSpaces_Node0_action N_SetDefaultDescriptionasSpaces_Node0_action --> E_SetDefaultDescriptionasSpaces S_SetDefaultDescriptionasSpaces --> N_SetDefaultDescriptionasSpaces_Node0 N_SetDefaultDescriptionasSpaces_Node0 -- No --> E_SetDefaultDescriptionasSpaces
failure"}:::decision N_SetDefaultDescriptionasSpaces_Node0_action["The equipment type description
should be set to spaces as default"]:::main N_SetDefaultDescriptionasSpaces_Node0 -- Yes --> N_SetDefaultDescriptionasSpaces_Node0_action N_SetDefaultDescriptionasSpaces_Node0_action --> E_SetDefaultDescriptionasSpaces S_SetDefaultDescriptionasSpaces --> N_SetDefaultDescriptionasSpaces_Node0 N_SetDefaultDescriptionasSpaces_Node0 -- No --> E_SetDefaultDescriptionasSpaces
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
The equipment type description lookup was not successful
WHEN:
The system processes the lookup failure
THEN:
The equipment type description should be set to spaces as default
β Consolidated Acceptance Criteria
- The car type code is 'LO' or 'ET' → the equipment is classified as a locomotive and added to the locomotive count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CountasLocomotive(["Start Step"])
E_CountasLocomotive(["End Step"])
N_CountasLocomotive_Node0{"The car type code is LO or ET"}:::decision
N_CountasLocomotive_Node0_action["The equipment is classified as a
locomotive and added to the
locomotive count"]:::main N_CountasLocomotive_Node0 -- Yes --> N_CountasLocomotive_Node0_action N_CountasLocomotive_Node0_action --> E_CountasLocomotive S_CountasLocomotive --> N_CountasLocomotive_Node0 N_CountasLocomotive_Node0 -- No --> E_CountasLocomotive
locomotive and added to the
locomotive count"]:::main N_CountasLocomotive_Node0 -- Yes --> N_CountasLocomotive_Node0_action N_CountasLocomotive_Node0_action --> E_CountasLocomotive S_CountasLocomotive --> N_CountasLocomotive_Node0 N_CountasLocomotive_Node0 -- No --> E_CountasLocomotive
File: GCX003.cbl
GIVEN:
An equipment item with a car type code
WHEN:
The car type code is 'LO' or 'ET'
THEN:
- The equipment is classified as a locomotive
- Added to the locomotive count
β Consolidated Acceptance Criteria
- The car type code is 'CN' → the equipment is classified as container equipment for container-specific counting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContainerEquipment(["Start Step"])
E_ContainerEquipment(["End Step"])
N_ContainerEquipment_Node0{"The car type code is CN"}:::decision
N_ContainerEquipment_Node0_action["The equipment is classified as
container equipment for
container-specific counting"]:::main N_ContainerEquipment_Node0 -- Yes --> N_ContainerEquipment_Node0_action N_ContainerEquipment_Node0_action --> E_ContainerEquipment S_ContainerEquipment --> N_ContainerEquipment_Node0 N_ContainerEquipment_Node0 -- No --> E_ContainerEquipment
container equipment for
container-specific counting"]:::main N_ContainerEquipment_Node0 -- Yes --> N_ContainerEquipment_Node0_action N_ContainerEquipment_Node0_action --> E_ContainerEquipment S_ContainerEquipment --> N_ContainerEquipment_Node0 N_ContainerEquipment_Node0 -- No --> E_ContainerEquipment
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
An equipment item with a car type code that is not a locomotive
WHEN:
The car type code is 'CN'
THEN:
The equipment is classified as container equipment for container-specific counting
β Consolidated Acceptance Criteria
- The load/empty indicator is 'L' (loaded) → add 1 to the total loaded container count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CountLoadedContainer(["Start Step"])
E_CountLoadedContainer(["End Step"])
N_CountLoadedContainer_Node0{"The loadempty indicator is L loaded"}:::decision
N_CountLoadedContainer_Node0_action["Add 1 to the total loaded container
count"]:::main N_CountLoadedContainer_Node0 -- Yes --> N_CountLoadedContainer_Node0_action N_CountLoadedContainer_Node0_action --> E_CountLoadedContainer S_CountLoadedContainer --> N_CountLoadedContainer_Node0 N_CountLoadedContainer_Node0 -- No --> E_CountLoadedContainer
count"]:::main N_CountLoadedContainer_Node0 -- Yes --> N_CountLoadedContainer_Node0_action N_CountLoadedContainer_Node0_action --> E_CountLoadedContainer S_CountLoadedContainer --> N_CountLoadedContainer_Node0 N_CountLoadedContainer_Node0 -- No --> E_CountLoadedContainer
File: GCX003.cbl
GIVEN:
An equipment item classified as container equipment
WHEN:
The load/empty indicator is 'L' (loaded)
THEN:
Add 1 to the total loaded container count
β Consolidated Acceptance Criteria
- The load/empty indicator is 'E' (empty) → add 1 to the total empty container count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CountEmptyContainer(["Start Step"])
E_CountEmptyContainer(["End Step"])
N_CountEmptyContainer_Node0{"The loadempty indicator is E empty"}:::decision
N_CountEmptyContainer_Node0_action["Add 1 to the total empty container
count"]:::main N_CountEmptyContainer_Node0 -- Yes --> N_CountEmptyContainer_Node0_action N_CountEmptyContainer_Node0_action --> E_CountEmptyContainer S_CountEmptyContainer --> N_CountEmptyContainer_Node0 N_CountEmptyContainer_Node0 -- No --> E_CountEmptyContainer
count"]:::main N_CountEmptyContainer_Node0 -- Yes --> N_CountEmptyContainer_Node0_action N_CountEmptyContainer_Node0_action --> E_CountEmptyContainer S_CountEmptyContainer --> N_CountEmptyContainer_Node0 N_CountEmptyContainer_Node0 -- No --> E_CountEmptyContainer
File: GCX003.cbl
GIVEN:
An equipment item classified as container equipment
WHEN:
The load/empty indicator is 'E' (empty)
THEN:
Add 1 to the total empty container count
β Consolidated Acceptance Criteria
- The load/empty indicator is 'L' (loaded) → add 1 to the total loaded car count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CountLoadedCar(["Start Step"])
E_CountLoadedCar(["End Step"])
N_CountLoadedCar_Node0{"The loadempty indicator is L loaded"}:::decision
N_CountLoadedCar_Node0_action["Add 1 to the total loaded car count"]:::main
N_CountLoadedCar_Node0 -- Yes --> N_CountLoadedCar_Node0_action
N_CountLoadedCar_Node0_action --> E_CountLoadedCar
S_CountLoadedCar --> N_CountLoadedCar_Node0
N_CountLoadedCar_Node0 -- No --> E_CountLoadedCar
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
An equipment item that is not a locomotive or container
WHEN:
The load/empty indicator is 'L' (loaded)
THEN:
Add 1 to the total loaded car count
β Consolidated Acceptance Criteria
- The load/empty indicator is 'E' (empty) → add 1 to the total empty car count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CountEmptyCar(["Start Step"])
E_CountEmptyCar(["End Step"])
N_CountEmptyCar_Node0{"The loadempty indicator is E empty"}:::decision
N_CountEmptyCar_Node0_action["Add 1 to the total empty car count"]:::main
N_CountEmptyCar_Node0 -- Yes --> N_CountEmptyCar_Node0_action
N_CountEmptyCar_Node0_action --> E_CountEmptyCar
S_CountEmptyCar --> N_CountEmptyCar_Node0
N_CountEmptyCar_Node0 -- No --> E_CountEmptyCar
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
An equipment item that is not a locomotive or container
WHEN:
The load/empty indicator is 'E' (empty)
THEN:
Add 1 to the total empty car count
β Consolidated Acceptance Criteria
- The cargo is classified as empty residue or empty equipment type → the equipment requires adjustment from loaded to empty status in counts
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EmptyResidueFound(["Start Step"])
E_EmptyResidueFound(["End Step"])
N_EmptyResidueFound_Node0{"The cargo is classified as empty
residue or empty equipment type"}:::decision N_EmptyResidueFound_Node0_action["The equipment requires adjustment
from loaded to empty status in
counts"]:::main N_EmptyResidueFound_Node0 -- Yes --> N_EmptyResidueFound_Node0_action N_EmptyResidueFound_Node0_action --> E_EmptyResidueFound S_EmptyResidueFound --> N_EmptyResidueFound_Node0 N_EmptyResidueFound_Node0 -- No --> E_EmptyResidueFound
residue or empty equipment type"}:::decision N_EmptyResidueFound_Node0_action["The equipment requires adjustment
from loaded to empty status in
counts"]:::main N_EmptyResidueFound_Node0 -- Yes --> N_EmptyResidueFound_Node0_action N_EmptyResidueFound_Node0_action --> E_EmptyResidueFound S_EmptyResidueFound --> N_EmptyResidueFound_Node0 N_EmptyResidueFound_Node0 -- No --> E_EmptyResidueFound
File: GCX003.cbl
GIVEN:
An equipment item with associated cargo information
WHEN:
The cargo is classified as empty residue or empty equipment type
THEN:
The equipment requires adjustment from loaded to empty status in counts
β Consolidated Acceptance Criteria
- The load/empty indicator was 'L' but cargo indicates empty residue → subtract 1 from loaded container count and add 1 to empty container count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AdjustContainerCounts(["Start Step"])
E_AdjustContainerCounts(["End Step"])
N_AdjustContainerCounts_Node0{"The loadempty indicator was L but
cargo indicates empty residue"}:::decision N_AdjustContainerCounts_Node0_action["Subtract 1 from loaded container
count and add 1 to empty container
count"]:::main N_AdjustContainerCounts_Node0 -- Yes --> N_AdjustContainerCounts_Node0_action N_AdjustContainerCounts_Node0_action --> E_AdjustContainerCounts S_AdjustContainerCounts --> N_AdjustContainerCounts_Node0 N_AdjustContainerCounts_Node0 -- No --> E_AdjustContainerCounts
cargo indicates empty residue"}:::decision N_AdjustContainerCounts_Node0_action["Subtract 1 from loaded container
count and add 1 to empty container
count"]:::main N_AdjustContainerCounts_Node0 -- Yes --> N_AdjustContainerCounts_Node0_action N_AdjustContainerCounts_Node0_action --> E_AdjustContainerCounts S_AdjustContainerCounts --> N_AdjustContainerCounts_Node0 N_AdjustContainerCounts_Node0 -- No --> E_AdjustContainerCounts
File: GCX003.cbl
GIVEN:
A container equipment with empty residue cargo and current loaded status
WHEN:
The load/empty indicator was 'L' but cargo indicates empty residue
THEN:
- Subtract 1 from loaded container count
- Add 1 to empty container count
β Consolidated Acceptance Criteria
- The load/empty indicator was 'L' but cargo indicates empty residue → subtract 1 from loaded car count and add 1 to empty car count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AdjustCarCounts(["Start Step"])
E_AdjustCarCounts(["End Step"])
N_AdjustCarCounts_Node0{"The loadempty indicator was L but
cargo indicates empty residue"}:::decision N_AdjustCarCounts_Node0_action["Subtract 1 from loaded car count
and add 1 to empty car count"]:::main N_AdjustCarCounts_Node0 -- Yes --> N_AdjustCarCounts_Node0_action N_AdjustCarCounts_Node0_action --> E_AdjustCarCounts S_AdjustCarCounts --> N_AdjustCarCounts_Node0 N_AdjustCarCounts_Node0 -- No --> E_AdjustCarCounts
cargo indicates empty residue"}:::decision N_AdjustCarCounts_Node0_action["Subtract 1 from loaded car count
and add 1 to empty car count"]:::main N_AdjustCarCounts_Node0 -- Yes --> N_AdjustCarCounts_Node0_action N_AdjustCarCounts_Node0_action --> E_AdjustCarCounts S_AdjustCarCounts --> N_AdjustCarCounts_Node0 N_AdjustCarCounts_Node0 -- No --> E_AdjustCarCounts
File: GCX003.cbl
GIVEN:
A car equipment with empty residue cargo and current loaded status
WHEN:
The load/empty indicator was 'L' but cargo indicates empty residue
THEN:
- Subtract 1 from loaded car count
- Add 1 to empty car count
β Consolidated Acceptance Criteria
- The cargo type indicates empty residue or empty equipment → update the equipment load/empty indicator to 'E' (empty) for both report and new report formats
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateEquipmentStatustoEmpty(["Start Step"])
E_UpdateEquipmentStatustoEmpty(["End Step"])
N_UpdateEquipmentStatustoEmpty_Node0{"The cargo type indicates empty
residue or empty equipment"}:::decision N_UpdateEquipmentStatustoEmpty_Node0_action["Update the equipment loadempty
indicator to E empty for both report
and new report formats"]:::main N_UpdateEquipmentStatustoEmpty_Node0 -- Yes --> N_UpdateEquipmentStatustoEmpty_Node0_action N_UpdateEquipmentStatustoEmpty_Node0_action --> E_UpdateEquipmentStatustoEmpty S_UpdateEquipmentStatustoEmpty --> N_UpdateEquipmentStatustoEmpty_Node0 N_UpdateEquipmentStatustoEmpty_Node0 -- No --> E_UpdateEquipmentStatustoEmpty
residue or empty equipment"}:::decision N_UpdateEquipmentStatustoEmpty_Node0_action["Update the equipment loadempty
indicator to E empty for both report
and new report formats"]:::main N_UpdateEquipmentStatustoEmpty_Node0 -- Yes --> N_UpdateEquipmentStatustoEmpty_Node0_action N_UpdateEquipmentStatustoEmpty_Node0_action --> E_UpdateEquipmentStatustoEmpty S_UpdateEquipmentStatustoEmpty --> N_UpdateEquipmentStatustoEmpty_Node0 N_UpdateEquipmentStatustoEmpty_Node0 -- No --> E_UpdateEquipmentStatustoEmpty
File: GCX003.cbl
GIVEN:
An equipment item with empty residue cargo
WHEN:
The cargo type indicates empty residue or empty equipment
THEN:
- Update the equipment load/empty indicator to 'e' (empty) for both report
- New report formats
β Consolidated Acceptance Criteria
- The system checks the equipment type classification → the equipment is identified as either SBU van type or regular equipment type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsEquipmentSBUVan(["Start Step"])
E_IsEquipmentSBUVan(["End Step"])
N_IsEquipmentSBUVan_Node0{"The system checks the equipment
type classification"}:::decision N_IsEquipmentSBUVan_Node0_action["The equipment is identified as
either SBU van type or regular
equipment type"]:::main N_IsEquipmentSBUVan_Node0 -- Yes --> N_IsEquipmentSBUVan_Node0_action N_IsEquipmentSBUVan_Node0_action --> E_IsEquipmentSBUVan S_IsEquipmentSBUVan --> N_IsEquipmentSBUVan_Node0 N_IsEquipmentSBUVan_Node0 -- No --> E_IsEquipmentSBUVan
type classification"}:::decision N_IsEquipmentSBUVan_Node0_action["The equipment is identified as
either SBU van type or regular
equipment type"]:::main N_IsEquipmentSBUVan_Node0 -- Yes --> N_IsEquipmentSBUVan_Node0_action N_IsEquipmentSBUVan_Node0_action --> E_IsEquipmentSBUVan S_IsEquipmentSBUVan --> N_IsEquipmentSBUVan_Node0 N_IsEquipmentSBUVan_Node0 -- No --> E_IsEquipmentSBUVan
File: GCX003.cbl
GIVEN:
An equipment item is being processed in the train manifest
WHEN:
The system checks the equipment type classification
THEN:
The equipment is identified as either SBU van type or regular equipment type
β Consolidated Acceptance Criteria
- The system processes the load/empty indicator → the load/empty indicator is set to 'E' for Empty status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetLoadEmptytoEEmpty(["Start Step"])
E_SetLoadEmptytoEEmpty(["End Step"])
N_SetLoadEmptytoEEmpty_Node0{"The system processes the loadempty
indicator"}:::decision N_SetLoadEmptytoEEmpty_Node0_action["The loadempty indicator is set to E
for Empty status"]:::main N_SetLoadEmptytoEEmpty_Node0 -- Yes --> N_SetLoadEmptytoEEmpty_Node0_action N_SetLoadEmptytoEEmpty_Node0_action --> E_SetLoadEmptytoEEmpty S_SetLoadEmptytoEEmpty --> N_SetLoadEmptytoEEmpty_Node0 N_SetLoadEmptytoEEmpty_Node0 -- No --> E_SetLoadEmptytoEEmpty
indicator"}:::decision N_SetLoadEmptytoEEmpty_Node0_action["The loadempty indicator is set to E
for Empty status"]:::main N_SetLoadEmptytoEEmpty_Node0 -- Yes --> N_SetLoadEmptytoEEmpty_Node0_action N_SetLoadEmptytoEEmpty_Node0_action --> E_SetLoadEmptytoEEmpty S_SetLoadEmptytoEEmpty --> N_SetLoadEmptytoEEmpty_Node0 N_SetLoadEmptytoEEmpty_Node0 -- No --> E_SetLoadEmptytoEEmpty
File: GCX003.cbl
GIVEN:
An equipment item is identified as SBU van type
WHEN:
The system processes the load/empty indicator
THEN:
The load/empty indicator is set to 'E' for Empty status
β Consolidated Acceptance Criteria
- The system assigns equipment information description → the equipment information field is set to 'INTERNATIONAL SERVICE'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentInfotoINTERNATIONALSERVICE(["Start Step"])
E_SetEquipmentInfotoINTERNATIONALSERVICE(["End Step"])
N_SetEquipmentInfotoINTERNATIONALSERVICE_Node0{"The system assigns equipment
information description"}:::decision N_SetEquipmentInfotoINTERNATIONALSERVICE_Node0_action["The equipment information field is
set to INTERNATIONAL SERVICE"]:::main N_SetEquipmentInfotoINTERNATIONALSERVICE_Node0 -- Yes --> N_SetEquipmentInfotoINTERNATIONALSERVICE_Node0_action N_SetEquipmentInfotoINTERNATIONALSERVICE_Node0_action --> E_SetEquipmentInfotoINTERNATIONALSERVICE S_SetEquipmentInfotoINTERNATIONALSERVICE --> N_SetEquipmentInfotoINTERNATIONALSERVICE_Node0 N_SetEquipmentInfotoINTERNATIONALSERVICE_Node0 -- No --> E_SetEquipmentInfotoINTERNATIONALSERVICE
information description"}:::decision N_SetEquipmentInfotoINTERNATIONALSERVICE_Node0_action["The equipment information field is
set to INTERNATIONAL SERVICE"]:::main N_SetEquipmentInfotoINTERNATIONALSERVICE_Node0 -- Yes --> N_SetEquipmentInfotoINTERNATIONALSERVICE_Node0_action N_SetEquipmentInfotoINTERNATIONALSERVICE_Node0_action --> E_SetEquipmentInfotoINTERNATIONALSERVICE S_SetEquipmentInfotoINTERNATIONALSERVICE --> N_SetEquipmentInfotoINTERNATIONALSERVICE_Node0 N_SetEquipmentInfotoINTERNATIONALSERVICE_Node0 -- No --> E_SetEquipmentInfotoINTERNATIONALSERVICE
File: GCX003.cbl
GIVEN:
An equipment item is SBU van type and has empty load status
WHEN:
The system assigns equipment information description
THEN:
The equipment information field is set to 'INTERNATIONAL SERVICE'
β Consolidated Acceptance Criteria
- The system checks the current load/empty indicator value → the system determines if the indicator is already set to 'E' for Empty
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsLoadEmptyIndicatorE(["Start Step"])
E_IsLoadEmptyIndicatorE(["End Step"])
N_IsLoadEmptyIndicatorE_Node0{"The system checks the current
loadempty indicator value"}:::decision N_IsLoadEmptyIndicatorE_Node0_action["The system determines if the
indicator is already set to E for
Empty"]:::main N_IsLoadEmptyIndicatorE_Node0 -- Yes --> N_IsLoadEmptyIndicatorE_Node0_action N_IsLoadEmptyIndicatorE_Node0_action --> E_IsLoadEmptyIndicatorE S_IsLoadEmptyIndicatorE --> N_IsLoadEmptyIndicatorE_Node0 N_IsLoadEmptyIndicatorE_Node0 -- No --> E_IsLoadEmptyIndicatorE
loadempty indicator value"}:::decision N_IsLoadEmptyIndicatorE_Node0_action["The system determines if the
indicator is already set to E for
Empty"]:::main N_IsLoadEmptyIndicatorE_Node0 -- Yes --> N_IsLoadEmptyIndicatorE_Node0_action N_IsLoadEmptyIndicatorE_Node0_action --> E_IsLoadEmptyIndicatorE S_IsLoadEmptyIndicatorE --> N_IsLoadEmptyIndicatorE_Node0 N_IsLoadEmptyIndicatorE_Node0 -- No --> E_IsLoadEmptyIndicatorE
File: GCX003.cbl
GIVEN:
An equipment item is identified as SBU van type
WHEN:
The system checks the current load/empty indicator value
THEN:
The system determines if the indicator is already set to 'E' for Empty
β Consolidated Acceptance Criteria
- The equipment is identified as a conveying car (SHRT-CONVEYING-CAR is true) → the equipment load/empty indicator is set to 'E' (empty)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentStatustoEmpty(["Start Step"])
E_SetEquipmentStatustoEmpty(["End Step"])
N_SetEquipmentStatustoEmpty_Node0{"The equipment is identified as a
conveying car SHRT-CONVEYING-CAR is
true"}:::decision N_SetEquipmentStatustoEmpty_Node0_action["The equipment loadempty indicator
is set to E empty"]:::main N_SetEquipmentStatustoEmpty_Node0 -- Yes --> N_SetEquipmentStatustoEmpty_Node0_action N_SetEquipmentStatustoEmpty_Node0_action --> E_SetEquipmentStatustoEmpty S_SetEquipmentStatustoEmpty --> N_SetEquipmentStatustoEmpty_Node0 N_SetEquipmentStatustoEmpty_Node0 -- No --> E_SetEquipmentStatustoEmpty
conveying car SHRT-CONVEYING-CAR is
true"}:::decision N_SetEquipmentStatustoEmpty_Node0_action["The equipment loadempty indicator
is set to E empty"]:::main N_SetEquipmentStatustoEmpty_Node0 -- Yes --> N_SetEquipmentStatustoEmpty_Node0_action N_SetEquipmentStatustoEmpty_Node0_action --> E_SetEquipmentStatustoEmpty S_SetEquipmentStatustoEmpty --> N_SetEquipmentStatustoEmpty_Node0 N_SetEquipmentStatustoEmpty_Node0 -- No --> E_SetEquipmentStatustoEmpty
File: GCX003.cbl
GIVEN:
A waybill is found for the equipment
WHEN:
The equipment is identified as a conveying car (SHRT-CONVEYING-CAR is true)
THEN:
The equipment load/empty indicator is set to 'E' (empty)
β Consolidated Acceptance Criteria
- The system processes the equipment information field → the information field is set to 'CONVEYING FLAT CAR'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetInfoFieldtoCONVEYINGFLATCAR(["Start Step"])
E_SetInfoFieldtoCONVEYINGFLATCAR(["End Step"])
N_SetInfoFieldtoCONVEYINGFLATCAR_Node0{"The system processes the equipment
information field"}:::decision N_SetInfoFieldtoCONVEYINGFLATCAR_Node0_action["The information field is set to
CONVEYING FLAT CAR"]:::main N_SetInfoFieldtoCONVEYINGFLATCAR_Node0 -- Yes --> N_SetInfoFieldtoCONVEYINGFLATCAR_Node0_action N_SetInfoFieldtoCONVEYINGFLATCAR_Node0_action --> E_SetInfoFieldtoCONVEYINGFLATCAR S_SetInfoFieldtoCONVEYINGFLATCAR --> N_SetInfoFieldtoCONVEYINGFLATCAR_Node0 N_SetInfoFieldtoCONVEYINGFLATCAR_Node0 -- No --> E_SetInfoFieldtoCONVEYINGFLATCAR
information field"}:::decision N_SetInfoFieldtoCONVEYINGFLATCAR_Node0_action["The information field is set to
CONVEYING FLAT CAR"]:::main N_SetInfoFieldtoCONVEYINGFLATCAR_Node0 -- Yes --> N_SetInfoFieldtoCONVEYINGFLATCAR_Node0_action N_SetInfoFieldtoCONVEYINGFLATCAR_Node0_action --> E_SetInfoFieldtoCONVEYINGFLATCAR S_SetInfoFieldtoCONVEYINGFLATCAR --> N_SetInfoFieldtoCONVEYINGFLATCAR_Node0 N_SetInfoFieldtoCONVEYINGFLATCAR_Node0 -- No --> E_SetInfoFieldtoCONVEYINGFLATCAR
File: GCX003.cbl
GIVEN:
The equipment is identified as a conveying car and no cargo is found
WHEN:
The system processes the equipment information field
THEN:
The information field is set to 'CONVEYING FLAT CAR'
β Consolidated Acceptance Criteria
- The system determines cargo processing requirements → normal cargo processing is bypassed and the system proceeds to format equipment information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SkipCargoProcessingforEmptyConveyingCar(["Start Step"])
E_SkipCargoProcessingforEmptyConveyingCar(["End Step"])
N_SkipCargoProcessingforEmptyConveyingCar_Node0{"The system determines cargo
processing requirements"}:::decision N_SkipCargoProcessingforEmptyConveyingCar_Node0_action["Normal cargo processing is bypassed
and the system proceeds to format
equipment information"]:::main N_SkipCargoProcessingforEmptyConveyingCar_Node0 -- Yes --> N_SkipCargoProcessingforEmptyConveyingCar_Node0_action N_SkipCargoProcessingforEmptyConveyingCar_Node0_action --> E_SkipCargoProcessingforEmptyConveyingCar S_SkipCargoProcessingforEmptyConveyingCar --> N_SkipCargoProcessingforEmptyConveyingCar_Node0 N_SkipCargoProcessingforEmptyConveyingCar_Node0 -- No --> E_SkipCargoProcessingforEmptyConveyingCar
processing requirements"}:::decision N_SkipCargoProcessingforEmptyConveyingCar_Node0_action["Normal cargo processing is bypassed
and the system proceeds to format
equipment information"]:::main N_SkipCargoProcessingforEmptyConveyingCar_Node0 -- Yes --> N_SkipCargoProcessingforEmptyConveyingCar_Node0_action N_SkipCargoProcessingforEmptyConveyingCar_Node0_action --> E_SkipCargoProcessingforEmptyConveyingCar S_SkipCargoProcessingforEmptyConveyingCar --> N_SkipCargoProcessingforEmptyConveyingCar_Node0 N_SkipCargoProcessingforEmptyConveyingCar_Node0 -- No --> E_SkipCargoProcessingforEmptyConveyingCar
File: GCX003.cbl
GIVEN:
The equipment is a conveying flat car and the load/empty indicator is 'E' (empty)
WHEN:
The system determines cargo processing requirements
THEN:
- Normal cargo processing is bypassed
- The system proceeds to format equipment information
β Consolidated Acceptance Criteria
- The system processes the equipment → container information is retrieved and processed through the container handling procedures
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveContainerInformation(["Start Step"])
E_RetrieveContainerInformation(["End Step"])
N_RetrieveContainerInformation_Node0{"The system processes the equipment"}:::decision
N_RetrieveContainerInformation_Node0_action["Container information is retrieved
and processed through the container
handling procedures"]:::main N_RetrieveContainerInformation_Node0 -- Yes --> N_RetrieveContainerInformation_Node0_action N_RetrieveContainerInformation_Node0_action --> E_RetrieveContainerInformation S_RetrieveContainerInformation --> N_RetrieveContainerInformation_Node0 N_RetrieveContainerInformation_Node0 -- No --> E_RetrieveContainerInformation
and processed through the container
handling procedures"]:::main N_RetrieveContainerInformation_Node0 -- Yes --> N_RetrieveContainerInformation_Node0_action N_RetrieveContainerInformation_Node0_action --> E_RetrieveContainerInformation S_RetrieveContainerInformation --> N_RetrieveContainerInformation_Node0 N_RetrieveContainerInformation_Node0 -- No --> E_RetrieveContainerInformation
File: GCX003.cbl
GIVEN:
A conveying flat car has containers loaded on it
WHEN:
The system processes the equipment
THEN:
- Container information is retrieved
- Processed through the container handling procedures
β Consolidated Acceptance Criteria
- The entry number field contains a valid non-space value → the entry number should be extracted and stored as the bond number for formatting
- The system processes bond information → the entry number is saved as the bond number for description formatting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractBondNumberfromEntryNumber(["Start Step"])
E_ExtractBondNumberfromEntryNumber(["End Step"])
N_ExtractBondNumberfromEntryNumber_Node0{"The entry number field contains a
valid non-space value"}:::decision N_ExtractBondNumberfromEntryNumber_Node0_action["The entry number should be
extracted and stored as the bond
number for formatting"]:::main N_ExtractBondNumberfromEntryNumber_Node0 -- Yes --> N_ExtractBondNumberfromEntryNumber_Node0_action N_ExtractBondNumberfromEntryNumber_Node0_action --> E_ExtractBondNumberfromEntryNumber S_ExtractBondNumberfromEntryNumber --> N_ExtractBondNumberfromEntryNumber_Node0 N_ExtractBondNumberfromEntryNumber_Node1{"The system processes bond
information"}:::decision N_ExtractBondNumberfromEntryNumber_Node1_action["The entry number is saved as the
bond number for description
formatting"]:::main N_ExtractBondNumberfromEntryNumber_Node1 -- Yes --> N_ExtractBondNumberfromEntryNumber_Node1_action N_ExtractBondNumberfromEntryNumber_Node1_action --> E_ExtractBondNumberfromEntryNumber N_ExtractBondNumberfromEntryNumber_Node0 -- No --> N_ExtractBondNumberfromEntryNumber_Node1 N_ExtractBondNumberfromEntryNumber_Node1 -- No --> E_ExtractBondNumberfromEntryNumber
valid non-space value"}:::decision N_ExtractBondNumberfromEntryNumber_Node0_action["The entry number should be
extracted and stored as the bond
number for formatting"]:::main N_ExtractBondNumberfromEntryNumber_Node0 -- Yes --> N_ExtractBondNumberfromEntryNumber_Node0_action N_ExtractBondNumberfromEntryNumber_Node0_action --> E_ExtractBondNumberfromEntryNumber S_ExtractBondNumberfromEntryNumber --> N_ExtractBondNumberfromEntryNumber_Node0 N_ExtractBondNumberfromEntryNumber_Node1{"The system processes bond
information"}:::decision N_ExtractBondNumberfromEntryNumber_Node1_action["The entry number is saved as the
bond number for description
formatting"]:::main N_ExtractBondNumberfromEntryNumber_Node1 -- Yes --> N_ExtractBondNumberfromEntryNumber_Node1_action N_ExtractBondNumberfromEntryNumber_Node1_action --> E_ExtractBondNumberfromEntryNumber N_ExtractBondNumberfromEntryNumber_Node0 -- No --> N_ExtractBondNumberfromEntryNumber_Node1 N_ExtractBondNumberfromEntryNumber_Node1 -- No --> E_ExtractBondNumberfromEntryNumber
File: GCX003.cbl
GIVEN:
A cargo record is being processed for bond information display
WHEN:
The entry number field contains a valid non-space value
THEN:
- The entry number should be extracted
- Stored as the bond number for formatting
File: GCX003.cbl
GIVEN:
Cargo has a valid entry number in M1202 field
WHEN:
The system processes bond information
THEN:
The entry number is saved as the bond number for description formatting
β Consolidated Acceptance Criteria
- The in-bond control number field contains a valid non-space value → the in-bond control number should be extracted and stored as the bond number for formatting
- The system processes bond information → the in-bond control number is saved as the bond number for description formatting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractBondNumberfromInBondControlNumber(["Start Step"])
E_ExtractBondNumberfromInBondControlNumber(["End Step"])
N_ExtractBondNumberfromInBondControlNumber_Node0{"The in-bond control number field
contains a valid non-space value"}:::decision N_ExtractBondNumberfromInBondControlNumber_Node0_action["The in-bond control number should
be extracted and stored as the bond
number for formatting"]:::main N_ExtractBondNumberfromInBondControlNumber_Node0 -- Yes --> N_ExtractBondNumberfromInBondControlNumber_Node0_action N_ExtractBondNumberfromInBondControlNumber_Node0_action --> E_ExtractBondNumberfromInBondControlNumber S_ExtractBondNumberfromInBondControlNumber --> N_ExtractBondNumberfromInBondControlNumber_Node0 N_ExtractBondNumberfromInBondControlNumber_Node1{"The system processes bond
information"}:::decision N_ExtractBondNumberfromInBondControlNumber_Node1_action["The in-bond control number is saved
as the bond number for description
formatting"]:::main N_ExtractBondNumberfromInBondControlNumber_Node1 -- Yes --> N_ExtractBondNumberfromInBondControlNumber_Node1_action N_ExtractBondNumberfromInBondControlNumber_Node1_action --> E_ExtractBondNumberfromInBondControlNumber N_ExtractBondNumberfromInBondControlNumber_Node0 -- No --> N_ExtractBondNumberfromInBondControlNumber_Node1 N_ExtractBondNumberfromInBondControlNumber_Node1 -- No --> E_ExtractBondNumberfromInBondControlNumber
contains a valid non-space value"}:::decision N_ExtractBondNumberfromInBondControlNumber_Node0_action["The in-bond control number should
be extracted and stored as the bond
number for formatting"]:::main N_ExtractBondNumberfromInBondControlNumber_Node0 -- Yes --> N_ExtractBondNumberfromInBondControlNumber_Node0_action N_ExtractBondNumberfromInBondControlNumber_Node0_action --> E_ExtractBondNumberfromInBondControlNumber S_ExtractBondNumberfromInBondControlNumber --> N_ExtractBondNumberfromInBondControlNumber_Node0 N_ExtractBondNumberfromInBondControlNumber_Node1{"The system processes bond
information"}:::decision N_ExtractBondNumberfromInBondControlNumber_Node1_action["The in-bond control number is saved
as the bond number for description
formatting"]:::main N_ExtractBondNumberfromInBondControlNumber_Node1 -- Yes --> N_ExtractBondNumberfromInBondControlNumber_Node1_action N_ExtractBondNumberfromInBondControlNumber_Node1_action --> E_ExtractBondNumberfromInBondControlNumber N_ExtractBondNumberfromInBondControlNumber_Node0 -- No --> N_ExtractBondNumberfromInBondControlNumber_Node1 N_ExtractBondNumberfromInBondControlNumber_Node1 -- No --> E_ExtractBondNumberfromInBondControlNumber
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record is being processed for bond information display and the entry number is not available
WHEN:
The in-bond control number field contains a valid non-space value
THEN:
- The in-bond control number should be extracted
- Stored as the bond number for formatting
File: GCX003.cbl
GIVEN:
Cargo entry number is blank and in-bond control number M1206 field contains data
WHEN:
The system processes bond information
THEN:
The in-bond control number is saved as the bond number for description formatting
β Consolidated Acceptance Criteria
- Both the entry number and in-bond control number fields are empty or contain spaces → the bond number should be set to spaces
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetBondNumbertoSpaces(["Start Step"])
E_SetBondNumbertoSpaces(["End Step"])
N_SetBondNumbertoSpaces_Node0{"Both the entry number and in-bond
control number fields are empty or
contain spaces"}:::decision N_SetBondNumbertoSpaces_Node0_action["The bond number should be set to
spaces"]:::main N_SetBondNumbertoSpaces_Node0 -- Yes --> N_SetBondNumbertoSpaces_Node0_action N_SetBondNumbertoSpaces_Node0_action --> E_SetBondNumbertoSpaces S_SetBondNumbertoSpaces --> N_SetBondNumbertoSpaces_Node0 N_SetBondNumbertoSpaces_Node0 -- No --> E_SetBondNumbertoSpaces
control number fields are empty or
contain spaces"}:::decision N_SetBondNumbertoSpaces_Node0_action["The bond number should be set to
spaces"]:::main N_SetBondNumbertoSpaces_Node0 -- Yes --> N_SetBondNumbertoSpaces_Node0_action N_SetBondNumbertoSpaces_Node0_action --> E_SetBondNumbertoSpaces S_SetBondNumbertoSpaces --> N_SetBondNumbertoSpaces_Node0 N_SetBondNumbertoSpaces_Node0 -- No --> E_SetBondNumbertoSpaces
File: GCX003.cbl
GIVEN:
A cargo record is being processed for bond information display
WHEN:
- Both the entry number
- In-bond control number fields are empty or contain spaces
THEN:
The bond number should be set to spaces
β Consolidated Acceptance Criteria
- The in-bond type code is 'IT' → the bond information should be formatted as 'AMS IT [bond number]' in the report info field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatasAMSITBondNumber(["Start Step"])
E_FormatasAMSITBondNumber(["End Step"])
N_FormatasAMSITBondNumber_Node0{"The in-bond type code is IT"}:::decision
N_FormatasAMSITBondNumber_Node0_action["The bond information should be
formatted as AMS IT bond number in
the report info field"]:::main N_FormatasAMSITBondNumber_Node0 -- Yes --> N_FormatasAMSITBondNumber_Node0_action N_FormatasAMSITBondNumber_Node0_action --> E_FormatasAMSITBondNumber S_FormatasAMSITBondNumber --> N_FormatasAMSITBondNumber_Node0 N_FormatasAMSITBondNumber_Node0 -- No --> E_FormatasAMSITBondNumber
formatted as AMS IT bond number in
the report info field"]:::main N_FormatasAMSITBondNumber_Node0 -- Yes --> N_FormatasAMSITBondNumber_Node0_action N_FormatasAMSITBondNumber_Node0_action --> E_FormatasAMSITBondNumber S_FormatasAMSITBondNumber --> N_FormatasAMSITBondNumber_Node0 N_FormatasAMSITBondNumber_Node0 -- No --> E_FormatasAMSITBondNumber
File: GCX003.cbl
GIVEN:
A cargo record has bond information to be formatted for display
WHEN:
The in-bond type code is 'IT'
THEN:
The bond information should be formatted as 'AMS IT [bond number]' in the report info field
β Consolidated Acceptance Criteria
- The in-bond type code is 'IE' → the bond information should be formatted as 'AMS IE [bond number]' in the report info field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatasAMSIEBondNumber(["Start Step"])
E_FormatasAMSIEBondNumber(["End Step"])
N_FormatasAMSIEBondNumber_Node0{"The in-bond type code is IE"}:::decision
N_FormatasAMSIEBondNumber_Node0_action["The bond information should be
formatted as AMS IE bond number in
the report info field"]:::main N_FormatasAMSIEBondNumber_Node0 -- Yes --> N_FormatasAMSIEBondNumber_Node0_action N_FormatasAMSIEBondNumber_Node0_action --> E_FormatasAMSIEBondNumber S_FormatasAMSIEBondNumber --> N_FormatasAMSIEBondNumber_Node0 N_FormatasAMSIEBondNumber_Node0 -- No --> E_FormatasAMSIEBondNumber
formatted as AMS IE bond number in
the report info field"]:::main N_FormatasAMSIEBondNumber_Node0 -- Yes --> N_FormatasAMSIEBondNumber_Node0_action N_FormatasAMSIEBondNumber_Node0_action --> E_FormatasAMSIEBondNumber S_FormatasAMSIEBondNumber --> N_FormatasAMSIEBondNumber_Node0 N_FormatasAMSIEBondNumber_Node0 -- No --> E_FormatasAMSIEBondNumber
File: GCX003.cbl
GIVEN:
A cargo record has bond information to be formatted for display
WHEN:
The in-bond type code is 'IE'
THEN:
The bond information should be formatted as 'AMS IE [bond number]' in the report info field
β Consolidated Acceptance Criteria
- The in-bond type code is 'TE' → the bond information should be formatted as 'AMS 7512 TE [bond number]' in the report info field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatasAMS7512TEBondNumber(["Start Step"])
E_FormatasAMS7512TEBondNumber(["End Step"])
N_FormatasAMS7512TEBondNumber_Node0{"The in-bond type code is TE"}:::decision
N_FormatasAMS7512TEBondNumber_Node0_action["The bond information should be
formatted as AMS 7512 TE bond number
in the report info field"]:::main N_FormatasAMS7512TEBondNumber_Node0 -- Yes --> N_FormatasAMS7512TEBondNumber_Node0_action N_FormatasAMS7512TEBondNumber_Node0_action --> E_FormatasAMS7512TEBondNumber S_FormatasAMS7512TEBondNumber --> N_FormatasAMS7512TEBondNumber_Node0 N_FormatasAMS7512TEBondNumber_Node0 -- No --> E_FormatasAMS7512TEBondNumber
formatted as AMS 7512 TE bond number
in the report info field"]:::main N_FormatasAMS7512TEBondNumber_Node0 -- Yes --> N_FormatasAMS7512TEBondNumber_Node0_action N_FormatasAMS7512TEBondNumber_Node0_action --> E_FormatasAMS7512TEBondNumber S_FormatasAMS7512TEBondNumber --> N_FormatasAMS7512TEBondNumber_Node0 N_FormatasAMS7512TEBondNumber_Node0 -- No --> E_FormatasAMS7512TEBondNumber
File: GCX003.cbl
GIVEN:
A cargo record has bond information to be formatted for display
WHEN:
The in-bond type code is 'TE'
THEN:
The bond information should be formatted as 'AMS 7512 TE [bond number]' in the report info field
β Consolidated Acceptance Criteria
- The in-bond type code is 'TR' → the bond information should be formatted as 'AMS 7512 TR [bond number]' in the report info field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatasAMS7512TRBondNumber(["Start Step"])
E_FormatasAMS7512TRBondNumber(["End Step"])
N_FormatasAMS7512TRBondNumber_Node0{"The in-bond type code is TR"}:::decision
N_FormatasAMS7512TRBondNumber_Node0_action["The bond information should be
formatted as AMS 7512 TR bond number
in the report info field"]:::main N_FormatasAMS7512TRBondNumber_Node0 -- Yes --> N_FormatasAMS7512TRBondNumber_Node0_action N_FormatasAMS7512TRBondNumber_Node0_action --> E_FormatasAMS7512TRBondNumber S_FormatasAMS7512TRBondNumber --> N_FormatasAMS7512TRBondNumber_Node0 N_FormatasAMS7512TRBondNumber_Node0 -- No --> E_FormatasAMS7512TRBondNumber
formatted as AMS 7512 TR bond number
in the report info field"]:::main N_FormatasAMS7512TRBondNumber_Node0 -- Yes --> N_FormatasAMS7512TRBondNumber_Node0_action N_FormatasAMS7512TRBondNumber_Node0_action --> E_FormatasAMS7512TRBondNumber S_FormatasAMS7512TRBondNumber --> N_FormatasAMS7512TRBondNumber_Node0 N_FormatasAMS7512TRBondNumber_Node0 -- No --> E_FormatasAMS7512TRBondNumber
File: GCX003.cbl
GIVEN:
A cargo record has bond information to be formatted for display
WHEN:
The in-bond type code is 'TR'
THEN:
The bond information should be formatted as 'AMS 7512 TR [bond number]' in the report info field
β Consolidated Acceptance Criteria
- The in-bond type code is 'MT' → the bond information should be formatted as 'AMS 7512 MT [bond number]' in the report info field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatasAMS7512MTBondNumber(["Start Step"])
E_FormatasAMS7512MTBondNumber(["End Step"])
N_FormatasAMS7512MTBondNumber_Node0{"The in-bond type code is MT"}:::decision
N_FormatasAMS7512MTBondNumber_Node0_action["The bond information should be
formatted as AMS 7512 MT bond number
in the report info field"]:::main N_FormatasAMS7512MTBondNumber_Node0 -- Yes --> N_FormatasAMS7512MTBondNumber_Node0_action N_FormatasAMS7512MTBondNumber_Node0_action --> E_FormatasAMS7512MTBondNumber S_FormatasAMS7512MTBondNumber --> N_FormatasAMS7512MTBondNumber_Node0 N_FormatasAMS7512MTBondNumber_Node0 -- No --> E_FormatasAMS7512MTBondNumber
formatted as AMS 7512 MT bond number
in the report info field"]:::main N_FormatasAMS7512MTBondNumber_Node0 -- Yes --> N_FormatasAMS7512MTBondNumber_Node0_action N_FormatasAMS7512MTBondNumber_Node0_action --> E_FormatasAMS7512MTBondNumber S_FormatasAMS7512MTBondNumber --> N_FormatasAMS7512MTBondNumber_Node0 N_FormatasAMS7512MTBondNumber_Node0 -- No --> E_FormatasAMS7512MTBondNumber
File: GCX003.cbl
GIVEN:
A cargo record has bond information to be formatted for display
WHEN:
The in-bond type code is 'MT'
THEN:
The bond information should be formatted as 'AMS 7512 MT [bond number]' in the report info field
β Consolidated Acceptance Criteria
- The cargo bill type code equals '15' → the system sets the cargo information field to 'PPR 7512 15 US-CA-US' to indicate paper port 7512 processing for US-Canada-US movement
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckBillTypeCode(["Start Step"])
E_CheckBillTypeCode(["End Step"])
N_CheckBillTypeCode_Node0{"The cargo bill type code equals 15"}:::decision
N_CheckBillTypeCode_Node0_action["The system sets the cargo
information field to PPR 7512 15
US-CA-US to indicate paper port 7512
processing for US-Canada-US movement"]:::main N_CheckBillTypeCode_Node0 -- Yes --> N_CheckBillTypeCode_Node0_action N_CheckBillTypeCode_Node0_action --> E_CheckBillTypeCode S_CheckBillTypeCode --> N_CheckBillTypeCode_Node0 N_CheckBillTypeCode_Node0 -- No --> E_CheckBillTypeCode
information field to PPR 7512 15
US-CA-US to indicate paper port 7512
processing for US-Canada-US movement"]:::main N_CheckBillTypeCode_Node0 -- Yes --> N_CheckBillTypeCode_Node0_action N_CheckBillTypeCode_Node0_action --> E_CheckBillTypeCode S_CheckBillTypeCode --> N_CheckBillTypeCode_Node0 N_CheckBillTypeCode_Node0 -- No --> E_CheckBillTypeCode
File: GCX003.cbl
GIVEN:
A cargo record is being processed for report formatting
WHEN:
The cargo bill type code equals '15'
THEN:
The system sets the cargo information field to 'PPR 7512 15 US-CA-US' to indicate paper port 7512 processing for US-Canada-US movement
β Consolidated Acceptance Criteria
- The system formats the equipment description → the description is set to 'PPR 7512 15 US-CA-US'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatPaper7512USCAUSDescription(["Start Step"])
E_FormatPaper7512USCAUSDescription(["End Step"])
N_FormatPaper7512USCAUSDescription_Node0{"The system formats the equipment
description"}:::decision N_FormatPaper7512USCAUSDescription_Node0_action["The description is set to PPR 7512
15 US-CA-US"]:::main N_FormatPaper7512USCAUSDescription_Node0 -- Yes --> N_FormatPaper7512USCAUSDescription_Node0_action N_FormatPaper7512USCAUSDescription_Node0_action --> E_FormatPaper7512USCAUSDescription S_FormatPaper7512USCAUSDescription --> N_FormatPaper7512USCAUSDescription_Node0 N_FormatPaper7512USCAUSDescription_Node0 -- No --> E_FormatPaper7512USCAUSDescription
description"}:::decision N_FormatPaper7512USCAUSDescription_Node0_action["The description is set to PPR 7512
15 US-CA-US"]:::main N_FormatPaper7512USCAUSDescription_Node0 -- Yes --> N_FormatPaper7512USCAUSDescription_Node0_action N_FormatPaper7512USCAUSDescription_Node0_action --> E_FormatPaper7512USCAUSDescription S_FormatPaper7512USCAUSDescription --> N_FormatPaper7512USCAUSDescription_Node0 N_FormatPaper7512USCAUSDescription_Node0 -- No --> E_FormatPaper7512USCAUSDescription
File: GCX003.cbl
GIVEN:
Cargo has bill of lading type code equal to '15'
WHEN:
The system formats the equipment description
THEN:
The description is set to 'PPR 7512 15 US-CA-US'
β Consolidated Acceptance Criteria
- The system formats the equipment description → the description is formatted as 'AMS' followed by the bond type and bond number
- Equipment information is being formatted → concatenate 'AMS ', bond type code, space, and saved bond number into equipment information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatAMSITIEBondDescription(["Start Step"])
E_FormatAMSITIEBondDescription(["End Step"])
N_FormatAMSITIEBondDescription_Node0{"The system formats the equipment
description"}:::decision N_FormatAMSITIEBondDescription_Node0_action["The description is formatted as AMS
followed by the bond type and bond
number"]:::main N_FormatAMSITIEBondDescription_Node0 -- Yes --> N_FormatAMSITIEBondDescription_Node0_action N_FormatAMSITIEBondDescription_Node0_action --> E_FormatAMSITIEBondDescription S_FormatAMSITIEBondDescription --> N_FormatAMSITIEBondDescription_Node0 N_FormatAMSITIEBondDescription_Node1{"Equipment information is being
formatted"}:::decision N_FormatAMSITIEBondDescription_Node1_action["Concatenate AMS , bond type code,
space, and saved bond number into
equipment information"]:::main N_FormatAMSITIEBondDescription_Node1 -- Yes --> N_FormatAMSITIEBondDescription_Node1_action N_FormatAMSITIEBondDescription_Node1_action --> E_FormatAMSITIEBondDescription N_FormatAMSITIEBondDescription_Node0 -- No --> N_FormatAMSITIEBondDescription_Node1 N_FormatAMSITIEBondDescription_Node1 -- No --> E_FormatAMSITIEBondDescription
description"}:::decision N_FormatAMSITIEBondDescription_Node0_action["The description is formatted as AMS
followed by the bond type and bond
number"]:::main N_FormatAMSITIEBondDescription_Node0 -- Yes --> N_FormatAMSITIEBondDescription_Node0_action N_FormatAMSITIEBondDescription_Node0_action --> E_FormatAMSITIEBondDescription S_FormatAMSITIEBondDescription --> N_FormatAMSITIEBondDescription_Node0 N_FormatAMSITIEBondDescription_Node1{"Equipment information is being
formatted"}:::decision N_FormatAMSITIEBondDescription_Node1_action["Concatenate AMS , bond type code,
space, and saved bond number into
equipment information"]:::main N_FormatAMSITIEBondDescription_Node1 -- Yes --> N_FormatAMSITIEBondDescription_Node1_action N_FormatAMSITIEBondDescription_Node1_action --> E_FormatAMSITIEBondDescription N_FormatAMSITIEBondDescription_Node0 -- No --> N_FormatAMSITIEBondDescription_Node1 N_FormatAMSITIEBondDescription_Node1 -- No --> E_FormatAMSITIEBondDescription
File: GCX003.cbl
GIVEN:
Cargo has in-bond type code of 'IT' or 'IE'
WHEN:
The system formats the equipment description
THEN:
- The description is formatted as 'ams' followed by the bond type
- Bond number
File: GCX003.cbl
GIVEN:
In-bond type code is 'IT' or 'IE'
WHEN:
Equipment information is being formatted
THEN:
Concatenate 'AMS ', bond type code, space, and saved bond number into equipment information
β Consolidated Acceptance Criteria
- The system formats the equipment description → the description is formatted as 'AMS 7512' followed by the bond type and bond number
- Equipment information is being formatted → concatenate 'AMS 7512 ', bond type code, space, and saved bond number into equipment information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatAMS7512TETRMTBondDescription(["Start Step"])
E_FormatAMS7512TETRMTBondDescription(["End Step"])
N_FormatAMS7512TETRMTBondDescription_Node0{"The system formats the equipment
description"}:::decision N_FormatAMS7512TETRMTBondDescription_Node0_action["The description is formatted as AMS
7512 followed by the bond type and
bond number"]:::main N_FormatAMS7512TETRMTBondDescription_Node0 -- Yes --> N_FormatAMS7512TETRMTBondDescription_Node0_action N_FormatAMS7512TETRMTBondDescription_Node0_action --> E_FormatAMS7512TETRMTBondDescription S_FormatAMS7512TETRMTBondDescription --> N_FormatAMS7512TETRMTBondDescription_Node0 N_FormatAMS7512TETRMTBondDescription_Node1{"Equipment information is being
formatted"}:::decision N_FormatAMS7512TETRMTBondDescription_Node1_action["Concatenate AMS 7512 , bond type
code, space, and saved bond number
into equipment information"]:::main N_FormatAMS7512TETRMTBondDescription_Node1 -- Yes --> N_FormatAMS7512TETRMTBondDescription_Node1_action N_FormatAMS7512TETRMTBondDescription_Node1_action --> E_FormatAMS7512TETRMTBondDescription N_FormatAMS7512TETRMTBondDescription_Node0 -- No --> N_FormatAMS7512TETRMTBondDescription_Node1 N_FormatAMS7512TETRMTBondDescription_Node1 -- No --> E_FormatAMS7512TETRMTBondDescription
description"}:::decision N_FormatAMS7512TETRMTBondDescription_Node0_action["The description is formatted as AMS
7512 followed by the bond type and
bond number"]:::main N_FormatAMS7512TETRMTBondDescription_Node0 -- Yes --> N_FormatAMS7512TETRMTBondDescription_Node0_action N_FormatAMS7512TETRMTBondDescription_Node0_action --> E_FormatAMS7512TETRMTBondDescription S_FormatAMS7512TETRMTBondDescription --> N_FormatAMS7512TETRMTBondDescription_Node0 N_FormatAMS7512TETRMTBondDescription_Node1{"Equipment information is being
formatted"}:::decision N_FormatAMS7512TETRMTBondDescription_Node1_action["Concatenate AMS 7512 , bond type
code, space, and saved bond number
into equipment information"]:::main N_FormatAMS7512TETRMTBondDescription_Node1 -- Yes --> N_FormatAMS7512TETRMTBondDescription_Node1_action N_FormatAMS7512TETRMTBondDescription_Node1_action --> E_FormatAMS7512TETRMTBondDescription N_FormatAMS7512TETRMTBondDescription_Node0 -- No --> N_FormatAMS7512TETRMTBondDescription_Node1 N_FormatAMS7512TETRMTBondDescription_Node1 -- No --> E_FormatAMS7512TETRMTBondDescription
File: GCX003.cbl
GIVEN:
Cargo has in-bond type code of 'TE', 'TR', or 'MT'
WHEN:
The system formats the equipment description
THEN:
- The description is formatted as 'ams 7512' followed by the bond type
- Bond number
File: GCX003.cbl
GIVEN:
In-bond type code is 'TE', 'TR', or 'MT'
WHEN:
Equipment information is being formatted
THEN:
Concatenate 'AMS 7512 ', bond type code, space, and saved bond number into equipment information
β Consolidated Acceptance Criteria
- The system processes segment 07 entries → each valid segment 07 description is formatted as a separate report line with equipment totals incremented
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessSegment07EquipmentDescriptions(["Start Step"])
E_ProcessSegment07EquipmentDescriptions(["End Step"])
N_ProcessSegment07EquipmentDescriptions_Node0{"The system processes segment 07
entries"}:::decision N_ProcessSegment07EquipmentDescriptions_Node0_action["Each valid segment 07 description
is formatted as a separate report
line with equipment totals
incremented"]:::main N_ProcessSegment07EquipmentDescriptions_Node0 -- Yes --> N_ProcessSegment07EquipmentDescriptions_Node0_action N_ProcessSegment07EquipmentDescriptions_Node0_action --> E_ProcessSegment07EquipmentDescriptions S_ProcessSegment07EquipmentDescriptions --> N_ProcessSegment07EquipmentDescriptions_Node0 N_ProcessSegment07EquipmentDescriptions_Node0 -- No --> E_ProcessSegment07EquipmentDescriptions
entries"}:::decision N_ProcessSegment07EquipmentDescriptions_Node0_action["Each valid segment 07 description
is formatted as a separate report
line with equipment totals
incremented"]:::main N_ProcessSegment07EquipmentDescriptions_Node0 -- Yes --> N_ProcessSegment07EquipmentDescriptions_Node0_action N_ProcessSegment07EquipmentDescriptions_Node0_action --> E_ProcessSegment07EquipmentDescriptions S_ProcessSegment07EquipmentDescriptions --> N_ProcessSegment07EquipmentDescriptions_Node0 N_ProcessSegment07EquipmentDescriptions_Node0 -- No --> E_ProcessSegment07EquipmentDescriptions
File: GCX003.cbl
GIVEN:
Equipment description is blank and segment 07 data contains valid equipment descriptions
WHEN:
The system processes segment 07 entries
THEN:
Each valid segment 07 description is formatted as a separate report line with equipment totals incremented
β Consolidated Acceptance Criteria
- The system processes special handling entries → the special handling description replaces the current equipment description as a new report line
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessSpecialHandlingTypeEntries(["Start Step"])
E_ProcessSpecialHandlingTypeEntries(["End Step"])
N_ProcessSpecialHandlingTypeEntries_Node0{"The system processes special
handling entries"}:::decision N_ProcessSpecialHandlingTypeEntries_Node0_action["The special handling description
replaces the current equipment
description as a new report line"]:::main N_ProcessSpecialHandlingTypeEntries_Node0 -- Yes --> N_ProcessSpecialHandlingTypeEntries_Node0_action N_ProcessSpecialHandlingTypeEntries_Node0_action --> E_ProcessSpecialHandlingTypeEntries S_ProcessSpecialHandlingTypeEntries --> N_ProcessSpecialHandlingTypeEntries_Node0 N_ProcessSpecialHandlingTypeEntries_Node0 -- No --> E_ProcessSpecialHandlingTypeEntries
handling entries"}:::decision N_ProcessSpecialHandlingTypeEntries_Node0_action["The special handling description
replaces the current equipment
description as a new report line"]:::main N_ProcessSpecialHandlingTypeEntries_Node0 -- Yes --> N_ProcessSpecialHandlingTypeEntries_Node0_action N_ProcessSpecialHandlingTypeEntries_Node0_action --> E_ProcessSpecialHandlingTypeEntries S_ProcessSpecialHandlingTypeEntries --> N_ProcessSpecialHandlingTypeEntries_Node0 N_ProcessSpecialHandlingTypeEntries_Node0 -- No --> E_ProcessSpecialHandlingTypeEntries
File: GCX003.cbl
GIVEN:
Station table contains special handling type entries for the cargo and type code is 'SFE' for US country
WHEN:
The system processes special handling entries
THEN:
The special handling description replaces the current equipment description as a new report line
β Consolidated Acceptance Criteria
- The system reclassifies the equipment as empty → the loaded equipment count is decremented and empty equipment count is incremented for the appropriate equipment type
- Load/empty indicator is E (Empty) → set equipment information description to 'EMPTY'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatEmptyEquipmentDescription(["Start Step"])
E_FormatEmptyEquipmentDescription(["End Step"])
N_FormatEmptyEquipmentDescription_Node0{"The system reclassifies the
equipment as empty"}:::decision N_FormatEmptyEquipmentDescription_Node0_action["The loaded equipment count is
decremented and empty equipment
count is incremented for the
appropriate equipment type"]:::main N_FormatEmptyEquipmentDescription_Node0 -- Yes --> N_FormatEmptyEquipmentDescription_Node0_action N_FormatEmptyEquipmentDescription_Node0_action --> E_FormatEmptyEquipmentDescription S_FormatEmptyEquipmentDescription --> N_FormatEmptyEquipmentDescription_Node0 N_FormatEmptyEquipmentDescription_Node1{"Loadempty indicator is E Empty"}:::decision N_FormatEmptyEquipmentDescription_Node1_action["Set equipment information
description to EMPTY"]:::main N_FormatEmptyEquipmentDescription_Node1 -- Yes --> N_FormatEmptyEquipmentDescription_Node1_action N_FormatEmptyEquipmentDescription_Node1_action --> E_FormatEmptyEquipmentDescription N_FormatEmptyEquipmentDescription_Node0 -- No --> N_FormatEmptyEquipmentDescription_Node1 N_FormatEmptyEquipmentDescription_Node1 -- No --> E_FormatEmptyEquipmentDescription
equipment as empty"}:::decision N_FormatEmptyEquipmentDescription_Node0_action["The loaded equipment count is
decremented and empty equipment
count is incremented for the
appropriate equipment type"]:::main N_FormatEmptyEquipmentDescription_Node0 -- Yes --> N_FormatEmptyEquipmentDescription_Node0_action N_FormatEmptyEquipmentDescription_Node0_action --> E_FormatEmptyEquipmentDescription S_FormatEmptyEquipmentDescription --> N_FormatEmptyEquipmentDescription_Node0 N_FormatEmptyEquipmentDescription_Node1{"Loadempty indicator is E Empty"}:::decision N_FormatEmptyEquipmentDescription_Node1_action["Set equipment information
description to EMPTY"]:::main N_FormatEmptyEquipmentDescription_Node1 -- Yes --> N_FormatEmptyEquipmentDescription_Node1_action N_FormatEmptyEquipmentDescription_Node1_action --> E_FormatEmptyEquipmentDescription N_FormatEmptyEquipmentDescription_Node0 -- No --> N_FormatEmptyEquipmentDescription_Node1 N_FormatEmptyEquipmentDescription_Node1 -- No --> E_FormatEmptyEquipmentDescription
File: GCX003.cbl
GIVEN:
Cargo is classified as empty equipment or empty residue and equipment was previously counted as loaded
WHEN:
The system reclassifies the equipment as empty
THEN:
- The loaded equipment count is decremented
- Empty equipment count is incremented for the appropriate equipment type
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
No cargo data is available for equipment and equipment is not a conveying car
WHEN:
Load/empty indicator is E (Empty)
THEN:
Set equipment information description to 'EMPTY'
β Consolidated Acceptance Criteria
- The system begins segment data processing → the system sets accept status to 'GE', clears working storage areas, enables underscore processing, sets function to Get Unqualified, disables index usage, and enables retrieval of segments 07, 02, and 08
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeSegmentRetrievalParameters(["Start Step"])
E_InitializeSegmentRetrievalParameters(["End Step"])
N_InitializeSegmentRetrievalParameters_Node0{"The system begins segment data
processing"}:::decision N_InitializeSegmentRetrievalParameters_Node0_action["The system sets accept status to GE
, clears working storage areas,
enables underscore processing, sets
function to Get Unqualified,
disables index usage, and enables
retrieval of segments 07, 02, and 08"]:::main N_InitializeSegmentRetrievalParameters_Node0 -- Yes --> N_InitializeSegmentRetrievalParameters_Node0_action N_InitializeSegmentRetrievalParameters_Node0_action --> E_InitializeSegmentRetrievalParameters S_InitializeSegmentRetrievalParameters --> N_InitializeSegmentRetrievalParameters_Node0 N_InitializeSegmentRetrievalParameters_Node0 -- No --> E_InitializeSegmentRetrievalParameters
processing"}:::decision N_InitializeSegmentRetrievalParameters_Node0_action["The system sets accept status to GE
, clears working storage areas,
enables underscore processing, sets
function to Get Unqualified,
disables index usage, and enables
retrieval of segments 07, 02, and 08"]:::main N_InitializeSegmentRetrievalParameters_Node0 -- Yes --> N_InitializeSegmentRetrievalParameters_Node0_action N_InitializeSegmentRetrievalParameters_Node0_action --> E_InitializeSegmentRetrievalParameters S_InitializeSegmentRetrievalParameters --> N_InitializeSegmentRetrievalParameters_Node0 N_InitializeSegmentRetrievalParameters_Node0 -- No --> E_InitializeSegmentRetrievalParameters
File: GCX003.cbl
GIVEN:
A cargo record needs segment data retrieval
WHEN:
The system begins segment data processing
THEN:
The system sets accept status to 'GE', clears working storage areas, enables underscore processing, sets function to Get Unqualified, disables index usage, and enables retrieval of segments 07, 02, and 08
β Consolidated Acceptance Criteria
- The system calls the cargo segment retrieval service GCCUSIO2 → the system retrieves all requested segments (07, 02, 08) and their associated data arrays in one service call
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallCargoSegmentRetrievalService(["Start Step"])
E_CallCargoSegmentRetrievalService(["End Step"])
N_CallCargoSegmentRetrievalService_Node0{"The system calls the cargo segment
retrieval service GCCUSIO2"}:::decision N_CallCargoSegmentRetrievalService_Node0_action["The system retrieves all requested
segments 07, 02, 08 and their
associated data arrays in one
service call"]:::main N_CallCargoSegmentRetrievalService_Node0 -- Yes --> N_CallCargoSegmentRetrievalService_Node0_action N_CallCargoSegmentRetrievalService_Node0_action --> E_CallCargoSegmentRetrievalService S_CallCargoSegmentRetrievalService --> N_CallCargoSegmentRetrievalService_Node0 N_CallCargoSegmentRetrievalService_Node0 -- No --> E_CallCargoSegmentRetrievalService
retrieval service GCCUSIO2"}:::decision N_CallCargoSegmentRetrievalService_Node0_action["The system retrieves all requested
segments 07, 02, 08 and their
associated data arrays in one
service call"]:::main N_CallCargoSegmentRetrievalService_Node0 -- Yes --> N_CallCargoSegmentRetrievalService_Node0_action N_CallCargoSegmentRetrievalService_Node0_action --> E_CallCargoSegmentRetrievalService S_CallCargoSegmentRetrievalService --> N_CallCargoSegmentRetrievalService_Node0 N_CallCargoSegmentRetrievalService_Node0 -- No --> E_CallCargoSegmentRetrievalService
File: GCX003.cbl
GIVEN:
Segment retrieval parameters are initialized
WHEN:
The system calls the cargo segment retrieval service GCCUSIO2
THEN:
The system retrieves all requested segments (07, 02, 08) and their associated data arrays in one service call
β Consolidated Acceptance Criteria
- The system processes the retrieved segment data → the system moves the first occurrence of segment 03, 06, 07, 08, 09, and 12 data from arrays into individual working storage variables
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveRetrievedSegment07DatatoWorkingStorage(["Start Step"])
E_MoveRetrievedSegment07DatatoWorkingStorage(["End Step"])
N_MoveRetrievedSegment07DatatoWorkingStorage_Node0{"The system processes the retrieved
segment data"}:::decision N_MoveRetrievedSegment07DatatoWorkingStorage_Node0_action["The system moves the first
occurrence of segment 03, 06, 07,
08, 09, and 12 data from arrays into
individual working storage variables"]:::main N_MoveRetrievedSegment07DatatoWorkingStorage_Node0 -- Yes --> N_MoveRetrievedSegment07DatatoWorkingStorage_Node0_action N_MoveRetrievedSegment07DatatoWorkingStorage_Node0_action --> E_MoveRetrievedSegment07DatatoWorkingStorage S_MoveRetrievedSegment07DatatoWorkingStorage --> N_MoveRetrievedSegment07DatatoWorkingStorage_Node0 N_MoveRetrievedSegment07DatatoWorkingStorage_Node0 -- No --> E_MoveRetrievedSegment07DatatoWorkingStorage
segment data"}:::decision N_MoveRetrievedSegment07DatatoWorkingStorage_Node0_action["The system moves the first
occurrence of segment 03, 06, 07,
08, 09, and 12 data from arrays into
individual working storage variables"]:::main N_MoveRetrievedSegment07DatatoWorkingStorage_Node0 -- Yes --> N_MoveRetrievedSegment07DatatoWorkingStorage_Node0_action N_MoveRetrievedSegment07DatatoWorkingStorage_Node0_action --> E_MoveRetrievedSegment07DatatoWorkingStorage S_MoveRetrievedSegment07DatatoWorkingStorage --> N_MoveRetrievedSegment07DatatoWorkingStorage_Node0 N_MoveRetrievedSegment07DatatoWorkingStorage_Node0 -- No --> E_MoveRetrievedSegment07DatatoWorkingStorage
File: GCX003.cbl
GIVEN:
Cargo segment retrieval service returns successfully with no error number
WHEN:
The system processes the retrieved segment data
THEN:
The system moves the first occurrence of segment 03, 06, 07, 08, 09, and 12 data from arrays into individual working storage variables
β Consolidated Acceptance Criteria
- The system checks if segment 02 data contains spaces or low-values → if segment 02 data is spaces or low-values, set segment 02 not found flag, otherwise set segment 02 found flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSegment02FoundFlag(["Start Step"])
E_SetSegment02FoundFlag(["End Step"])
N_SetSegment02FoundFlag_Node0{"The system checks if segment 02
data contains spaces or low-values"}:::decision N_SetSegment02FoundFlag_Node0_action["If segment 02 data is spaces or
low-values, set segment 02 not found
flag, otherwise set segment 02 found
flag"]:::main N_SetSegment02FoundFlag_Node0 -- Yes --> N_SetSegment02FoundFlag_Node0_action N_SetSegment02FoundFlag_Node0_action --> E_SetSegment02FoundFlag S_SetSegment02FoundFlag --> N_SetSegment02FoundFlag_Node0 N_SetSegment02FoundFlag_Node0 -- No --> E_SetSegment02FoundFlag
data contains spaces or low-values"}:::decision N_SetSegment02FoundFlag_Node0_action["If segment 02 data is spaces or
low-values, set segment 02 not found
flag, otherwise set segment 02 found
flag"]:::main N_SetSegment02FoundFlag_Node0 -- Yes --> N_SetSegment02FoundFlag_Node0_action N_SetSegment02FoundFlag_Node0_action --> E_SetSegment02FoundFlag S_SetSegment02FoundFlag --> N_SetSegment02FoundFlag_Node0 N_SetSegment02FoundFlag_Node0 -- No --> E_SetSegment02FoundFlag
File: GCX003.cbl
GIVEN:
Segment 02 data has been retrieved from the cargo system
WHEN:
The system checks if segment 02 data contains spaces or low-values
THEN:
If segment 02 data is spaces or low-values, set segment 02 not found flag, otherwise set segment 02 found flag
β Consolidated Acceptance Criteria
- The system checks if segment 07 data contains spaces or low-values → if segment 07 data is spaces or low-values, set segment 07 not found flag, otherwise set segment 07 found flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSegment07FoundFlag(["Start Step"])
E_SetSegment07FoundFlag(["End Step"])
N_SetSegment07FoundFlag_Node0{"The system checks if segment 07
data contains spaces or low-values"}:::decision N_SetSegment07FoundFlag_Node0_action["If segment 07 data is spaces or
low-values, set segment 07 not found
flag, otherwise set segment 07 found
flag"]:::main N_SetSegment07FoundFlag_Node0 -- Yes --> N_SetSegment07FoundFlag_Node0_action N_SetSegment07FoundFlag_Node0_action --> E_SetSegment07FoundFlag S_SetSegment07FoundFlag --> N_SetSegment07FoundFlag_Node0 N_SetSegment07FoundFlag_Node0 -- No --> E_SetSegment07FoundFlag
data contains spaces or low-values"}:::decision N_SetSegment07FoundFlag_Node0_action["If segment 07 data is spaces or
low-values, set segment 07 not found
flag, otherwise set segment 07 found
flag"]:::main N_SetSegment07FoundFlag_Node0 -- Yes --> N_SetSegment07FoundFlag_Node0_action N_SetSegment07FoundFlag_Node0_action --> E_SetSegment07FoundFlag S_SetSegment07FoundFlag --> N_SetSegment07FoundFlag_Node0 N_SetSegment07FoundFlag_Node0 -- No --> E_SetSegment07FoundFlag
File: GCX003.cbl
GIVEN:
Segment 07 data has been retrieved from the cargo system
WHEN:
The system checks if segment 07 data contains spaces or low-values
THEN:
If segment 07 data is spaces or low-values, set segment 07 not found flag, otherwise set segment 07 found flag
β Consolidated Acceptance Criteria
- The system checks if segment 08 data contains spaces or low-values → if segment 08 data is spaces or low-values, set segment 08 not found flag indicating no hazmat, otherwise set segment 08 found flag indicating hazmat present
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSegment08FoundFlagHazmatIndicator(["Start Step"])
E_SetSegment08FoundFlagHazmatIndicator(["End Step"])
N_SetSegment08FoundFlagHazmatIndicator_Node0{"The system checks if segment 08
data contains spaces or low-values"}:::decision N_SetSegment08FoundFlagHazmatIndicator_Node0_action["If segment 08 data is spaces or
low-values, set segment 08 not found
flag indicating no hazmat, otherwise
set segment 08 found flag indicating
hazmat present"]:::main N_SetSegment08FoundFlagHazmatIndicator_Node0 -- Yes --> N_SetSegment08FoundFlagHazmatIndicator_Node0_action N_SetSegment08FoundFlagHazmatIndicator_Node0_action --> E_SetSegment08FoundFlagHazmatIndicator S_SetSegment08FoundFlagHazmatIndicator --> N_SetSegment08FoundFlagHazmatIndicator_Node0 N_SetSegment08FoundFlagHazmatIndicator_Node0 -- No --> E_SetSegment08FoundFlagHazmatIndicator
data contains spaces or low-values"}:::decision N_SetSegment08FoundFlagHazmatIndicator_Node0_action["If segment 08 data is spaces or
low-values, set segment 08 not found
flag indicating no hazmat, otherwise
set segment 08 found flag indicating
hazmat present"]:::main N_SetSegment08FoundFlagHazmatIndicator_Node0 -- Yes --> N_SetSegment08FoundFlagHazmatIndicator_Node0_action N_SetSegment08FoundFlagHazmatIndicator_Node0_action --> E_SetSegment08FoundFlagHazmatIndicator S_SetSegment08FoundFlagHazmatIndicator --> N_SetSegment08FoundFlagHazmatIndicator_Node0 N_SetSegment08FoundFlagHazmatIndicator_Node0 -- No --> E_SetSegment08FoundFlagHazmatIndicator
File: GCX003.cbl
GIVEN:
Segment 08 data has been retrieved from the cargo system
WHEN:
The system checks if segment 08 data contains spaces or low-values
THEN:
If segment 08 data is spaces or low-values, set segment 08 not found flag indicating no hazmat, otherwise set segment 08 found flag indicating hazmat present
β Consolidated Acceptance Criteria
- The system processes segment 07 entries sequentially from 1 to maximum sequence number → for each entry that is not spaces or low-values, extract commodity description, create report line, add to equipment count if first entry, and continue until all entries processed or report maximum reached
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LoopThroughAllSegment07Entries(["Start Step"])
E_LoopThroughAllSegment07Entries(["End Step"])
N_LoopThroughAllSegment07Entries_Node0{"The system processes segment 07
entries sequentially from 1 to
maximum sequence number"}:::decision N_LoopThroughAllSegment07Entries_Node0_action["For each entry that is not spaces
or low-values, extract commodity
description, create report line, add
to equipment count if first entry,
and continue until all entries
processed or report maximum reached"]:::main N_LoopThroughAllSegment07Entries_Node0 -- Yes --> N_LoopThroughAllSegment07Entries_Node0_action N_LoopThroughAllSegment07Entries_Node0_action --> E_LoopThroughAllSegment07Entries S_LoopThroughAllSegment07Entries --> N_LoopThroughAllSegment07Entries_Node0 N_LoopThroughAllSegment07Entries_Node0 -- No --> E_LoopThroughAllSegment07Entries
entries sequentially from 1 to
maximum sequence number"}:::decision N_LoopThroughAllSegment07Entries_Node0_action["For each entry that is not spaces
or low-values, extract commodity
description, create report line, add
to equipment count if first entry,
and continue until all entries
processed or report maximum reached"]:::main N_LoopThroughAllSegment07Entries_Node0 -- Yes --> N_LoopThroughAllSegment07Entries_Node0_action N_LoopThroughAllSegment07Entries_Node0_action --> E_LoopThroughAllSegment07Entries S_LoopThroughAllSegment07Entries --> N_LoopThroughAllSegment07Entries_Node0 N_LoopThroughAllSegment07Entries_Node0 -- No --> E_LoopThroughAllSegment07Entries
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Segment 07 data contains multiple commodity description entries and cargo creation conditions are not met
WHEN:
The system processes segment 07 entries sequentially from 1 to maximum sequence number
THEN:
For each entry that is not spaces or low-values, extract commodity description, create report line, add to equipment count if first entry, and continue until all entries processed or report maximum reached
β Consolidated Acceptance Criteria
- The system processes the segment 07 entry for report generation → the system moves the segment 07 data to working storage, extracts the commodity description field, and formats it for report display
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractCommodityDescriptionfromEachEntry(["Start Step"])
E_ExtractCommodityDescriptionfromEachEntry(["End Step"])
N_ExtractCommodityDescriptionfromEachEntry_Node0{"The system processes the segment 07
entry for report generation"}:::decision N_ExtractCommodityDescriptionfromEachEntry_Node0_action["The system moves the segment 07
data to working storage, extracts
the commodity description field, and
formats it for report display"]:::main N_ExtractCommodityDescriptionfromEachEntry_Node0 -- Yes --> N_ExtractCommodityDescriptionfromEachEntry_Node0_action N_ExtractCommodityDescriptionfromEachEntry_Node0_action --> E_ExtractCommodityDescriptionfromEachEntry S_ExtractCommodityDescriptionfromEachEntry --> N_ExtractCommodityDescriptionfromEachEntry_Node0 N_ExtractCommodityDescriptionfromEachEntry_Node0 -- No --> E_ExtractCommodityDescriptionfromEachEntry
entry for report generation"}:::decision N_ExtractCommodityDescriptionfromEachEntry_Node0_action["The system moves the segment 07
data to working storage, extracts
the commodity description field, and
formats it for report display"]:::main N_ExtractCommodityDescriptionfromEachEntry_Node0 -- Yes --> N_ExtractCommodityDescriptionfromEachEntry_Node0_action N_ExtractCommodityDescriptionfromEachEntry_Node0_action --> E_ExtractCommodityDescriptionfromEachEntry S_ExtractCommodityDescriptionfromEachEntry --> N_ExtractCommodityDescriptionfromEachEntry_Node0 N_ExtractCommodityDescriptionfromEachEntry_Node0 -- No --> E_ExtractCommodityDescriptionfromEachEntry
File: GCX003.cbl
GIVEN:
A valid segment 07 entry contains commodity description data
WHEN:
The system processes the segment 07 entry for report generation
THEN:
The system moves the segment 07 data to working storage, extracts the commodity description field, and formats it for report display
β Consolidated Acceptance Criteria
- The system retrieves station table data using commodity code ID and 'ST' qualifier → if station table data is found successfully, move data to station segment working storage, otherwise set station segment to spaces
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveStationTableInformation(["Start Step"])
E_RetrieveStationTableInformation(["End Step"])
N_RetrieveStationTableInformation_Node0{"The system retrieves station table
data using commodity code ID and ST
qualifier"}:::decision N_RetrieveStationTableInformation_Node0_action["If station table data is found
successfully, move data to station
segment working storage, otherwise
set station segment to spaces"]:::main N_RetrieveStationTableInformation_Node0 -- Yes --> N_RetrieveStationTableInformation_Node0_action N_RetrieveStationTableInformation_Node0_action --> E_RetrieveStationTableInformation S_RetrieveStationTableInformation --> N_RetrieveStationTableInformation_Node0 N_RetrieveStationTableInformation_Node0 -- No --> E_RetrieveStationTableInformation
data using commodity code ID and ST
qualifier"}:::decision N_RetrieveStationTableInformation_Node0_action["If station table data is found
successfully, move data to station
segment working storage, otherwise
set station segment to spaces"]:::main N_RetrieveStationTableInformation_Node0 -- Yes --> N_RetrieveStationTableInformation_Node0_action N_RetrieveStationTableInformation_Node0_action --> E_RetrieveStationTableInformation S_RetrieveStationTableInformation --> N_RetrieveStationTableInformation_Node0 N_RetrieveStationTableInformation_Node0 -- No --> E_RetrieveStationTableInformation
File: GCX003.cbl
GIVEN:
Segment 07 processing is complete and station table lookup is required
WHEN:
The system retrieves station table data using commodity code ID and 'ST' qualifier
THEN:
If station table data is found successfully, move data to station segment working storage, otherwise set station segment to spaces
β Consolidated Acceptance Criteria
- The system processes station type entries from 1 to 3 and finds type code 'SFE' with country 'US' or spaces → if report info is not spaces, add current report line to output and increment report index, then move station type description to report info and set segment indicator to N
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckforSpecialFreightEquipmentType(["Start Step"])
E_CheckforSpecialFreightEquipmentType(["End Step"])
N_CheckforSpecialFreightEquipmentType_Node0{"The system processes station type
entries from 1 to 3 and finds type
code SFE with country US or spaces"}:::decision N_CheckforSpecialFreightEquipmentType_Node0_action["If report info is not spaces, add
current report line to output and
increment report index, then move
station type description to report
info and set segment indicator to N"]:::main N_CheckforSpecialFreightEquipmentType_Node0 -- Yes --> N_CheckforSpecialFreightEquipmentType_Node0_action N_CheckforSpecialFreightEquipmentType_Node0_action --> E_CheckforSpecialFreightEquipmentType S_CheckforSpecialFreightEquipmentType --> N_CheckforSpecialFreightEquipmentType_Node0 N_CheckforSpecialFreightEquipmentType_Node0 -- No --> E_CheckforSpecialFreightEquipmentType
entries from 1 to 3 and finds type
code SFE with country US or spaces"}:::decision N_CheckforSpecialFreightEquipmentType_Node0_action["If report info is not spaces, add
current report line to output and
increment report index, then move
station type description to report
info and set segment indicator to N"]:::main N_CheckforSpecialFreightEquipmentType_Node0 -- Yes --> N_CheckforSpecialFreightEquipmentType_Node0_action N_CheckforSpecialFreightEquipmentType_Node0_action --> E_CheckforSpecialFreightEquipmentType S_CheckforSpecialFreightEquipmentType --> N_CheckforSpecialFreightEquipmentType_Node0 N_CheckforSpecialFreightEquipmentType_Node0 -- No --> E_CheckforSpecialFreightEquipmentType
File: GCX003.cbl
GIVEN:
Station table data is available with type code entries
WHEN:
- The system processes station type entries from 1 to 3
- Finds type code 'sfe' with country 'us' or spaces
THEN:
- If report info is not spaces, add current report line to output
- Increment report index, then move station type description to report info
- Set segment indicator to n
β Consolidated Acceptance Criteria
- The car type code equals 'SK' → the equipment is classified as double stack container and double stack counting process is initiated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsEquipmentTypeSKDoubleStack(["Start Step"])
E_IsEquipmentTypeSKDoubleStack(["End Step"])
N_IsEquipmentTypeSKDoubleStack_Node0{"The car type code equals SK"}:::decision
N_IsEquipmentTypeSKDoubleStack_Node0_action["The equipment is classified as
double stack container and double
stack counting process is initiated"]:::main N_IsEquipmentTypeSKDoubleStack_Node0 -- Yes --> N_IsEquipmentTypeSKDoubleStack_Node0_action N_IsEquipmentTypeSKDoubleStack_Node0_action --> E_IsEquipmentTypeSKDoubleStack S_IsEquipmentTypeSKDoubleStack --> N_IsEquipmentTypeSKDoubleStack_Node0 N_IsEquipmentTypeSKDoubleStack_Node0 -- No --> E_IsEquipmentTypeSKDoubleStack
double stack container and double
stack counting process is initiated"]:::main N_IsEquipmentTypeSKDoubleStack_Node0 -- Yes --> N_IsEquipmentTypeSKDoubleStack_Node0_action N_IsEquipmentTypeSKDoubleStack_Node0_action --> E_IsEquipmentTypeSKDoubleStack S_IsEquipmentTypeSKDoubleStack --> N_IsEquipmentTypeSKDoubleStack_Node0 N_IsEquipmentTypeSKDoubleStack_Node0 -- No --> E_IsEquipmentTypeSKDoubleStack
File: GCX003.cbl
GIVEN:
Equipment processing has retrieved car type code from equipment validation
WHEN:
The car type code equals 'SK'
THEN:
- The equipment is classified as double stack container
- Double stack counting process is initiated
β Consolidated Acceptance Criteria
- GCCDBL module indicates CPRS double stack traffic → the container count is added to the CPRS double stack counter in train header
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddCounttoCPRSTrafficCounter(["Start Step"])
E_AddCounttoCPRSTrafficCounter(["End Step"])
N_AddCounttoCPRSTrafficCounter_Node0{"GCCDBL module indicates CPRS double
stack traffic"}:::decision N_AddCounttoCPRSTrafficCounter_Node0_action["The container count is added to the
CPRS double stack counter in train
header"]:::main N_AddCounttoCPRSTrafficCounter_Node0 -- Yes --> N_AddCounttoCPRSTrafficCounter_Node0_action N_AddCounttoCPRSTrafficCounter_Node0_action --> E_AddCounttoCPRSTrafficCounter S_AddCounttoCPRSTrafficCounter --> N_AddCounttoCPRSTrafficCounter_Node0 N_AddCounttoCPRSTrafficCounter_Node0 -- No --> E_AddCounttoCPRSTrafficCounter
stack traffic"}:::decision N_AddCounttoCPRSTrafficCounter_Node0_action["The container count is added to the
CPRS double stack counter in train
header"]:::main N_AddCounttoCPRSTrafficCounter_Node0 -- Yes --> N_AddCounttoCPRSTrafficCounter_Node0_action N_AddCounttoCPRSTrafficCounter_Node0_action --> E_AddCounttoCPRSTrafficCounter S_AddCounttoCPRSTrafficCounter --> N_AddCounttoCPRSTrafficCounter_Node0 N_AddCounttoCPRSTrafficCounter_Node0 -- No --> E_AddCounttoCPRSTrafficCounter
File: GCX003.cbl
GIVEN:
Double stack container count is retrieved and traffic type is determined as CPRS
WHEN:
GCCDBL module indicates CPRS double stack traffic
THEN:
The container count is added to the CPRS double stack counter in train header
β Consolidated Acceptance Criteria
- GCCDBL module indicates CSXT double stack traffic → the container count is added to the CSXT double stack counter in train header
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddCounttoCSXTTrafficCounter(["Start Step"])
E_AddCounttoCSXTTrafficCounter(["End Step"])
N_AddCounttoCSXTTrafficCounter_Node0{"GCCDBL module indicates CSXT double
stack traffic"}:::decision N_AddCounttoCSXTTrafficCounter_Node0_action["The container count is added to the
CSXT double stack counter in train
header"]:::main N_AddCounttoCSXTTrafficCounter_Node0 -- Yes --> N_AddCounttoCSXTTrafficCounter_Node0_action N_AddCounttoCSXTTrafficCounter_Node0_action --> E_AddCounttoCSXTTrafficCounter S_AddCounttoCSXTTrafficCounter --> N_AddCounttoCSXTTrafficCounter_Node0 N_AddCounttoCSXTTrafficCounter_Node0 -- No --> E_AddCounttoCSXTTrafficCounter
stack traffic"}:::decision N_AddCounttoCSXTTrafficCounter_Node0_action["The container count is added to the
CSXT double stack counter in train
header"]:::main N_AddCounttoCSXTTrafficCounter_Node0 -- Yes --> N_AddCounttoCSXTTrafficCounter_Node0_action N_AddCounttoCSXTTrafficCounter_Node0_action --> E_AddCounttoCSXTTrafficCounter S_AddCounttoCSXTTrafficCounter --> N_AddCounttoCSXTTrafficCounter_Node0 N_AddCounttoCSXTTrafficCounter_Node0 -- No --> E_AddCounttoCSXTTrafficCounter
File: GCX003.cbl
GIVEN:
Double stack container count is retrieved and traffic type is determined as CSXT
WHEN:
GCCDBL module indicates CSXT double stack traffic
THEN:
The container count is added to the CSXT double stack counter in train header
β Consolidated Acceptance Criteria
- GCCDBL module indicates NS double stack traffic → the container count is added to the NS double stack counter in train header
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddCounttoNSTrafficCounter(["Start Step"])
E_AddCounttoNSTrafficCounter(["End Step"])
N_AddCounttoNSTrafficCounter_Node0{"GCCDBL module indicates NS double
stack traffic"}:::decision N_AddCounttoNSTrafficCounter_Node0_action["The container count is added to the
NS double stack counter in train
header"]:::main N_AddCounttoNSTrafficCounter_Node0 -- Yes --> N_AddCounttoNSTrafficCounter_Node0_action N_AddCounttoNSTrafficCounter_Node0_action --> E_AddCounttoNSTrafficCounter S_AddCounttoNSTrafficCounter --> N_AddCounttoNSTrafficCounter_Node0 N_AddCounttoNSTrafficCounter_Node0 -- No --> E_AddCounttoNSTrafficCounter
stack traffic"}:::decision N_AddCounttoNSTrafficCounter_Node0_action["The container count is added to the
NS double stack counter in train
header"]:::main N_AddCounttoNSTrafficCounter_Node0 -- Yes --> N_AddCounttoNSTrafficCounter_Node0_action N_AddCounttoNSTrafficCounter_Node0_action --> E_AddCounttoNSTrafficCounter S_AddCounttoNSTrafficCounter --> N_AddCounttoNSTrafficCounter_Node0 N_AddCounttoNSTrafficCounter_Node0 -- No --> E_AddCounttoNSTrafficCounter
File: GCX003.cbl
GIVEN:
Double stack container count is retrieved and traffic type is determined as NS
WHEN:
GCCDBL module indicates NS double stack traffic
THEN:
The container count is added to the NS double stack counter in train header
β Consolidated Acceptance Criteria
- GCCDBL module indicates HAUL double stack traffic → the container count is added to the HAUL traffic counter in train header
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AddCounttoHAULTrafficCounter(["Start Step"])
E_AddCounttoHAULTrafficCounter(["End Step"])
N_AddCounttoHAULTrafficCounter_Node0{"GCCDBL module indicates HAUL double
stack traffic"}:::decision N_AddCounttoHAULTrafficCounter_Node0_action["The container count is added to the
HAUL traffic counter in train header"]:::main N_AddCounttoHAULTrafficCounter_Node0 -- Yes --> N_AddCounttoHAULTrafficCounter_Node0_action N_AddCounttoHAULTrafficCounter_Node0_action --> E_AddCounttoHAULTrafficCounter S_AddCounttoHAULTrafficCounter --> N_AddCounttoHAULTrafficCounter_Node0 N_AddCounttoHAULTrafficCounter_Node0 -- No --> E_AddCounttoHAULTrafficCounter
stack traffic"}:::decision N_AddCounttoHAULTrafficCounter_Node0_action["The container count is added to the
HAUL traffic counter in train header"]:::main N_AddCounttoHAULTrafficCounter_Node0 -- Yes --> N_AddCounttoHAULTrafficCounter_Node0_action N_AddCounttoHAULTrafficCounter_Node0_action --> E_AddCounttoHAULTrafficCounter S_AddCounttoHAULTrafficCounter --> N_AddCounttoHAULTrafficCounter_Node0 N_AddCounttoHAULTrafficCounter_Node0 -- No --> E_AddCounttoHAULTrafficCounter
File: GCX003.cbl
GIVEN:
Double stack container count is retrieved and traffic type is determined as HAUL
WHEN:
GCCDBL module indicates HAUL double stack traffic
THEN:
The container count is added to the HAUL traffic counter in train header
β Consolidated Acceptance Criteria
- Counter initialization is performed for CPRS, CSXT, NS, or HAUL traffic types → each counter is set to zero before accumulating double stack container counts
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreCountsinTrainHeaderRecord(["Start Step"])
E_StoreCountsinTrainHeaderRecord(["End Step"])
N_StoreCountsinTrainHeaderRecord_Node0{"Counter initialization is performed
for CPRS, CSXT, NS, or HAUL traffic
types"}:::decision N_StoreCountsinTrainHeaderRecord_Node0_action["Each counter is set to zero before
accumulating double stack container
counts"]:::main N_StoreCountsinTrainHeaderRecord_Node0 -- Yes --> N_StoreCountsinTrainHeaderRecord_Node0_action N_StoreCountsinTrainHeaderRecord_Node0_action --> E_StoreCountsinTrainHeaderRecord S_StoreCountsinTrainHeaderRecord --> N_StoreCountsinTrainHeaderRecord_Node0 N_StoreCountsinTrainHeaderRecord_Node0 -- No --> E_StoreCountsinTrainHeaderRecord
for CPRS, CSXT, NS, or HAUL traffic
types"}:::decision N_StoreCountsinTrainHeaderRecord_Node0_action["Each counter is set to zero before
accumulating double stack container
counts"]:::main N_StoreCountsinTrainHeaderRecord_Node0 -- Yes --> N_StoreCountsinTrainHeaderRecord_Node0_action N_StoreCountsinTrainHeaderRecord_Node0_action --> E_StoreCountsinTrainHeaderRecord S_StoreCountsinTrainHeaderRecord --> N_StoreCountsinTrainHeaderRecord_Node0 N_StoreCountsinTrainHeaderRecord_Node0 -- No --> E_StoreCountsinTrainHeaderRecord
File: GCX003.cbl
GIVEN:
Double stack counters in train header contain spaces or low values
WHEN:
Counter initialization is performed for CPRS, CSXT, NS, or HAUL traffic types
THEN:
Each counter is set to zero before accumulating double stack container counts
β Consolidated Acceptance Criteria
- The car type code is 'LO' or 'ET' → the equipment is classified as a locomotive and added to the locomotive count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentTypeLocomotive(["Start Step"])
E_EquipmentTypeLocomotive(["End Step"])
N_EquipmentTypeLocomotive_Node0{"The car type code is LO or ET"}:::decision
N_EquipmentTypeLocomotive_Node0_action["The equipment is classified as a
locomotive and added to the
locomotive count"]:::main N_EquipmentTypeLocomotive_Node0 -- Yes --> N_EquipmentTypeLocomotive_Node0_action N_EquipmentTypeLocomotive_Node0_action --> E_EquipmentTypeLocomotive S_EquipmentTypeLocomotive --> N_EquipmentTypeLocomotive_Node0 N_EquipmentTypeLocomotive_Node0 -- No --> E_EquipmentTypeLocomotive
locomotive and added to the
locomotive count"]:::main N_EquipmentTypeLocomotive_Node0 -- Yes --> N_EquipmentTypeLocomotive_Node0_action N_EquipmentTypeLocomotive_Node0_action --> E_EquipmentTypeLocomotive S_EquipmentTypeLocomotive --> N_EquipmentTypeLocomotive_Node0 N_EquipmentTypeLocomotive_Node0 -- No --> E_EquipmentTypeLocomotive
File: GCX003.cbl
GIVEN:
An equipment item with a car type code
WHEN:
The car type code is 'LO' or 'ET'
THEN:
- The equipment is classified as a locomotive
- Added to the locomotive count
β Consolidated Acceptance Criteria
- The car type code is 'CN' → the equipment is classified as a container for load/empty status counting
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentTypeContainer(["Start Step"])
E_EquipmentTypeContainer(["End Step"])
N_EquipmentTypeContainer_Node0{"The car type code is CN"}:::decision
N_EquipmentTypeContainer_Node0_action["The equipment is classified as a
container for loadempty status
counting"]:::main N_EquipmentTypeContainer_Node0 -- Yes --> N_EquipmentTypeContainer_Node0_action N_EquipmentTypeContainer_Node0_action --> E_EquipmentTypeContainer S_EquipmentTypeContainer --> N_EquipmentTypeContainer_Node0 N_EquipmentTypeContainer_Node0 -- No --> E_EquipmentTypeContainer
container for loadempty status
counting"]:::main N_EquipmentTypeContainer_Node0 -- Yes --> N_EquipmentTypeContainer_Node0_action N_EquipmentTypeContainer_Node0_action --> E_EquipmentTypeContainer S_EquipmentTypeContainer --> N_EquipmentTypeContainer_Node0 N_EquipmentTypeContainer_Node0 -- No --> E_EquipmentTypeContainer
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
An equipment item with a car type code that is not a locomotive
WHEN:
The car type code is 'CN'
THEN:
The equipment is classified as a container for load/empty status counting
β Consolidated Acceptance Criteria
- The equipment type is locomotive (LO or ET) → add 1 to the total locomotives counter
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Add1toTotalLocomotivesCount(["Start Step"])
E_Add1toTotalLocomotivesCount(["End Step"])
N_Add1toTotalLocomotivesCount_Node0{"The equipment type is locomotive LO
or ET"}:::decision N_Add1toTotalLocomotivesCount_Node0_action["Add 1 to the total locomotives
counter"]:::main N_Add1toTotalLocomotivesCount_Node0 -- Yes --> N_Add1toTotalLocomotivesCount_Node0_action N_Add1toTotalLocomotivesCount_Node0_action --> E_Add1toTotalLocomotivesCount S_Add1toTotalLocomotivesCount --> N_Add1toTotalLocomotivesCount_Node0 N_Add1toTotalLocomotivesCount_Node0 -- No --> E_Add1toTotalLocomotivesCount
or ET"}:::decision N_Add1toTotalLocomotivesCount_Node0_action["Add 1 to the total locomotives
counter"]:::main N_Add1toTotalLocomotivesCount_Node0 -- Yes --> N_Add1toTotalLocomotivesCount_Node0_action N_Add1toTotalLocomotivesCount_Node0_action --> E_Add1toTotalLocomotivesCount S_Add1toTotalLocomotivesCount --> N_Add1toTotalLocomotivesCount_Node0 N_Add1toTotalLocomotivesCount_Node0 -- No --> E_Add1toTotalLocomotivesCount
File: GCX003.cbl
GIVEN:
An equipment item classified as a locomotive
WHEN:
The equipment type is locomotive (LO or ET)
THEN:
Add 1 to the total locomotives counter
β Consolidated Acceptance Criteria
- The load/empty indicator is evaluated → route to loaded container count if indicator is 'L', otherwise route to empty container count
- The load/empty indicator is evaluated → route to loaded car count if indicator is 'L', otherwise route to empty car count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LoadEmptyIndicatorLoaded(["Start Step"])
E_LoadEmptyIndicatorLoaded(["End Step"])
N_LoadEmptyIndicatorLoaded_Node0{"The loadempty indicator is
evaluated"}:::decision N_LoadEmptyIndicatorLoaded_Node0_action["Route to loaded container count if
indicator is L , otherwise route to
empty container count"]:::main N_LoadEmptyIndicatorLoaded_Node0 -- Yes --> N_LoadEmptyIndicatorLoaded_Node0_action N_LoadEmptyIndicatorLoaded_Node0_action --> E_LoadEmptyIndicatorLoaded S_LoadEmptyIndicatorLoaded --> N_LoadEmptyIndicatorLoaded_Node0 N_LoadEmptyIndicatorLoaded_Node1{"The loadempty indicator is
evaluated"}:::decision N_LoadEmptyIndicatorLoaded_Node1_action["Route to loaded car count if
indicator is L , otherwise route to
empty car count"]:::main N_LoadEmptyIndicatorLoaded_Node1 -- Yes --> N_LoadEmptyIndicatorLoaded_Node1_action N_LoadEmptyIndicatorLoaded_Node1_action --> E_LoadEmptyIndicatorLoaded N_LoadEmptyIndicatorLoaded_Node0 -- No --> N_LoadEmptyIndicatorLoaded_Node1 N_LoadEmptyIndicatorLoaded_Node1 -- No --> E_LoadEmptyIndicatorLoaded
evaluated"}:::decision N_LoadEmptyIndicatorLoaded_Node0_action["Route to loaded container count if
indicator is L , otherwise route to
empty container count"]:::main N_LoadEmptyIndicatorLoaded_Node0 -- Yes --> N_LoadEmptyIndicatorLoaded_Node0_action N_LoadEmptyIndicatorLoaded_Node0_action --> E_LoadEmptyIndicatorLoaded S_LoadEmptyIndicatorLoaded --> N_LoadEmptyIndicatorLoaded_Node0 N_LoadEmptyIndicatorLoaded_Node1{"The loadempty indicator is
evaluated"}:::decision N_LoadEmptyIndicatorLoaded_Node1_action["Route to loaded car count if
indicator is L , otherwise route to
empty car count"]:::main N_LoadEmptyIndicatorLoaded_Node1 -- Yes --> N_LoadEmptyIndicatorLoaded_Node1_action N_LoadEmptyIndicatorLoaded_Node1_action --> E_LoadEmptyIndicatorLoaded N_LoadEmptyIndicatorLoaded_Node0 -- No --> N_LoadEmptyIndicatorLoaded_Node1 N_LoadEmptyIndicatorLoaded_Node1 -- No --> E_LoadEmptyIndicatorLoaded
File: GCX003.cbl
GIVEN:
An equipment item classified as a container
WHEN:
The load/empty indicator is evaluated
THEN:
Route to loaded container count if indicator is 'L', otherwise route to empty container count
File: GCX003.cbl
GIVEN:
An equipment item classified as a regular car (not locomotive or container)
WHEN:
The load/empty indicator is evaluated
THEN:
Route to loaded car count if indicator is 'L', otherwise route to empty car count
β Consolidated Acceptance Criteria
- The load/empty indicator is 'L' (loaded) → add 1 to the total loaded containers counter
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Add1toTotalLoadedContainers(["Start Step"])
E_Add1toTotalLoadedContainers(["End Step"])
N_Add1toTotalLoadedContainers_Node0{"The loadempty indicator is L loaded"}:::decision
N_Add1toTotalLoadedContainers_Node0_action["Add 1 to the total loaded
containers counter"]:::main N_Add1toTotalLoadedContainers_Node0 -- Yes --> N_Add1toTotalLoadedContainers_Node0_action N_Add1toTotalLoadedContainers_Node0_action --> E_Add1toTotalLoadedContainers S_Add1toTotalLoadedContainers --> N_Add1toTotalLoadedContainers_Node0 N_Add1toTotalLoadedContainers_Node0 -- No --> E_Add1toTotalLoadedContainers
containers counter"]:::main N_Add1toTotalLoadedContainers_Node0 -- Yes --> N_Add1toTotalLoadedContainers_Node0_action N_Add1toTotalLoadedContainers_Node0_action --> E_Add1toTotalLoadedContainers S_Add1toTotalLoadedContainers --> N_Add1toTotalLoadedContainers_Node0 N_Add1toTotalLoadedContainers_Node0 -- No --> E_Add1toTotalLoadedContainers
File: GCX003.cbl
GIVEN:
A container equipment with load/empty indicator
WHEN:
The load/empty indicator is 'L' (loaded)
THEN:
Add 1 to the total loaded containers counter
β Consolidated Acceptance Criteria
- The load/empty indicator is 'E' (empty) → add 1 to the total empty containers counter
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Add1toTotalEmptyContainers(["Start Step"])
E_Add1toTotalEmptyContainers(["End Step"])
N_Add1toTotalEmptyContainers_Node0{"The loadempty indicator is E empty"}:::decision
N_Add1toTotalEmptyContainers_Node0_action["Add 1 to the total empty containers
counter"]:::main N_Add1toTotalEmptyContainers_Node0 -- Yes --> N_Add1toTotalEmptyContainers_Node0_action N_Add1toTotalEmptyContainers_Node0_action --> E_Add1toTotalEmptyContainers S_Add1toTotalEmptyContainers --> N_Add1toTotalEmptyContainers_Node0 N_Add1toTotalEmptyContainers_Node0 -- No --> E_Add1toTotalEmptyContainers
counter"]:::main N_Add1toTotalEmptyContainers_Node0 -- Yes --> N_Add1toTotalEmptyContainers_Node0_action N_Add1toTotalEmptyContainers_Node0_action --> E_Add1toTotalEmptyContainers S_Add1toTotalEmptyContainers --> N_Add1toTotalEmptyContainers_Node0 N_Add1toTotalEmptyContainers_Node0 -- No --> E_Add1toTotalEmptyContainers
File: GCX003.cbl
GIVEN:
A container equipment with load/empty indicator
WHEN:
The load/empty indicator is 'E' (empty)
THEN:
Add 1 to the total empty containers counter
β Consolidated Acceptance Criteria
- The load/empty indicator is 'L' (loaded) → add 1 to the total loaded cars counter
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Add1toTotalLoadedCars(["Start Step"])
E_Add1toTotalLoadedCars(["End Step"])
N_Add1toTotalLoadedCars_Node0{"The loadempty indicator is L loaded"}:::decision
N_Add1toTotalLoadedCars_Node0_action["Add 1 to the total loaded cars
counter"]:::main N_Add1toTotalLoadedCars_Node0 -- Yes --> N_Add1toTotalLoadedCars_Node0_action N_Add1toTotalLoadedCars_Node0_action --> E_Add1toTotalLoadedCars S_Add1toTotalLoadedCars --> N_Add1toTotalLoadedCars_Node0 N_Add1toTotalLoadedCars_Node0 -- No --> E_Add1toTotalLoadedCars
counter"]:::main N_Add1toTotalLoadedCars_Node0 -- Yes --> N_Add1toTotalLoadedCars_Node0_action N_Add1toTotalLoadedCars_Node0_action --> E_Add1toTotalLoadedCars S_Add1toTotalLoadedCars --> N_Add1toTotalLoadedCars_Node0 N_Add1toTotalLoadedCars_Node0 -- No --> E_Add1toTotalLoadedCars
File: GCX003.cbl
GIVEN:
A regular car equipment with load/empty indicator
WHEN:
The load/empty indicator is 'L' (loaded)
THEN:
Add 1 to the total loaded cars counter
β Consolidated Acceptance Criteria
- The load/empty indicator is 'E' (empty) → add 1 to the total empty cars counter
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Add1toTotalEmptyCars(["Start Step"])
E_Add1toTotalEmptyCars(["End Step"])
N_Add1toTotalEmptyCars_Node0{"The loadempty indicator is E empty"}:::decision
N_Add1toTotalEmptyCars_Node0_action["Add 1 to the total empty cars
counter"]:::main N_Add1toTotalEmptyCars_Node0 -- Yes --> N_Add1toTotalEmptyCars_Node0_action N_Add1toTotalEmptyCars_Node0_action --> E_Add1toTotalEmptyCars S_Add1toTotalEmptyCars --> N_Add1toTotalEmptyCars_Node0 N_Add1toTotalEmptyCars_Node0 -- No --> E_Add1toTotalEmptyCars
counter"]:::main N_Add1toTotalEmptyCars_Node0 -- Yes --> N_Add1toTotalEmptyCars_Node0_action N_Add1toTotalEmptyCars_Node0_action --> E_Add1toTotalEmptyCars S_Add1toTotalEmptyCars --> N_Add1toTotalEmptyCars_Node0 N_Add1toTotalEmptyCars_Node0 -- No --> E_Add1toTotalEmptyCars
File: GCX003.cbl
GIVEN:
A regular car equipment with load/empty indicator
WHEN:
The load/empty indicator is 'E' (empty)
THEN:
Add 1 to the total empty cars counter
β Consolidated Acceptance Criteria
- The equipment counting process is complete for the item → all equipment summary counters are updated to reflect the current totals
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateEquipmentSummaryCounters(["Start Step"])
E_UpdateEquipmentSummaryCounters(["End Step"])
N_UpdateEquipmentSummaryCounters_Node0{"The equipment counting process is
complete for the item"}:::decision N_UpdateEquipmentSummaryCounters_Node0_action["All equipment summary counters are
updated to reflect the current
totals"]:::main N_UpdateEquipmentSummaryCounters_Node0 -- Yes --> N_UpdateEquipmentSummaryCounters_Node0_action N_UpdateEquipmentSummaryCounters_Node0_action --> E_UpdateEquipmentSummaryCounters S_UpdateEquipmentSummaryCounters --> N_UpdateEquipmentSummaryCounters_Node0 N_UpdateEquipmentSummaryCounters_Node0 -- No --> E_UpdateEquipmentSummaryCounters
complete for the item"}:::decision N_UpdateEquipmentSummaryCounters_Node0_action["All equipment summary counters are
updated to reflect the current
totals"]:::main N_UpdateEquipmentSummaryCounters_Node0 -- Yes --> N_UpdateEquipmentSummaryCounters_Node0_action N_UpdateEquipmentSummaryCounters_Node0_action --> E_UpdateEquipmentSummaryCounters S_UpdateEquipmentSummaryCounters --> N_UpdateEquipmentSummaryCounters_Node0 N_UpdateEquipmentSummaryCounters_Node0 -- No --> E_UpdateEquipmentSummaryCounters
File: GCX003.cbl
GIVEN:
An equipment item has been classified and its specific counter incremented
WHEN:
The equipment counting process is complete for the item
THEN:
All equipment summary counters are updated to reflect the current totals
β Consolidated Acceptance Criteria
- The bond type code equals 'MT' → process as MT bond, validate marine terminal requirements, check vessel name compliance, and format as 'AMS 7512 MT [bond_number]' display
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BondTypeMT(["Start Step"])
E_BondTypeMT(["End Step"])
N_BondTypeMT_Node0{"The bond type code equals MT"}:::decision
N_BondTypeMT_Node0_action["Process as MT bond, validate marine
terminal requirements, check vessel
name compliance, and format as AMS
7512 MT bondnumber display"]:::main N_BondTypeMT_Node0 -- Yes --> N_BondTypeMT_Node0_action N_BondTypeMT_Node0_action --> E_BondTypeMT S_BondTypeMT --> N_BondTypeMT_Node0 N_BondTypeMT_Node0 -- No --> E_BondTypeMT
terminal requirements, check vessel
name compliance, and format as AMS
7512 MT bondnumber display"]:::main N_BondTypeMT_Node0 -- Yes --> N_BondTypeMT_Node0_action N_BondTypeMT_Node0_action --> E_BondTypeMT S_BondTypeMT --> N_BondTypeMT_Node0 N_BondTypeMT_Node0 -- No --> E_BondTypeMT
File: GCX003.cbl
GIVEN:
Cargo is found and bond type code is available
WHEN:
The bond type code equals 'MT'
THEN:
Process as MT bond, validate marine terminal requirements, check vessel name compliance, and format as 'AMS 7512 MT [bond_number]' display
β Consolidated Acceptance Criteria
- Entry number is not spaces → use entry number as bond number, otherwise if in-bond control number is not spaces, use in-bond control number as bond number, otherwise set bond number to spaces
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractBondNumber(["Start Step"])
E_ExtractBondNumber(["End Step"])
N_ExtractBondNumber_Node0{"Entry number is not spaces"}:::decision
N_ExtractBondNumber_Node0_action["Use entry number as bond number,
otherwise if in-bond control number
is not spaces, use in-bond control
number as bond number, otherwise set
bond number to spaces"]:::main N_ExtractBondNumber_Node0 -- Yes --> N_ExtractBondNumber_Node0_action N_ExtractBondNumber_Node0_action --> E_ExtractBondNumber S_ExtractBondNumber --> N_ExtractBondNumber_Node0 N_ExtractBondNumber_Node0 -- No --> E_ExtractBondNumber
otherwise if in-bond control number
is not spaces, use in-bond control
number as bond number, otherwise set
bond number to spaces"]:::main N_ExtractBondNumber_Node0 -- Yes --> N_ExtractBondNumber_Node0_action N_ExtractBondNumber_Node0_action --> E_ExtractBondNumber S_ExtractBondNumber --> N_ExtractBondNumber_Node0 N_ExtractBondNumber_Node0 -- No --> E_ExtractBondNumber
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A bond type requires bond number extraction
WHEN:
Entry number is not spaces
THEN:
Use entry number as bond number, otherwise if in-bond control number is not spaces, use in-bond control number as bond number, otherwise set bond number to spaces
β Consolidated Acceptance Criteria
- Special manifest original flag is not set → if action is SEND and user is not authorized for special manifest, generate error message 43, otherwise generate message 23 and set IT export spawn flag for special manifest creation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckSpecialManifestOriginal(["Start Step"])
E_CheckSpecialManifestOriginal(["End Step"])
N_CheckSpecialManifestOriginal_Node0{"Special manifest original flag is
not set"}:::decision N_CheckSpecialManifestOriginal_Node0_action["If action is SEND and user is not
authorized for special manifest,
generate error message 43, otherwise
generate message 23 and set IT
export spawn flag for special
manifest creation"]:::main N_CheckSpecialManifestOriginal_Node0 -- Yes --> N_CheckSpecialManifestOriginal_Node0_action N_CheckSpecialManifestOriginal_Node0_action --> E_CheckSpecialManifestOriginal S_CheckSpecialManifestOriginal --> N_CheckSpecialManifestOriginal_Node0 N_CheckSpecialManifestOriginal_Node0 -- No --> E_CheckSpecialManifestOriginal
not set"}:::decision N_CheckSpecialManifestOriginal_Node0_action["If action is SEND and user is not
authorized for special manifest,
generate error message 43, otherwise
generate message 23 and set IT
export spawn flag for special
manifest creation"]:::main N_CheckSpecialManifestOriginal_Node0 -- Yes --> N_CheckSpecialManifestOriginal_Node0_action N_CheckSpecialManifestOriginal_Node0_action --> E_CheckSpecialManifestOriginal S_CheckSpecialManifestOriginal --> N_CheckSpecialManifestOriginal_Node0 N_CheckSpecialManifestOriginal_Node0 -- No --> E_CheckSpecialManifestOriginal
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has IT bond type and is not already created for IT
WHEN:
Special manifest original flag is not set
THEN:
- If action is send
- User is not authorized for special manifest, generate error message 43, otherwise generate message 23
- Set it export spawn flag for special manifest creation
β Consolidated Acceptance Criteria
- Location ID1 does not match the station crossing port code → if action is REPORT, generate message 19 with station code, otherwise if action is SEND and user is not authorized for special manifest, generate error message 43, otherwise generate message 20 and set port change spawn flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckPortChangeConditions(["Start Step"])
E_CheckPortChangeConditions(["End Step"])
N_CheckPortChangeConditions_Node0{"Location ID1 does not match the
station crossing port code"}:::decision N_CheckPortChangeConditions_Node0_action["If action is REPORT, generate
message 19 with station code,
otherwise if action is SEND and user
is not authorized for special
manifest, generate error message 43,
otherwise generate message 20 and
set port change spawn flag"]:::main N_CheckPortChangeConditions_Node0 -- Yes --> N_CheckPortChangeConditions_Node0_action N_CheckPortChangeConditions_Node0_action --> E_CheckPortChangeConditions S_CheckPortChangeConditions --> N_CheckPortChangeConditions_Node0 N_CheckPortChangeConditions_Node0 -- No --> E_CheckPortChangeConditions
station crossing port code"}:::decision N_CheckPortChangeConditions_Node0_action["If action is REPORT, generate
message 19 with station code,
otherwise if action is SEND and user
is not authorized for special
manifest, generate error message 43,
otherwise generate message 20 and
set port change spawn flag"]:::main N_CheckPortChangeConditions_Node0 -- Yes --> N_CheckPortChangeConditions_Node0_action N_CheckPortChangeConditions_Node0_action --> E_CheckPortChangeConditions S_CheckPortChangeConditions --> N_CheckPortChangeConditions_Node0 N_CheckPortChangeConditions_Node0 -- No --> E_CheckPortChangeConditions
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has TE bond type and is not created for IT and cargo status is not export and cargo is billed as CPRS
WHEN:
Location ID1 does not match the station crossing port code
THEN:
- If action is report, generate message 19 with station code, otherwise if action is send
- User is not authorized for special manifest, generate error message 43, otherwise generate message 20
- Set port change spawn flag
β Consolidated Acceptance Criteria
- Cargo short description equals release status → if action is REPORT, generate message 18, otherwise if action is SEND and user is not authorized for special manifest, generate error message 43, otherwise generate message 23 and set detour spawn flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckReleaseStatus(["Start Step"])
E_CheckReleaseStatus(["End Step"])
N_CheckReleaseStatus_Node0{"Cargo short description equals
release status"}:::decision N_CheckReleaseStatus_Node0_action["If action is REPORT, generate
message 18, otherwise if action is
SEND and user is not authorized for
special manifest, generate error
message 43, otherwise generate
message 23 and set detour spawn flag"]:::main N_CheckReleaseStatus_Node0 -- Yes --> N_CheckReleaseStatus_Node0_action N_CheckReleaseStatus_Node0_action --> E_CheckReleaseStatus S_CheckReleaseStatus --> N_CheckReleaseStatus_Node0 N_CheckReleaseStatus_Node0 -- No --> E_CheckReleaseStatus
release status"}:::decision N_CheckReleaseStatus_Node0_action["If action is REPORT, generate
message 18, otherwise if action is
SEND and user is not authorized for
special manifest, generate error
message 43, otherwise generate
message 23 and set detour spawn flag"]:::main N_CheckReleaseStatus_Node0 -- Yes --> N_CheckReleaseStatus_Node0_action N_CheckReleaseStatus_Node0_action --> E_CheckReleaseStatus S_CheckReleaseStatus --> N_CheckReleaseStatus_Node0 N_CheckReleaseStatus_Node0 -- No --> E_CheckReleaseStatus
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has TR bond type and is not created for IT
WHEN:
Cargo short description equals release status
THEN:
- If action is report, generate message 18, otherwise if action is send
- User is not authorized for special manifest, generate error message 43, otherwise generate message 23
- Set detour spawn flag
β Consolidated Acceptance Criteria
- Vessel name is not 'TRAIN' and not spaces and station crossing port code equals cargo location ID → generate error message 25 for invalid vessel name and location combination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckVesselNameTRAIN(["Start Step"])
E_CheckVesselNameTRAIN(["End Step"])
N_CheckVesselNameTRAIN_Node0{"Vessel name is not TRAIN and not
spaces and station crossing port
code equals cargo location ID"}:::decision N_CheckVesselNameTRAIN_Node0_action["Generate error message 25 for
invalid vessel name and location
combination"]:::main N_CheckVesselNameTRAIN_Node0 -- Yes --> N_CheckVesselNameTRAIN_Node0_action N_CheckVesselNameTRAIN_Node0_action --> E_CheckVesselNameTRAIN S_CheckVesselNameTRAIN --> N_CheckVesselNameTRAIN_Node0 N_CheckVesselNameTRAIN_Node0 -- No --> E_CheckVesselNameTRAIN
spaces and station crossing port
code equals cargo location ID"}:::decision N_CheckVesselNameTRAIN_Node0_action["Generate error message 25 for
invalid vessel name and location
combination"]:::main N_CheckVesselNameTRAIN_Node0 -- Yes --> N_CheckVesselNameTRAIN_Node0_action N_CheckVesselNameTRAIN_Node0_action --> E_CheckVesselNameTRAIN S_CheckVesselNameTRAIN --> N_CheckVesselNameTRAIN_Node0 N_CheckVesselNameTRAIN_Node0 -- No --> E_CheckVesselNameTRAIN
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has MT bond type
WHEN:
- Vessel name is not 'train' and not spaces
- Station crossing port code equals cargo location id
THEN:
- Generate error message 25 for invalid vessel name
- Location combination
β Consolidated Acceptance Criteria
- Vessel name character at position 23 is 'T' → generate error message 17 for invalid TE vessel name format
- Vessel name is not 'TRAIN' → generate error message 17 for invalid vessel name
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckVesselName(["Start Step"])
E_CheckVesselName(["End Step"])
N_CheckVesselName_Node0{"Vessel name character at position
23 is T"}:::decision N_CheckVesselName_Node0_action["Generate error message 17 for
invalid TE vessel name format"]:::main N_CheckVesselName_Node0 -- Yes --> N_CheckVesselName_Node0_action N_CheckVesselName_Node0_action --> E_CheckVesselName S_CheckVesselName --> N_CheckVesselName_Node0 N_CheckVesselName_Node1{"Vessel name is not TRAIN"}:::decision N_CheckVesselName_Node1_action["Generate error message 17 for
invalid vessel name"]:::main N_CheckVesselName_Node1 -- Yes --> N_CheckVesselName_Node1_action N_CheckVesselName_Node1_action --> E_CheckVesselName N_CheckVesselName_Node0 -- No --> N_CheckVesselName_Node1 N_CheckVesselName_Node1 -- No --> E_CheckVesselName
23 is T"}:::decision N_CheckVesselName_Node0_action["Generate error message 17 for
invalid TE vessel name format"]:::main N_CheckVesselName_Node0 -- Yes --> N_CheckVesselName_Node0_action N_CheckVesselName_Node0_action --> E_CheckVesselName S_CheckVesselName --> N_CheckVesselName_Node0 N_CheckVesselName_Node1{"Vessel name is not TRAIN"}:::decision N_CheckVesselName_Node1_action["Generate error message 17 for
invalid vessel name"]:::main N_CheckVesselName_Node1 -- Yes --> N_CheckVesselName_Node1_action N_CheckVesselName_Node1_action --> E_CheckVesselName N_CheckVesselName_Node0 -- No --> N_CheckVesselName_Node1 N_CheckVesselName_Node1 -- No --> E_CheckVesselName
File: GCX003.cbl
GIVEN:
Cargo has TE bond type
WHEN:
Vessel name character at position 23 is 'T'
THEN:
Generate error message 17 for invalid TE vessel name format
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo bond type is not TE and not MT
WHEN:
Vessel name is not 'TRAIN'
THEN:
Generate error message 17 for invalid vessel name
β Consolidated Acceptance Criteria
- Bond type code is spaces or cargo is empty equipment or export type → skip bond number processing and continue with default cargo information display
- BOL type code equals '15' → format display as 'PPR 7512 15 US-CA-US' for the cargo information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DefaultBondProcessing(["Start Step"])
E_DefaultBondProcessing(["End Step"])
N_DefaultBondProcessing_Node0{"Bond type code is spaces or cargo
is empty equipment or export type"}:::decision N_DefaultBondProcessing_Node0_action["Skip bond number processing and
continue with default cargo
information display"]:::main N_DefaultBondProcessing_Node0 -- Yes --> N_DefaultBondProcessing_Node0_action N_DefaultBondProcessing_Node0_action --> E_DefaultBondProcessing S_DefaultBondProcessing --> N_DefaultBondProcessing_Node0 N_DefaultBondProcessing_Node1{"BOL type code equals 15"}:::decision N_DefaultBondProcessing_Node1_action["Format display as PPR 7512 15
US-CA-US for the cargo information"]:::main N_DefaultBondProcessing_Node1 -- Yes --> N_DefaultBondProcessing_Node1_action N_DefaultBondProcessing_Node1_action --> E_DefaultBondProcessing N_DefaultBondProcessing_Node0 -- No --> N_DefaultBondProcessing_Node1 N_DefaultBondProcessing_Node1 -- No --> E_DefaultBondProcessing
is empty equipment or export type"}:::decision N_DefaultBondProcessing_Node0_action["Skip bond number processing and
continue with default cargo
information display"]:::main N_DefaultBondProcessing_Node0 -- Yes --> N_DefaultBondProcessing_Node0_action N_DefaultBondProcessing_Node0_action --> E_DefaultBondProcessing S_DefaultBondProcessing --> N_DefaultBondProcessing_Node0 N_DefaultBondProcessing_Node1{"BOL type code equals 15"}:::decision N_DefaultBondProcessing_Node1_action["Format display as PPR 7512 15
US-CA-US for the cargo information"]:::main N_DefaultBondProcessing_Node1 -- Yes --> N_DefaultBondProcessing_Node1_action N_DefaultBondProcessing_Node1_action --> E_DefaultBondProcessing N_DefaultBondProcessing_Node0 -- No --> N_DefaultBondProcessing_Node1 N_DefaultBondProcessing_Node1 -- No --> E_DefaultBondProcessing
File: GCX003.cbl
GIVEN:
Cargo is found with empty equipment or export bond type
WHEN:
Bond type code is spaces or cargo is empty equipment or export type
THEN:
- Skip bond number processing
- Continue with default cargo information display
File: GCX003.cbl
GIVEN:
Cargo is found with specific bond type
WHEN:
BOL type code equals '15'
THEN:
Format display as 'PPR 7512 15 US-CA-US' for the cargo information
β Consolidated Acceptance Criteria
- Cargo short description equals release status → if action is REPORT, generate message 18, otherwise if action is SEND and user is not authorized for special manifest, generate error message 43, otherwise generate message 23 and set detour spawn flag
- Action is REPORT → generate message 50, otherwise if action is SEND and user is not authorized for special manifest, generate error message 43, otherwise generate message 23 and set 88 TR detour spawn flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckSpecialManifestRequirements(["Start Step"])
E_CheckSpecialManifestRequirements(["End Step"])
N_CheckSpecialManifestRequirements_Node0{"Cargo short description equals
release status"}:::decision N_CheckSpecialManifestRequirements_Node0_action["If action is REPORT, generate
message 18, otherwise if action is
SEND and user is not authorized for
special manifest, generate error
message 43, otherwise generate
message 23 and set detour spawn flag"]:::main N_CheckSpecialManifestRequirements_Node0 -- Yes --> N_CheckSpecialManifestRequirements_Node0_action N_CheckSpecialManifestRequirements_Node0_action --> E_CheckSpecialManifestRequirements S_CheckSpecialManifestRequirements --> N_CheckSpecialManifestRequirements_Node0 N_CheckSpecialManifestRequirements_Node1{"Action is REPORT"}:::decision N_CheckSpecialManifestRequirements_Node1_action["Generate message 50, otherwise if
action is SEND and user is not
authorized for special manifest,
generate error message 43, otherwise
generate message 23 and set 88 TR
detour spawn flag"]:::main N_CheckSpecialManifestRequirements_Node1 -- Yes --> N_CheckSpecialManifestRequirements_Node1_action N_CheckSpecialManifestRequirements_Node1_action --> E_CheckSpecialManifestRequirements N_CheckSpecialManifestRequirements_Node0 -- No --> N_CheckSpecialManifestRequirements_Node1 N_CheckSpecialManifestRequirements_Node1 -- No --> E_CheckSpecialManifestRequirements
release status"}:::decision N_CheckSpecialManifestRequirements_Node0_action["If action is REPORT, generate
message 18, otherwise if action is
SEND and user is not authorized for
special manifest, generate error
message 43, otherwise generate
message 23 and set detour spawn flag"]:::main N_CheckSpecialManifestRequirements_Node0 -- Yes --> N_CheckSpecialManifestRequirements_Node0_action N_CheckSpecialManifestRequirements_Node0_action --> E_CheckSpecialManifestRequirements S_CheckSpecialManifestRequirements --> N_CheckSpecialManifestRequirements_Node0 N_CheckSpecialManifestRequirements_Node1{"Action is REPORT"}:::decision N_CheckSpecialManifestRequirements_Node1_action["Generate message 50, otherwise if
action is SEND and user is not
authorized for special manifest,
generate error message 43, otherwise
generate message 23 and set 88 TR
detour spawn flag"]:::main N_CheckSpecialManifestRequirements_Node1 -- Yes --> N_CheckSpecialManifestRequirements_Node1_action N_CheckSpecialManifestRequirements_Node1_action --> E_CheckSpecialManifestRequirements N_CheckSpecialManifestRequirements_Node0 -- No --> N_CheckSpecialManifestRequirements_Node1 N_CheckSpecialManifestRequirements_Node1 -- No --> E_CheckSpecialManifestRequirements
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo has default bond type and is not created for IT
WHEN:
Cargo short description equals release status
THEN:
- If action is report, generate message 18, otherwise if action is send
- User is not authorized for special manifest, generate error message 43, otherwise generate message 23
- Set detour spawn flag
File: GCX003.cbl
GIVEN:
Cargo has export bond type and special manifest flag is spaces and origin-destination country codes equal 'USMX'
WHEN:
Action is REPORT
THEN:
- Generate message 50, otherwise if action is send
- User is not authorized for special manifest, generate error message 43, otherwise generate message 23
- Set 88 tr detour spawn flag
β Consolidated Acceptance Criteria
- TR was not created for IT (GCUSRT-TR-CREATED-FOR-IT not = 'Y') and cargo status is not export and cargo is billed as CPRS and port location differs from manifest location → create port change special manifest, generate message 20, and spawn GCX101 process with port change flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateTEBondSpecialManifest(["Start Step"])
E_CreateTEBondSpecialManifest(["End Step"])
N_CreateTEBondSpecialManifest_Node0{"TR was not created for IT
GCUSRT-TR-CREATED-FOR-IT not Y and
cargo status is not export and cargo
is billed as CPRS and port location
differs from manifest location"}:::decision N_CreateTEBondSpecialManifest_Node0_action["Create port change special
manifest, generate message 20, and
spawn GCX101 process with port
change flag"]:::main N_CreateTEBondSpecialManifest_Node0 -- Yes --> N_CreateTEBondSpecialManifest_Node0_action N_CreateTEBondSpecialManifest_Node0_action --> E_CreateTEBondSpecialManifest S_CreateTEBondSpecialManifest --> N_CreateTEBondSpecialManifest_Node0 N_CreateTEBondSpecialManifest_Node0 -- No --> E_CreateTEBondSpecialManifest
GCUSRT-TR-CREATED-FOR-IT not Y and
cargo status is not export and cargo
is billed as CPRS and port location
differs from manifest location"}:::decision N_CreateTEBondSpecialManifest_Node0_action["Create port change special
manifest, generate message 20, and
spawn GCX101 process with port
change flag"]:::main N_CreateTEBondSpecialManifest_Node0 -- Yes --> N_CreateTEBondSpecialManifest_Node0_action N_CreateTEBondSpecialManifest_Node0_action --> E_CreateTEBondSpecialManifest S_CreateTEBondSpecialManifest --> N_CreateTEBondSpecialManifest_Node0 N_CreateTEBondSpecialManifest_Node0 -- No --> E_CreateTEBondSpecialManifest
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is found and has TE bond type (88-GCUSRT-M1201-TRANSP-EXPORT is true)
WHEN:
- Tr was not created for it (gcusrt-tr-created-for-it not = 'y') and cargo status is not export
- Cargo is billed as cprs
- Port location differs from manifest location
THEN:
Create port change special manifest, generate message 20, and spawn GCX101 process with port change flag
β Consolidated Acceptance Criteria
- TR was not created for IT (GCUSRT-TR-CREATED-FOR-IT = SPACES) and cargo status equals release status (GCUSRT-RT21-USCARGO-SHORT-DESC = WS-GCUSRT-RT21-USCARGO-RELEASE) → create detour special manifest, generate message 23, and spawn GCX101 process with detour flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateTRBondDiversionSpecialManifest(["Start Step"])
E_CreateTRBondDiversionSpecialManifest(["End Step"])
N_CreateTRBondDiversionSpecialManifest_Node0{"TR was not created for IT
GCUSRT-TR-CREATED-FOR-IT SPACES and
cargo status equals release status
GCUSRT-RT21-USCARGO-SHORT-DESC
WS-GCUSRT-RT21-USCARGO-RELEASE"}:::decision N_CreateTRBondDiversionSpecialManifest_Node0_action["Create detour special manifest,
generate message 23, and spawn
GCX101 process with detour flag"]:::main N_CreateTRBondDiversionSpecialManifest_Node0 -- Yes --> N_CreateTRBondDiversionSpecialManifest_Node0_action N_CreateTRBondDiversionSpecialManifest_Node0_action --> E_CreateTRBondDiversionSpecialManifest S_CreateTRBondDiversionSpecialManifest --> N_CreateTRBondDiversionSpecialManifest_Node0 N_CreateTRBondDiversionSpecialManifest_Node0 -- No --> E_CreateTRBondDiversionSpecialManifest
GCUSRT-TR-CREATED-FOR-IT SPACES and
cargo status equals release status
GCUSRT-RT21-USCARGO-SHORT-DESC
WS-GCUSRT-RT21-USCARGO-RELEASE"}:::decision N_CreateTRBondDiversionSpecialManifest_Node0_action["Create detour special manifest,
generate message 23, and spawn
GCX101 process with detour flag"]:::main N_CreateTRBondDiversionSpecialManifest_Node0 -- Yes --> N_CreateTRBondDiversionSpecialManifest_Node0_action N_CreateTRBondDiversionSpecialManifest_Node0_action --> E_CreateTRBondDiversionSpecialManifest S_CreateTRBondDiversionSpecialManifest --> N_CreateTRBondDiversionSpecialManifest_Node0 N_CreateTRBondDiversionSpecialManifest_Node0 -- No --> E_CreateTRBondDiversionSpecialManifest
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo is found and has US-CAN-US bond type (88-GCUSRT-M1201-US-CAN-US is true) and does not have special TR flag
WHEN:
TR was not created for IT (GCUSRT-TR-CREATED-FOR-IT = SPACES) and cargo status equals release status (GCUSRT-RT21-USCARGO-SHORT-DESC = WS-GCUSRT-RT21-USCARGO-RELEASE)
THEN:
Create detour special manifest, generate message 23, and spawn GCX101 process with detour flag
β Consolidated Acceptance Criteria
- Equipment is loaded or equipment is empty with residue weight greater than zero and residue found and not conveying car → create US-US detour special manifest, generate message 23, and spawn GCX101 process with US-US detour flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateUSUSMovementSpecialManifest(["Start Step"])
E_CreateUSUSMovementSpecialManifest(["End Step"])
N_CreateUSUSMovementSpecialManifest_Node0{"Equipment is loaded or equipment is
empty with residue weight greater
than zero and residue found and not
conveying car"}:::decision N_CreateUSUSMovementSpecialManifest_Node0_action["Create US-US detour special
manifest, generate message 23, and
spawn GCX101 process with US-US
detour flag"]:::main N_CreateUSUSMovementSpecialManifest_Node0 -- Yes --> N_CreateUSUSMovementSpecialManifest_Node0_action N_CreateUSUSMovementSpecialManifest_Node0_action --> E_CreateUSUSMovementSpecialManifest S_CreateUSUSMovementSpecialManifest --> N_CreateUSUSMovementSpecialManifest_Node0 N_CreateUSUSMovementSpecialManifest_Node0 -- No --> E_CreateUSUSMovementSpecialManifest
empty with residue weight greater
than zero and residue found and not
conveying car"}:::decision N_CreateUSUSMovementSpecialManifest_Node0_action["Create US-US detour special
manifest, generate message 23, and
spawn GCX101 process with US-US
detour flag"]:::main N_CreateUSUSMovementSpecialManifest_Node0 -- Yes --> N_CreateUSUSMovementSpecialManifest_Node0_action N_CreateUSUSMovementSpecialManifest_Node0_action --> E_CreateUSUSMovementSpecialManifest S_CreateUSUSMovementSpecialManifest --> N_CreateUSUSMovementSpecialManifest_Node0 N_CreateUSUSMovementSpecialManifest_Node0 -- No --> E_CreateUSUSMovementSpecialManifest
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Waybill is found but no cargo is found and both origin and destination are US locations
WHEN:
- Equipment is loaded or equipment is empty with residue weight greater than zero
- Residue found
- Not conveying car
THEN:
Create US-US detour special manifest, generate message 23, and spawn GCX101 process with US-US detour flag
β Consolidated Acceptance Criteria
- None of the special manifest trigger conditions are satisfied (IT export, TE bond changes, TR diversions, border clearance, US-MX export, or US-US movements) → continue with normal cargo processing without creating special manifests
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_NoSpecialManifestRequired(["Start Step"])
E_NoSpecialManifestRequired(["End Step"])
N_NoSpecialManifestRequired_Node0{"None of the special manifest
trigger conditions are satisfied IT
export, TE bond changes, TR
diversions, border clearance, US-MX
export, or US-US movements"}:::decision N_NoSpecialManifestRequired_Node0_action["Continue with normal cargo
processing without creating special
manifests"]:::main N_NoSpecialManifestRequired_Node0 -- Yes --> N_NoSpecialManifestRequired_Node0_action N_NoSpecialManifestRequired_Node0_action --> E_NoSpecialManifestRequired S_NoSpecialManifestRequired --> N_NoSpecialManifestRequired_Node0 N_NoSpecialManifestRequired_Node0 -- No --> E_NoSpecialManifestRequired
trigger conditions are satisfied IT
export, TE bond changes, TR
diversions, border clearance, US-MX
export, or US-US movements"}:::decision N_NoSpecialManifestRequired_Node0_action["Continue with normal cargo
processing without creating special
manifests"]:::main N_NoSpecialManifestRequired_Node0 -- Yes --> N_NoSpecialManifestRequired_Node0_action N_NoSpecialManifestRequired_Node0_action --> E_NoSpecialManifestRequired S_NoSpecialManifestRequired --> N_NoSpecialManifestRequired_Node0 N_NoSpecialManifestRequired_Node0 -- No --> E_NoSpecialManifestRequired
File: GCX003.cbl
GIVEN:
Cargo processing is complete
WHEN:
None of the special manifest trigger conditions are satisfied (IT export, TE bond changes, TR diversions, border clearance, US-MX export, or US-US movements)
THEN:
Continue with normal cargo processing without creating special manifests
β Consolidated Acceptance Criteria
- Equipment type is LO (Locomotive) or ET (End of Train) → add 1 to total locomotive counter
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CountLocomotivesLOETTypes(["Start Step"])
E_CountLocomotivesLOETTypes(["End Step"])
N_CountLocomotivesLOETTypes_Node0{"Equipment type is LO Locomotive or
ET End of Train"}:::decision N_CountLocomotivesLOETTypes_Node0_action["Add 1 to total locomotive counter"]:::main N_CountLocomotivesLOETTypes_Node0 -- Yes --> N_CountLocomotivesLOETTypes_Node0_action N_CountLocomotivesLOETTypes_Node0_action --> E_CountLocomotivesLOETTypes S_CountLocomotivesLOETTypes --> N_CountLocomotivesLOETTypes_Node0 N_CountLocomotivesLOETTypes_Node0 -- No --> E_CountLocomotivesLOETTypes
ET End of Train"}:::decision N_CountLocomotivesLOETTypes_Node0_action["Add 1 to total locomotive counter"]:::main N_CountLocomotivesLOETTypes_Node0 -- Yes --> N_CountLocomotivesLOETTypes_Node0_action N_CountLocomotivesLOETTypes_Node0_action --> E_CountLocomotivesLOETTypes S_CountLocomotivesLOETTypes --> N_CountLocomotivesLOETTypes_Node0 N_CountLocomotivesLOETTypes_Node0 -- No --> E_CountLocomotivesLOETTypes
File: GCX003.cbl
GIVEN:
Equipment information is being processed for reporting
WHEN:
Equipment type is LO (Locomotive) or ET (End of Train)
THEN:
Add 1 to total locomotive counter
β Consolidated Acceptance Criteria
- Load/empty indicator is L (Loaded) → add 1 to total loaded container counter
- Load/empty indicator is E (Empty) → add 1 to total empty container counter
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CountContainersCNType(["Start Step"])
E_CountContainersCNType(["End Step"])
N_CountContainersCNType_Node0{"Loadempty indicator is L Loaded"}:::decision
N_CountContainersCNType_Node0_action["Add 1 to total loaded container
counter"]:::main N_CountContainersCNType_Node0 -- Yes --> N_CountContainersCNType_Node0_action N_CountContainersCNType_Node0_action --> E_CountContainersCNType S_CountContainersCNType --> N_CountContainersCNType_Node0 N_CountContainersCNType_Node1{"Loadempty indicator is E Empty"}:::decision N_CountContainersCNType_Node1_action["Add 1 to total empty container
counter"]:::main N_CountContainersCNType_Node1 -- Yes --> N_CountContainersCNType_Node1_action N_CountContainersCNType_Node1_action --> E_CountContainersCNType N_CountContainersCNType_Node0 -- No --> N_CountContainersCNType_Node1 N_CountContainersCNType_Node1 -- No --> E_CountContainersCNType
counter"]:::main N_CountContainersCNType_Node0 -- Yes --> N_CountContainersCNType_Node0_action N_CountContainersCNType_Node0_action --> E_CountContainersCNType S_CountContainersCNType --> N_CountContainersCNType_Node0 N_CountContainersCNType_Node1{"Loadempty indicator is E Empty"}:::decision N_CountContainersCNType_Node1_action["Add 1 to total empty container
counter"]:::main N_CountContainersCNType_Node1 -- Yes --> N_CountContainersCNType_Node1_action N_CountContainersCNType_Node1_action --> E_CountContainersCNType N_CountContainersCNType_Node0 -- No --> N_CountContainersCNType_Node1 N_CountContainersCNType_Node1 -- No --> E_CountContainersCNType
File: GCX003.cbl
GIVEN:
Equipment type is CN (Container)
WHEN:
Load/empty indicator is L (Loaded)
THEN:
Add 1 to total loaded container counter
File: GCX003.cbl
GIVEN:
Equipment type is CN (Container)
WHEN:
Load/empty indicator is E (Empty)
THEN:
Add 1 to total empty container counter
β Consolidated Acceptance Criteria
- Load/empty indicator is L (Loaded) → add 1 to total loaded car counter
- Load/empty indicator is E (Empty) → add 1 to total empty car counter
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CountCarsOtherTypes(["Start Step"])
E_CountCarsOtherTypes(["End Step"])
N_CountCarsOtherTypes_Node0{"Loadempty indicator is L Loaded"}:::decision
N_CountCarsOtherTypes_Node0_action["Add 1 to total loaded car counter"]:::main
N_CountCarsOtherTypes_Node0 -- Yes --> N_CountCarsOtherTypes_Node0_action
N_CountCarsOtherTypes_Node0_action --> E_CountCarsOtherTypes
S_CountCarsOtherTypes --> N_CountCarsOtherTypes_Node0
N_CountCarsOtherTypes_Node1{"Loadempty indicator is E Empty"}:::decision
N_CountCarsOtherTypes_Node1_action["Add 1 to total empty car counter"]:::main
N_CountCarsOtherTypes_Node1 -- Yes --> N_CountCarsOtherTypes_Node1_action
N_CountCarsOtherTypes_Node1_action --> E_CountCarsOtherTypes
N_CountCarsOtherTypes_Node0 -- No --> N_CountCarsOtherTypes_Node1
N_CountCarsOtherTypes_Node1 -- No --> E_CountCarsOtherTypes
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Equipment type is not LO, ET, or CN
WHEN:
Load/empty indicator is L (Loaded)
THEN:
Add 1 to total loaded car counter
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Equipment type is not LO, ET, or CN
WHEN:
Load/empty indicator is E (Empty)
THEN:
Add 1 to total empty car counter
β Consolidated Acceptance Criteria
- Load/empty indicator is E (Empty) → set equipment information description to 'INTERNATIONAL SERVICE'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatInternationalServiceUnitDescription(["Start Step"])
E_FormatInternationalServiceUnitDescription(["End Step"])
N_FormatInternationalServiceUnitDescription_Node0{"Loadempty indicator is E Empty"}:::decision
N_FormatInternationalServiceUnitDescription_Node0_action["Set equipment information
description to INTERNATIONAL SERVICE"]:::main N_FormatInternationalServiceUnitDescription_Node0 -- Yes --> N_FormatInternationalServiceUnitDescription_Node0_action N_FormatInternationalServiceUnitDescription_Node0_action --> E_FormatInternationalServiceUnitDescription S_FormatInternationalServiceUnitDescription --> N_FormatInternationalServiceUnitDescription_Node0 N_FormatInternationalServiceUnitDescription_Node0 -- No --> E_FormatInternationalServiceUnitDescription
description to INTERNATIONAL SERVICE"]:::main N_FormatInternationalServiceUnitDescription_Node0 -- Yes --> N_FormatInternationalServiceUnitDescription_Node0_action N_FormatInternationalServiceUnitDescription_Node0_action --> E_FormatInternationalServiceUnitDescription S_FormatInternationalServiceUnitDescription --> N_FormatInternationalServiceUnitDescription_Node0 N_FormatInternationalServiceUnitDescription_Node0 -- No --> E_FormatInternationalServiceUnitDescription
File: GCX003.cbl
GIVEN:
Equipment is an SBU van unit
WHEN:
Load/empty indicator is E (Empty)
THEN:
Set equipment information description to 'INTERNATIONAL SERVICE'
β Consolidated Acceptance Criteria
- Equipment is classified as a conveying car → set equipment information description to 'CONVEYING FLAT CAR'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatConveyingFlatCarDescription(["Start Step"])
E_FormatConveyingFlatCarDescription(["End Step"])
N_FormatConveyingFlatCarDescription_Node0{"Equipment is classified as a
conveying car"}:::decision N_FormatConveyingFlatCarDescription_Node0_action["Set equipment information
description to CONVEYING FLAT CAR"]:::main N_FormatConveyingFlatCarDescription_Node0 -- Yes --> N_FormatConveyingFlatCarDescription_Node0_action N_FormatConveyingFlatCarDescription_Node0_action --> E_FormatConveyingFlatCarDescription S_FormatConveyingFlatCarDescription --> N_FormatConveyingFlatCarDescription_Node0 N_FormatConveyingFlatCarDescription_Node0 -- No --> E_FormatConveyingFlatCarDescription
conveying car"}:::decision N_FormatConveyingFlatCarDescription_Node0_action["Set equipment information
description to CONVEYING FLAT CAR"]:::main N_FormatConveyingFlatCarDescription_Node0 -- Yes --> N_FormatConveyingFlatCarDescription_Node0_action N_FormatConveyingFlatCarDescription_Node0_action --> E_FormatConveyingFlatCarDescription S_FormatConveyingFlatCarDescription --> N_FormatConveyingFlatCarDescription_Node0 N_FormatConveyingFlatCarDescription_Node0 -- No --> E_FormatConveyingFlatCarDescription
File: GCX003.cbl
GIVEN:
No cargo data is available for equipment
WHEN:
Equipment is classified as a conveying car
THEN:
Set equipment information description to 'CONVEYING FLAT CAR'
β Consolidated Acceptance Criteria
- Equipment information is being formatted → set equipment information to 'EMPTY' and set load/empty indicator to 'E'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatEmptyEquipmentInfo(["Start Step"])
E_FormatEmptyEquipmentInfo(["End Step"])
N_FormatEmptyEquipmentInfo_Node0{"Equipment information is being
formatted"}:::decision N_FormatEmptyEquipmentInfo_Node0_action["Set equipment information to EMPTY
and set loadempty indicator to E"]:::main N_FormatEmptyEquipmentInfo_Node0 -- Yes --> N_FormatEmptyEquipmentInfo_Node0_action N_FormatEmptyEquipmentInfo_Node0_action --> E_FormatEmptyEquipmentInfo S_FormatEmptyEquipmentInfo --> N_FormatEmptyEquipmentInfo_Node0 N_FormatEmptyEquipmentInfo_Node0 -- No --> E_FormatEmptyEquipmentInfo
formatted"}:::decision N_FormatEmptyEquipmentInfo_Node0_action["Set equipment information to EMPTY
and set loadempty indicator to E"]:::main N_FormatEmptyEquipmentInfo_Node0 -- Yes --> N_FormatEmptyEquipmentInfo_Node0_action N_FormatEmptyEquipmentInfo_Node0_action --> E_FormatEmptyEquipmentInfo S_FormatEmptyEquipmentInfo --> N_FormatEmptyEquipmentInfo_Node0 N_FormatEmptyEquipmentInfo_Node0 -- No --> E_FormatEmptyEquipmentInfo
File: GCX003.cbl
GIVEN:
Cargo type is empty equipment
WHEN:
Equipment information is being formatted
THEN:
Set equipment information to 'EMPTY' and set load/empty indicator to 'E'
β Consolidated Acceptance Criteria
- Equipment was previously counted as loaded container → subtract 1 from loaded container counter and add 1 to empty container counter
- Equipment was previously counted as loaded car → subtract 1 from loaded car counter and add 1 to empty car counter
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatEmptyResidueInfo(["Start Step"])
E_FormatEmptyResidueInfo(["End Step"])
N_FormatEmptyResidueInfo_Node0{"Equipment was previously counted as
loaded container"}:::decision N_FormatEmptyResidueInfo_Node0_action["Subtract 1 from loaded container
counter and add 1 to empty container
counter"]:::main N_FormatEmptyResidueInfo_Node0 -- Yes --> N_FormatEmptyResidueInfo_Node0_action N_FormatEmptyResidueInfo_Node0_action --> E_FormatEmptyResidueInfo S_FormatEmptyResidueInfo --> N_FormatEmptyResidueInfo_Node0 N_FormatEmptyResidueInfo_Node1{"Equipment was previously counted as
loaded car"}:::decision N_FormatEmptyResidueInfo_Node1_action["Subtract 1 from loaded car counter
and add 1 to empty car counter"]:::main N_FormatEmptyResidueInfo_Node1 -- Yes --> N_FormatEmptyResidueInfo_Node1_action N_FormatEmptyResidueInfo_Node1_action --> E_FormatEmptyResidueInfo N_FormatEmptyResidueInfo_Node0 -- No --> N_FormatEmptyResidueInfo_Node1 N_FormatEmptyResidueInfo_Node1 -- No --> E_FormatEmptyResidueInfo
loaded container"}:::decision N_FormatEmptyResidueInfo_Node0_action["Subtract 1 from loaded container
counter and add 1 to empty container
counter"]:::main N_FormatEmptyResidueInfo_Node0 -- Yes --> N_FormatEmptyResidueInfo_Node0_action N_FormatEmptyResidueInfo_Node0_action --> E_FormatEmptyResidueInfo S_FormatEmptyResidueInfo --> N_FormatEmptyResidueInfo_Node0 N_FormatEmptyResidueInfo_Node1{"Equipment was previously counted as
loaded car"}:::decision N_FormatEmptyResidueInfo_Node1_action["Subtract 1 from loaded car counter
and add 1 to empty car counter"]:::main N_FormatEmptyResidueInfo_Node1 -- Yes --> N_FormatEmptyResidueInfo_Node1_action N_FormatEmptyResidueInfo_Node1_action --> E_FormatEmptyResidueInfo N_FormatEmptyResidueInfo_Node0 -- No --> N_FormatEmptyResidueInfo_Node1 N_FormatEmptyResidueInfo_Node1 -- No --> E_FormatEmptyResidueInfo
File: GCX003.cbl
GIVEN:
Cargo type is empty residue
WHEN:
Equipment was previously counted as loaded container
THEN:
- Subtract 1 from loaded container counter
- Add 1 to empty container counter
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Cargo type is empty residue and equipment type is not CN
WHEN:
Equipment was previously counted as loaded car
THEN:
- Subtract 1 from loaded car counter
- Add 1 to empty car counter
β Consolidated Acceptance Criteria
- Equipment information is being formatted → set equipment information to 'PPR 7512 15 US-CA-US'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatPaperPort7512Description(["Start Step"])
E_FormatPaperPort7512Description(["End Step"])
N_FormatPaperPort7512Description_Node0{"Equipment information is being
formatted"}:::decision N_FormatPaperPort7512Description_Node0_action["Set equipment information to PPR
7512 15 US-CA-US"]:::main N_FormatPaperPort7512Description_Node0 -- Yes --> N_FormatPaperPort7512Description_Node0_action N_FormatPaperPort7512Description_Node0_action --> E_FormatPaperPort7512Description S_FormatPaperPort7512Description --> N_FormatPaperPort7512Description_Node0 N_FormatPaperPort7512Description_Node0 -- No --> E_FormatPaperPort7512Description
formatted"}:::decision N_FormatPaperPort7512Description_Node0_action["Set equipment information to PPR
7512 15 US-CA-US"]:::main N_FormatPaperPort7512Description_Node0 -- Yes --> N_FormatPaperPort7512Description_Node0_action N_FormatPaperPort7512Description_Node0_action --> E_FormatPaperPort7512Description S_FormatPaperPort7512Description --> N_FormatPaperPort7512Description_Node0 N_FormatPaperPort7512Description_Node0 -- No --> E_FormatPaperPort7512Description
File: GCX003.cbl
GIVEN:
Cargo BOL type code is '15'
WHEN:
Equipment information is being formatted
THEN:
Set equipment information to 'PPR 7512 15 US-CA-US'
β Consolidated Acceptance Criteria
- Segment 07 data entry is not spaces or low-values → use segment 07 SED field as equipment information description
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatEquipmentDescriptionfromSegment07(["Start Step"])
E_FormatEquipmentDescriptionfromSegment07(["End Step"])
N_FormatEquipmentDescriptionfromSegment07_Node0{"Segment 07 data entry is not spaces
or low-values"}:::decision N_FormatEquipmentDescriptionfromSegment07_Node0_action["Use segment 07 SED field as
equipment information description"]:::main N_FormatEquipmentDescriptionfromSegment07_Node0 -- Yes --> N_FormatEquipmentDescriptionfromSegment07_Node0_action N_FormatEquipmentDescriptionfromSegment07_Node0_action --> E_FormatEquipmentDescriptionfromSegment07 S_FormatEquipmentDescriptionfromSegment07 --> N_FormatEquipmentDescriptionfromSegment07_Node0 N_FormatEquipmentDescriptionfromSegment07_Node0 -- No --> E_FormatEquipmentDescriptionfromSegment07
or low-values"}:::decision N_FormatEquipmentDescriptionfromSegment07_Node0_action["Use segment 07 SED field as
equipment information description"]:::main N_FormatEquipmentDescriptionfromSegment07_Node0 -- Yes --> N_FormatEquipmentDescriptionfromSegment07_Node0_action N_FormatEquipmentDescriptionfromSegment07_Node0_action --> E_FormatEquipmentDescriptionfromSegment07 S_FormatEquipmentDescriptionfromSegment07 --> N_FormatEquipmentDescriptionfromSegment07_Node0 N_FormatEquipmentDescriptionfromSegment07_Node0 -- No --> E_FormatEquipmentDescriptionfromSegment07
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Equipment information is spaces and segment 07 data is available
WHEN:
Segment 07 data entry is not spaces or low-values
THEN:
Use segment 07 SED field as equipment information description
β Consolidated Acceptance Criteria
- Processing each segment 07 entry that is not spaces or low-values → create separate report line for each description and increment equipment counter only for first description
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessMultipleDescriptionLines(["Start Step"])
E_ProcessMultipleDescriptionLines(["End Step"])
N_ProcessMultipleDescriptionLines_Node0{"Processing each segment 07 entry
that is not spaces or low-values"}:::decision N_ProcessMultipleDescriptionLines_Node0_action["Create separate report line for
each description and increment
equipment counter only for first
description"]:::main N_ProcessMultipleDescriptionLines_Node0 -- Yes --> N_ProcessMultipleDescriptionLines_Node0_action N_ProcessMultipleDescriptionLines_Node0_action --> E_ProcessMultipleDescriptionLines S_ProcessMultipleDescriptionLines --> N_ProcessMultipleDescriptionLines_Node0 N_ProcessMultipleDescriptionLines_Node0 -- No --> E_ProcessMultipleDescriptionLines
that is not spaces or low-values"}:::decision N_ProcessMultipleDescriptionLines_Node0_action["Create separate report line for
each description and increment
equipment counter only for first
description"]:::main N_ProcessMultipleDescriptionLines_Node0 -- Yes --> N_ProcessMultipleDescriptionLines_Node0_action N_ProcessMultipleDescriptionLines_Node0_action --> E_ProcessMultipleDescriptionLines S_ProcessMultipleDescriptionLines --> N_ProcessMultipleDescriptionLines_Node0 N_ProcessMultipleDescriptionLines_Node0 -- No --> E_ProcessMultipleDescriptionLines
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Multiple segment 07 data entries exist
WHEN:
Processing each segment 07 entry that is not spaces or low-values
THEN:
- Create separate report line for each description
- Increment equipment counter only for first description
β Consolidated Acceptance Criteria
- Equipment information is being processed → use station table type description as equipment information and create additional report line if equipment information already exists
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatSpecialFacilityEquipmentDescription(["Start Step"])
E_FormatSpecialFacilityEquipmentDescription(["End Step"])
N_FormatSpecialFacilityEquipmentDescription_Node0{"Equipment information is being
processed"}:::decision N_FormatSpecialFacilityEquipmentDescription_Node0_action["Use station table type description
as equipment information and create
additional report line if equipment
information already exists"]:::main N_FormatSpecialFacilityEquipmentDescription_Node0 -- Yes --> N_FormatSpecialFacilityEquipmentDescription_Node0_action N_FormatSpecialFacilityEquipmentDescription_Node0_action --> E_FormatSpecialFacilityEquipmentDescription S_FormatSpecialFacilityEquipmentDescription --> N_FormatSpecialFacilityEquipmentDescription_Node0 N_FormatSpecialFacilityEquipmentDescription_Node0 -- No --> E_FormatSpecialFacilityEquipmentDescription
processed"}:::decision N_FormatSpecialFacilityEquipmentDescription_Node0_action["Use station table type description
as equipment information and create
additional report line if equipment
information already exists"]:::main N_FormatSpecialFacilityEquipmentDescription_Node0 -- Yes --> N_FormatSpecialFacilityEquipmentDescription_Node0_action N_FormatSpecialFacilityEquipmentDescription_Node0_action --> E_FormatSpecialFacilityEquipmentDescription S_FormatSpecialFacilityEquipmentDescription --> N_FormatSpecialFacilityEquipmentDescription_Node0 N_FormatSpecialFacilityEquipmentDescription_Node0 -- No --> E_FormatSpecialFacilityEquipmentDescription
File: GCX003.cbl
GIVEN:
Station table entry type is 'SFE' and country is 'US' or spaces
WHEN:
Equipment information is being processed
THEN:
- Use station table type description as equipment information
- Create additional report line if equipment information already exists
β Consolidated Acceptance Criteria
- The system begins segment data retrieval → the system should initialize cargo segment retrieval parameters and set function to Get Unique operation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_B250RETRIEVESEG07InitializeSegmentRetrieval(["Start Step"])
E_B250RETRIEVESEG07InitializeSegmentRetrieval(["End Step"])
N_B250RETRIEVESEG07InitializeSegmentRetrieval_Node0{"The system begins segment data
retrieval"}:::decision N_B250RETRIEVESEG07InitializeSegmentRetrieval_Node0_action["The system should initialize cargo
segment retrieval parameters and set
function to Get Unique operation"]:::main N_B250RETRIEVESEG07InitializeSegmentRetrieval_Node0 -- Yes --> N_B250RETRIEVESEG07InitializeSegmentRetrieval_Node0_action N_B250RETRIEVESEG07InitializeSegmentRetrieval_Node0_action --> E_B250RETRIEVESEG07InitializeSegmentRetrieval S_B250RETRIEVESEG07InitializeSegmentRetrieval --> N_B250RETRIEVESEG07InitializeSegmentRetrieval_Node0 N_B250RETRIEVESEG07InitializeSegmentRetrieval_Node0 -- No --> E_B250RETRIEVESEG07InitializeSegmentRetrieval
retrieval"}:::decision N_B250RETRIEVESEG07InitializeSegmentRetrieval_Node0_action["The system should initialize cargo
segment retrieval parameters and set
function to Get Unique operation"]:::main N_B250RETRIEVESEG07InitializeSegmentRetrieval_Node0 -- Yes --> N_B250RETRIEVESEG07InitializeSegmentRetrieval_Node0_action N_B250RETRIEVESEG07InitializeSegmentRetrieval_Node0_action --> E_B250RETRIEVESEG07InitializeSegmentRetrieval S_B250RETRIEVESEG07InitializeSegmentRetrieval --> N_B250RETRIEVESEG07InitializeSegmentRetrieval_Node0 N_B250RETRIEVESEG07InitializeSegmentRetrieval_Node0 -- No --> E_B250RETRIEVESEG07InitializeSegmentRetrieval
File: GCX003.cbl
GIVEN:
A cargo record exists for processing
WHEN:
The system begins segment data retrieval
THEN:
- The system should initialize cargo segment retrieval parameters
- Set function to get unique operation
β Consolidated Acceptance Criteria
- The system configures segment types for retrieval → the system should set flags to retrieve SEG07 equipment descriptions, SEG02 reference numbers, and SEG08 hazmat data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSegmentTypesSEG07SEG02SEG08(["Start Step"])
E_SetSegmentTypesSEG07SEG02SEG08(["End Step"])
N_SetSegmentTypesSEG07SEG02SEG08_Node0{"The system configures segment types
for retrieval"}:::decision N_SetSegmentTypesSEG07SEG02SEG08_Node0_action["The system should set flags to
retrieve SEG07 equipment
descriptions, SEG02 reference
numbers, and SEG08 hazmat data"]:::main N_SetSegmentTypesSEG07SEG02SEG08_Node0 -- Yes --> N_SetSegmentTypesSEG07SEG02SEG08_Node0_action N_SetSegmentTypesSEG07SEG02SEG08_Node0_action --> E_SetSegmentTypesSEG07SEG02SEG08 S_SetSegmentTypesSEG07SEG02SEG08 --> N_SetSegmentTypesSEG07SEG02SEG08_Node0 N_SetSegmentTypesSEG07SEG02SEG08_Node0 -- No --> E_SetSegmentTypesSEG07SEG02SEG08
for retrieval"}:::decision N_SetSegmentTypesSEG07SEG02SEG08_Node0_action["The system should set flags to
retrieve SEG07 equipment
descriptions, SEG02 reference
numbers, and SEG08 hazmat data"]:::main N_SetSegmentTypesSEG07SEG02SEG08_Node0 -- Yes --> N_SetSegmentTypesSEG07SEG02SEG08_Node0_action N_SetSegmentTypesSEG07SEG02SEG08_Node0_action --> E_SetSegmentTypesSEG07SEG02SEG08 S_SetSegmentTypesSEG07SEG02SEG08 --> N_SetSegmentTypesSEG07SEG02SEG08_Node0 N_SetSegmentTypesSEG07SEG02SEG08_Node0 -- No --> E_SetSegmentTypesSEG07SEG02SEG08
File: GCX003.cbl
GIVEN:
Segment retrieval is being initialized
WHEN:
The system configures segment types for retrieval
THEN:
The system should set flags to retrieve SEG07 equipment descriptions, SEG02 reference numbers, and SEG08 hazmat data
β Consolidated Acceptance Criteria
- The system calls the cargo I/O module to retrieve segment data → the system should execute the database call to fetch SEG07, SEG02, and SEG08 segment information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCUSIO2toRetrieveSegments(["Start Step"])
E_CallGCCUSIO2toRetrieveSegments(["End Step"])
N_CallGCCUSIO2toRetrieveSegments_Node0{"The system calls the cargo IO
module to retrieve segment data"}:::decision N_CallGCCUSIO2toRetrieveSegments_Node0_action["The system should execute the
database call to fetch SEG07, SEG02,
and SEG08 segment information"]:::main N_CallGCCUSIO2toRetrieveSegments_Node0 -- Yes --> N_CallGCCUSIO2toRetrieveSegments_Node0_action N_CallGCCUSIO2toRetrieveSegments_Node0_action --> E_CallGCCUSIO2toRetrieveSegments S_CallGCCUSIO2toRetrieveSegments --> N_CallGCCUSIO2toRetrieveSegments_Node0 N_CallGCCUSIO2toRetrieveSegments_Node0 -- No --> E_CallGCCUSIO2toRetrieveSegments
module to retrieve segment data"}:::decision N_CallGCCUSIO2toRetrieveSegments_Node0_action["The system should execute the
database call to fetch SEG07, SEG02,
and SEG08 segment information"]:::main N_CallGCCUSIO2toRetrieveSegments_Node0 -- Yes --> N_CallGCCUSIO2toRetrieveSegments_Node0_action N_CallGCCUSIO2toRetrieveSegments_Node0_action --> E_CallGCCUSIO2toRetrieveSegments S_CallGCCUSIO2toRetrieveSegments --> N_CallGCCUSIO2toRetrieveSegments_Node0 N_CallGCCUSIO2toRetrieveSegments_Node0 -- No --> E_CallGCCUSIO2toRetrieveSegments
File: GCX003.cbl
GIVEN:
Segment retrieval parameters are configured
WHEN:
The system calls the cargo I/O module to retrieve segment data
THEN:
The system should execute the database call to fetch SEG07, SEG02, and SEG08 segment information
β Consolidated Acceptance Criteria
- The system checks the retrieval operation result → the system should determine if segment data was successfully retrieved based on error status being empty
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SegmentRetrievalSuccessful(["Start Step"])
E_SegmentRetrievalSuccessful(["End Step"])
N_SegmentRetrievalSuccessful_Node0{"The system checks the retrieval
operation result"}:::decision N_SegmentRetrievalSuccessful_Node0_action["The system should determine if
segment data was successfully
retrieved based on error status
being empty"]:::main N_SegmentRetrievalSuccessful_Node0 -- Yes --> N_SegmentRetrievalSuccessful_Node0_action N_SegmentRetrievalSuccessful_Node0_action --> E_SegmentRetrievalSuccessful S_SegmentRetrievalSuccessful --> N_SegmentRetrievalSuccessful_Node0 N_SegmentRetrievalSuccessful_Node0 -- No --> E_SegmentRetrievalSuccessful
operation result"}:::decision N_SegmentRetrievalSuccessful_Node0_action["The system should determine if
segment data was successfully
retrieved based on error status
being empty"]:::main N_SegmentRetrievalSuccessful_Node0 -- Yes --> N_SegmentRetrievalSuccessful_Node0_action N_SegmentRetrievalSuccessful_Node0_action --> E_SegmentRetrievalSuccessful S_SegmentRetrievalSuccessful --> N_SegmentRetrievalSuccessful_Node0 N_SegmentRetrievalSuccessful_Node0 -- No --> E_SegmentRetrievalSuccessful
File: GCX003.cbl
GIVEN:
Cargo segment data retrieval has been attempted
WHEN:
The system checks the retrieval operation result
THEN:
The system should determine if segment data was successfully retrieved based on error status being empty
β Consolidated Acceptance Criteria
- The system processes the retrieved data → the system should move SEG03, SEG06, SEG07, SEG08, SEG09, and SEG12 data from arrays to individual segment structures
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveRetrievedDatatoWorkingStorageArrays(["Start Step"])
E_MoveRetrievedDatatoWorkingStorageArrays(["End Step"])
N_MoveRetrievedDatatoWorkingStorageArrays_Node0{"The system processes the retrieved
data"}:::decision N_MoveRetrievedDatatoWorkingStorageArrays_Node0_action["The system should move SEG03,
SEG06, SEG07, SEG08, SEG09, and
SEG12 data from arrays to individual
segment structures"]:::main N_MoveRetrievedDatatoWorkingStorageArrays_Node0 -- Yes --> N_MoveRetrievedDatatoWorkingStorageArrays_Node0_action N_MoveRetrievedDatatoWorkingStorageArrays_Node0_action --> E_MoveRetrievedDatatoWorkingStorageArrays S_MoveRetrievedDatatoWorkingStorageArrays --> N_MoveRetrievedDatatoWorkingStorageArrays_Node0 N_MoveRetrievedDatatoWorkingStorageArrays_Node0 -- No --> E_MoveRetrievedDatatoWorkingStorageArrays
data"}:::decision N_MoveRetrievedDatatoWorkingStorageArrays_Node0_action["The system should move SEG03,
SEG06, SEG07, SEG08, SEG09, and
SEG12 data from arrays to individual
segment structures"]:::main N_MoveRetrievedDatatoWorkingStorageArrays_Node0 -- Yes --> N_MoveRetrievedDatatoWorkingStorageArrays_Node0_action N_MoveRetrievedDatatoWorkingStorageArrays_Node0_action --> E_MoveRetrievedDatatoWorkingStorageArrays S_MoveRetrievedDatatoWorkingStorageArrays --> N_MoveRetrievedDatatoWorkingStorageArrays_Node0 N_MoveRetrievedDatatoWorkingStorageArrays_Node0 -- No --> E_MoveRetrievedDatatoWorkingStorageArrays
File: GCX003.cbl
GIVEN:
Segment data retrieval was successful
WHEN:
The system processes the retrieved data
THEN:
The system should move SEG03, SEG06, SEG07, SEG08, SEG09, and SEG12 data from arrays to individual segment structures
β Consolidated Acceptance Criteria
- The system checks for SEG07 data availability → the system should set SEG07-FOUND flag if data exists or SEG07-NOT-FOUND flag if data is spaces or low-values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SEG07DataFound(["Start Step"])
E_SEG07DataFound(["End Step"])
N_SEG07DataFound_Node0{"The system checks for SEG07 data
availability"}:::decision N_SEG07DataFound_Node0_action["The system should set SEG07-FOUND
flag if data exists or
SEG07-NOT-FOUND flag if data is
spaces or low-values"]:::main N_SEG07DataFound_Node0 -- Yes --> N_SEG07DataFound_Node0_action N_SEG07DataFound_Node0_action --> E_SEG07DataFound S_SEG07DataFound --> N_SEG07DataFound_Node0 N_SEG07DataFound_Node0 -- No --> E_SEG07DataFound
availability"}:::decision N_SEG07DataFound_Node0_action["The system should set SEG07-FOUND
flag if data exists or
SEG07-NOT-FOUND flag if data is
spaces or low-values"]:::main N_SEG07DataFound_Node0 -- Yes --> N_SEG07DataFound_Node0_action N_SEG07DataFound_Node0_action --> E_SEG07DataFound S_SEG07DataFound --> N_SEG07DataFound_Node0 N_SEG07DataFound_Node0 -- No --> E_SEG07DataFound
File: GCX003.cbl
GIVEN:
Segment data has been retrieved and processed
WHEN:
The system checks for SEG07 data availability
THEN:
The system should set SEG07-FOUND flag if data exists or SEG07-NOT-FOUND flag if data is spaces or low-values
β Consolidated Acceptance Criteria
- The system checks for SEG02 data availability → the system should set SEG02-FOUND flag if data exists or SEG02-NOT-FOUND flag if data is spaces or low-values
- The system checks for SEG08 data availability → the system should set SEG08-FOUND flag if data exists or SEG08-NOT-FOUND flag if data is spaces or low-values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckSEG07DataAvailability(["Start Step"])
E_CheckSEG07DataAvailability(["End Step"])
N_CheckSEG07DataAvailability_Node0{"The system checks for SEG02 data
availability"}:::decision N_CheckSEG07DataAvailability_Node0_action["The system should set SEG02-FOUND
flag if data exists or
SEG02-NOT-FOUND flag if data is
spaces or low-values"]:::main N_CheckSEG07DataAvailability_Node0 -- Yes --> N_CheckSEG07DataAvailability_Node0_action N_CheckSEG07DataAvailability_Node0_action --> E_CheckSEG07DataAvailability S_CheckSEG07DataAvailability --> N_CheckSEG07DataAvailability_Node0 N_CheckSEG07DataAvailability_Node1{"The system checks for SEG08 data
availability"}:::decision N_CheckSEG07DataAvailability_Node1_action["The system should set SEG08-FOUND
flag if data exists or
SEG08-NOT-FOUND flag if data is
spaces or low-values"]:::main N_CheckSEG07DataAvailability_Node1 -- Yes --> N_CheckSEG07DataAvailability_Node1_action N_CheckSEG07DataAvailability_Node1_action --> E_CheckSEG07DataAvailability N_CheckSEG07DataAvailability_Node0 -- No --> N_CheckSEG07DataAvailability_Node1 N_CheckSEG07DataAvailability_Node1 -- No --> E_CheckSEG07DataAvailability
availability"}:::decision N_CheckSEG07DataAvailability_Node0_action["The system should set SEG02-FOUND
flag if data exists or
SEG02-NOT-FOUND flag if data is
spaces or low-values"]:::main N_CheckSEG07DataAvailability_Node0 -- Yes --> N_CheckSEG07DataAvailability_Node0_action N_CheckSEG07DataAvailability_Node0_action --> E_CheckSEG07DataAvailability S_CheckSEG07DataAvailability --> N_CheckSEG07DataAvailability_Node0 N_CheckSEG07DataAvailability_Node1{"The system checks for SEG08 data
availability"}:::decision N_CheckSEG07DataAvailability_Node1_action["The system should set SEG08-FOUND
flag if data exists or
SEG08-NOT-FOUND flag if data is
spaces or low-values"]:::main N_CheckSEG07DataAvailability_Node1 -- Yes --> N_CheckSEG07DataAvailability_Node1_action N_CheckSEG07DataAvailability_Node1_action --> E_CheckSEG07DataAvailability N_CheckSEG07DataAvailability_Node0 -- No --> N_CheckSEG07DataAvailability_Node1 N_CheckSEG07DataAvailability_Node1 -- No --> E_CheckSEG07DataAvailability
File: GCX003.cbl
GIVEN:
Segment data has been retrieved and processed
WHEN:
The system checks for SEG02 data availability
THEN:
The system should set SEG02-FOUND flag if data exists or SEG02-NOT-FOUND flag if data is spaces or low-values
File: GCX003.cbl
GIVEN:
Segment data has been retrieved and processed
WHEN:
The system checks for SEG08 data availability
THEN:
The system should set SEG08-FOUND flag if data exists or SEG08-NOT-FOUND flag if data is spaces or low-values
β Consolidated Acceptance Criteria
- The system initializes SEG07 processing → the system should set SEG07 written counter to zero and prepare for iterating through SEG07 data array
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeSEG07ProcessingCounter(["Start Step"])
E_InitializeSEG07ProcessingCounter(["End Step"])
N_InitializeSEG07ProcessingCounter_Node0{"The system initializes SEG07
processing"}:::decision N_InitializeSEG07ProcessingCounter_Node0_action["The system should set SEG07 written
counter to zero and prepare for
iterating through SEG07 data array"]:::main N_InitializeSEG07ProcessingCounter_Node0 -- Yes --> N_InitializeSEG07ProcessingCounter_Node0_action N_InitializeSEG07ProcessingCounter_Node0_action --> E_InitializeSEG07ProcessingCounter S_InitializeSEG07ProcessingCounter --> N_InitializeSEG07ProcessingCounter_Node0 N_InitializeSEG07ProcessingCounter_Node0 -- No --> E_InitializeSEG07ProcessingCounter
processing"}:::decision N_InitializeSEG07ProcessingCounter_Node0_action["The system should set SEG07 written
counter to zero and prepare for
iterating through SEG07 data array"]:::main N_InitializeSEG07ProcessingCounter_Node0 -- Yes --> N_InitializeSEG07ProcessingCounter_Node0_action N_InitializeSEG07ProcessingCounter_Node0_action --> E_InitializeSEG07ProcessingCounter S_InitializeSEG07ProcessingCounter --> N_InitializeSEG07ProcessingCounter_Node0 N_InitializeSEG07ProcessingCounter_Node0 -- No --> E_InitializeSEG07ProcessingCounter
File: GCX003.cbl
GIVEN:
Equipment description field is empty and SEG07 data processing is required
WHEN:
The system initializes SEG07 processing
THEN:
- The system should set seg07 written counter to zero
- Prepare for iterating through seg07 data array
β Consolidated Acceptance Criteria
- The system validates the entry data quality → the system should determine the entry is invalid if the SEG07 description is spaces or low-values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SEG07EntryValid(["Start Step"])
E_SEG07EntryValid(["End Step"])
N_SEG07EntryValid_Node0{"The system validates the entry data
quality"}:::decision N_SEG07EntryValid_Node0_action["The system should determine the
entry is invalid if the SEG07
description is spaces or low-values"]:::main N_SEG07EntryValid_Node0 -- Yes --> N_SEG07EntryValid_Node0_action N_SEG07EntryValid_Node0_action --> E_SEG07EntryValid S_SEG07EntryValid --> N_SEG07EntryValid_Node0 N_SEG07EntryValid_Node0 -- No --> E_SEG07EntryValid
quality"}:::decision N_SEG07EntryValid_Node0_action["The system should determine the
entry is invalid if the SEG07
description is spaces or low-values"]:::main N_SEG07EntryValid_Node0 -- Yes --> N_SEG07EntryValid_Node0_action N_SEG07EntryValid_Node0_action --> E_SEG07EntryValid S_SEG07EntryValid --> N_SEG07EntryValid_Node0 N_SEG07EntryValid_Node0 -- No --> E_SEG07EntryValid
File: GCX003.cbl
GIVEN:
A SEG07 entry is being processed
WHEN:
The system validates the entry data quality
THEN:
The system should determine the entry is invalid if the SEG07 description is spaces or low-values
β Consolidated Acceptance Criteria
- The system processes the equipment description → the system should move the SEG07 description to both report info field and new report info field, and set SEG07 processing flag to yes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveSEG07DescriptiontoReportInfoField(["Start Step"])
E_MoveSEG07DescriptiontoReportInfoField(["End Step"])
N_MoveSEG07DescriptiontoReportInfoField_Node0{"The system processes the equipment
description"}:::decision N_MoveSEG07DescriptiontoReportInfoField_Node0_action["The system should move the SEG07
description to both report info
field and new report info field, and
set SEG07 processing flag to yes"]:::main N_MoveSEG07DescriptiontoReportInfoField_Node0 -- Yes --> N_MoveSEG07DescriptiontoReportInfoField_Node0_action N_MoveSEG07DescriptiontoReportInfoField_Node0_action --> E_MoveSEG07DescriptiontoReportInfoField S_MoveSEG07DescriptiontoReportInfoField --> N_MoveSEG07DescriptiontoReportInfoField_Node0 N_MoveSEG07DescriptiontoReportInfoField_Node0 -- No --> E_MoveSEG07DescriptiontoReportInfoField
description"}:::decision N_MoveSEG07DescriptiontoReportInfoField_Node0_action["The system should move the SEG07
description to both report info
field and new report info field, and
set SEG07 processing flag to yes"]:::main N_MoveSEG07DescriptiontoReportInfoField_Node0 -- Yes --> N_MoveSEG07DescriptiontoReportInfoField_Node0_action N_MoveSEG07DescriptiontoReportInfoField_Node0_action --> E_MoveSEG07DescriptiontoReportInfoField S_MoveSEG07DescriptiontoReportInfoField --> N_MoveSEG07DescriptiontoReportInfoField_Node0 N_MoveSEG07DescriptiontoReportInfoField_Node0 -- No --> E_MoveSEG07DescriptiontoReportInfoField
File: GCX003.cbl
GIVEN:
A valid SEG07 entry with equipment description exists
WHEN:
The system processes the equipment description
THEN:
- The system should move the seg07 description to both report info field
- New report info field, and set seg07 processing flag to yes
β Consolidated Acceptance Criteria
- The system checks if this is the first SEG07 entry written → the system should increment the total equipment count only if the SEG07 written counter equals 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FirstSEG07Entry(["Start Step"])
E_FirstSEG07Entry(["End Step"])
N_FirstSEG07Entry_Node0{"The system checks if this is the
first SEG07 entry written"}:::decision N_FirstSEG07Entry_Node0_action["The system should increment the
total equipment count only if the
SEG07 written counter equals 1"]:::main N_FirstSEG07Entry_Node0 -- Yes --> N_FirstSEG07Entry_Node0_action N_FirstSEG07Entry_Node0_action --> E_FirstSEG07Entry S_FirstSEG07Entry --> N_FirstSEG07Entry_Node0 N_FirstSEG07Entry_Node0 -- No --> E_FirstSEG07Entry
first SEG07 entry written"}:::decision N_FirstSEG07Entry_Node0_action["The system should increment the
total equipment count only if the
SEG07 written counter equals 1"]:::main N_FirstSEG07Entry_Node0 -- Yes --> N_FirstSEG07Entry_Node0_action N_FirstSEG07Entry_Node0_action --> E_FirstSEG07Entry S_FirstSEG07Entry --> N_FirstSEG07Entry_Node0 N_FirstSEG07Entry_Node0 -- No --> E_FirstSEG07Entry
File: GCX003.cbl
GIVEN:
A SEG07 entry has been processed and added to the report
WHEN:
The system checks if this is the first SEG07 entry written
THEN:
The system should increment the total equipment count only if the SEG07 written counter equals 1
β Consolidated Acceptance Criteria
- The system processes station entries for special descriptions → the system should check for SFE type codes with US country designation and populate special descriptions in report fields while setting SEG07 processing flag to no
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessStationEntriesforSpecialDescriptions(["Start Step"])
E_ProcessStationEntriesforSpecialDescriptions(["End Step"])
N_ProcessStationEntriesforSpecialDescriptions_Node0{"The system processes station
entries for special descriptions"}:::decision N_ProcessStationEntriesforSpecialDescriptions_Node0_action["The system should check for SFE
type codes with US country
designation and populate special
descriptions in report fields while
setting SEG07 processing flag to no"]:::main N_ProcessStationEntriesforSpecialDescriptions_Node0 -- Yes --> N_ProcessStationEntriesforSpecialDescriptions_Node0_action N_ProcessStationEntriesforSpecialDescriptions_Node0_action --> E_ProcessStationEntriesforSpecialDescriptions S_ProcessStationEntriesforSpecialDescriptions --> N_ProcessStationEntriesforSpecialDescriptions_Node0 N_ProcessStationEntriesforSpecialDescriptions_Node0 -- No --> E_ProcessStationEntriesforSpecialDescriptions
entries for special descriptions"}:::decision N_ProcessStationEntriesforSpecialDescriptions_Node0_action["The system should check for SFE
type codes with US country
designation and populate special
descriptions in report fields while
setting SEG07 processing flag to no"]:::main N_ProcessStationEntriesforSpecialDescriptions_Node0 -- Yes --> N_ProcessStationEntriesforSpecialDescriptions_Node0_action N_ProcessStationEntriesforSpecialDescriptions_Node0_action --> E_ProcessStationEntriesforSpecialDescriptions S_ProcessStationEntriesforSpecialDescriptions --> N_ProcessStationEntriesforSpecialDescriptions_Node0 N_ProcessStationEntriesforSpecialDescriptions_Node0 -- No --> E_ProcessStationEntriesforSpecialDescriptions
File: GCX003.cbl
GIVEN:
Station table data is available for processing
WHEN:
The system processes station entries for special descriptions
THEN:
- The system should check for sfe type codes with us country designation
- Populate special descriptions in report fields while setting seg07 processing flag to no
β Consolidated Acceptance Criteria
- Container data is successfully retrieved → equipment ID is set to the container's equipment ID value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetContainerEquipmentID(["Start Step"])
E_GetContainerEquipmentID(["End Step"])
N_GetContainerEquipmentID_Node0{"Container data is successfully
retrieved"}:::decision N_GetContainerEquipmentID_Node0_action["Equipment ID is set to the
container s equipment ID value"]:::main N_GetContainerEquipmentID_Node0 -- Yes --> N_GetContainerEquipmentID_Node0_action N_GetContainerEquipmentID_Node0_action --> E_GetContainerEquipmentID S_GetContainerEquipmentID --> N_GetContainerEquipmentID_Node0 N_GetContainerEquipmentID_Node0 -- No --> E_GetContainerEquipmentID
retrieved"}:::decision N_GetContainerEquipmentID_Node0_action["Equipment ID is set to the
container s equipment ID value"]:::main N_GetContainerEquipmentID_Node0 -- Yes --> N_GetContainerEquipmentID_Node0_action N_GetContainerEquipmentID_Node0_action --> E_GetContainerEquipmentID S_GetContainerEquipmentID --> N_GetContainerEquipmentID_Node0 N_GetContainerEquipmentID_Node0 -- No --> E_GetContainerEquipmentID
File: GCX003.cbl
GIVEN:
Container is found in primary waybill system
WHEN:
Container data is successfully retrieved
THEN:
Equipment ID is set to the container's equipment ID value
β Consolidated Acceptance Criteria
- System needs original waybill information for container search → fWCIROOT database is accessed using car ID from container inquiry root
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessFWCIROOTDatabase(["Start Step"])
E_AccessFWCIROOTDatabase(["End Step"])
N_AccessFWCIROOTDatabase_Node0{"System needs original waybill
information for container search"}:::decision N_AccessFWCIROOTDatabase_Node0_action["FWCIROOT database is accessed using
car ID from container inquiry root"]:::main N_AccessFWCIROOTDatabase_Node0 -- Yes --> N_AccessFWCIROOTDatabase_Node0_action N_AccessFWCIROOTDatabase_Node0_action --> E_AccessFWCIROOTDatabase S_AccessFWCIROOTDatabase --> N_AccessFWCIROOTDatabase_Node0 N_AccessFWCIROOTDatabase_Node0 -- No --> E_AccessFWCIROOTDatabase
information for container search"}:::decision N_AccessFWCIROOTDatabase_Node0_action["FWCIROOT database is accessed using
car ID from container inquiry root"]:::main N_AccessFWCIROOTDatabase_Node0 -- Yes --> N_AccessFWCIROOTDatabase_Node0_action N_AccessFWCIROOTDatabase_Node0_action --> E_AccessFWCIROOTDatabase S_AccessFWCIROOTDatabase --> N_AccessFWCIROOTDatabase_Node0 N_AccessFWCIROOTDatabase_Node0 -- No --> E_AccessFWCIROOTDatabase
File: GCX003.cbl
GIVEN:
Fallback to inquiry system is activated
WHEN:
System needs original waybill information for container search
THEN:
FWCIROOT database is accessed using car ID from container inquiry root
β Consolidated Acceptance Criteria
- System needs to find container cross-reference data → fWIQROOT database is accessed using road number, station number, and waybill number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessFWIQROOTDatabase(["Start Step"])
E_AccessFWIQROOTDatabase(["End Step"])
N_AccessFWIQROOTDatabase_Node0{"System needs to find container
cross-reference data"}:::decision N_AccessFWIQROOTDatabase_Node0_action["FWIQROOT database is accessed using
road number, station number, and
waybill number"]:::main N_AccessFWIQROOTDatabase_Node0 -- Yes --> N_AccessFWIQROOTDatabase_Node0_action N_AccessFWIQROOTDatabase_Node0_action --> E_AccessFWIQROOTDatabase S_AccessFWIQROOTDatabase --> N_AccessFWIQROOTDatabase_Node0 N_AccessFWIQROOTDatabase_Node0 -- No --> E_AccessFWIQROOTDatabase
cross-reference data"}:::decision N_AccessFWIQROOTDatabase_Node0_action["FWIQROOT database is accessed using
road number, station number, and
waybill number"]:::main N_AccessFWIQROOTDatabase_Node0 -- Yes --> N_AccessFWIQROOTDatabase_Node0_action N_AccessFWIQROOTDatabase_Node0_action --> E_AccessFWIQROOTDatabase S_AccessFWIQROOTDatabase --> N_AccessFWIQROOTDatabase_Node0 N_AccessFWIQROOTDatabase_Node0 -- No --> E_AccessFWIQROOTDatabase
File: GCX003.cbl
GIVEN:
Original waybill information is retrieved from FWCIROOT
WHEN:
System needs to find container cross-reference data
THEN:
FWIQROOT database is accessed using road number, station number, and waybill number
β Consolidated Acceptance Criteria
- System processes inquiry bottom line records → container cross-reference data is extracted from FWIQBOTL records up to maximum of 30 entries
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveContainerCrossReferenceData(["Start Step"])
E_RetrieveContainerCrossReferenceData(["End Step"])
N_RetrieveContainerCrossReferenceData_Node0{"System processes inquiry bottom
line records"}:::decision N_RetrieveContainerCrossReferenceData_Node0_action["Container cross-reference data is
extracted from FWIQBOTL records up
to maximum of 30 entries"]:::main N_RetrieveContainerCrossReferenceData_Node0 -- Yes --> N_RetrieveContainerCrossReferenceData_Node0_action N_RetrieveContainerCrossReferenceData_Node0_action --> E_RetrieveContainerCrossReferenceData S_RetrieveContainerCrossReferenceData --> N_RetrieveContainerCrossReferenceData_Node0 N_RetrieveContainerCrossReferenceData_Node0 -- No --> E_RetrieveContainerCrossReferenceData
line records"}:::decision N_RetrieveContainerCrossReferenceData_Node0_action["Container cross-reference data is
extracted from FWIQBOTL records up
to maximum of 30 entries"]:::main N_RetrieveContainerCrossReferenceData_Node0 -- Yes --> N_RetrieveContainerCrossReferenceData_Node0_action N_RetrieveContainerCrossReferenceData_Node0_action --> E_RetrieveContainerCrossReferenceData S_RetrieveContainerCrossReferenceData --> N_RetrieveContainerCrossReferenceData_Node0 N_RetrieveContainerCrossReferenceData_Node0 -- No --> E_RetrieveContainerCrossReferenceData
File: GCX003.cbl
GIVEN:
FWIQROOT database access is successful
WHEN:
System processes inquiry bottom line records
THEN:
Container cross-reference data is extracted from FWIQBOTL records up to maximum of 30 entries
β Consolidated Acceptance Criteria
- Inquiry bottom line record contains 'T/C XREF' in first 8 characters → container ID is extracted from positions 28-39, road number from positions 10-12, station number from positions 14-19, and waybill number from positions 21-26
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ParseContainerCrossReferenceInformation(["Start Step"])
E_ParseContainerCrossReferenceInformation(["End Step"])
N_ParseContainerCrossReferenceInformation_Node0{"Inquiry bottom line record contains
TC XREF in first 8 characters"}:::decision N_ParseContainerCrossReferenceInformation_Node0_action["Container ID is extracted from
positions 28-39, road number from
positions 10-12, station number from
positions 14-19, and waybill number
from positions 21-26"]:::main N_ParseContainerCrossReferenceInformation_Node0 -- Yes --> N_ParseContainerCrossReferenceInformation_Node0_action N_ParseContainerCrossReferenceInformation_Node0_action --> E_ParseContainerCrossReferenceInformation S_ParseContainerCrossReferenceInformation --> N_ParseContainerCrossReferenceInformation_Node0 N_ParseContainerCrossReferenceInformation_Node0 -- No --> E_ParseContainerCrossReferenceInformation
TC XREF in first 8 characters"}:::decision N_ParseContainerCrossReferenceInformation_Node0_action["Container ID is extracted from
positions 28-39, road number from
positions 10-12, station number from
positions 14-19, and waybill number
from positions 21-26"]:::main N_ParseContainerCrossReferenceInformation_Node0 -- Yes --> N_ParseContainerCrossReferenceInformation_Node0_action N_ParseContainerCrossReferenceInformation_Node0_action --> E_ParseContainerCrossReferenceInformation S_ParseContainerCrossReferenceInformation --> N_ParseContainerCrossReferenceInformation_Node0 N_ParseContainerCrossReferenceInformation_Node0 -- No --> E_ParseContainerCrossReferenceInformation
File: GCX003.cbl
GIVEN:
Container cross-reference data is available from inquiry system
WHEN:
Inquiry bottom line record contains 'T/C XREF' in first 8 characters
THEN:
Container ID is extracted from positions 28-39, road number from positions 10-12, station number from positions 14-19, and waybill number from positions 21-26
β Consolidated Acceptance Criteria
- At least one valid container ID is extracted from cross-reference data → container found status is set to true and container IQ found status is set to true with first container ID assigned as equipment ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetContainerFoundfromInquirySystem(["Start Step"])
E_SetContainerFoundfromInquirySystem(["End Step"])
N_SetContainerFoundfromInquirySystem_Node0{"At least one valid container ID is
extracted from cross-reference data"}:::decision N_SetContainerFoundfromInquirySystem_Node0_action["Container found status is set to
true and container IQ found status
is set to true with first container
ID assigned as equipment ID"]:::main N_SetContainerFoundfromInquirySystem_Node0 -- Yes --> N_SetContainerFoundfromInquirySystem_Node0_action N_SetContainerFoundfromInquirySystem_Node0_action --> E_SetContainerFoundfromInquirySystem S_SetContainerFoundfromInquirySystem --> N_SetContainerFoundfromInquirySystem_Node0 N_SetContainerFoundfromInquirySystem_Node0 -- No --> E_SetContainerFoundfromInquirySystem
extracted from cross-reference data"}:::decision N_SetContainerFoundfromInquirySystem_Node0_action["Container found status is set to
true and container IQ found status
is set to true with first container
ID assigned as equipment ID"]:::main N_SetContainerFoundfromInquirySystem_Node0 -- Yes --> N_SetContainerFoundfromInquirySystem_Node0_action N_SetContainerFoundfromInquirySystem_Node0_action --> E_SetContainerFoundfromInquirySystem S_SetContainerFoundfromInquirySystem --> N_SetContainerFoundfromInquirySystem_Node0 N_SetContainerFoundfromInquirySystem_Node0 -- No --> E_SetContainerFoundfromInquirySystem
File: GCX003.cbl
GIVEN:
Container information is successfully parsed from inquiry system
WHEN:
At least one valid container ID is extracted from cross-reference data
THEN:
- Container found status is set to true
- Container iq found status is set to true with first container id assigned as equipment id
β Consolidated Acceptance Criteria
- No valid container information is available from either source → container not found status is set and container IQ not found status is set
- All retrieval attempts have been exhausted → set container not found status and container inquiry not found status to indicate unsuccessful retrieval
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetContainerNotFoundStatus(["Start Step"])
E_SetContainerNotFoundStatus(["End Step"])
N_SetContainerNotFoundStatus_Node0{"No valid container information is
available from either source"}:::decision N_SetContainerNotFoundStatus_Node0_action["Container not found status is set
and container IQ not found status is
set"]:::main N_SetContainerNotFoundStatus_Node0 -- Yes --> N_SetContainerNotFoundStatus_Node0_action N_SetContainerNotFoundStatus_Node0_action --> E_SetContainerNotFoundStatus S_SetContainerNotFoundStatus --> N_SetContainerNotFoundStatus_Node0 N_SetContainerNotFoundStatus_Node1{"All retrieval attempts have been
exhausted"}:::decision N_SetContainerNotFoundStatus_Node1_action["Set container not found status and
container inquiry not found status
to indicate unsuccessful retrieval"]:::main N_SetContainerNotFoundStatus_Node1 -- Yes --> N_SetContainerNotFoundStatus_Node1_action N_SetContainerNotFoundStatus_Node1_action --> E_SetContainerNotFoundStatus N_SetContainerNotFoundStatus_Node0 -- No --> N_SetContainerNotFoundStatus_Node1 N_SetContainerNotFoundStatus_Node1 -- No --> E_SetContainerNotFoundStatus
available from either source"}:::decision N_SetContainerNotFoundStatus_Node0_action["Container not found status is set
and container IQ not found status is
set"]:::main N_SetContainerNotFoundStatus_Node0 -- Yes --> N_SetContainerNotFoundStatus_Node0_action N_SetContainerNotFoundStatus_Node0_action --> E_SetContainerNotFoundStatus S_SetContainerNotFoundStatus --> N_SetContainerNotFoundStatus_Node0 N_SetContainerNotFoundStatus_Node1{"All retrieval attempts have been
exhausted"}:::decision N_SetContainerNotFoundStatus_Node1_action["Set container not found status and
container inquiry not found status
to indicate unsuccessful retrieval"]:::main N_SetContainerNotFoundStatus_Node1 -- Yes --> N_SetContainerNotFoundStatus_Node1_action N_SetContainerNotFoundStatus_Node1_action --> E_SetContainerNotFoundStatus N_SetContainerNotFoundStatus_Node0 -- No --> N_SetContainerNotFoundStatus_Node1 N_SetContainerNotFoundStatus_Node1 -- No --> E_SetContainerNotFoundStatus
File: GCX003.cbl
GIVEN:
Container retrieval fails from both primary waybill system and inquiry system
WHEN:
No valid container information is available from either source
THEN:
- Container not found status is set
- Container iq not found status is set
File: GCX003.cbl
GIVEN:
Container information cannot be found in any available system
WHEN:
All retrieval attempts have been exhausted
THEN:
- Set container not found status
- Container inquiry not found status to indicate unsuccessful retrieval
β Consolidated Acceptance Criteria
- Container status is determined (found or not found) → system proceeds to next container in the processing sequence
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContinuewithNextContainerProcessing(["Start Step"])
E_ContinuewithNextContainerProcessing(["End Step"])
N_ContinuewithNextContainerProcessing_Node0{"Container status is determined
found or not found"}:::decision N_ContinuewithNextContainerProcessing_Node0_action["System proceeds to next container
in the processing sequence"]:::main N_ContinuewithNextContainerProcessing_Node0 -- Yes --> N_ContinuewithNextContainerProcessing_Node0_action N_ContinuewithNextContainerProcessing_Node0_action --> E_ContinuewithNextContainerProcessing S_ContinuewithNextContainerProcessing --> N_ContinuewithNextContainerProcessing_Node0 N_ContinuewithNextContainerProcessing_Node0 -- No --> E_ContinuewithNextContainerProcessing
found or not found"}:::decision N_ContinuewithNextContainerProcessing_Node0_action["System proceeds to next container
in the processing sequence"]:::main N_ContinuewithNextContainerProcessing_Node0 -- Yes --> N_ContinuewithNextContainerProcessing_Node0_action N_ContinuewithNextContainerProcessing_Node0_action --> E_ContinuewithNextContainerProcessing S_ContinuewithNextContainerProcessing --> N_ContinuewithNextContainerProcessing_Node0 N_ContinuewithNextContainerProcessing_Node0 -- No --> E_ContinuewithNextContainerProcessing
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Container retrieval process is completed for current container
WHEN:
Container status is determined (found or not found)
THEN:
System proceeds to next container in the processing sequence
β Consolidated Acceptance Criteria
- The system begins the train list storage process → the train header information is initialized and cleared of any previous data to prepare for new train data storage
- The system begins train list storage process → the train header information structure is initialized to empty values
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeTrainHeaderInformation(["Start Step"])
E_InitializeTrainHeaderInformation(["End Step"])
N_InitializeTrainHeaderInformation_Node0{"The system begins the train list
storage process"}:::decision N_InitializeTrainHeaderInformation_Node0_action["The train header information is
initialized and cleared of any
previous data to prepare for new
train data storage"]:::main N_InitializeTrainHeaderInformation_Node0 -- Yes --> N_InitializeTrainHeaderInformation_Node0_action N_InitializeTrainHeaderInformation_Node0_action --> E_InitializeTrainHeaderInformation S_InitializeTrainHeaderInformation --> N_InitializeTrainHeaderInformation_Node0 N_InitializeTrainHeaderInformation_Node1{"The system begins train list
storage process"}:::decision N_InitializeTrainHeaderInformation_Node1_action["The train header information
structure is initialized to empty
values"]:::main N_InitializeTrainHeaderInformation_Node1 -- Yes --> N_InitializeTrainHeaderInformation_Node1_action N_InitializeTrainHeaderInformation_Node1_action --> E_InitializeTrainHeaderInformation N_InitializeTrainHeaderInformation_Node0 -- No --> N_InitializeTrainHeaderInformation_Node1 N_InitializeTrainHeaderInformation_Node1 -- No --> E_InitializeTrainHeaderInformation
storage process"}:::decision N_InitializeTrainHeaderInformation_Node0_action["The train header information is
initialized and cleared of any
previous data to prepare for new
train data storage"]:::main N_InitializeTrainHeaderInformation_Node0 -- Yes --> N_InitializeTrainHeaderInformation_Node0_action N_InitializeTrainHeaderInformation_Node0_action --> E_InitializeTrainHeaderInformation S_InitializeTrainHeaderInformation --> N_InitializeTrainHeaderInformation_Node0 N_InitializeTrainHeaderInformation_Node1{"The system begins train list
storage process"}:::decision N_InitializeTrainHeaderInformation_Node1_action["The train header information
structure is initialized to empty
values"]:::main N_InitializeTrainHeaderInformation_Node1 -- Yes --> N_InitializeTrainHeaderInformation_Node1_action N_InitializeTrainHeaderInformation_Node1_action --> E_InitializeTrainHeaderInformation N_InitializeTrainHeaderInformation_Node0 -- No --> N_InitializeTrainHeaderInformation_Node1 N_InitializeTrainHeaderInformation_Node1 -- No --> E_InitializeTrainHeaderInformation
File: GCX003.cbl
GIVEN:
A train transmission has been successfully validated and approved for sending
WHEN:
The system begins the train list storage process
THEN:
- The train header information is initialized
- Cleared of any previous data to prepare for new train data storage
File: GCX003.cbl
GIVEN:
A train transmission has been successfully processed
WHEN:
The system begins train list storage process
THEN:
The train header information structure is initialized to empty values
β Consolidated Acceptance Criteria
- Setting origin station details → uS station code, station name, and FIRMS code are stored from the validated station information
- Setting origin station details → origin station US code, station name, and FIRMS code are stored in the train record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetOriginStationDetails(["Start Step"])
E_SetOriginStationDetails(["End Step"])
N_SetOriginStationDetails_Node0{"Setting origin station details"}:::decision
N_SetOriginStationDetails_Node0_action["US station code, station name, and
FIRMS code are stored from the
validated station information"]:::main N_SetOriginStationDetails_Node0 -- Yes --> N_SetOriginStationDetails_Node0_action N_SetOriginStationDetails_Node0_action --> E_SetOriginStationDetails S_SetOriginStationDetails --> N_SetOriginStationDetails_Node0 N_SetOriginStationDetails_Node1{"Setting origin station details"}:::decision N_SetOriginStationDetails_Node1_action["Origin station US code, station
name, and FIRMS code are stored in
the train record"]:::main N_SetOriginStationDetails_Node1 -- Yes --> N_SetOriginStationDetails_Node1_action N_SetOriginStationDetails_Node1_action --> E_SetOriginStationDetails N_SetOriginStationDetails_Node0 -- No --> N_SetOriginStationDetails_Node1 N_SetOriginStationDetails_Node1 -- No --> E_SetOriginStationDetails
FIRMS code are stored from the
validated station information"]:::main N_SetOriginStationDetails_Node0 -- Yes --> N_SetOriginStationDetails_Node0_action N_SetOriginStationDetails_Node0_action --> E_SetOriginStationDetails S_SetOriginStationDetails --> N_SetOriginStationDetails_Node0 N_SetOriginStationDetails_Node1{"Setting origin station details"}:::decision N_SetOriginStationDetails_Node1_action["Origin station US code, station
name, and FIRMS code are stored in
the train record"]:::main N_SetOriginStationDetails_Node1 -- Yes --> N_SetOriginStationDetails_Node1_action N_SetOriginStationDetails_Node1_action --> E_SetOriginStationDetails N_SetOriginStationDetails_Node0 -- No --> N_SetOriginStationDetails_Node1 N_SetOriginStationDetails_Node1 -- No --> E_SetOriginStationDetails
File: GCX003.cbl
GIVEN:
Train identification data has been set
WHEN:
Setting origin station details
THEN:
US station code, station name, and FIRMS code are stored from the validated station information
File: GCX003.cbl
GIVEN:
Train identification data has been set
WHEN:
Setting origin station details
THEN:
Origin station US code, station name, and FIRMS code are stored in the train record
β Consolidated Acceptance Criteria
- Setting ETA information → eTA date and ETA time are stored from the validated request data
- Setting ETA information → eTA date and ETA time are stored in the train record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetETAInformation(["Start Step"])
E_SetETAInformation(["End Step"])
N_SetETAInformation_Node0{"Setting ETA information"}:::decision
N_SetETAInformation_Node0_action["ETA date and ETA time are stored
from the validated request data"]:::main N_SetETAInformation_Node0 -- Yes --> N_SetETAInformation_Node0_action N_SetETAInformation_Node0_action --> E_SetETAInformation S_SetETAInformation --> N_SetETAInformation_Node0 N_SetETAInformation_Node1{"Setting ETA information"}:::decision N_SetETAInformation_Node1_action["ETA date and ETA time are stored in
the train record"]:::main N_SetETAInformation_Node1 -- Yes --> N_SetETAInformation_Node1_action N_SetETAInformation_Node1_action --> E_SetETAInformation N_SetETAInformation_Node0 -- No --> N_SetETAInformation_Node1 N_SetETAInformation_Node1 -- No --> E_SetETAInformation
from the validated request data"]:::main N_SetETAInformation_Node0 -- Yes --> N_SetETAInformation_Node0_action N_SetETAInformation_Node0_action --> E_SetETAInformation S_SetETAInformation --> N_SetETAInformation_Node0 N_SetETAInformation_Node1{"Setting ETA information"}:::decision N_SetETAInformation_Node1_action["ETA date and ETA time are stored in
the train record"]:::main N_SetETAInformation_Node1 -- Yes --> N_SetETAInformation_Node1_action N_SetETAInformation_Node1_action --> E_SetETAInformation N_SetETAInformation_Node0 -- No --> N_SetETAInformation_Node1 N_SetETAInformation_Node1 -- No --> E_SetETAInformation
File: GCX003.cbl
GIVEN:
Origin station details have been set
WHEN:
Setting ETA information
THEN:
- Eta date
- Eta time are stored from the validated request data
File: GCX003.cbl
GIVEN:
Origin station details have been set
WHEN:
Setting ETA information
THEN:
- Eta date
- Eta time are stored in the train record
β Consolidated Acceptance Criteria
- Storing container information → container ID is stored as equipment ID and container flag is set to true
- Storing container information → container ID is stored as equipment ID and container flag is set to TRUE
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreContainerInformation(["Start Step"])
E_StoreContainerInformation(["End Step"])
N_StoreContainerInformation_Node0{"Storing container information"}:::decision
N_StoreContainerInformation_Node0_action["Container ID is stored as equipment
ID and container flag is set to true"]:::main N_StoreContainerInformation_Node0 -- Yes --> N_StoreContainerInformation_Node0_action N_StoreContainerInformation_Node0_action --> E_StoreContainerInformation S_StoreContainerInformation --> N_StoreContainerInformation_Node0 N_StoreContainerInformation_Node1{"Storing container information"}:::decision N_StoreContainerInformation_Node1_action["Container ID is stored as equipment
ID and container flag is set to TRUE"]:::main N_StoreContainerInformation_Node1 -- Yes --> N_StoreContainerInformation_Node1_action N_StoreContainerInformation_Node1_action --> E_StoreContainerInformation N_StoreContainerInformation_Node0 -- No --> N_StoreContainerInformation_Node1 N_StoreContainerInformation_Node1 -- No --> E_StoreContainerInformation
ID and container flag is set to true"]:::main N_StoreContainerInformation_Node0 -- Yes --> N_StoreContainerInformation_Node0_action N_StoreContainerInformation_Node0_action --> E_StoreContainerInformation S_StoreContainerInformation --> N_StoreContainerInformation_Node0 N_StoreContainerInformation_Node1{"Storing container information"}:::decision N_StoreContainerInformation_Node1_action["Container ID is stored as equipment
ID and container flag is set to TRUE"]:::main N_StoreContainerInformation_Node1 -- Yes --> N_StoreContainerInformation_Node1_action N_StoreContainerInformation_Node1_action --> E_StoreContainerInformation N_StoreContainerInformation_Node0 -- No --> N_StoreContainerInformation_Node1 N_StoreContainerInformation_Node1 -- No --> E_StoreContainerInformation
File: GCX003.cbl
GIVEN:
Equipment has been identified as a container
WHEN:
Storing container information
THEN:
- Container id is stored as equipment id
- Container flag is set to true
File: GCX003.cbl
GIVEN:
Equipment type is determined to be container
WHEN:
Storing container information
THEN:
- Container id is stored as equipment id
- Container flag is set to true
β Consolidated Acceptance Criteria
- Storing car information → car initials and number are combined to form complete equipment ID for storage
- Storing car information → car initials are moved to equipment initials, zeros are moved to equipment number prefix, car number is moved to equipment number, and constructed equipment ID is stored
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreCarInformation(["Start Step"])
E_StoreCarInformation(["End Step"])
N_StoreCarInformation_Node0{"Storing car information"}:::decision
N_StoreCarInformation_Node0_action["Car initials and number are
combined to form complete equipment
ID for storage"]:::main N_StoreCarInformation_Node0 -- Yes --> N_StoreCarInformation_Node0_action N_StoreCarInformation_Node0_action --> E_StoreCarInformation S_StoreCarInformation --> N_StoreCarInformation_Node0 N_StoreCarInformation_Node1{"Storing car information"}:::decision N_StoreCarInformation_Node1_action["Car initials are moved to equipment
initials, zeros are moved to
equipment number prefix, car number
is moved to equipment number, and
constructed equipment ID is stored"]:::main N_StoreCarInformation_Node1 -- Yes --> N_StoreCarInformation_Node1_action N_StoreCarInformation_Node1_action --> E_StoreCarInformation N_StoreCarInformation_Node0 -- No --> N_StoreCarInformation_Node1 N_StoreCarInformation_Node1 -- No --> E_StoreCarInformation
combined to form complete equipment
ID for storage"]:::main N_StoreCarInformation_Node0 -- Yes --> N_StoreCarInformation_Node0_action N_StoreCarInformation_Node0_action --> E_StoreCarInformation S_StoreCarInformation --> N_StoreCarInformation_Node0 N_StoreCarInformation_Node1{"Storing car information"}:::decision N_StoreCarInformation_Node1_action["Car initials are moved to equipment
initials, zeros are moved to
equipment number prefix, car number
is moved to equipment number, and
constructed equipment ID is stored"]:::main N_StoreCarInformation_Node1 -- Yes --> N_StoreCarInformation_Node1_action N_StoreCarInformation_Node1_action --> E_StoreCarInformation N_StoreCarInformation_Node0 -- No --> N_StoreCarInformation_Node1 N_StoreCarInformation_Node1 -- No --> E_StoreCarInformation
File: GCX003.cbl
GIVEN:
Equipment has been identified as a railcar
WHEN:
Storing car information
THEN:
- Car initials
- Number are combined to form complete equipment id for storage
File: GCX003.cbl
GIVEN:
Equipment type is determined to be car
WHEN:
Storing car information
THEN:
Car initials are moved to equipment initials, zeros are moved to equipment number prefix, car number is moved to equipment number, and constructed equipment ID is stored
β Consolidated Acceptance Criteria
- Setting equipment type code → equipment type code from the report working storage is stored in the train list equipment record
- Setting equipment type code → equipment type code from report working storage is stored in train equipment record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentTypeCode(["Start Step"])
E_SetEquipmentTypeCode(["End Step"])
N_SetEquipmentTypeCode_Node0{"Setting equipment type code"}:::decision
N_SetEquipmentTypeCode_Node0_action["Equipment type code from the report
working storage is stored in the
train list equipment record"]:::main N_SetEquipmentTypeCode_Node0 -- Yes --> N_SetEquipmentTypeCode_Node0_action N_SetEquipmentTypeCode_Node0_action --> E_SetEquipmentTypeCode S_SetEquipmentTypeCode --> N_SetEquipmentTypeCode_Node0 N_SetEquipmentTypeCode_Node1{"Setting equipment type code"}:::decision N_SetEquipmentTypeCode_Node1_action["Equipment type code from report
working storage is stored in train
equipment record"]:::main N_SetEquipmentTypeCode_Node1 -- Yes --> N_SetEquipmentTypeCode_Node1_action N_SetEquipmentTypeCode_Node1_action --> E_SetEquipmentTypeCode N_SetEquipmentTypeCode_Node0 -- No --> N_SetEquipmentTypeCode_Node1 N_SetEquipmentTypeCode_Node1 -- No --> E_SetEquipmentTypeCode
working storage is stored in the
train list equipment record"]:::main N_SetEquipmentTypeCode_Node0 -- Yes --> N_SetEquipmentTypeCode_Node0_action N_SetEquipmentTypeCode_Node0_action --> E_SetEquipmentTypeCode S_SetEquipmentTypeCode --> N_SetEquipmentTypeCode_Node0 N_SetEquipmentTypeCode_Node1{"Setting equipment type code"}:::decision N_SetEquipmentTypeCode_Node1_action["Equipment type code from report
working storage is stored in train
equipment record"]:::main N_SetEquipmentTypeCode_Node1 -- Yes --> N_SetEquipmentTypeCode_Node1_action N_SetEquipmentTypeCode_Node1_action --> E_SetEquipmentTypeCode N_SetEquipmentTypeCode_Node0 -- No --> N_SetEquipmentTypeCode_Node1 N_SetEquipmentTypeCode_Node1 -- No --> E_SetEquipmentTypeCode
File: GCX003.cbl
GIVEN:
Equipment ID has been stored
WHEN:
Setting equipment type code
THEN:
Equipment type code from the report working storage is stored in the train list equipment record
File: GCX003.cbl
GIVEN:
Equipment information has been stored (container or car)
WHEN:
Setting equipment type code
THEN:
Equipment type code from report working storage is stored in train equipment record
β Consolidated Acceptance Criteria
- Determining load/empty status → if cargo control number exists, use load/empty indicator from report; otherwise set status to empty
- Determining load/empty status → if report US CCN key is spaces, then load/empty indicator is set to 'E' (empty), otherwise load/empty indicator is set from report load/empty indicator
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineLoadEmptyStatus(["Start Step"])
E_DetermineLoadEmptyStatus(["End Step"])
N_DetermineLoadEmptyStatus_Node0{"Determining loadempty status"}:::decision
N_DetermineLoadEmptyStatus_Node0_action["If cargo control number exists, use
loadempty indicator from report
otherwise set status to empty"]:::main N_DetermineLoadEmptyStatus_Node0 -- Yes --> N_DetermineLoadEmptyStatus_Node0_action N_DetermineLoadEmptyStatus_Node0_action --> E_DetermineLoadEmptyStatus S_DetermineLoadEmptyStatus --> N_DetermineLoadEmptyStatus_Node0 N_DetermineLoadEmptyStatus_Node1{"Determining loadempty status"}:::decision N_DetermineLoadEmptyStatus_Node1_action["If report US CCN key is spaces,
then loadempty indicator is set to E
empty, otherwise loadempty indicator
is set from report loadempty
indicator"]:::main N_DetermineLoadEmptyStatus_Node1 -- Yes --> N_DetermineLoadEmptyStatus_Node1_action N_DetermineLoadEmptyStatus_Node1_action --> E_DetermineLoadEmptyStatus N_DetermineLoadEmptyStatus_Node0 -- No --> N_DetermineLoadEmptyStatus_Node1 N_DetermineLoadEmptyStatus_Node1 -- No --> E_DetermineLoadEmptyStatus
loadempty indicator from report
otherwise set status to empty"]:::main N_DetermineLoadEmptyStatus_Node0 -- Yes --> N_DetermineLoadEmptyStatus_Node0_action N_DetermineLoadEmptyStatus_Node0_action --> E_DetermineLoadEmptyStatus S_DetermineLoadEmptyStatus --> N_DetermineLoadEmptyStatus_Node0 N_DetermineLoadEmptyStatus_Node1{"Determining loadempty status"}:::decision N_DetermineLoadEmptyStatus_Node1_action["If report US CCN key is spaces,
then loadempty indicator is set to E
empty, otherwise loadempty indicator
is set from report loadempty
indicator"]:::main N_DetermineLoadEmptyStatus_Node1 -- Yes --> N_DetermineLoadEmptyStatus_Node1_action N_DetermineLoadEmptyStatus_Node1_action --> E_DetermineLoadEmptyStatus N_DetermineLoadEmptyStatus_Node0 -- No --> N_DetermineLoadEmptyStatus_Node1 N_DetermineLoadEmptyStatus_Node1 -- No --> E_DetermineLoadEmptyStatus
File: GCX003.cbl
GIVEN:
Equipment type code has been set
WHEN:
Determining load/empty status
THEN:
If cargo control number exists, use load/empty indicator from report; otherwise set status to empty
File: GCX003.cbl
GIVEN:
Equipment type code has been set
WHEN:
Determining load/empty status
THEN:
If report US CCN key is spaces, then load/empty indicator is set to 'E' (empty), otherwise load/empty indicator is set from report load/empty indicator
β Consolidated Acceptance Criteria
- Storing cargo control number → uS cargo control number from the report working storage is stored in the equipment record
- Storing cargo control number → uS CCN key from report working storage is stored in train equipment US CCN key field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreCargoControlNumber(["Start Step"])
E_StoreCargoControlNumber(["End Step"])
N_StoreCargoControlNumber_Node0{"Storing cargo control number"}:::decision
N_StoreCargoControlNumber_Node0_action["US cargo control number from the
report working storage is stored in
the equipment record"]:::main N_StoreCargoControlNumber_Node0 -- Yes --> N_StoreCargoControlNumber_Node0_action N_StoreCargoControlNumber_Node0_action --> E_StoreCargoControlNumber S_StoreCargoControlNumber --> N_StoreCargoControlNumber_Node0 N_StoreCargoControlNumber_Node1{"Storing cargo control number"}:::decision N_StoreCargoControlNumber_Node1_action["US CCN key from report working
storage is stored in train equipment
US CCN key field"]:::main N_StoreCargoControlNumber_Node1 -- Yes --> N_StoreCargoControlNumber_Node1_action N_StoreCargoControlNumber_Node1_action --> E_StoreCargoControlNumber N_StoreCargoControlNumber_Node0 -- No --> N_StoreCargoControlNumber_Node1 N_StoreCargoControlNumber_Node1 -- No --> E_StoreCargoControlNumber
report working storage is stored in
the equipment record"]:::main N_StoreCargoControlNumber_Node0 -- Yes --> N_StoreCargoControlNumber_Node0_action N_StoreCargoControlNumber_Node0_action --> E_StoreCargoControlNumber S_StoreCargoControlNumber --> N_StoreCargoControlNumber_Node0 N_StoreCargoControlNumber_Node1{"Storing cargo control number"}:::decision N_StoreCargoControlNumber_Node1_action["US CCN key from report working
storage is stored in train equipment
US CCN key field"]:::main N_StoreCargoControlNumber_Node1 -- Yes --> N_StoreCargoControlNumber_Node1_action N_StoreCargoControlNumber_Node1_action --> E_StoreCargoControlNumber N_StoreCargoControlNumber_Node0 -- No --> N_StoreCargoControlNumber_Node1 N_StoreCargoControlNumber_Node1 -- No --> E_StoreCargoControlNumber
File: GCX003.cbl
GIVEN:
Load/empty status has been determined
WHEN:
Storing cargo control number
THEN:
US cargo control number from the report working storage is stored in the equipment record
File: GCX003.cbl
GIVEN:
Load/empty status has been determined
WHEN:
Storing cargo control number
THEN:
US CCN key from report working storage is stored in train equipment US CCN key field
β Consolidated Acceptance Criteria
- Storing condition response code → cargo condition response code from the report working storage is stored in the equipment record
- Storing condition response code → cargo condition response code from report working storage is stored in train equipment condition response code field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreConditionResponseCode(["Start Step"])
E_StoreConditionResponseCode(["End Step"])
N_StoreConditionResponseCode_Node0{"Storing condition response code"}:::decision
N_StoreConditionResponseCode_Node0_action["Cargo condition response code from
the report working storage is stored
in the equipment record"]:::main N_StoreConditionResponseCode_Node0 -- Yes --> N_StoreConditionResponseCode_Node0_action N_StoreConditionResponseCode_Node0_action --> E_StoreConditionResponseCode S_StoreConditionResponseCode --> N_StoreConditionResponseCode_Node0 N_StoreConditionResponseCode_Node1{"Storing condition response code"}:::decision N_StoreConditionResponseCode_Node1_action["Cargo condition response code from
report working storage is stored in
train equipment condition response
code field"]:::main N_StoreConditionResponseCode_Node1 -- Yes --> N_StoreConditionResponseCode_Node1_action N_StoreConditionResponseCode_Node1_action --> E_StoreConditionResponseCode N_StoreConditionResponseCode_Node0 -- No --> N_StoreConditionResponseCode_Node1 N_StoreConditionResponseCode_Node1 -- No --> E_StoreConditionResponseCode
the report working storage is stored
in the equipment record"]:::main N_StoreConditionResponseCode_Node0 -- Yes --> N_StoreConditionResponseCode_Node0_action N_StoreConditionResponseCode_Node0_action --> E_StoreConditionResponseCode S_StoreConditionResponseCode --> N_StoreConditionResponseCode_Node0 N_StoreConditionResponseCode_Node1{"Storing condition response code"}:::decision N_StoreConditionResponseCode_Node1_action["Cargo condition response code from
report working storage is stored in
train equipment condition response
code field"]:::main N_StoreConditionResponseCode_Node1 -- Yes --> N_StoreConditionResponseCode_Node1_action N_StoreConditionResponseCode_Node1_action --> E_StoreConditionResponseCode N_StoreConditionResponseCode_Node0 -- No --> N_StoreConditionResponseCode_Node1 N_StoreConditionResponseCode_Node1 -- No --> E_StoreConditionResponseCode
File: GCX003.cbl
GIVEN:
Cargo control number has been stored
WHEN:
Storing condition response code
THEN:
Cargo condition response code from the report working storage is stored in the equipment record
File: GCX003.cbl
GIVEN:
Cargo control number has been stored
WHEN:
Storing condition response code
THEN:
Cargo condition response code from report working storage is stored in train equipment condition response code field
β Consolidated Acceptance Criteria
- Storing empty car indicator → empty car routing indicator from the report working storage is stored in the equipment record
- Storing empty car indicator → empty car indicator from report working storage is stored in train equipment empty car indicator field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreEmptyCarIndicator(["Start Step"])
E_StoreEmptyCarIndicator(["End Step"])
N_StoreEmptyCarIndicator_Node0{"Storing empty car indicator"}:::decision
N_StoreEmptyCarIndicator_Node0_action["Empty car routing indicator from
the report working storage is stored
in the equipment record"]:::main N_StoreEmptyCarIndicator_Node0 -- Yes --> N_StoreEmptyCarIndicator_Node0_action N_StoreEmptyCarIndicator_Node0_action --> E_StoreEmptyCarIndicator S_StoreEmptyCarIndicator --> N_StoreEmptyCarIndicator_Node0 N_StoreEmptyCarIndicator_Node1{"Storing empty car indicator"}:::decision N_StoreEmptyCarIndicator_Node1_action["Empty car indicator from report
working storage is stored in train
equipment empty car indicator field"]:::main N_StoreEmptyCarIndicator_Node1 -- Yes --> N_StoreEmptyCarIndicator_Node1_action N_StoreEmptyCarIndicator_Node1_action --> E_StoreEmptyCarIndicator N_StoreEmptyCarIndicator_Node0 -- No --> N_StoreEmptyCarIndicator_Node1 N_StoreEmptyCarIndicator_Node1 -- No --> E_StoreEmptyCarIndicator
the report working storage is stored
in the equipment record"]:::main N_StoreEmptyCarIndicator_Node0 -- Yes --> N_StoreEmptyCarIndicator_Node0_action N_StoreEmptyCarIndicator_Node0_action --> E_StoreEmptyCarIndicator S_StoreEmptyCarIndicator --> N_StoreEmptyCarIndicator_Node0 N_StoreEmptyCarIndicator_Node1{"Storing empty car indicator"}:::decision N_StoreEmptyCarIndicator_Node1_action["Empty car indicator from report
working storage is stored in train
equipment empty car indicator field"]:::main N_StoreEmptyCarIndicator_Node1 -- Yes --> N_StoreEmptyCarIndicator_Node1_action N_StoreEmptyCarIndicator_Node1_action --> E_StoreEmptyCarIndicator N_StoreEmptyCarIndicator_Node0 -- No --> N_StoreEmptyCarIndicator_Node1 N_StoreEmptyCarIndicator_Node1 -- No --> E_StoreEmptyCarIndicator
File: GCX003.cbl
GIVEN:
Condition response code has been stored
WHEN:
Storing empty car indicator
THEN:
Empty car routing indicator from the report working storage is stored in the equipment record
File: GCX003.cbl
GIVEN:
Condition response code has been stored
WHEN:
Storing empty car indicator
THEN:
Empty car indicator from report working storage is stored in train equipment empty car indicator field
β Consolidated Acceptance Criteria
- Finalizing storage process → train list storage process completes and control returns to main processing flow
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TrainListStorageComplete(["Start Step"])
E_TrainListStorageComplete(["End Step"])
N_TrainListStorageComplete_Node0{"Finalizing storage process"}:::decision
N_TrainListStorageComplete_Node0_action["Train list storage process
completes and control returns to
main processing flow"]:::main N_TrainListStorageComplete_Node0 -- Yes --> N_TrainListStorageComplete_Node0_action N_TrainListStorageComplete_Node0_action --> E_TrainListStorageComplete S_TrainListStorageComplete --> N_TrainListStorageComplete_Node0 N_TrainListStorageComplete_Node0 -- No --> E_TrainListStorageComplete
completes and control returns to
main processing flow"]:::main N_TrainListStorageComplete_Node0 -- Yes --> N_TrainListStorageComplete_Node0_action N_TrainListStorageComplete_Node0_action --> E_TrainListStorageComplete S_TrainListStorageComplete --> N_TrainListStorageComplete_Node0 N_TrainListStorageComplete_Node0 -- No --> E_TrainListStorageComplete
File: GCX003.cbl
GIVEN:
Database insert has completed successfully
WHEN:
Finalizing storage process
THEN:
- Train list storage process completes
- Control returns to main processing flow
β Consolidated Acceptance Criteria
- Table overflow condition is detected → system aborts with train list table overflow error message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AbortTableOverflow(["Start Step"])
E_AbortTableOverflow(["End Step"])
N_AbortTableOverflow_Node0{"Table overflow condition is
detected"}:::decision N_AbortTableOverflow_Node0_action["System aborts with train list table
overflow error message"]:::main N_AbortTableOverflow_Node0 -- Yes --> N_AbortTableOverflow_Node0_action N_AbortTableOverflow_Node0_action --> E_AbortTableOverflow S_AbortTableOverflow --> N_AbortTableOverflow_Node0 N_AbortTableOverflow_Node0 -- No --> E_AbortTableOverflow
detected"}:::decision N_AbortTableOverflow_Node0_action["System aborts with train list table
overflow error message"]:::main N_AbortTableOverflow_Node0 -- Yes --> N_AbortTableOverflow_Node0_action N_AbortTableOverflow_Node0_action --> E_AbortTableOverflow S_AbortTableOverflow --> N_AbortTableOverflow_Node0 N_AbortTableOverflow_Node0 -- No --> E_AbortTableOverflow
File: GCX003.cbl
GIVEN:
Equipment table has reached maximum capacity with more items to process
WHEN:
Table overflow condition is detected
THEN:
System aborts with train list table overflow error message
β Consolidated Acceptance Criteria
- Insert failure condition is detected → system aborts with database insert failure error message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AbortInsertFailed(["Start Step"])
E_AbortInsertFailed(["End Step"])
N_AbortInsertFailed_Node0{"Insert failure condition is
detected"}:::decision N_AbortInsertFailed_Node0_action["System aborts with database insert
failure error message"]:::main N_AbortInsertFailed_Node0 -- Yes --> N_AbortInsertFailed_Node0_action N_AbortInsertFailed_Node0_action --> E_AbortInsertFailed S_AbortInsertFailed --> N_AbortInsertFailed_Node0 N_AbortInsertFailed_Node0 -- No --> E_AbortInsertFailed
detected"}:::decision N_AbortInsertFailed_Node0_action["System aborts with database insert
failure error message"]:::main N_AbortInsertFailed_Node0 -- Yes --> N_AbortInsertFailed_Node0_action N_AbortInsertFailed_Node0_action --> E_AbortInsertFailed S_AbortInsertFailed --> N_AbortInsertFailed_Node0 N_AbortInsertFailed_Node0 -- No --> E_AbortInsertFailed
File: GCX003.cbl
GIVEN:
Database insert operation has failed or record already exists
WHEN:
Insert failure condition is detected
THEN:
System aborts with database insert failure error message
β Consolidated Acceptance Criteria
- The report processing is complete → set the report last line index to the current RPT-IDX value and set the new report last line index to the current NEW-RPT-IDX value
- The report processing is complete → set RPT-LAST-LINE to the current RPT-IDX value and NEW-RPT-LAST-LINE to the current NEW-RPT-IDX value
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateReportLastLineIndex(["Start Step"])
E_CalculateReportLastLineIndex(["End Step"])
N_CalculateReportLastLineIndex_Node0{"The report processing is complete"}:::decision
N_CalculateReportLastLineIndex_Node0_action["Set the report last line index to
the current RPT-IDX value and set
the new report last line index to
the current NEW-RPT-IDX value"]:::main N_CalculateReportLastLineIndex_Node0 -- Yes --> N_CalculateReportLastLineIndex_Node0_action N_CalculateReportLastLineIndex_Node0_action --> E_CalculateReportLastLineIndex S_CalculateReportLastLineIndex --> N_CalculateReportLastLineIndex_Node0 N_CalculateReportLastLineIndex_Node1{"The report processing is complete"}:::decision N_CalculateReportLastLineIndex_Node1_action["Set RPT-LAST-LINE to the current
RPT-IDX value and NEW-RPT-LAST-LINE
to the current NEW-RPT-IDX value"]:::main N_CalculateReportLastLineIndex_Node1 -- Yes --> N_CalculateReportLastLineIndex_Node1_action N_CalculateReportLastLineIndex_Node1_action --> E_CalculateReportLastLineIndex N_CalculateReportLastLineIndex_Node0 -- No --> N_CalculateReportLastLineIndex_Node1 N_CalculateReportLastLineIndex_Node1 -- No --> E_CalculateReportLastLineIndex
the current RPT-IDX value and set
the new report last line index to
the current NEW-RPT-IDX value"]:::main N_CalculateReportLastLineIndex_Node0 -- Yes --> N_CalculateReportLastLineIndex_Node0_action N_CalculateReportLastLineIndex_Node0_action --> E_CalculateReportLastLineIndex S_CalculateReportLastLineIndex --> N_CalculateReportLastLineIndex_Node0 N_CalculateReportLastLineIndex_Node1{"The report processing is complete"}:::decision N_CalculateReportLastLineIndex_Node1_action["Set RPT-LAST-LINE to the current
RPT-IDX value and NEW-RPT-LAST-LINE
to the current NEW-RPT-IDX value"]:::main N_CalculateReportLastLineIndex_Node1 -- Yes --> N_CalculateReportLastLineIndex_Node1_action N_CalculateReportLastLineIndex_Node1_action --> E_CalculateReportLastLineIndex N_CalculateReportLastLineIndex_Node0 -- No --> N_CalculateReportLastLineIndex_Node1 N_CalculateReportLastLineIndex_Node1 -- No --> E_CalculateReportLastLineIndex
File: GCX003.cbl
GIVEN:
A report is being finalized
WHEN:
The report processing is complete
THEN:
- Set the report last line index to the current rpt-idx value
- Set the new report last line index to the current new-rpt-idx value
File: GCX003.cbl
GIVEN:
A report is being finalized
WHEN:
The report processing is complete
THEN:
- Set rpt-last-line to the current rpt-idx value
- New-rpt-last-line to the current new-rpt-idx value
β Consolidated Acceptance Criteria
- Generating report headers → set header line 1 flag, populate train ID from request, and populate origin station name from station code table
- Generating report headers → set header line 1 flag, populate train ID from request, and set origin station name from station code table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateHeaderLine1TrainInformation(["Start Step"])
E_GenerateHeaderLine1TrainInformation(["End Step"])
N_GenerateHeaderLine1TrainInformation_Node0{"Generating report headers"}:::decision
N_GenerateHeaderLine1TrainInformation_Node0_action["Set header line 1 flag, populate
train ID from request, and populate
origin station name from station
code table"]:::main N_GenerateHeaderLine1TrainInformation_Node0 -- Yes --> N_GenerateHeaderLine1TrainInformation_Node0_action N_GenerateHeaderLine1TrainInformation_Node0_action --> E_GenerateHeaderLine1TrainInformation S_GenerateHeaderLine1TrainInformation --> N_GenerateHeaderLine1TrainInformation_Node0 N_GenerateHeaderLine1TrainInformation_Node1{"Generating report headers"}:::decision N_GenerateHeaderLine1TrainInformation_Node1_action["Set header line 1 flag, populate
train ID from request, and set
origin station name from station
code table"]:::main N_GenerateHeaderLine1TrainInformation_Node1 -- Yes --> N_GenerateHeaderLine1TrainInformation_Node1_action N_GenerateHeaderLine1TrainInformation_Node1_action --> E_GenerateHeaderLine1TrainInformation N_GenerateHeaderLine1TrainInformation_Node0 -- No --> N_GenerateHeaderLine1TrainInformation_Node1 N_GenerateHeaderLine1TrainInformation_Node1 -- No --> E_GenerateHeaderLine1TrainInformation
train ID from request, and populate
origin station name from station
code table"]:::main N_GenerateHeaderLine1TrainInformation_Node0 -- Yes --> N_GenerateHeaderLine1TrainInformation_Node0_action N_GenerateHeaderLine1TrainInformation_Node0_action --> E_GenerateHeaderLine1TrainInformation S_GenerateHeaderLine1TrainInformation --> N_GenerateHeaderLine1TrainInformation_Node0 N_GenerateHeaderLine1TrainInformation_Node1{"Generating report headers"}:::decision N_GenerateHeaderLine1TrainInformation_Node1_action["Set header line 1 flag, populate
train ID from request, and set
origin station name from station
code table"]:::main N_GenerateHeaderLine1TrainInformation_Node1 -- Yes --> N_GenerateHeaderLine1TrainInformation_Node1_action N_GenerateHeaderLine1TrainInformation_Node1_action --> E_GenerateHeaderLine1TrainInformation N_GenerateHeaderLine1TrainInformation_Node0 -- No --> N_GenerateHeaderLine1TrainInformation_Node1 N_GenerateHeaderLine1TrainInformation_Node1 -- No --> E_GenerateHeaderLine1TrainInformation
File: GCX003.cbl
GIVEN:
A report is being finalized
WHEN:
Generating report headers
THEN:
Set header line 1 flag, populate train ID from request, and populate origin station name from station code table
File: GCX003.cbl
GIVEN:
A report is being finalized
WHEN:
Generating report headers
THEN:
Set header line 1 flag, populate train ID from request, and set origin station name from station code table
β Consolidated Acceptance Criteria
- Generating report headers → set header line 2 flag, populate user ID from CCCOM, populate terminal from CCCOM, populate machine date from CCCOM, populate machine hour from CCCOM, and populate machine minutes from CCCOM
- Generating report headers → set header line 2 flag, populate user ID, terminal ID, machine date, hour, and minute from system information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateHeaderLine2UserInformation(["Start Step"])
E_GenerateHeaderLine2UserInformation(["End Step"])
N_GenerateHeaderLine2UserInformation_Node0{"Generating report headers"}:::decision
N_GenerateHeaderLine2UserInformation_Node0_action["Set header line 2 flag, populate
user ID from CCCOM, populate
terminal from CCCOM, populate
machine date from CCCOM, populate
machine hour from CCCOM, and
populate machine minutes from CCCOM"]:::main N_GenerateHeaderLine2UserInformation_Node0 -- Yes --> N_GenerateHeaderLine2UserInformation_Node0_action N_GenerateHeaderLine2UserInformation_Node0_action --> E_GenerateHeaderLine2UserInformation S_GenerateHeaderLine2UserInformation --> N_GenerateHeaderLine2UserInformation_Node0 N_GenerateHeaderLine2UserInformation_Node1{"Generating report headers"}:::decision N_GenerateHeaderLine2UserInformation_Node1_action["Set header line 2 flag, populate
user ID, terminal ID, machine date,
hour, and minute from system
information"]:::main N_GenerateHeaderLine2UserInformation_Node1 -- Yes --> N_GenerateHeaderLine2UserInformation_Node1_action N_GenerateHeaderLine2UserInformation_Node1_action --> E_GenerateHeaderLine2UserInformation N_GenerateHeaderLine2UserInformation_Node0 -- No --> N_GenerateHeaderLine2UserInformation_Node1 N_GenerateHeaderLine2UserInformation_Node1 -- No --> E_GenerateHeaderLine2UserInformation
user ID from CCCOM, populate
terminal from CCCOM, populate
machine date from CCCOM, populate
machine hour from CCCOM, and
populate machine minutes from CCCOM"]:::main N_GenerateHeaderLine2UserInformation_Node0 -- Yes --> N_GenerateHeaderLine2UserInformation_Node0_action N_GenerateHeaderLine2UserInformation_Node0_action --> E_GenerateHeaderLine2UserInformation S_GenerateHeaderLine2UserInformation --> N_GenerateHeaderLine2UserInformation_Node0 N_GenerateHeaderLine2UserInformation_Node1{"Generating report headers"}:::decision N_GenerateHeaderLine2UserInformation_Node1_action["Set header line 2 flag, populate
user ID, terminal ID, machine date,
hour, and minute from system
information"]:::main N_GenerateHeaderLine2UserInformation_Node1 -- Yes --> N_GenerateHeaderLine2UserInformation_Node1_action N_GenerateHeaderLine2UserInformation_Node1_action --> E_GenerateHeaderLine2UserInformation N_GenerateHeaderLine2UserInformation_Node0 -- No --> N_GenerateHeaderLine2UserInformation_Node1 N_GenerateHeaderLine2UserInformation_Node1 -- No --> E_GenerateHeaderLine2UserInformation
File: GCX003.cbl
GIVEN:
A report is being finalized
WHEN:
Generating report headers
THEN:
Set header line 2 flag, populate user ID from CCCOM, populate terminal from CCCOM, populate machine date from CCCOM, populate machine hour from CCCOM, and populate machine minutes from CCCOM
File: GCX003.cbl
GIVEN:
A report is being finalized
WHEN:
Generating report headers
THEN:
Set header line 2 flag, populate user ID, terminal ID, machine date, hour, and minute from system information
β Consolidated Acceptance Criteria
- There are errors or warnings → set message result flag, populate warning count, populate error count, and populate DSP count
- The system checks the processing status for errors and spawn conditions → the system determines if the train can be transmitted based on error-free processing and no spawn requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckProcessingStatus(["Start Step"])
E_CheckProcessingStatus(["End Step"])
N_CheckProcessingStatus_Node0{"There are errors or warnings"}:::decision
N_CheckProcessingStatus_Node0_action["Set message result flag, populate
warning count, populate error count,
and populate DSP count"]:::main N_CheckProcessingStatus_Node0 -- Yes --> N_CheckProcessingStatus_Node0_action N_CheckProcessingStatus_Node0_action --> E_CheckProcessingStatus S_CheckProcessingStatus --> N_CheckProcessingStatus_Node0 N_CheckProcessingStatus_Node1{"The system checks the processing
status for errors and spawn
conditions"}:::decision N_CheckProcessingStatus_Node1_action["The system determines if the train
can be transmitted based on
error-free processing and no spawn
requirements"]:::main N_CheckProcessingStatus_Node1 -- Yes --> N_CheckProcessingStatus_Node1_action N_CheckProcessingStatus_Node1_action --> E_CheckProcessingStatus N_CheckProcessingStatus_Node0 -- No --> N_CheckProcessingStatus_Node1 N_CheckProcessingStatus_Node1 -- No --> E_CheckProcessingStatus
warning count, populate error count,
and populate DSP count"]:::main N_CheckProcessingStatus_Node0 -- Yes --> N_CheckProcessingStatus_Node0_action N_CheckProcessingStatus_Node0_action --> E_CheckProcessingStatus S_CheckProcessingStatus --> N_CheckProcessingStatus_Node0 N_CheckProcessingStatus_Node1{"The system checks the processing
status for errors and spawn
conditions"}:::decision N_CheckProcessingStatus_Node1_action["The system determines if the train
can be transmitted based on
error-free processing and no spawn
requirements"]:::main N_CheckProcessingStatus_Node1 -- Yes --> N_CheckProcessingStatus_Node1_action N_CheckProcessingStatus_Node1_action --> E_CheckProcessingStatus N_CheckProcessingStatus_Node0 -- No --> N_CheckProcessingStatus_Node1 N_CheckProcessingStatus_Node1 -- No --> E_CheckProcessingStatus
File: GCX003.cbl
GIVEN:
A report action is being processed
WHEN:
There are errors or warnings
THEN:
Set message result flag, populate warning count, populate error count, and populate DSP count
File: GCX003.cbl
GIVEN:
A SEND action is being processed for a train manifest
WHEN:
- The system checks the processing status for errors
- Spawn conditions
THEN:
- The system determines if the train can be transmitted based on error-free processing
- No spawn requirements
β Consolidated Acceptance Criteria
- Generating detailed train headers → set header line 4 flag, populate US customs train ID from train list, populate ETA year from request, populate ETA month from request, populate ETA day from request, populate ETA hour from request, and populate ETA minutes from request
- Generating detailed train headers → set header line 4 flag, populate US customs train ID, and set ETA year, month, day, hour, and minute components
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateHeaderLine4TrainDetails(["Start Step"])
E_GenerateHeaderLine4TrainDetails(["End Step"])
N_GenerateHeaderLine4TrainDetails_Node0{"Generating detailed train headers"}:::decision
N_GenerateHeaderLine4TrainDetails_Node0_action["Set header line 4 flag, populate US
customs train ID from train list,
populate ETA year from request,
populate ETA month from request,
populate ETA day from request,
populate ETA hour from request, and
populate ETA minutes from request"]:::main N_GenerateHeaderLine4TrainDetails_Node0 -- Yes --> N_GenerateHeaderLine4TrainDetails_Node0_action N_GenerateHeaderLine4TrainDetails_Node0_action --> E_GenerateHeaderLine4TrainDetails S_GenerateHeaderLine4TrainDetails --> N_GenerateHeaderLine4TrainDetails_Node0 N_GenerateHeaderLine4TrainDetails_Node1{"Generating detailed train headers"}:::decision N_GenerateHeaderLine4TrainDetails_Node1_action["Set header line 4 flag, populate US
customs train ID, and set ETA year,
month, day, hour, and minute
components"]:::main N_GenerateHeaderLine4TrainDetails_Node1 -- Yes --> N_GenerateHeaderLine4TrainDetails_Node1_action N_GenerateHeaderLine4TrainDetails_Node1_action --> E_GenerateHeaderLine4TrainDetails N_GenerateHeaderLine4TrainDetails_Node0 -- No --> N_GenerateHeaderLine4TrainDetails_Node1 N_GenerateHeaderLine4TrainDetails_Node1 -- No --> E_GenerateHeaderLine4TrainDetails
customs train ID from train list,
populate ETA year from request,
populate ETA month from request,
populate ETA day from request,
populate ETA hour from request, and
populate ETA minutes from request"]:::main N_GenerateHeaderLine4TrainDetails_Node0 -- Yes --> N_GenerateHeaderLine4TrainDetails_Node0_action N_GenerateHeaderLine4TrainDetails_Node0_action --> E_GenerateHeaderLine4TrainDetails S_GenerateHeaderLine4TrainDetails --> N_GenerateHeaderLine4TrainDetails_Node0 N_GenerateHeaderLine4TrainDetails_Node1{"Generating detailed train headers"}:::decision N_GenerateHeaderLine4TrainDetails_Node1_action["Set header line 4 flag, populate US
customs train ID, and set ETA year,
month, day, hour, and minute
components"]:::main N_GenerateHeaderLine4TrainDetails_Node1 -- Yes --> N_GenerateHeaderLine4TrainDetails_Node1_action N_GenerateHeaderLine4TrainDetails_Node1_action --> E_GenerateHeaderLine4TrainDetails N_GenerateHeaderLine4TrainDetails_Node0 -- No --> N_GenerateHeaderLine4TrainDetails_Node1 N_GenerateHeaderLine4TrainDetails_Node1 -- No --> E_GenerateHeaderLine4TrainDetails
File: GCX003.cbl
GIVEN:
A report is being finalized
WHEN:
Generating detailed train headers
THEN:
Set header line 4 flag, populate US customs train ID from train list, populate ETA year from request, populate ETA month from request, populate ETA day from request, populate ETA hour from request, and populate ETA minutes from request
File: GCX003.cbl
GIVEN:
A report is being finalized
WHEN:
Generating detailed train headers
THEN:
Set header line 4 flag, populate US customs train ID, and set ETA year, month, day, hour, and minute components
β Consolidated Acceptance Criteria
- Setting up detail section headers → set detail header line 1 flag and set detail header line 2 flag
- Setting up report structure → set detail header 1 flag for line 6 and detail header 2 flag for line 7
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateDetailHeaders(["Start Step"])
E_GenerateDetailHeaders(["End Step"])
N_GenerateDetailHeaders_Node0{"Setting up detail section headers"}:::decision
N_GenerateDetailHeaders_Node0_action["Set detail header line 1 flag and
set detail header line 2 flag"]:::main N_GenerateDetailHeaders_Node0 -- Yes --> N_GenerateDetailHeaders_Node0_action N_GenerateDetailHeaders_Node0_action --> E_GenerateDetailHeaders S_GenerateDetailHeaders --> N_GenerateDetailHeaders_Node0 N_GenerateDetailHeaders_Node1{"Setting up report structure"}:::decision N_GenerateDetailHeaders_Node1_action["Set detail header 1 flag for line 6
and detail header 2 flag for line 7"]:::main N_GenerateDetailHeaders_Node1 -- Yes --> N_GenerateDetailHeaders_Node1_action N_GenerateDetailHeaders_Node1_action --> E_GenerateDetailHeaders N_GenerateDetailHeaders_Node0 -- No --> N_GenerateDetailHeaders_Node1 N_GenerateDetailHeaders_Node1 -- No --> E_GenerateDetailHeaders
set detail header line 2 flag"]:::main N_GenerateDetailHeaders_Node0 -- Yes --> N_GenerateDetailHeaders_Node0_action N_GenerateDetailHeaders_Node0_action --> E_GenerateDetailHeaders S_GenerateDetailHeaders --> N_GenerateDetailHeaders_Node0 N_GenerateDetailHeaders_Node1{"Setting up report structure"}:::decision N_GenerateDetailHeaders_Node1_action["Set detail header 1 flag for line 6
and detail header 2 flag for line 7"]:::main N_GenerateDetailHeaders_Node1 -- Yes --> N_GenerateDetailHeaders_Node1_action N_GenerateDetailHeaders_Node1_action --> E_GenerateDetailHeaders N_GenerateDetailHeaders_Node0 -- No --> N_GenerateDetailHeaders_Node1 N_GenerateDetailHeaders_Node1 -- No --> E_GenerateDetailHeaders
File: GCX003.cbl
GIVEN:
A report is being finalized
WHEN:
Setting up detail section headers
THEN:
- Set detail header line 1 flag
- Set detail header line 2 flag
File: GCX003.cbl
GIVEN:
A report is being finalized
WHEN:
Setting up report structure
THEN:
- Set detail header 1 flag for line 6
- Detail header 2 flag for line 7
β Consolidated Acceptance Criteria
- Message lines contain spawn division messages OR spawn ITE messages → convert spawn division messages to message nineteen with station code AND convert spawn ITE messages to message eighteen
- Total error count equals the count of type 43 errors → convert message 43 to message eighteen AND increment warning count AND decrement error count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConvertSpawnMessagestoReportMessages(["Start Step"])
E_ConvertSpawnMessagestoReportMessages(["End Step"])
N_ConvertSpawnMessagestoReportMessages_Node0{"Message lines contain spawn
division messages OR spawn ITE
messages"}:::decision N_ConvertSpawnMessagestoReportMessages_Node0_action["Convert spawn division messages to
message nineteen with station code
AND convert spawn ITE messages to
message eighteen"]:::main N_ConvertSpawnMessagestoReportMessages_Node0 -- Yes --> N_ConvertSpawnMessagestoReportMessages_Node0_action N_ConvertSpawnMessagestoReportMessages_Node0_action --> E_ConvertSpawnMessagestoReportMessages S_ConvertSpawnMessagestoReportMessages --> N_ConvertSpawnMessagestoReportMessages_Node0 N_ConvertSpawnMessagestoReportMessages_Node1{"Total error count equals the count
of type 43 errors"}:::decision N_ConvertSpawnMessagestoReportMessages_Node1_action["Convert message 43 to message
eighteen AND increment warning count
AND decrement error count"]:::exclusion N_ConvertSpawnMessagestoReportMessages_Node1 -- Yes -->|Alternative| N_ConvertSpawnMessagestoReportMessages_Node1_action N_ConvertSpawnMessagestoReportMessages_Node1_action --> E_ConvertSpawnMessagestoReportMessages N_ConvertSpawnMessagestoReportMessages_Node0 -- No --> N_ConvertSpawnMessagestoReportMessages_Node1 N_ConvertSpawnMessagestoReportMessages_Node1 -- No --> E_ConvertSpawnMessagestoReportMessages
division messages OR spawn ITE
messages"}:::decision N_ConvertSpawnMessagestoReportMessages_Node0_action["Convert spawn division messages to
message nineteen with station code
AND convert spawn ITE messages to
message eighteen"]:::main N_ConvertSpawnMessagestoReportMessages_Node0 -- Yes --> N_ConvertSpawnMessagestoReportMessages_Node0_action N_ConvertSpawnMessagestoReportMessages_Node0_action --> E_ConvertSpawnMessagestoReportMessages S_ConvertSpawnMessagestoReportMessages --> N_ConvertSpawnMessagestoReportMessages_Node0 N_ConvertSpawnMessagestoReportMessages_Node1{"Total error count equals the count
of type 43 errors"}:::decision N_ConvertSpawnMessagestoReportMessages_Node1_action["Convert message 43 to message
eighteen AND increment warning count
AND decrement error count"]:::exclusion N_ConvertSpawnMessagestoReportMessages_Node1 -- Yes -->|Alternative| N_ConvertSpawnMessagestoReportMessages_Node1_action N_ConvertSpawnMessagestoReportMessages_Node1_action --> E_ConvertSpawnMessagestoReportMessages N_ConvertSpawnMessagestoReportMessages_Node0 -- No --> N_ConvertSpawnMessagestoReportMessages_Node1 N_ConvertSpawnMessagestoReportMessages_Node1 -- No --> E_ConvertSpawnMessagestoReportMessages
File: GCX003.cbl
GIVEN:
Train processing has errors AND no spawn messages are present
WHEN:
Message lines contain spawn division messages OR spawn ITE messages
THEN:
- Convert spawn division messages to message nineteen with station code
- Convert spawn ite messages to message eighteen
File: GCX003.cbl
GIVEN:
Train processing has errors AND no spawn messages AND message type is 43 (special authorization error)
WHEN:
Total error count equals the count of type 43 errors
THEN:
- Convert message 43 to message eighteen
- Increment warning count
- Decrement error count
β Consolidated Acceptance Criteria
- Final message processing occurs → add spawn count to warning message count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConvertSpawnMessagestoWarningMessages(["Start Step"])
E_ConvertSpawnMessagestoWarningMessages(["End Step"])
N_ConvertSpawnMessagestoWarningMessages_Node0{"Final message processing occurs"}:::decision
N_ConvertSpawnMessagestoWarningMessages_Node0_action["Add spawn count to warning message
count"]:::main N_ConvertSpawnMessagestoWarningMessages_Node0 -- Yes --> N_ConvertSpawnMessagestoWarningMessages_Node0_action N_ConvertSpawnMessagestoWarningMessages_Node0_action --> E_ConvertSpawnMessagestoWarningMessages S_ConvertSpawnMessagestoWarningMessages --> N_ConvertSpawnMessagestoWarningMessages_Node0 N_ConvertSpawnMessagestoWarningMessages_Node0 -- No --> E_ConvertSpawnMessagestoWarningMessages
count"]:::main N_ConvertSpawnMessagestoWarningMessages_Node0 -- Yes --> N_ConvertSpawnMessagestoWarningMessages_Node0_action N_ConvertSpawnMessagestoWarningMessages_Node0_action --> E_ConvertSpawnMessagestoWarningMessages S_ConvertSpawnMessagestoWarningMessages --> N_ConvertSpawnMessagestoWarningMessages_Node0 N_ConvertSpawnMessagestoWarningMessages_Node0 -- No --> E_ConvertSpawnMessagestoWarningMessages
File: GCX003.cbl
GIVEN:
Train processing has errors AND spawn messages are present
WHEN:
Final message processing occurs
THEN:
Add spawn count to warning message count
β Consolidated Acceptance Criteria
- The system finalizes the report for transmission → the system sets the end report marker if the last line is blank, records the last line index, creates header lines with train ID and origin station, adds user ID and terminal information with current date and time, and formats the result status based on the request action type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FinalizeReportHeadersandSummary(["Start Step"])
E_FinalizeReportHeadersandSummary(["End Step"])
N_FinalizeReportHeadersandSummary_Node0{"The system finalizes the report for
transmission"}:::decision N_FinalizeReportHeadersandSummary_Node0_action["The system sets the end report
marker if the last line is blank,
records the last line index, creates
header lines with train ID and
origin station, adds user ID and
terminal information with current
date and time, and formats the
result status based on the request
action type"]:::main N_FinalizeReportHeadersandSummary_Node0 -- Yes --> N_FinalizeReportHeadersandSummary_Node0_action N_FinalizeReportHeadersandSummary_Node0_action --> E_FinalizeReportHeadersandSummary S_FinalizeReportHeadersandSummary --> N_FinalizeReportHeadersandSummary_Node0 N_FinalizeReportHeadersandSummary_Node0 -- No --> E_FinalizeReportHeadersandSummary
transmission"}:::decision N_FinalizeReportHeadersandSummary_Node0_action["The system sets the end report
marker if the last line is blank,
records the last line index, creates
header lines with train ID and
origin station, adds user ID and
terminal information with current
date and time, and formats the
result status based on the request
action type"]:::main N_FinalizeReportHeadersandSummary_Node0 -- Yes --> N_FinalizeReportHeadersandSummary_Node0_action N_FinalizeReportHeadersandSummary_Node0_action --> E_FinalizeReportHeadersandSummary S_FinalizeReportHeadersandSummary --> N_FinalizeReportHeadersandSummary_Node0 N_FinalizeReportHeadersandSummary_Node0 -- No --> E_FinalizeReportHeadersandSummary
File: GCX003.cbl
GIVEN:
A train processing request has been completed with equipment processed and report lines generated
WHEN:
The system finalizes the report for transmission
THEN:
- The system sets the end report marker if the last line is blank, records the last line index, creates header lines with train id
- Origin station, adds user id
- Terminal information with current date
- Time, and formats the result status based on the request action type
β Consolidated Acceptance Criteria
- If the request for final processing → if the action is SEND with no errors and no spawns, perform full transmission processing; if the action is REPORT, perform report-only processing; otherwise perform error handling with database rollback
- If the request action type and error status → if action is SEND with no errors and no spawns, execute full send processing; if action is REPORT, execute report-only processing; otherwise execute error processing with database rollback
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EvaluateRequestActionType(["Start Step"])
E_EvaluateRequestActionType(["End Step"])
N_EvaluateRequestActionType_Node0{"The system evaluates the request
for final processing"}:::decision N_EvaluateRequestActionType_Node0_action["If the action is SEND with no
errors and no spawns, perform full
transmission processing if the
action is REPORT, perform
report-only processing otherwise
perform error handling with database
rollback"]:::main N_EvaluateRequestActionType_Node0 -- Yes --> N_EvaluateRequestActionType_Node0_action N_EvaluateRequestActionType_Node0_action --> E_EvaluateRequestActionType S_EvaluateRequestActionType --> N_EvaluateRequestActionType_Node0 N_EvaluateRequestActionType_Node1{"The system evaluates the request
action type and error status"}:::decision N_EvaluateRequestActionType_Node1_action["If action is SEND with no errors
and no spawns, execute full send
processing if action is REPORT,
execute report-only processing
otherwise execute error processing
with database rollback"]:::exclusion N_EvaluateRequestActionType_Node1 -- Yes -->|Alternative| N_EvaluateRequestActionType_Node1_action N_EvaluateRequestActionType_Node1_action --> E_EvaluateRequestActionType N_EvaluateRequestActionType_Node0 -- No --> N_EvaluateRequestActionType_Node1 N_EvaluateRequestActionType_Node1 -- No --> E_EvaluateRequestActionType
for final processing"}:::decision N_EvaluateRequestActionType_Node0_action["If the action is SEND with no
errors and no spawns, perform full
transmission processing if the
action is REPORT, perform
report-only processing otherwise
perform error handling with database
rollback"]:::main N_EvaluateRequestActionType_Node0 -- Yes --> N_EvaluateRequestActionType_Node0_action N_EvaluateRequestActionType_Node0_action --> E_EvaluateRequestActionType S_EvaluateRequestActionType --> N_EvaluateRequestActionType_Node0 N_EvaluateRequestActionType_Node1{"The system evaluates the request
action type and error status"}:::decision N_EvaluateRequestActionType_Node1_action["If action is SEND with no errors
and no spawns, execute full send
processing if action is REPORT,
execute report-only processing
otherwise execute error processing
with database rollback"]:::exclusion N_EvaluateRequestActionType_Node1 -- Yes -->|Alternative| N_EvaluateRequestActionType_Node1_action N_EvaluateRequestActionType_Node1_action --> E_EvaluateRequestActionType N_EvaluateRequestActionType_Node0 -- No --> N_EvaluateRequestActionType_Node1 N_EvaluateRequestActionType_Node1 -- No --> E_EvaluateRequestActionType
File: GCX003.cbl
GIVEN:
A train processing request has been finalized with a specific action type and error status
WHEN:
The system evaluates the request for final processing
THEN:
- If the action is send with no errors
- No spawns, perform full transmission processing; if the action is report, perform report-only processing; otherwise perform error handling with database rollback
File: GCX003.cbl
GIVEN:
A train processing request with a specific action type
WHEN:
- The system evaluates the request action type
- Error status
THEN:
- If action is send with no errors
- No spawns, execute full send processing; if action is report, execute report-only processing; otherwise execute error processing with database rollback
β Consolidated Acceptance Criteria
- The system processes the train list for storage → the system saves the train header information including train number, day, origin, consist number, crossing port, station details, ETA date and time, AEI send flag, and all equipment details with their load/empty status and cargo information to the database
- The system processes the successful request → store the train list data in the GCSUTRT database table with all equipment and cargo details
- The system stores the train list in the database → the train header information including train number, day, origin, consist number, crossing port, ETA details, and all equipment records with their cargo information must be inserted into the database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreTrainListinDatabase(["Start Step"])
E_StoreTrainListinDatabase(["End Step"])
N_StoreTrainListinDatabase_Node0{"The system processes the train list
for storage"}:::decision N_StoreTrainListinDatabase_Node0_action["The system saves the train header
information including train number,
day, origin, consist number,
crossing port, station details, ETA
date and time, AEI send flag, and
all equipment details with their
loadempty status and cargo
information to the database"]:::main N_StoreTrainListinDatabase_Node0 -- Yes --> N_StoreTrainListinDatabase_Node0_action N_StoreTrainListinDatabase_Node0_action --> E_StoreTrainListinDatabase S_StoreTrainListinDatabase --> N_StoreTrainListinDatabase_Node0 N_StoreTrainListinDatabase_Node1{"The system processes the successful
request"}:::decision N_StoreTrainListinDatabase_Node1_action["Store the train list data in the
GCSUTRT database table with all
equipment and cargo details"]:::main N_StoreTrainListinDatabase_Node1 -- Yes --> N_StoreTrainListinDatabase_Node1_action N_StoreTrainListinDatabase_Node1_action --> E_StoreTrainListinDatabase N_StoreTrainListinDatabase_Node0 -- No --> N_StoreTrainListinDatabase_Node1 N_StoreTrainListinDatabase_Node2{"The system stores the train list in
the database"}:::decision N_StoreTrainListinDatabase_Node2_action["The train header information
including train number, day, origin,
consist number, crossing port, ETA
details, and all equipment records
with their cargo information must be
inserted into the database"]:::main N_StoreTrainListinDatabase_Node2 -- Yes --> N_StoreTrainListinDatabase_Node2_action N_StoreTrainListinDatabase_Node2_action --> E_StoreTrainListinDatabase N_StoreTrainListinDatabase_Node1 -- No --> N_StoreTrainListinDatabase_Node2 N_StoreTrainListinDatabase_Node2 -- No --> E_StoreTrainListinDatabase
for storage"}:::decision N_StoreTrainListinDatabase_Node0_action["The system saves the train header
information including train number,
day, origin, consist number,
crossing port, station details, ETA
date and time, AEI send flag, and
all equipment details with their
loadempty status and cargo
information to the database"]:::main N_StoreTrainListinDatabase_Node0 -- Yes --> N_StoreTrainListinDatabase_Node0_action N_StoreTrainListinDatabase_Node0_action --> E_StoreTrainListinDatabase S_StoreTrainListinDatabase --> N_StoreTrainListinDatabase_Node0 N_StoreTrainListinDatabase_Node1{"The system processes the successful
request"}:::decision N_StoreTrainListinDatabase_Node1_action["Store the train list data in the
GCSUTRT database table with all
equipment and cargo details"]:::main N_StoreTrainListinDatabase_Node1 -- Yes --> N_StoreTrainListinDatabase_Node1_action N_StoreTrainListinDatabase_Node1_action --> E_StoreTrainListinDatabase N_StoreTrainListinDatabase_Node0 -- No --> N_StoreTrainListinDatabase_Node1 N_StoreTrainListinDatabase_Node2{"The system stores the train list in
the database"}:::decision N_StoreTrainListinDatabase_Node2_action["The train header information
including train number, day, origin,
consist number, crossing port, ETA
details, and all equipment records
with their cargo information must be
inserted into the database"]:::main N_StoreTrainListinDatabase_Node2 -- Yes --> N_StoreTrainListinDatabase_Node2_action N_StoreTrainListinDatabase_Node2_action --> E_StoreTrainListinDatabase N_StoreTrainListinDatabase_Node1 -- No --> N_StoreTrainListinDatabase_Node2 N_StoreTrainListinDatabase_Node2 -- No --> E_StoreTrainListinDatabase
File: GCX003.cbl
GIVEN:
A SEND request has been validated successfully with no errors and no spawns required
WHEN:
The system processes the train list for storage
THEN:
- The system saves the train header information including train number, day, origin, consist number, crossing port, station details, eta date
- Time, aei send flag, and all equipment details with their load/empty status
- Cargo information to the database
File: GCX003.cbl
GIVEN:
A validated train manifest with SEND action and no errors
WHEN:
The system processes the successful request
THEN:
- Store the train list data in the gcsutrt database table with all equipment
- Cargo details
File: GCX003.cbl
GIVEN:
A validated train list with equipment details and no processing errors
WHEN:
The system stores the train list in the database
THEN:
The train header information including train number, day, origin, consist number, crossing port, ETA details, and all equipment records with their cargo information must be inserted into the database
β Consolidated Acceptance Criteria
- The system transmits the train information to customs → the system calls the customs EDI transmission module (GCCU358T) in background mode with the complete train list data, and if AEI send flag is set, logs the AEI transmission activity
- The system processes the transmission step → call GCCU358T module to transmit the train list data via EDI to US Customs
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TransmitTrainListtoUSCustomsEDI(["Start Step"])
E_TransmitTrainListtoUSCustomsEDI(["End Step"])
N_TransmitTrainListtoUSCustomsEDI_Node0{"The system transmits the train
information to customs"}:::decision N_TransmitTrainListtoUSCustomsEDI_Node0_action["The system calls the customs EDI
transmission module GCCU358T in
background mode with the complete
train list data, and if AEI send
flag is set, logs the AEI
transmission activity"]:::main N_TransmitTrainListtoUSCustomsEDI_Node0 -- Yes --> N_TransmitTrainListtoUSCustomsEDI_Node0_action N_TransmitTrainListtoUSCustomsEDI_Node0_action --> E_TransmitTrainListtoUSCustomsEDI S_TransmitTrainListtoUSCustomsEDI --> N_TransmitTrainListtoUSCustomsEDI_Node0 N_TransmitTrainListtoUSCustomsEDI_Node1{"The system processes the
transmission step"}:::decision N_TransmitTrainListtoUSCustomsEDI_Node1_action["Call GCCU358T module to transmit
the train list data via EDI to US
Customs"]:::main N_TransmitTrainListtoUSCustomsEDI_Node1 -- Yes --> N_TransmitTrainListtoUSCustomsEDI_Node1_action N_TransmitTrainListtoUSCustomsEDI_Node1_action --> E_TransmitTrainListtoUSCustomsEDI N_TransmitTrainListtoUSCustomsEDI_Node0 -- No --> N_TransmitTrainListtoUSCustomsEDI_Node1 N_TransmitTrainListtoUSCustomsEDI_Node1 -- No --> E_TransmitTrainListtoUSCustomsEDI
information to customs"}:::decision N_TransmitTrainListtoUSCustomsEDI_Node0_action["The system calls the customs EDI
transmission module GCCU358T in
background mode with the complete
train list data, and if AEI send
flag is set, logs the AEI
transmission activity"]:::main N_TransmitTrainListtoUSCustomsEDI_Node0 -- Yes --> N_TransmitTrainListtoUSCustomsEDI_Node0_action N_TransmitTrainListtoUSCustomsEDI_Node0_action --> E_TransmitTrainListtoUSCustomsEDI S_TransmitTrainListtoUSCustomsEDI --> N_TransmitTrainListtoUSCustomsEDI_Node0 N_TransmitTrainListtoUSCustomsEDI_Node1{"The system processes the
transmission step"}:::decision N_TransmitTrainListtoUSCustomsEDI_Node1_action["Call GCCU358T module to transmit
the train list data via EDI to US
Customs"]:::main N_TransmitTrainListtoUSCustomsEDI_Node1 -- Yes --> N_TransmitTrainListtoUSCustomsEDI_Node1_action N_TransmitTrainListtoUSCustomsEDI_Node1_action --> E_TransmitTrainListtoUSCustomsEDI N_TransmitTrainListtoUSCustomsEDI_Node0 -- No --> N_TransmitTrainListtoUSCustomsEDI_Node1 N_TransmitTrainListtoUSCustomsEDI_Node1 -- No --> E_TransmitTrainListtoUSCustomsEDI
File: GCX003.cbl
GIVEN:
A train list has been successfully stored in the database
WHEN:
The system transmits the train information to customs
THEN:
The system calls the customs EDI transmission module (GCCU358T) in background mode with the complete train list data, and if AEI send flag is set, logs the AEI transmission activity
File: GCX003.cbl
GIVEN:
A train list stored in the database
WHEN:
The system processes the transmission step
THEN:
Call GCCU358T module to transmit the train list data via EDI to US Customs
β Consolidated Acceptance Criteria
- The system scans for duplicates → for each equipment entry, if the car ID matches the previously held car ID, clear the current car ID to spaces; otherwise update the held car ID with the current car ID, excluding error, warning, and information message lines from duplicate checking
- The system performs duplicate checking → scan through report lines and remove duplicate car IDs while preserving the first occurrence
- The system scans for duplicate equipment → if the same car ID appears multiple times consecutively, all subsequent occurrences must be blanked out while preserving the first occurrence
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RemoveDuplicateEquipmentEntries(["Start Step"])
E_RemoveDuplicateEquipmentEntries(["End Step"])
N_RemoveDuplicateEquipmentEntries_Node0{"The system scans for duplicates"}:::decision
N_RemoveDuplicateEquipmentEntries_Node0_action["For each equipment entry, if the
car ID matches the previously held
car ID, clear the current car ID to
spaces otherwise update the held car
ID with the current car ID,
excluding error, warning, and
information message lines from
duplicate checking"]:::main N_RemoveDuplicateEquipmentEntries_Node0 -- Yes --> N_RemoveDuplicateEquipmentEntries_Node0_action N_RemoveDuplicateEquipmentEntries_Node0_action --> E_RemoveDuplicateEquipmentEntries S_RemoveDuplicateEquipmentEntries --> N_RemoveDuplicateEquipmentEntries_Node0 N_RemoveDuplicateEquipmentEntries_Node1{"The system performs duplicate
checking"}:::decision N_RemoveDuplicateEquipmentEntries_Node1_action["Scan through report lines and
remove duplicate car IDs while
preserving the first occurrence"]:::main N_RemoveDuplicateEquipmentEntries_Node1 -- Yes --> N_RemoveDuplicateEquipmentEntries_Node1_action N_RemoveDuplicateEquipmentEntries_Node1_action --> E_RemoveDuplicateEquipmentEntries N_RemoveDuplicateEquipmentEntries_Node0 -- No --> N_RemoveDuplicateEquipmentEntries_Node1 N_RemoveDuplicateEquipmentEntries_Node2{"The system scans for duplicate
equipment"}:::decision N_RemoveDuplicateEquipmentEntries_Node2_action["If the same car ID appears multiple
times consecutively, all subsequent
occurrences must be blanked out
while preserving the first
occurrence"]:::main N_RemoveDuplicateEquipmentEntries_Node2 -- Yes --> N_RemoveDuplicateEquipmentEntries_Node2_action N_RemoveDuplicateEquipmentEntries_Node2_action --> E_RemoveDuplicateEquipmentEntries N_RemoveDuplicateEquipmentEntries_Node1 -- No --> N_RemoveDuplicateEquipmentEntries_Node2 N_RemoveDuplicateEquipmentEntries_Node2 -- No --> E_RemoveDuplicateEquipmentEntries
car ID matches the previously held
car ID, clear the current car ID to
spaces otherwise update the held car
ID with the current car ID,
excluding error, warning, and
information message lines from
duplicate checking"]:::main N_RemoveDuplicateEquipmentEntries_Node0 -- Yes --> N_RemoveDuplicateEquipmentEntries_Node0_action N_RemoveDuplicateEquipmentEntries_Node0_action --> E_RemoveDuplicateEquipmentEntries S_RemoveDuplicateEquipmentEntries --> N_RemoveDuplicateEquipmentEntries_Node0 N_RemoveDuplicateEquipmentEntries_Node1{"The system performs duplicate
checking"}:::decision N_RemoveDuplicateEquipmentEntries_Node1_action["Scan through report lines and
remove duplicate car IDs while
preserving the first occurrence"]:::main N_RemoveDuplicateEquipmentEntries_Node1 -- Yes --> N_RemoveDuplicateEquipmentEntries_Node1_action N_RemoveDuplicateEquipmentEntries_Node1_action --> E_RemoveDuplicateEquipmentEntries N_RemoveDuplicateEquipmentEntries_Node0 -- No --> N_RemoveDuplicateEquipmentEntries_Node1 N_RemoveDuplicateEquipmentEntries_Node2{"The system scans for duplicate
equipment"}:::decision N_RemoveDuplicateEquipmentEntries_Node2_action["If the same car ID appears multiple
times consecutively, all subsequent
occurrences must be blanked out
while preserving the first
occurrence"]:::main N_RemoveDuplicateEquipmentEntries_Node2 -- Yes --> N_RemoveDuplicateEquipmentEntries_Node2_action N_RemoveDuplicateEquipmentEntries_Node2_action --> E_RemoveDuplicateEquipmentEntries N_RemoveDuplicateEquipmentEntries_Node1 -- No --> N_RemoveDuplicateEquipmentEntries_Node2 N_RemoveDuplicateEquipmentEntries_Node2 -- No --> E_RemoveDuplicateEquipmentEntries
File: GCX003.cbl
GIVEN:
A report has been generated with potential duplicate equipment entries
WHEN:
The system scans for duplicates
THEN:
For each equipment entry, if the car ID matches the previously held car ID, clear the current car ID to spaces; otherwise update the held car ID with the current car ID, excluding error, warning, and information message lines from duplicate checking
File: GCX003.cbl
GIVEN:
A processed train manifest report with potential duplicate equipment entries
WHEN:
The system performs duplicate checking
THEN:
- Scan through report lines
- Remove duplicate car ids while preserving the first occurrence
File: GCX003.cbl
GIVEN:
A completed report with potential duplicate equipment entries
WHEN:
The system scans for duplicate equipment
THEN:
If the same car ID appears multiple times consecutively, all subsequent occurrences must be blanked out while preserving the first occurrence
β Consolidated Acceptance Criteria
- The system sends the report to customs → the system formats the report with equipment totals in the status line, sets the sender and recipient to OM01247, uses the first report line as the subject, sets item width to 080, and transmits up to 699 lines per email with continuation handling for larger reports
- The system sends the report to customs → format and send the report via EMCSEND3 to usercode OM01247 with train details, equipment counts, and cargo information
- The system sends the report to customs MERLIN system → the report must be sent to OM01247 usercode via EMCSEND3 module with proper formatting, and if the report exceeds 699 lines, it must be split into multiple emails with continuation headers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendReporttoCustomsMERLINSystem(["Start Step"])
E_SendReporttoCustomsMERLINSystem(["End Step"])
N_SendReporttoCustomsMERLINSystem_Node0{"The system sends the report to
customs"}:::decision N_SendReporttoCustomsMERLINSystem_Node0_action["The system formats the report with
equipment totals in the status line,
sets the sender and recipient to
OM01247, uses the first report line
as the subject, sets item width to
080, and transmits up to 699 lines
per email with continuation handling
for larger reports"]:::main N_SendReporttoCustomsMERLINSystem_Node0 -- Yes --> N_SendReporttoCustomsMERLINSystem_Node0_action N_SendReporttoCustomsMERLINSystem_Node0_action --> E_SendReporttoCustomsMERLINSystem S_SendReporttoCustomsMERLINSystem --> N_SendReporttoCustomsMERLINSystem_Node0 N_SendReporttoCustomsMERLINSystem_Node1{"The system sends the report to
customs"}:::decision N_SendReporttoCustomsMERLINSystem_Node1_action["Format and send the report via
EMCSEND3 to usercode OM01247 with
train details, equipment counts, and
cargo information"]:::main N_SendReporttoCustomsMERLINSystem_Node1 -- Yes --> N_SendReporttoCustomsMERLINSystem_Node1_action N_SendReporttoCustomsMERLINSystem_Node1_action --> E_SendReporttoCustomsMERLINSystem N_SendReporttoCustomsMERLINSystem_Node0 -- No --> N_SendReporttoCustomsMERLINSystem_Node1 N_SendReporttoCustomsMERLINSystem_Node2{"The system sends the report to
customs MERLIN system"}:::decision N_SendReporttoCustomsMERLINSystem_Node2_action["The report must be sent to OM01247
usercode via EMCSEND3 module with
proper formatting, and if the report
exceeds 699 lines, it must be split
into multiple emails with
continuation headers"]:::main N_SendReporttoCustomsMERLINSystem_Node2 -- Yes --> N_SendReporttoCustomsMERLINSystem_Node2_action N_SendReporttoCustomsMERLINSystem_Node2_action --> E_SendReporttoCustomsMERLINSystem N_SendReporttoCustomsMERLINSystem_Node1 -- No --> N_SendReporttoCustomsMERLINSystem_Node2 N_SendReporttoCustomsMERLINSystem_Node2 -- No --> E_SendReporttoCustomsMERLINSystem
customs"}:::decision N_SendReporttoCustomsMERLINSystem_Node0_action["The system formats the report with
equipment totals in the status line,
sets the sender and recipient to
OM01247, uses the first report line
as the subject, sets item width to
080, and transmits up to 699 lines
per email with continuation handling
for larger reports"]:::main N_SendReporttoCustomsMERLINSystem_Node0 -- Yes --> N_SendReporttoCustomsMERLINSystem_Node0_action N_SendReporttoCustomsMERLINSystem_Node0_action --> E_SendReporttoCustomsMERLINSystem S_SendReporttoCustomsMERLINSystem --> N_SendReporttoCustomsMERLINSystem_Node0 N_SendReporttoCustomsMERLINSystem_Node1{"The system sends the report to
customs"}:::decision N_SendReporttoCustomsMERLINSystem_Node1_action["Format and send the report via
EMCSEND3 to usercode OM01247 with
train details, equipment counts, and
cargo information"]:::main N_SendReporttoCustomsMERLINSystem_Node1 -- Yes --> N_SendReporttoCustomsMERLINSystem_Node1_action N_SendReporttoCustomsMERLINSystem_Node1_action --> E_SendReporttoCustomsMERLINSystem N_SendReporttoCustomsMERLINSystem_Node0 -- No --> N_SendReporttoCustomsMERLINSystem_Node1 N_SendReporttoCustomsMERLINSystem_Node2{"The system sends the report to
customs MERLIN system"}:::decision N_SendReporttoCustomsMERLINSystem_Node2_action["The report must be sent to OM01247
usercode via EMCSEND3 module with
proper formatting, and if the report
exceeds 699 lines, it must be split
into multiple emails with
continuation headers"]:::main N_SendReporttoCustomsMERLINSystem_Node2 -- Yes --> N_SendReporttoCustomsMERLINSystem_Node2_action N_SendReporttoCustomsMERLINSystem_Node2_action --> E_SendReporttoCustomsMERLINSystem N_SendReporttoCustomsMERLINSystem_Node1 -- No --> N_SendReporttoCustomsMERLINSystem_Node2 N_SendReporttoCustomsMERLINSystem_Node2 -- No --> E_SendReporttoCustomsMERLINSystem
File: GCX003.cbl
GIVEN:
A train report has been finalized and duplicates removed
WHEN:
The system sends the report to customs
THEN:
- The system formats the report with equipment totals in the status line, sets the sender
- Recipient to om01247, uses the first report line as the subject, sets item width to 080, and transmits up to 699 lines per email with continuation handling for larger reports
File: GCX003.cbl
GIVEN:
A processed train manifest with complete report data
WHEN:
The system sends the report to customs
THEN:
- Format
- Send the report via emcsend3 to usercode om01247 with train details, equipment counts, and cargo information
File: GCX003.cbl
GIVEN:
A finalized train manifest report ready for customs distribution
WHEN:
The system sends the report to customs MERLIN system
THEN:
The report must be sent to OM01247 usercode via EMCSEND3 module with proper formatting, and if the report exceeds 699 lines, it must be split into multiple emails with continuation headers
β Consolidated Acceptance Criteria
- The system generates the PDF report → the system calls the PDF generation module (GCX904R) with the report message content, email subject from the first report line, train ID, report title as 'Pre-Exit Report', report type as 'EXPORT', PDF length of 80 characters, and the total number of report lines
- The system generates PDF documentation → call GCX904R module to create PDF report with Pre-Exit Report title and EXPORT type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GeneratePDFReport(["Start Step"])
E_GeneratePDFReport(["End Step"])
N_GeneratePDFReport_Node0{"The system generates the PDF report"}:::decision
N_GeneratePDFReport_Node0_action["The system calls the PDF generation
module GCX904R with the report
message content, email subject from
the first report line, train ID,
report title as Pre-Exit Report ,
report type as EXPORT , PDF length
of 80 characters, and the total
number of report lines"]:::main N_GeneratePDFReport_Node0 -- Yes --> N_GeneratePDFReport_Node0_action N_GeneratePDFReport_Node0_action --> E_GeneratePDFReport S_GeneratePDFReport --> N_GeneratePDFReport_Node0 N_GeneratePDFReport_Node1{"The system generates PDF
documentation"}:::decision N_GeneratePDFReport_Node1_action["Call GCX904R module to create PDF
report with Pre-Exit Report title
and EXPORT type"]:::main N_GeneratePDFReport_Node1 -- Yes --> N_GeneratePDFReport_Node1_action N_GeneratePDFReport_Node1_action --> E_GeneratePDFReport N_GeneratePDFReport_Node0 -- No --> N_GeneratePDFReport_Node1 N_GeneratePDFReport_Node1 -- No --> E_GeneratePDFReport
module GCX904R with the report
message content, email subject from
the first report line, train ID,
report title as Pre-Exit Report ,
report type as EXPORT , PDF length
of 80 characters, and the total
number of report lines"]:::main N_GeneratePDFReport_Node0 -- Yes --> N_GeneratePDFReport_Node0_action N_GeneratePDFReport_Node0_action --> E_GeneratePDFReport S_GeneratePDFReport --> N_GeneratePDFReport_Node0 N_GeneratePDFReport_Node1{"The system generates PDF
documentation"}:::decision N_GeneratePDFReport_Node1_action["Call GCX904R module to create PDF
report with Pre-Exit Report title
and EXPORT type"]:::main N_GeneratePDFReport_Node1 -- Yes --> N_GeneratePDFReport_Node1_action N_GeneratePDFReport_Node1_action --> E_GeneratePDFReport N_GeneratePDFReport_Node0 -- No --> N_GeneratePDFReport_Node1 N_GeneratePDFReport_Node1 -- No --> E_GeneratePDFReport
File: GCX003.cbl
GIVEN:
A train report has been sent to the customs MERLIN system
WHEN:
The system generates the PDF report
THEN:
The system calls the PDF generation module (GCX904R) with the report message content, email subject from the first report line, train ID, report title as 'Pre-Exit Report', report type as 'EXPORT', PDF length of 80 characters, and the total number of report lines
File: GCX003.cbl
GIVEN:
A processed train manifest with report data
WHEN:
The system generates PDF documentation
THEN:
- Call gcx904r module to create pdf report with pre-exit report title
- Export type
β Consolidated Acceptance Criteria
- The system determines the station-specific report format → if the crossing port is Laredo TX station, generate an enhanced format report; otherwise generate a Canadian export report
- The system checks the station location → if the station is Laredo TX, execute enhanced reporting; otherwise, execute standard Canadian export processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsLaredoTXStation(["Start Step"])
E_IsLaredoTXStation(["End Step"])
N_IsLaredoTXStation_Node0{"The system determines the
station-specific report format"}:::decision N_IsLaredoTXStation_Node0_action["If the crossing port is Laredo TX
station, generate an enhanced format
report otherwise generate a Canadian
export report"]:::main N_IsLaredoTXStation_Node0 -- Yes --> N_IsLaredoTXStation_Node0_action N_IsLaredoTXStation_Node0_action --> E_IsLaredoTXStation S_IsLaredoTXStation --> N_IsLaredoTXStation_Node0 N_IsLaredoTXStation_Node1{"The system checks the station
location"}:::decision N_IsLaredoTXStation_Node1_action["If the station is Laredo TX,
execute enhanced reporting
otherwise, execute standard Canadian
export processing"]:::main N_IsLaredoTXStation_Node1 -- Yes --> N_IsLaredoTXStation_Node1_action N_IsLaredoTXStation_Node1_action --> E_IsLaredoTXStation N_IsLaredoTXStation_Node0 -- No --> N_IsLaredoTXStation_Node1 N_IsLaredoTXStation_Node1 -- No --> E_IsLaredoTXStation
station-specific report format"}:::decision N_IsLaredoTXStation_Node0_action["If the crossing port is Laredo TX
station, generate an enhanced format
report otherwise generate a Canadian
export report"]:::main N_IsLaredoTXStation_Node0 -- Yes --> N_IsLaredoTXStation_Node0_action N_IsLaredoTXStation_Node0_action --> E_IsLaredoTXStation S_IsLaredoTXStation --> N_IsLaredoTXStation_Node0 N_IsLaredoTXStation_Node1{"The system checks the station
location"}:::decision N_IsLaredoTXStation_Node1_action["If the station is Laredo TX,
execute enhanced reporting
otherwise, execute standard Canadian
export processing"]:::main N_IsLaredoTXStation_Node1 -- Yes --> N_IsLaredoTXStation_Node1_action N_IsLaredoTXStation_Node1_action --> E_IsLaredoTXStation N_IsLaredoTXStation_Node0 -- No --> N_IsLaredoTXStation_Node1 N_IsLaredoTXStation_Node1 -- No --> E_IsLaredoTXStation
File: GCX003.cbl
GIVEN:
A PDF report has been generated for the train processing
WHEN:
The system determines the station-specific report format
THEN:
If the crossing port is Laredo TX station, generate an enhanced format report; otherwise generate a Canadian export report
File: GCX003.cbl
GIVEN:
A train manifest with a defined crossing station
WHEN:
The system checks the station location
THEN:
If the station is Laredo TX, execute enhanced reporting; otherwise, execute standard Canadian export processing
β Consolidated Acceptance Criteria
- The system generates the enhanced report → the system creates header lines with train ID, car and container counts by load/empty status, ETA date and time, port code and name, locomotive count, and total equipment count, formats detail lines for each equipment item, and prepares the report for PDF generation
- The system processes Laredo-specific reporting → generate new format report with detailed equipment counts, port information, and enhanced layout
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateEnhancedFormatReport(["Start Step"])
E_GenerateEnhancedFormatReport(["End Step"])
N_GenerateEnhancedFormatReport_Node0{"The system generates the enhanced
report"}:::decision N_GenerateEnhancedFormatReport_Node0_action["The system creates header lines
with train ID, car and container
counts by loadempty status, ETA date
and time, port code and name,
locomotive count, and total
equipment count, formats detail
lines for each equipment item, and
prepares the report for PDF
generation"]:::main N_GenerateEnhancedFormatReport_Node0 -- Yes --> N_GenerateEnhancedFormatReport_Node0_action N_GenerateEnhancedFormatReport_Node0_action --> E_GenerateEnhancedFormatReport S_GenerateEnhancedFormatReport --> N_GenerateEnhancedFormatReport_Node0 N_GenerateEnhancedFormatReport_Node1{"The system processes
Laredo-specific reporting"}:::decision N_GenerateEnhancedFormatReport_Node1_action["Generate new format report with
detailed equipment counts, port
information, and enhanced layout"]:::main N_GenerateEnhancedFormatReport_Node1 -- Yes --> N_GenerateEnhancedFormatReport_Node1_action N_GenerateEnhancedFormatReport_Node1_action --> E_GenerateEnhancedFormatReport N_GenerateEnhancedFormatReport_Node0 -- No --> N_GenerateEnhancedFormatReport_Node1 N_GenerateEnhancedFormatReport_Node1 -- No --> E_GenerateEnhancedFormatReport
report"}:::decision N_GenerateEnhancedFormatReport_Node0_action["The system creates header lines
with train ID, car and container
counts by loadempty status, ETA date
and time, port code and name,
locomotive count, and total
equipment count, formats detail
lines for each equipment item, and
prepares the report for PDF
generation"]:::main N_GenerateEnhancedFormatReport_Node0 -- Yes --> N_GenerateEnhancedFormatReport_Node0_action N_GenerateEnhancedFormatReport_Node0_action --> E_GenerateEnhancedFormatReport S_GenerateEnhancedFormatReport --> N_GenerateEnhancedFormatReport_Node0 N_GenerateEnhancedFormatReport_Node1{"The system processes
Laredo-specific reporting"}:::decision N_GenerateEnhancedFormatReport_Node1_action["Generate new format report with
detailed equipment counts, port
information, and enhanced layout"]:::main N_GenerateEnhancedFormatReport_Node1 -- Yes --> N_GenerateEnhancedFormatReport_Node1_action N_GenerateEnhancedFormatReport_Node1_action --> E_GenerateEnhancedFormatReport N_GenerateEnhancedFormatReport_Node0 -- No --> N_GenerateEnhancedFormatReport_Node1 N_GenerateEnhancedFormatReport_Node1 -- No --> E_GenerateEnhancedFormatReport
File: GCX003.cbl
GIVEN:
The processing station is Laredo TX
WHEN:
The system generates the enhanced report
THEN:
- The system creates header lines with train id, car
- Container counts by load/empty status, eta date
- Time, port code
- Name, locomotive count, and total equipment count, formats detail lines for each equipment item, and prepares the report for pdf generation
File: GCX003.cbl
GIVEN:
A train manifest crossing at Laredo TX station
WHEN:
The system processes Laredo-specific reporting
THEN:
Generate new format report with detailed equipment counts, port information, and enhanced layout
β Consolidated Acceptance Criteria
- The system creates the second PDF report → the system calls the PDF generation module (GCX904R) with the enhanced report table, new report subject, train ID, report title as 'Export Train Report', report type as 'EXPORT', PDF length of 132 characters, and the enhanced report line count
- The system creates the second PDF → call GCX904R module to create PDF with Export Train Report title and 132-character width
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateSecondPDFReport(["Start Step"])
E_GenerateSecondPDFReport(["End Step"])
N_GenerateSecondPDFReport_Node0{"The system creates the second PDF
report"}:::decision N_GenerateSecondPDFReport_Node0_action["The system calls the PDF generation
module GCX904R with the enhanced
report table, new report subject,
train ID, report title as Export
Train Report , report type as EXPORT
, PDF length of 132 characters, and
the enhanced report line count"]:::main N_GenerateSecondPDFReport_Node0 -- Yes --> N_GenerateSecondPDFReport_Node0_action N_GenerateSecondPDFReport_Node0_action --> E_GenerateSecondPDFReport S_GenerateSecondPDFReport --> N_GenerateSecondPDFReport_Node0 N_GenerateSecondPDFReport_Node1{"The system creates the second PDF"}:::decision N_GenerateSecondPDFReport_Node1_action["Call GCX904R module to create PDF
with Export Train Report title and
132-character width"]:::main N_GenerateSecondPDFReport_Node1 -- Yes --> N_GenerateSecondPDFReport_Node1_action N_GenerateSecondPDFReport_Node1_action --> E_GenerateSecondPDFReport N_GenerateSecondPDFReport_Node0 -- No --> N_GenerateSecondPDFReport_Node1 N_GenerateSecondPDFReport_Node1 -- No --> E_GenerateSecondPDFReport
report"}:::decision N_GenerateSecondPDFReport_Node0_action["The system calls the PDF generation
module GCX904R with the enhanced
report table, new report subject,
train ID, report title as Export
Train Report , report type as EXPORT
, PDF length of 132 characters, and
the enhanced report line count"]:::main N_GenerateSecondPDFReport_Node0 -- Yes --> N_GenerateSecondPDFReport_Node0_action N_GenerateSecondPDFReport_Node0_action --> E_GenerateSecondPDFReport S_GenerateSecondPDFReport --> N_GenerateSecondPDFReport_Node0 N_GenerateSecondPDFReport_Node1{"The system creates the second PDF"}:::decision N_GenerateSecondPDFReport_Node1_action["Call GCX904R module to create PDF
with Export Train Report title and
132-character width"]:::main N_GenerateSecondPDFReport_Node1 -- Yes --> N_GenerateSecondPDFReport_Node1_action N_GenerateSecondPDFReport_Node1_action --> E_GenerateSecondPDFReport N_GenerateSecondPDFReport_Node0 -- No --> N_GenerateSecondPDFReport_Node1 N_GenerateSecondPDFReport_Node1 -- No --> E_GenerateSecondPDFReport
File: GCX003.cbl
GIVEN:
An enhanced format report has been generated for Laredo station
WHEN:
The system creates the second PDF report
THEN:
The system calls the PDF generation module (GCX904R) with the enhanced report table, new report subject, train ID, report title as 'Export Train Report', report type as 'EXPORT', PDF length of 132 characters, and the enhanced report line count
File: GCX003.cbl
GIVEN:
An enhanced format report generated for Laredo TX station
WHEN:
The system creates the second PDF
THEN:
- Call gcx904r module to create pdf with export train report title
- 132-character width
β Consolidated Acceptance Criteria
- The system spawns the export report → the system creates a GCX141 message with function name flag, train ID, and message length, then inserts the message to trigger the Canadian export report generation process
- The system processes export reporting → send message to GCX141 queue to spawn Canadian export report processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpawnCanadianExportReport(["Start Step"])
E_SpawnCanadianExportReport(["End Step"])
N_SpawnCanadianExportReport_Node0{"The system spawns the export report"}:::decision
N_SpawnCanadianExportReport_Node0_action["The system creates a GCX141 message
with function name flag, train ID,
and message length, then inserts the
message to trigger the Canadian
export report generation process"]:::main N_SpawnCanadianExportReport_Node0 -- Yes --> N_SpawnCanadianExportReport_Node0_action N_SpawnCanadianExportReport_Node0_action --> E_SpawnCanadianExportReport S_SpawnCanadianExportReport --> N_SpawnCanadianExportReport_Node0 N_SpawnCanadianExportReport_Node1{"The system processes export
reporting"}:::decision N_SpawnCanadianExportReport_Node1_action["Send message to GCX141 queue to
spawn Canadian export report
processing"]:::main N_SpawnCanadianExportReport_Node1 -- Yes --> N_SpawnCanadianExportReport_Node1_action N_SpawnCanadianExportReport_Node1_action --> E_SpawnCanadianExportReport N_SpawnCanadianExportReport_Node0 -- No --> N_SpawnCanadianExportReport_Node1 N_SpawnCanadianExportReport_Node1 -- No --> E_SpawnCanadianExportReport
with function name flag, train ID,
and message length, then inserts the
message to trigger the Canadian
export report generation process"]:::main N_SpawnCanadianExportReport_Node0 -- Yes --> N_SpawnCanadianExportReport_Node0_action N_SpawnCanadianExportReport_Node0_action --> E_SpawnCanadianExportReport S_SpawnCanadianExportReport --> N_SpawnCanadianExportReport_Node0 N_SpawnCanadianExportReport_Node1{"The system processes export
reporting"}:::decision N_SpawnCanadianExportReport_Node1_action["Send message to GCX141 queue to
spawn Canadian export report
processing"]:::main N_SpawnCanadianExportReport_Node1 -- Yes --> N_SpawnCanadianExportReport_Node1_action N_SpawnCanadianExportReport_Node1_action --> E_SpawnCanadianExportReport N_SpawnCanadianExportReport_Node0 -- No --> N_SpawnCanadianExportReport_Node1 N_SpawnCanadianExportReport_Node1 -- No --> E_SpawnCanadianExportReport
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
The processing station is not Laredo TX
WHEN:
The system spawns the export report
THEN:
The system creates a GCX141 message with function name flag, train ID, and message length, then inserts the message to trigger the Canadian export report generation process
File: GCX003.cbl
GIVEN:
A train manifest crossing at a station other than Laredo TX
WHEN:
The system processes export reporting
THEN:
Send message to GCX141 queue to spawn Canadian export report processing
β Consolidated Acceptance Criteria
- The system prepares the originator response → the system sets the acknowledgment only flag to true to indicate that only a brief confirmation should be sent rather than the full detailed report
- The system prepares the originator response → set the report flag to RPT-ACK-ONLY to indicate acknowledgment-only response
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetAcknowledgmentOnlyFlag(["Start Step"])
E_SetAcknowledgmentOnlyFlag(["End Step"])
N_SetAcknowledgmentOnlyFlag_Node0{"The system prepares the originator
response"}:::decision N_SetAcknowledgmentOnlyFlag_Node0_action["The system sets the acknowledgment
only flag to true to indicate that
only a brief confirmation should be
sent rather than the full detailed
report"]:::main N_SetAcknowledgmentOnlyFlag_Node0 -- Yes --> N_SetAcknowledgmentOnlyFlag_Node0_action N_SetAcknowledgmentOnlyFlag_Node0_action --> E_SetAcknowledgmentOnlyFlag S_SetAcknowledgmentOnlyFlag --> N_SetAcknowledgmentOnlyFlag_Node0 N_SetAcknowledgmentOnlyFlag_Node1{"The system prepares the originator
response"}:::decision N_SetAcknowledgmentOnlyFlag_Node1_action["Set the report flag to RPT-ACK-ONLY
to indicate acknowledgment-only
response"]:::main N_SetAcknowledgmentOnlyFlag_Node1 -- Yes --> N_SetAcknowledgmentOnlyFlag_Node1_action N_SetAcknowledgmentOnlyFlag_Node1_action --> E_SetAcknowledgmentOnlyFlag N_SetAcknowledgmentOnlyFlag_Node0 -- No --> N_SetAcknowledgmentOnlyFlag_Node1 N_SetAcknowledgmentOnlyFlag_Node1 -- No --> E_SetAcknowledgmentOnlyFlag
response"}:::decision N_SetAcknowledgmentOnlyFlag_Node0_action["The system sets the acknowledgment
only flag to true to indicate that
only a brief confirmation should be
sent rather than the full detailed
report"]:::main N_SetAcknowledgmentOnlyFlag_Node0 -- Yes --> N_SetAcknowledgmentOnlyFlag_Node0_action N_SetAcknowledgmentOnlyFlag_Node0_action --> E_SetAcknowledgmentOnlyFlag S_SetAcknowledgmentOnlyFlag --> N_SetAcknowledgmentOnlyFlag_Node0 N_SetAcknowledgmentOnlyFlag_Node1{"The system prepares the originator
response"}:::decision N_SetAcknowledgmentOnlyFlag_Node1_action["Set the report flag to RPT-ACK-ONLY
to indicate acknowledgment-only
response"]:::main N_SetAcknowledgmentOnlyFlag_Node1 -- Yes --> N_SetAcknowledgmentOnlyFlag_Node1_action N_SetAcknowledgmentOnlyFlag_Node1_action --> E_SetAcknowledgmentOnlyFlag N_SetAcknowledgmentOnlyFlag_Node0 -- No --> N_SetAcknowledgmentOnlyFlag_Node1 N_SetAcknowledgmentOnlyFlag_Node1 -- No --> E_SetAcknowledgmentOnlyFlag
File: GCX003.cbl
GIVEN:
All transmission and reporting processes have completed successfully for a SEND request
WHEN:
The system prepares the originator response
THEN:
The system sets the acknowledgment only flag to true to indicate that only a brief confirmation should be sent rather than the full detailed report
File: GCX003.cbl
GIVEN:
A successfully processed and transmitted train manifest
WHEN:
The system prepares the originator response
THEN:
Set the report flag to RPT-ACK-ONLY to indicate acknowledgment-only response
β Consolidated Acceptance Criteria
- The system sends the response to the originator → if AEI send flag is set, send AEI-specific report; determine destination terminal from alternate terminal or original terminal; set call letters based on error status and action type; send header line first, then send appropriate report content based on acknowledgment flag and warning status, and finally send wrap-up message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendReporttoOriginatorTerminal(["Start Step"])
E_SendReporttoOriginatorTerminal(["End Step"])
N_SendReporttoOriginatorTerminal_Node0{"The system sends the response to
the originator"}:::decision N_SendReporttoOriginatorTerminal_Node0_action["If AEI send flag is set, send
AEI-specific report determine
destination terminal from alternate
terminal or original terminal set
call letters based on error status
and action type send header line
first, then send appropriate report
content based on acknowledgment flag
and warning status, and finally send
wrap-up message"]:::main N_SendReporttoOriginatorTerminal_Node0 -- Yes --> N_SendReporttoOriginatorTerminal_Node0_action N_SendReporttoOriginatorTerminal_Node0_action --> E_SendReporttoOriginatorTerminal S_SendReporttoOriginatorTerminal --> N_SendReporttoOriginatorTerminal_Node0 N_SendReporttoOriginatorTerminal_Node0 -- No --> E_SendReporttoOriginatorTerminal
the originator"}:::decision N_SendReporttoOriginatorTerminal_Node0_action["If AEI send flag is set, send
AEI-specific report determine
destination terminal from alternate
terminal or original terminal set
call letters based on error status
and action type send header line
first, then send appropriate report
content based on acknowledgment flag
and warning status, and finally send
wrap-up message"]:::main N_SendReporttoOriginatorTerminal_Node0 -- Yes --> N_SendReporttoOriginatorTerminal_Node0_action N_SendReporttoOriginatorTerminal_Node0_action --> E_SendReporttoOriginatorTerminal S_SendReporttoOriginatorTerminal --> N_SendReporttoOriginatorTerminal_Node0 N_SendReporttoOriginatorTerminal_Node0 -- No --> E_SendReporttoOriginatorTerminal
File: GCX003.cbl
GIVEN:
A train processing request has completed with final status determined
WHEN:
The system sends the response to the originator
THEN:
- If aei send flag is set, send aei-specific report; determine destination terminal from alternate terminal or original terminal; set call letters based on error status
- Action type; send header line first, then send appropriate report content based on acknowledgment flag
- Warning status, and finally send wrap-up message
β Consolidated Acceptance Criteria
- The system generates audit logs → for each added US CCN (up to 2499 entries), create a log entry with security byte, US cargo flag, action code 'ZZZ', sending transaction 'GCT0031E', user ACF2 ID, current date and time, the US CCN key, and car added log message, then transmit the log entry
- The system creates audit trails → for each added US CCN, create audit log entry with user ID, timestamp, and cargo addition message via GCT1051E
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendActivityAuditLogs(["Start Step"])
E_SendActivityAuditLogs(["End Step"])
N_SendActivityAuditLogs_Node0{"The system generates audit logs"}:::decision
N_SendActivityAuditLogs_Node0_action["For each added US CCN up to 2499
entries, create a log entry with
security byte, US cargo flag, action
code ZZZ , sending transaction
GCT0031E , user ACF2 ID, current
date and time, the US CCN key, and
car added log message, then transmit
the log entry"]:::main N_SendActivityAuditLogs_Node0 -- Yes --> N_SendActivityAuditLogs_Node0_action N_SendActivityAuditLogs_Node0_action --> E_SendActivityAuditLogs S_SendActivityAuditLogs --> N_SendActivityAuditLogs_Node0 N_SendActivityAuditLogs_Node1{"The system creates audit trails"}:::decision N_SendActivityAuditLogs_Node1_action["For each added US CCN, create audit
log entry with user ID, timestamp,
and cargo addition message via
GCT1051E"]:::main N_SendActivityAuditLogs_Node1 -- Yes --> N_SendActivityAuditLogs_Node1_action N_SendActivityAuditLogs_Node1_action --> E_SendActivityAuditLogs N_SendActivityAuditLogs_Node0 -- No --> N_SendActivityAuditLogs_Node1 N_SendActivityAuditLogs_Node1 -- No --> E_SendActivityAuditLogs
entries, create a log entry with
security byte, US cargo flag, action
code ZZZ , sending transaction
GCT0031E , user ACF2 ID, current
date and time, the US CCN key, and
car added log message, then transmit
the log entry"]:::main N_SendActivityAuditLogs_Node0 -- Yes --> N_SendActivityAuditLogs_Node0_action N_SendActivityAuditLogs_Node0_action --> E_SendActivityAuditLogs S_SendActivityAuditLogs --> N_SendActivityAuditLogs_Node0 N_SendActivityAuditLogs_Node1{"The system creates audit trails"}:::decision N_SendActivityAuditLogs_Node1_action["For each added US CCN, create audit
log entry with user ID, timestamp,
and cargo addition message via
GCT1051E"]:::main N_SendActivityAuditLogs_Node1 -- Yes --> N_SendActivityAuditLogs_Node1_action N_SendActivityAuditLogs_Node1_action --> E_SendActivityAuditLogs N_SendActivityAuditLogs_Node0 -- No --> N_SendActivityAuditLogs_Node1 N_SendActivityAuditLogs_Node1 -- No --> E_SendActivityAuditLogs
File: GCX003.cbl
GIVEN:
A SEND request has completed successfully with cargo items added
WHEN:
The system generates audit logs
THEN:
- For each added us ccn (up to 2499 entries), create a log entry with security byte, us cargo flag, action code 'zzz', sending transaction 'gct0031e', user acf2 id, current date
- Time, the us ccn key, and car added log message, then transmit the log entry
File: GCX003.cbl
GIVEN:
A successfully processed train manifest with cargo additions
WHEN:
The system creates audit trails
THEN:
For each added US CCN, create audit log entry with user ID, timestamp, and cargo addition message via GCT1051E
β Consolidated Acceptance Criteria
- The system handles the error condition → the system performs a database rollback operation to undo all changes made during the current processing session
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PerformDatabaseRollback(["Start Step"])
E_PerformDatabaseRollback(["End Step"])
N_PerformDatabaseRollback_Node0{"The system handles the error
condition"}:::decision N_PerformDatabaseRollback_Node0_action["The system performs a database
rollback operation to undo all
changes made during the current
processing session"]:::exclusion N_PerformDatabaseRollback_Node0 -- Yes -->|Alternative| N_PerformDatabaseRollback_Node0_action N_PerformDatabaseRollback_Node0_action --> E_PerformDatabaseRollback S_PerformDatabaseRollback --> N_PerformDatabaseRollback_Node0 N_PerformDatabaseRollback_Node0 -- No --> E_PerformDatabaseRollback
condition"}:::decision N_PerformDatabaseRollback_Node0_action["The system performs a database
rollback operation to undo all
changes made during the current
processing session"]:::exclusion N_PerformDatabaseRollback_Node0 -- Yes -->|Alternative| N_PerformDatabaseRollback_Node0_action N_PerformDatabaseRollback_Node0_action --> E_PerformDatabaseRollback S_PerformDatabaseRollback --> N_PerformDatabaseRollback_Node0 N_PerformDatabaseRollback_Node0 -- No --> E_PerformDatabaseRollback
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A train processing request has encountered errors or is not a successful SEND action
WHEN:
The system handles the error condition
THEN:
The system performs a database rollback operation to undo all changes made during the current processing session
β Consolidated Acceptance Criteria
- The request has no validation errors AND no spawn processing requirements → execute the full transmission workflow including database storage, EDI transmission, duplicate removal, customs reporting, PDF generation, station-specific processing, acknowledgment, and audit logging
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SENDActionwithNoErrorsandNoSpawns(["Start Step"])
E_SENDActionwithNoErrorsandNoSpawns(["End Step"])
N_SENDActionwithNoErrorsandNoSpawns_Node0{"The request has no validation
errors AND no spawn processing
requirements"}:::decision N_SENDActionwithNoErrorsandNoSpawns_Node0_action["Execute the full transmission
workflow including database storage,
EDI transmission, duplicate removal,
customs reporting, PDF generation,
station-specific processing,
acknowledgment, and audit logging"]:::main N_SENDActionwithNoErrorsandNoSpawns_Node0 -- Yes --> N_SENDActionwithNoErrorsandNoSpawns_Node0_action N_SENDActionwithNoErrorsandNoSpawns_Node0_action --> E_SENDActionwithNoErrorsandNoSpawns S_SENDActionwithNoErrorsandNoSpawns --> N_SENDActionwithNoErrorsandNoSpawns_Node0 N_SENDActionwithNoErrorsandNoSpawns_Node0 -- No --> E_SENDActionwithNoErrorsandNoSpawns
errors AND no spawn processing
requirements"}:::decision N_SENDActionwithNoErrorsandNoSpawns_Node0_action["Execute the full transmission
workflow including database storage,
EDI transmission, duplicate removal,
customs reporting, PDF generation,
station-specific processing,
acknowledgment, and audit logging"]:::main N_SENDActionwithNoErrorsandNoSpawns_Node0 -- Yes --> N_SENDActionwithNoErrorsandNoSpawns_Node0_action N_SENDActionwithNoErrorsandNoSpawns_Node0_action --> E_SENDActionwithNoErrorsandNoSpawns S_SENDActionwithNoErrorsandNoSpawns --> N_SENDActionwithNoErrorsandNoSpawns_Node0 N_SENDActionwithNoErrorsandNoSpawns_Node0 -- No --> E_SENDActionwithNoErrorsandNoSpawns
File: GCX003.cbl
GIVEN:
A train manifest request with action type SEND
WHEN:
- The request has no validation errors
- No spawn processing requirements
THEN:
Execute the full transmission workflow including database storage, EDI transmission, duplicate removal, customs reporting, PDF generation, station-specific processing, acknowledgment, and audit logging
β Consolidated Acceptance Criteria
- The system sends the response to the originator → call GCSTONLY module to send formatted report to the originating terminal with appropriate status indicators
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendReporttoOriginator(["Start Step"])
E_SendReporttoOriginator(["End Step"])
N_SendReporttoOriginator_Node0{"The system sends the response to
the originator"}:::decision N_SendReporttoOriginator_Node0_action["Call GCSTONLY module to send
formatted report to the originating
terminal with appropriate status
indicators"]:::main N_SendReporttoOriginator_Node0 -- Yes --> N_SendReporttoOriginator_Node0_action N_SendReporttoOriginator_Node0_action --> E_SendReporttoOriginator S_SendReporttoOriginator --> N_SendReporttoOriginator_Node0 N_SendReporttoOriginator_Node0 -- No --> E_SendReporttoOriginator
the originator"}:::decision N_SendReporttoOriginator_Node0_action["Call GCSTONLY module to send
formatted report to the originating
terminal with appropriate status
indicators"]:::main N_SendReporttoOriginator_Node0 -- Yes --> N_SendReporttoOriginator_Node0_action N_SendReporttoOriginator_Node0_action --> E_SendReporttoOriginator S_SendReporttoOriginator --> N_SendReporttoOriginator_Node0 N_SendReporttoOriginator_Node0 -- No --> E_SendReporttoOriginator
File: GCX003.cbl
GIVEN:
A processed train manifest request with determined response type
WHEN:
The system sends the response to the originator
THEN:
Call GCSTONLY module to send formatted report to the originating terminal with appropriate status indicators
β Consolidated Acceptance Criteria
- The system processes the report-only request → execute duplicate removal and send report to originator without database storage or EDI transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_REPORTAction(["Start Step"])
E_REPORTAction(["End Step"])
N_REPORTAction_Node0{"The system processes the
report-only request"}:::decision N_REPORTAction_Node0_action["Execute duplicate removal and send
report to originator without
database storage or EDI transmission"]:::main N_REPORTAction_Node0 -- Yes --> N_REPORTAction_Node0_action N_REPORTAction_Node0_action --> E_REPORTAction S_REPORTAction --> N_REPORTAction_Node0 N_REPORTAction_Node0 -- No --> E_REPORTAction
report-only request"}:::decision N_REPORTAction_Node0_action["Execute duplicate removal and send
report to originator without
database storage or EDI transmission"]:::main N_REPORTAction_Node0 -- Yes --> N_REPORTAction_Node0_action N_REPORTAction_Node0_action --> E_REPORTAction S_REPORTAction --> N_REPORTAction_Node0 N_REPORTAction_Node0 -- No --> E_REPORTAction
File: GCX003.cbl
GIVEN:
A train manifest request with action type REPORT
WHEN:
The system processes the report-only request
THEN:
- Execute duplicate removal
- Send report to originator without database storage or edi transmission
β Consolidated Acceptance Criteria
- The system handles the error condition → execute database rollback operation to undo any partial changes made during processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RollbackDatabaseChanges(["Start Step"])
E_RollbackDatabaseChanges(["End Step"])
N_RollbackDatabaseChanges_Node0{"The system handles the error
condition"}:::decision N_RollbackDatabaseChanges_Node0_action["Execute database rollback operation
to undo any partial changes made
during processing"]:::exclusion N_RollbackDatabaseChanges_Node0 -- Yes -->|Alternative| N_RollbackDatabaseChanges_Node0_action N_RollbackDatabaseChanges_Node0_action --> E_RollbackDatabaseChanges S_RollbackDatabaseChanges --> N_RollbackDatabaseChanges_Node0 N_RollbackDatabaseChanges_Node0 -- No --> E_RollbackDatabaseChanges
condition"}:::decision N_RollbackDatabaseChanges_Node0_action["Execute database rollback operation
to undo any partial changes made
during processing"]:::exclusion N_RollbackDatabaseChanges_Node0 -- Yes -->|Alternative| N_RollbackDatabaseChanges_Node0_action N_RollbackDatabaseChanges_Node0_action --> E_RollbackDatabaseChanges S_RollbackDatabaseChanges --> N_RollbackDatabaseChanges_Node0 N_RollbackDatabaseChanges_Node0 -- No --> E_RollbackDatabaseChanges
File: GCX003.cbl
GIVEN:
A train manifest request that encountered processing errors
WHEN:
The system handles the error condition
THEN:
Execute database rollback operation to undo any partial changes made during processing
β Consolidated Acceptance Criteria
- The system sets the transmission result status → the result status is set to SENT and warning count is recorded
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRPTRESULTSENTStatus(["Start Step"])
E_SetRPTRESULTSENTStatus(["End Step"])
N_SetRPTRESULTSENTStatus_Node0{"The system sets the transmission
result status"}:::decision N_SetRPTRESULTSENTStatus_Node0_action["The result status is set to SENT
and warning count is recorded"]:::main N_SetRPTRESULTSENTStatus_Node0 -- Yes --> N_SetRPTRESULTSENTStatus_Node0_action N_SetRPTRESULTSENTStatus_Node0_action --> E_SetRPTRESULTSENTStatus S_SetRPTRESULTSENTStatus --> N_SetRPTRESULTSENTStatus_Node0 N_SetRPTRESULTSENTStatus_Node0 -- No --> E_SetRPTRESULTSENTStatus
result status"}:::decision N_SetRPTRESULTSENTStatus_Node0_action["The result status is set to SENT
and warning count is recorded"]:::main N_SetRPTRESULTSENTStatus_Node0 -- Yes --> N_SetRPTRESULTSENTStatus_Node0_action N_SetRPTRESULTSENTStatus_Node0_action --> E_SetRPTRESULTSENTStatus S_SetRPTRESULTSENTStatus --> N_SetRPTRESULTSENTStatus_Node0 N_SetRPTRESULTSENTStatus_Node0 -- No --> E_SetRPTRESULTSENTStatus
File: GCX003.cbl
GIVEN:
Train processing has completed with no errors and no spawn requirements
WHEN:
The system sets the transmission result status
THEN:
- The result status is set to sent
- Warning count is recorded
β Consolidated Acceptance Criteria
- If the transmission eligibility → the result status is set to NO-SENT, spawn count is added to error count, and special manifest processing is prepared
- If the transmission eligibility → the result status is set to NO-SENT and both warning and error counts are recorded
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRPTRESULTNOSENTStatus(["Start Step"])
E_SetRPTRESULTNOSENTStatus(["End Step"])
N_SetRPTRESULTNOSENTStatus_Node0{"The system evaluates the
transmission eligibility"}:::decision N_SetRPTRESULTNOSENTStatus_Node0_action["The result status is set to
NO-SENT, spawn count is added to
error count, and special manifest
processing is prepared"]:::main N_SetRPTRESULTNOSENTStatus_Node0 -- Yes --> N_SetRPTRESULTNOSENTStatus_Node0_action N_SetRPTRESULTNOSENTStatus_Node0_action --> E_SetRPTRESULTNOSENTStatus S_SetRPTRESULTNOSENTStatus --> N_SetRPTRESULTNOSENTStatus_Node0 N_SetRPTRESULTNOSENTStatus_Node1{"The system evaluates the
transmission eligibility"}:::decision N_SetRPTRESULTNOSENTStatus_Node1_action["The result status is set to NO-SENT
and both warning and error counts
are recorded"]:::main N_SetRPTRESULTNOSENTStatus_Node1 -- Yes --> N_SetRPTRESULTNOSENTStatus_Node1_action N_SetRPTRESULTNOSENTStatus_Node1_action --> E_SetRPTRESULTNOSENTStatus N_SetRPTRESULTNOSENTStatus_Node0 -- No --> N_SetRPTRESULTNOSENTStatus_Node1 N_SetRPTRESULTNOSENTStatus_Node1 -- No --> E_SetRPTRESULTNOSENTStatus
transmission eligibility"}:::decision N_SetRPTRESULTNOSENTStatus_Node0_action["The result status is set to
NO-SENT, spawn count is added to
error count, and special manifest
processing is prepared"]:::main N_SetRPTRESULTNOSENTStatus_Node0 -- Yes --> N_SetRPTRESULTNOSENTStatus_Node0_action N_SetRPTRESULTNOSENTStatus_Node0_action --> E_SetRPTRESULTNOSENTStatus S_SetRPTRESULTNOSENTStatus --> N_SetRPTRESULTNOSENTStatus_Node0 N_SetRPTRESULTNOSENTStatus_Node1{"The system evaluates the
transmission eligibility"}:::decision N_SetRPTRESULTNOSENTStatus_Node1_action["The result status is set to NO-SENT
and both warning and error counts
are recorded"]:::main N_SetRPTRESULTNOSENTStatus_Node1 -- Yes --> N_SetRPTRESULTNOSENTStatus_Node1_action N_SetRPTRESULTNOSENTStatus_Node1_action --> E_SetRPTRESULTNOSENTStatus N_SetRPTRESULTNOSENTStatus_Node0 -- No --> N_SetRPTRESULTNOSENTStatus_Node1 N_SetRPTRESULTNOSENTStatus_Node1 -- No --> E_SetRPTRESULTNOSENTStatus
File: GCX003.cbl
GIVEN:
Train processing has completed with no errors but has spawn requirements
WHEN:
The system evaluates the transmission eligibility
THEN:
The result status is set to NO-SENT, spawn count is added to error count, and special manifest processing is prepared
File: GCX003.cbl
GIVEN:
Train processing has completed with errors
WHEN:
The system evaluates the transmission eligibility
THEN:
- The result status is set to no-sent
- Both warning
- Error counts are recorded
β Consolidated Acceptance Criteria
- The system prepares to handle spawn processing → special manifest processing is invoked for each spawn requirement
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrepareSpecialManifestProcessing(["Start Step"])
E_PrepareSpecialManifestProcessing(["End Step"])
N_PrepareSpecialManifestProcessing_Node0{"The system prepares to handle spawn
processing"}:::decision N_PrepareSpecialManifestProcessing_Node0_action["Special manifest processing is
invoked for each spawn requirement"]:::main N_PrepareSpecialManifestProcessing_Node0 -- Yes --> N_PrepareSpecialManifestProcessing_Node0_action N_PrepareSpecialManifestProcessing_Node0_action --> E_PrepareSpecialManifestProcessing S_PrepareSpecialManifestProcessing --> N_PrepareSpecialManifestProcessing_Node0 N_PrepareSpecialManifestProcessing_Node0 -- No --> E_PrepareSpecialManifestProcessing
processing"}:::decision N_PrepareSpecialManifestProcessing_Node0_action["Special manifest processing is
invoked for each spawn requirement"]:::main N_PrepareSpecialManifestProcessing_Node0 -- Yes --> N_PrepareSpecialManifestProcessing_Node0_action N_PrepareSpecialManifestProcessing_Node0_action --> E_PrepareSpecialManifestProcessing S_PrepareSpecialManifestProcessing --> N_PrepareSpecialManifestProcessing_Node0 N_PrepareSpecialManifestProcessing_Node0 -- No --> E_PrepareSpecialManifestProcessing
File: GCX003.cbl
GIVEN:
Train processing has spawn requirements that need special manifest generation
WHEN:
The system prepares to handle spawn processing
THEN:
Special manifest processing is invoked for each spawn requirement
β Consolidated Acceptance Criteria
- The system checks the error accumulation status using the RPT-NO-ERROR flag → the system determines whether any business rule violations or data validation errors have occurred during processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckRPTNOERRORFlag(["Start Step"])
E_CheckRPTNOERRORFlag(["End Step"])
N_CheckRPTNOERRORFlag_Node0{"The system checks the error
accumulation status using the
RPT-NO-ERROR flag"}:::decision N_CheckRPTNOERRORFlag_Node0_action["The system determines whether any
business rule violations or data
validation errors have occurred
during processing"]:::exclusion N_CheckRPTNOERRORFlag_Node0 -- Yes -->|Alternative| N_CheckRPTNOERRORFlag_Node0_action N_CheckRPTNOERRORFlag_Node0_action --> E_CheckRPTNOERRORFlag S_CheckRPTNOERRORFlag --> N_CheckRPTNOERRORFlag_Node0 N_CheckRPTNOERRORFlag_Node0 -- No --> E_CheckRPTNOERRORFlag
accumulation status using the
RPT-NO-ERROR flag"}:::decision N_CheckRPTNOERRORFlag_Node0_action["The system determines whether any
business rule violations or data
validation errors have occurred
during processing"]:::exclusion N_CheckRPTNOERRORFlag_Node0 -- Yes -->|Alternative| N_CheckRPTNOERRORFlag_Node0_action N_CheckRPTNOERRORFlag_Node0_action --> E_CheckRPTNOERRORFlag S_CheckRPTNOERRORFlag --> N_CheckRPTNOERRORFlag_Node0 N_CheckRPTNOERRORFlag_Node0 -- No --> E_CheckRPTNOERRORFlag
File: GCX003.cbl
GIVEN:
A train manifest processing operation has completed all validation and processing steps
WHEN:
The system checks the error accumulation status using the RPT-NO-ERROR flag
THEN:
The system determines whether any business rule violations or data validation errors have occurred during processing
β Consolidated Acceptance Criteria
- The system checks the spawn activity status using the RPT-NO-SPAWN flag → the system determines whether any special manifest creation processes were initiated during cargo processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckRPTNOSPAWNFlag(["Start Step"])
E_CheckRPTNOSPAWNFlag(["End Step"])
N_CheckRPTNOSPAWNFlag_Node0{"The system checks the spawn
activity status using the
RPT-NO-SPAWN flag"}:::decision N_CheckRPTNOSPAWNFlag_Node0_action["The system determines whether any
special manifest creation processes
were initiated during cargo
processing"]:::main N_CheckRPTNOSPAWNFlag_Node0 -- Yes --> N_CheckRPTNOSPAWNFlag_Node0_action N_CheckRPTNOSPAWNFlag_Node0_action --> E_CheckRPTNOSPAWNFlag S_CheckRPTNOSPAWNFlag --> N_CheckRPTNOSPAWNFlag_Node0 N_CheckRPTNOSPAWNFlag_Node0 -- No --> E_CheckRPTNOSPAWNFlag
activity status using the
RPT-NO-SPAWN flag"}:::decision N_CheckRPTNOSPAWNFlag_Node0_action["The system determines whether any
special manifest creation processes
were initiated during cargo
processing"]:::main N_CheckRPTNOSPAWNFlag_Node0 -- Yes --> N_CheckRPTNOSPAWNFlag_Node0_action N_CheckRPTNOSPAWNFlag_Node0_action --> E_CheckRPTNOSPAWNFlag S_CheckRPTNOSPAWNFlag --> N_CheckRPTNOSPAWNFlag_Node0 N_CheckRPTNOSPAWNFlag_Node0 -- No --> E_CheckRPTNOSPAWNFlag
File: GCX003.cbl
GIVEN:
Train manifest processing has completed and error status has been evaluated
WHEN:
The system checks the spawn activity status using the RPT-NO-SPAWN flag
THEN:
The system determines whether any special manifest creation processes were initiated during cargo processing
β Consolidated Acceptance Criteria
- If the request action type for send operations → the system determines whether to proceed with customs transmission or generate reports only
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckREQACTIONSEND(["Start Step"])
E_CheckREQACTIONSEND(["End Step"])
N_CheckREQACTIONSEND_Node0{"The system evaluates the request
action type for send operations"}:::decision N_CheckREQACTIONSEND_Node0_action["The system determines whether to
proceed with customs transmission or
generate reports only"]:::main N_CheckREQACTIONSEND_Node0 -- Yes --> N_CheckREQACTIONSEND_Node0_action N_CheckREQACTIONSEND_Node0_action --> E_CheckREQACTIONSEND S_CheckREQACTIONSEND --> N_CheckREQACTIONSEND_Node0 N_CheckREQACTIONSEND_Node0 -- No --> E_CheckREQACTIONSEND
action type for send operations"}:::decision N_CheckREQACTIONSEND_Node0_action["The system determines whether to
proceed with customs transmission or
generate reports only"]:::main N_CheckREQACTIONSEND_Node0 -- Yes --> N_CheckREQACTIONSEND_Node0_action N_CheckREQACTIONSEND_Node0_action --> E_CheckREQACTIONSEND S_CheckREQACTIONSEND --> N_CheckREQACTIONSEND_Node0 N_CheckREQACTIONSEND_Node0 -- No --> E_CheckREQACTIONSEND
File: GCX003.cbl
GIVEN:
A train manifest request has been received and initial processing completed
WHEN:
The system evaluates the request action type for send operations
THEN:
The system determines whether to proceed with customs transmission or generate reports only
β Consolidated Acceptance Criteria
- If the request action type for report operations → the system determines whether to generate reports without customs transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckREQACTIONREPORT(["Start Step"])
E_CheckREQACTIONREPORT(["End Step"])
N_CheckREQACTIONREPORT_Node0{"The system evaluates the request
action type for report operations"}:::decision N_CheckREQACTIONREPORT_Node0_action["The system determines whether to
generate reports without customs
transmission"]:::main N_CheckREQACTIONREPORT_Node0 -- Yes --> N_CheckREQACTIONREPORT_Node0_action N_CheckREQACTIONREPORT_Node0_action --> E_CheckREQACTIONREPORT S_CheckREQACTIONREPORT --> N_CheckREQACTIONREPORT_Node0 N_CheckREQACTIONREPORT_Node0 -- No --> E_CheckREQACTIONREPORT
action type for report operations"}:::decision N_CheckREQACTIONREPORT_Node0_action["The system determines whether to
generate reports without customs
transmission"]:::main N_CheckREQACTIONREPORT_Node0 -- Yes --> N_CheckREQACTIONREPORT_Node0_action N_CheckREQACTIONREPORT_Node0_action --> E_CheckREQACTIONREPORT S_CheckREQACTIONREPORT --> N_CheckREQACTIONREPORT_Node0 N_CheckREQACTIONREPORT_Node0 -- No --> E_CheckREQACTIONREPORT
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A train manifest request has been received and is not a send action
WHEN:
The system evaluates the request action type for report operations
THEN:
The system determines whether to generate reports without customs transmission
β Consolidated Acceptance Criteria
- The system determines the final processing result → the system sets the processing result to SENT indicating successful customs transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetProcessingResultSENT(["Start Step"])
E_SetProcessingResultSENT(["End Step"])
N_SetProcessingResultSENT_Node0{"The system determines the final
processing result"}:::decision N_SetProcessingResultSENT_Node0_action["The system sets the processing
result to SENT indicating successful
customs transmission"]:::main N_SetProcessingResultSENT_Node0 -- Yes --> N_SetProcessingResultSENT_Node0_action N_SetProcessingResultSENT_Node0_action --> E_SetProcessingResultSENT S_SetProcessingResultSENT --> N_SetProcessingResultSENT_Node0 N_SetProcessingResultSENT_Node0 -- No --> E_SetProcessingResultSENT
processing result"}:::decision N_SetProcessingResultSENT_Node0_action["The system sets the processing
result to SENT indicating successful
customs transmission"]:::main N_SetProcessingResultSENT_Node0 -- Yes --> N_SetProcessingResultSENT_Node0_action N_SetProcessingResultSENT_Node0_action --> E_SetProcessingResultSENT S_SetProcessingResultSENT --> N_SetProcessingResultSENT_Node0 N_SetProcessingResultSENT_Node0 -- No --> E_SetProcessingResultSENT
File: GCX003.cbl
GIVEN:
Train manifest processing completed with no errors, no spawn activities, and a send action request
WHEN:
The system determines the final processing result
THEN:
The system sets the processing result to SENT indicating successful customs transmission
β Consolidated Acceptance Criteria
- The system determines the final processing result for send actions → the system sets the processing result to NOT SENT and indicates special processing activities occurred
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetProcessingResultNOTSENTwithSpawns(["Start Step"])
E_SetProcessingResultNOTSENTwithSpawns(["End Step"])
N_SetProcessingResultNOTSENTwithSpawns_Node0{"The system determines the final
processing result for send actions"}:::decision N_SetProcessingResultNOTSENTwithSpawns_Node0_action["The system sets the processing
result to NOT SENT and indicates
special processing activities
occurred"]:::main N_SetProcessingResultNOTSENTwithSpawns_Node0 -- Yes --> N_SetProcessingResultNOTSENTwithSpawns_Node0_action N_SetProcessingResultNOTSENTwithSpawns_Node0_action --> E_SetProcessingResultNOTSENTwithSpawns S_SetProcessingResultNOTSENTwithSpawns --> N_SetProcessingResultNOTSENTwithSpawns_Node0 N_SetProcessingResultNOTSENTwithSpawns_Node0 -- No --> E_SetProcessingResultNOTSENTwithSpawns
processing result for send actions"}:::decision N_SetProcessingResultNOTSENTwithSpawns_Node0_action["The system sets the processing
result to NOT SENT and indicates
special processing activities
occurred"]:::main N_SetProcessingResultNOTSENTwithSpawns_Node0 -- Yes --> N_SetProcessingResultNOTSENTwithSpawns_Node0_action N_SetProcessingResultNOTSENTwithSpawns_Node0_action --> E_SetProcessingResultNOTSENTwithSpawns S_SetProcessingResultNOTSENTwithSpawns --> N_SetProcessingResultNOTSENTwithSpawns_Node0 N_SetProcessingResultNOTSENTwithSpawns_Node0 -- No --> E_SetProcessingResultNOTSENTwithSpawns
File: GCX003.cbl
GIVEN:
Train manifest processing completed with either errors present or spawn activities triggered or both
WHEN:
The system determines the final processing result for send actions
THEN:
- The system sets the processing result to not sent
- Indicates special processing activities occurred
β Consolidated Acceptance Criteria
- The system determines the final processing result → the system sets the processing result to REPORT GENERATED indicating successful report creation without customs transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetProcessingResultREPORTGENERATED(["Start Step"])
E_SetProcessingResultREPORTGENERATED(["End Step"])
N_SetProcessingResultREPORTGENERATED_Node0{"The system determines the final
processing result"}:::decision N_SetProcessingResultREPORTGENERATED_Node0_action["The system sets the processing
result to REPORT GENERATED
indicating successful report
creation without customs
transmission"]:::main N_SetProcessingResultREPORTGENERATED_Node0 -- Yes --> N_SetProcessingResultREPORTGENERATED_Node0_action N_SetProcessingResultREPORTGENERATED_Node0_action --> E_SetProcessingResultREPORTGENERATED S_SetProcessingResultREPORTGENERATED --> N_SetProcessingResultREPORTGENERATED_Node0 N_SetProcessingResultREPORTGENERATED_Node0 -- No --> E_SetProcessingResultREPORTGENERATED
processing result"}:::decision N_SetProcessingResultREPORTGENERATED_Node0_action["The system sets the processing
result to REPORT GENERATED
indicating successful report
creation without customs
transmission"]:::main N_SetProcessingResultREPORTGENERATED_Node0 -- Yes --> N_SetProcessingResultREPORTGENERATED_Node0_action N_SetProcessingResultREPORTGENERATED_Node0_action --> E_SetProcessingResultREPORTGENERATED S_SetProcessingResultREPORTGENERATED --> N_SetProcessingResultREPORTGENERATED_Node0 N_SetProcessingResultREPORTGENERATED_Node0 -- No --> E_SetProcessingResultREPORTGENERATED
File: GCX003.cbl
GIVEN:
A train manifest request specified report action type
WHEN:
The system determines the final processing result
THEN:
The system sets the processing result to REPORT GENERATED indicating successful report creation without customs transmission
β Consolidated Acceptance Criteria
- The system determines the final processing result → the system sets the processing result to ABORTED indicating the request could not be processed
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetProcessingResultABORTED(["Start Step"])
E_SetProcessingResultABORTED(["End Step"])
N_SetProcessingResultABORTED_Node0{"The system determines the final
processing result"}:::decision N_SetProcessingResultABORTED_Node0_action["The system sets the processing
result to ABORTED indicating the
request could not be processed"]:::main N_SetProcessingResultABORTED_Node0 -- Yes --> N_SetProcessingResultABORTED_Node0_action N_SetProcessingResultABORTED_Node0_action --> E_SetProcessingResultABORTED S_SetProcessingResultABORTED --> N_SetProcessingResultABORTED_Node0 N_SetProcessingResultABORTED_Node0 -- No --> E_SetProcessingResultABORTED
processing result"}:::decision N_SetProcessingResultABORTED_Node0_action["The system sets the processing
result to ABORTED indicating the
request could not be processed"]:::main N_SetProcessingResultABORTED_Node0 -- Yes --> N_SetProcessingResultABORTED_Node0_action N_SetProcessingResultABORTED_Node0_action --> E_SetProcessingResultABORTED S_SetProcessingResultABORTED --> N_SetProcessingResultABORTED_Node0 N_SetProcessingResultABORTED_Node0 -- No --> E_SetProcessingResultABORTED
File: GCX003.cbl
GIVEN:
A train manifest request has an action type that is neither send nor report
WHEN:
The system determines the final processing result
THEN:
The system sets the processing result to ABORTED indicating the request could not be processed
β Consolidated Acceptance Criteria
- The system validates the accumulated error count from all processing steps → the system ensures accurate error count totals for reporting and decision making
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateErrorCountAccumulation(["Start Step"])
E_ValidateErrorCountAccumulation(["End Step"])
N_ValidateErrorCountAccumulation_Node0{"The system validates the
accumulated error count from all
processing steps"}:::decision N_ValidateErrorCountAccumulation_Node0_action["The system ensures accurate error
count totals for reporting and
decision making"]:::exclusion N_ValidateErrorCountAccumulation_Node0 -- Yes -->|Alternative| N_ValidateErrorCountAccumulation_Node0_action N_ValidateErrorCountAccumulation_Node0_action --> E_ValidateErrorCountAccumulation S_ValidateErrorCountAccumulation --> N_ValidateErrorCountAccumulation_Node0 N_ValidateErrorCountAccumulation_Node0 -- No --> E_ValidateErrorCountAccumulation
accumulated error count from all
processing steps"}:::decision N_ValidateErrorCountAccumulation_Node0_action["The system ensures accurate error
count totals for reporting and
decision making"]:::exclusion N_ValidateErrorCountAccumulation_Node0 -- Yes -->|Alternative| N_ValidateErrorCountAccumulation_Node0_action N_ValidateErrorCountAccumulation_Node0_action --> E_ValidateErrorCountAccumulation S_ValidateErrorCountAccumulation --> N_ValidateErrorCountAccumulation_Node0 N_ValidateErrorCountAccumulation_Node0 -- No --> E_ValidateErrorCountAccumulation
File: GCX003.cbl
GIVEN:
Train manifest processing has completed and processing result has been determined
WHEN:
The system validates the accumulated error count from all processing steps
THEN:
- The system ensures accurate error count totals for reporting
- Decision making
β Consolidated Acceptance Criteria
- The system validates the accumulated warning count from all processing steps → the system ensures accurate warning count totals for reporting purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateWarningCountAccumulation(["Start Step"])
E_ValidateWarningCountAccumulation(["End Step"])
N_ValidateWarningCountAccumulation_Node0{"The system validates the
accumulated warning count from all
processing steps"}:::decision N_ValidateWarningCountAccumulation_Node0_action["The system ensures accurate warning
count totals for reporting purposes"]:::main N_ValidateWarningCountAccumulation_Node0 -- Yes --> N_ValidateWarningCountAccumulation_Node0_action N_ValidateWarningCountAccumulation_Node0_action --> E_ValidateWarningCountAccumulation S_ValidateWarningCountAccumulation --> N_ValidateWarningCountAccumulation_Node0 N_ValidateWarningCountAccumulation_Node0 -- No --> E_ValidateWarningCountAccumulation
accumulated warning count from all
processing steps"}:::decision N_ValidateWarningCountAccumulation_Node0_action["The system ensures accurate warning
count totals for reporting purposes"]:::main N_ValidateWarningCountAccumulation_Node0 -- Yes --> N_ValidateWarningCountAccumulation_Node0_action N_ValidateWarningCountAccumulation_Node0_action --> E_ValidateWarningCountAccumulation S_ValidateWarningCountAccumulation --> N_ValidateWarningCountAccumulation_Node0 N_ValidateWarningCountAccumulation_Node0 -- No --> E_ValidateWarningCountAccumulation
File: GCX003.cbl
GIVEN:
Error count validation has been completed
WHEN:
The system validates the accumulated warning count from all processing steps
THEN:
The system ensures accurate warning count totals for reporting purposes
β Consolidated Acceptance Criteria
- The system validates the accumulated spawn count from all processing steps → the system ensures accurate spawn activity count totals for processing outcome determination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateSpawnCountAccumulation(["Start Step"])
E_ValidateSpawnCountAccumulation(["End Step"])
N_ValidateSpawnCountAccumulation_Node0{"The system validates the
accumulated spawn count from all
processing steps"}:::decision N_ValidateSpawnCountAccumulation_Node0_action["The system ensures accurate spawn
activity count totals for processing
outcome determination"]:::main N_ValidateSpawnCountAccumulation_Node0 -- Yes --> N_ValidateSpawnCountAccumulation_Node0_action N_ValidateSpawnCountAccumulation_Node0_action --> E_ValidateSpawnCountAccumulation S_ValidateSpawnCountAccumulation --> N_ValidateSpawnCountAccumulation_Node0 N_ValidateSpawnCountAccumulation_Node0 -- No --> E_ValidateSpawnCountAccumulation
accumulated spawn count from all
processing steps"}:::decision N_ValidateSpawnCountAccumulation_Node0_action["The system ensures accurate spawn
activity count totals for processing
outcome determination"]:::main N_ValidateSpawnCountAccumulation_Node0 -- Yes --> N_ValidateSpawnCountAccumulation_Node0_action N_ValidateSpawnCountAccumulation_Node0_action --> E_ValidateSpawnCountAccumulation S_ValidateSpawnCountAccumulation --> N_ValidateSpawnCountAccumulation_Node0 N_ValidateSpawnCountAccumulation_Node0 -- No --> E_ValidateSpawnCountAccumulation
File: GCX003.cbl
GIVEN:
Warning count validation has been completed
WHEN:
The system validates the accumulated spawn count from all processing steps
THEN:
The system ensures accurate spawn activity count totals for processing outcome determination
β Consolidated Acceptance Criteria
- The system calculates final error statistics → the system produces complete error metrics for inclusion in processing reports and audit trails
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateFinalErrorStatistics(["Start Step"])
E_CalculateFinalErrorStatistics(["End Step"])
N_CalculateFinalErrorStatistics_Node0{"The system calculates final error
statistics"}:::decision N_CalculateFinalErrorStatistics_Node0_action["The system produces complete error
metrics for inclusion in processing
reports and audit trails"]:::exclusion N_CalculateFinalErrorStatistics_Node0 -- Yes -->|Alternative| N_CalculateFinalErrorStatistics_Node0_action N_CalculateFinalErrorStatistics_Node0_action --> E_CalculateFinalErrorStatistics S_CalculateFinalErrorStatistics --> N_CalculateFinalErrorStatistics_Node0 N_CalculateFinalErrorStatistics_Node0 -- No --> E_CalculateFinalErrorStatistics
statistics"}:::decision N_CalculateFinalErrorStatistics_Node0_action["The system produces complete error
metrics for inclusion in processing
reports and audit trails"]:::exclusion N_CalculateFinalErrorStatistics_Node0 -- Yes -->|Alternative| N_CalculateFinalErrorStatistics_Node0_action N_CalculateFinalErrorStatistics_Node0_action --> E_CalculateFinalErrorStatistics S_CalculateFinalErrorStatistics --> N_CalculateFinalErrorStatistics_Node0 N_CalculateFinalErrorStatistics_Node0 -- No --> E_CalculateFinalErrorStatistics
File: GCX003.cbl
GIVEN:
All count validations have been completed
WHEN:
The system calculates final error statistics
THEN:
- The system produces complete error metrics for inclusion in processing reports
- Audit trails
β Consolidated Acceptance Criteria
- The system calculates final warning statistics → the system produces complete warning metrics for inclusion in processing reports
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateFinalWarningStatistics(["Start Step"])
E_CalculateFinalWarningStatistics(["End Step"])
N_CalculateFinalWarningStatistics_Node0{"The system calculates final warning
statistics"}:::decision N_CalculateFinalWarningStatistics_Node0_action["The system produces complete
warning metrics for inclusion in
processing reports"]:::main N_CalculateFinalWarningStatistics_Node0 -- Yes --> N_CalculateFinalWarningStatistics_Node0_action N_CalculateFinalWarningStatistics_Node0_action --> E_CalculateFinalWarningStatistics S_CalculateFinalWarningStatistics --> N_CalculateFinalWarningStatistics_Node0 N_CalculateFinalWarningStatistics_Node0 -- No --> E_CalculateFinalWarningStatistics
statistics"}:::decision N_CalculateFinalWarningStatistics_Node0_action["The system produces complete
warning metrics for inclusion in
processing reports"]:::main N_CalculateFinalWarningStatistics_Node0 -- Yes --> N_CalculateFinalWarningStatistics_Node0_action N_CalculateFinalWarningStatistics_Node0_action --> E_CalculateFinalWarningStatistics S_CalculateFinalWarningStatistics --> N_CalculateFinalWarningStatistics_Node0 N_CalculateFinalWarningStatistics_Node0 -- No --> E_CalculateFinalWarningStatistics
File: GCX003.cbl
GIVEN:
Final error statistics calculation has been completed
WHEN:
The system calculates final warning statistics
THEN:
The system produces complete warning metrics for inclusion in processing reports
β Consolidated Acceptance Criteria
- The system calculates final spawn activity statistics → the system produces complete spawn metrics for inclusion in processing reports and audit trails
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateFinalSpawnStatistics(["Start Step"])
E_CalculateFinalSpawnStatistics(["End Step"])
N_CalculateFinalSpawnStatistics_Node0{"The system calculates final spawn
activity statistics"}:::decision N_CalculateFinalSpawnStatistics_Node0_action["The system produces complete spawn
metrics for inclusion in processing
reports and audit trails"]:::main N_CalculateFinalSpawnStatistics_Node0 -- Yes --> N_CalculateFinalSpawnStatistics_Node0_action N_CalculateFinalSpawnStatistics_Node0_action --> E_CalculateFinalSpawnStatistics S_CalculateFinalSpawnStatistics --> N_CalculateFinalSpawnStatistics_Node0 N_CalculateFinalSpawnStatistics_Node0 -- No --> E_CalculateFinalSpawnStatistics
activity statistics"}:::decision N_CalculateFinalSpawnStatistics_Node0_action["The system produces complete spawn
metrics for inclusion in processing
reports and audit trails"]:::main N_CalculateFinalSpawnStatistics_Node0 -- Yes --> N_CalculateFinalSpawnStatistics_Node0_action N_CalculateFinalSpawnStatistics_Node0_action --> E_CalculateFinalSpawnStatistics S_CalculateFinalSpawnStatistics --> N_CalculateFinalSpawnStatistics_Node0 N_CalculateFinalSpawnStatistics_Node0 -- No --> E_CalculateFinalSpawnStatistics
File: GCX003.cbl
GIVEN:
Final warning statistics calculation has been completed
WHEN:
The system calculates final spawn activity statistics
THEN:
- The system produces complete spawn metrics for inclusion in processing reports
- Audit trails
β Consolidated Acceptance Criteria
- The system determines the overall processing completion status → the system establishes whether processing completed successfully, with warnings, with errors, or was aborted
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DetermineProcessingCompletionStatus(["Start Step"])
E_DetermineProcessingCompletionStatus(["End Step"])
N_DetermineProcessingCompletionStatus_Node0{"The system determines the overall
processing completion status"}:::decision N_DetermineProcessingCompletionStatus_Node0_action["The system establishes whether
processing completed successfully,
with warnings, with errors, or was
aborted"]:::main N_DetermineProcessingCompletionStatus_Node0 -- Yes --> N_DetermineProcessingCompletionStatus_Node0_action N_DetermineProcessingCompletionStatus_Node0_action --> E_DetermineProcessingCompletionStatus S_DetermineProcessingCompletionStatus --> N_DetermineProcessingCompletionStatus_Node0 N_DetermineProcessingCompletionStatus_Node0 -- No --> E_DetermineProcessingCompletionStatus
processing completion status"}:::decision N_DetermineProcessingCompletionStatus_Node0_action["The system establishes whether
processing completed successfully,
with warnings, with errors, or was
aborted"]:::main N_DetermineProcessingCompletionStatus_Node0 -- Yes --> N_DetermineProcessingCompletionStatus_Node0_action N_DetermineProcessingCompletionStatus_Node0_action --> E_DetermineProcessingCompletionStatus S_DetermineProcessingCompletionStatus --> N_DetermineProcessingCompletionStatus_Node0 N_DetermineProcessingCompletionStatus_Node0 -- No --> E_DetermineProcessingCompletionStatus
File: GCX003.cbl
GIVEN:
All final statistics calculations have been completed
WHEN:
The system determines the overall processing completion status
THEN:
The system establishes whether processing completed successfully, with warnings, with errors, or was aborted
β Consolidated Acceptance Criteria
- The system sets the final processing outcome → the system assigns the appropriate outcome status that accurately reflects the processing results for user notification and audit purposes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFinalProcessingOutcome(["Start Step"])
E_SetFinalProcessingOutcome(["End Step"])
N_SetFinalProcessingOutcome_Node0{"The system sets the final
processing outcome"}:::decision N_SetFinalProcessingOutcome_Node0_action["The system assigns the appropriate
outcome status that accurately
reflects the processing results for
user notification and audit purposes"]:::main N_SetFinalProcessingOutcome_Node0 -- Yes --> N_SetFinalProcessingOutcome_Node0_action N_SetFinalProcessingOutcome_Node0_action --> E_SetFinalProcessingOutcome S_SetFinalProcessingOutcome --> N_SetFinalProcessingOutcome_Node0 N_SetFinalProcessingOutcome_Node0 -- No --> E_SetFinalProcessingOutcome
processing outcome"}:::decision N_SetFinalProcessingOutcome_Node0_action["The system assigns the appropriate
outcome status that accurately
reflects the processing results for
user notification and audit purposes"]:::main N_SetFinalProcessingOutcome_Node0 -- Yes --> N_SetFinalProcessingOutcome_Node0_action N_SetFinalProcessingOutcome_Node0_action --> E_SetFinalProcessingOutcome S_SetFinalProcessingOutcome --> N_SetFinalProcessingOutcome_Node0 N_SetFinalProcessingOutcome_Node0 -- No --> E_SetFinalProcessingOutcome
File: GCX003.cbl
GIVEN:
Processing completion status has been determined
WHEN:
The system sets the final processing outcome
THEN:
- The system assigns the appropriate outcome status that accurately reflects the processing results for user notification
- Audit purposes
β Consolidated Acceptance Criteria
- If the report line type → the system identifies whether the line is a message line requiring error count processing or a non-message line to be skipped
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MessageLineType(["Start Step"])
E_MessageLineType(["End Step"])
N_MessageLineType_Node0{"The system evaluates the report
line type"}:::decision N_MessageLineType_Node0_action["The system identifies whether the
line is a message line requiring
error count processing or a
non-message line to be skipped"]:::main N_MessageLineType_Node0 -- Yes --> N_MessageLineType_Node0_action N_MessageLineType_Node0_action --> E_MessageLineType S_MessageLineType --> N_MessageLineType_Node0 N_MessageLineType_Node0 -- No --> E_MessageLineType
line type"}:::decision N_MessageLineType_Node0_action["The system identifies whether the
line is a message line requiring
error count processing or a
non-message line to be skipped"]:::main N_MessageLineType_Node0 -- Yes --> N_MessageLineType_Node0_action N_MessageLineType_Node0_action --> E_MessageLineType S_MessageLineType --> N_MessageLineType_Node0 N_MessageLineType_Node0 -- No --> E_MessageLineType
File: GCX003.cbl
GIVEN:
A report line exists at a specific index position
WHEN:
The system evaluates the report line type
THEN:
The system identifies whether the line is a message line requiring error count processing or a non-message line to be skipped
β Consolidated Acceptance Criteria
- The system checks if the message is a spawn message type → spawn messages are excluded from error counting while non-spawn messages proceed to error type classification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SpawnMessage(["Start Step"])
E_SpawnMessage(["End Step"])
N_SpawnMessage_Node0{"The system checks if the message is
a spawn message type"}:::decision N_SpawnMessage_Node0_action["Spawn messages are excluded from
error counting while non-spawn
messages proceed to error type
classification"]:::main N_SpawnMessage_Node0 -- Yes --> N_SpawnMessage_Node0_action N_SpawnMessage_Node0_action --> E_SpawnMessage S_SpawnMessage --> N_SpawnMessage_Node0 N_SpawnMessage_Node0 -- No --> E_SpawnMessage
a spawn message type"}:::decision N_SpawnMessage_Node0_action["Spawn messages are excluded from
error counting while non-spawn
messages proceed to error type
classification"]:::main N_SpawnMessage_Node0 -- Yes --> N_SpawnMessage_Node0_action N_SpawnMessage_Node0_action --> E_SpawnMessage S_SpawnMessage --> N_SpawnMessage_Node0 N_SpawnMessage_Node0 -- No --> E_SpawnMessage
File: GCX003.cbl
GIVEN:
A message line has been identified for processing
WHEN:
The system checks if the message is a spawn message type
THEN:
Spawn messages are excluded from error counting while non-spawn messages proceed to error type classification
β Consolidated Acceptance Criteria
- If the message type indicator → messages are classified as errors (increment error counter), warnings (increment warning counter), or information (increment info counter)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ErrorTypeClassification(["Start Step"])
E_ErrorTypeClassification(["End Step"])
N_ErrorTypeClassification_Node0{"The system evaluates the message
type indicator"}:::decision N_ErrorTypeClassification_Node0_action["Messages are classified as errors
increment error counter, warnings
increment warning counter, or
information increment info counter"]:::main N_ErrorTypeClassification_Node0 -- Yes --> N_ErrorTypeClassification_Node0_action N_ErrorTypeClassification_Node0_action --> E_ErrorTypeClassification S_ErrorTypeClassification --> N_ErrorTypeClassification_Node0 N_ErrorTypeClassification_Node0 -- No --> E_ErrorTypeClassification
type indicator"}:::decision N_ErrorTypeClassification_Node0_action["Messages are classified as errors
increment error counter, warnings
increment warning counter, or
information increment info counter"]:::main N_ErrorTypeClassification_Node0 -- Yes --> N_ErrorTypeClassification_Node0_action N_ErrorTypeClassification_Node0_action --> E_ErrorTypeClassification S_ErrorTypeClassification --> N_ErrorTypeClassification_Node0 N_ErrorTypeClassification_Node0 -- No --> E_ErrorTypeClassification
File: GCX003.cbl
GIVEN:
A non-spawn message line requires processing
WHEN:
The system evaluates the message type indicator
THEN:
Messages are classified as errors (increment error counter), warnings (increment warning counter), or information (increment info counter)
β Consolidated Acceptance Criteria
- The system checks if the message type indicator equals 43 → type 43 errors increment a special Type 43 counter in addition to the general error counter
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckErrorType43(["Start Step"])
E_CheckErrorType43(["End Step"])
N_CheckErrorType43_Node0{"The system checks if the message
type indicator equals 43"}:::decision N_CheckErrorType43_Node0_action["Type 43 errors increment a special
Type 43 counter in addition to the
general error counter"]:::main N_CheckErrorType43_Node0 -- Yes --> N_CheckErrorType43_Node0_action N_CheckErrorType43_Node0_action --> E_CheckErrorType43 S_CheckErrorType43 --> N_CheckErrorType43_Node0 N_CheckErrorType43_Node0 -- No --> E_CheckErrorType43
type indicator equals 43"}:::decision N_CheckErrorType43_Node0_action["Type 43 errors increment a special
Type 43 counter in addition to the
general error counter"]:::main N_CheckErrorType43_Node0 -- Yes --> N_CheckErrorType43_Node0_action N_CheckErrorType43_Node0_action --> E_CheckErrorType43 S_CheckErrorType43 --> N_CheckErrorType43_Node0 N_CheckErrorType43_Node0 -- No --> E_CheckErrorType43
File: GCX003.cbl
GIVEN:
An error message has been processed and error counter incremented
WHEN:
The system checks if the message type indicator equals 43
THEN:
Type 43 errors increment a special Type 43 counter in addition to the general error counter
β Consolidated Acceptance Criteria
- The system processes the Type 43 error → the ERR-43-CNT counter is incremented by one
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementType43Counter(["Start Step"])
E_IncrementType43Counter(["End Step"])
N_IncrementType43Counter_Node0{"The system processes the Type 43
error"}:::decision N_IncrementType43Counter_Node0_action["The ERR-43-CNT counter is
incremented by one"]:::exclusion N_IncrementType43Counter_Node0 -- Yes -->|Alternative| N_IncrementType43Counter_Node0_action N_IncrementType43Counter_Node0_action --> E_IncrementType43Counter S_IncrementType43Counter --> N_IncrementType43Counter_Node0 N_IncrementType43Counter_Node0 -- No --> E_IncrementType43Counter
error"}:::decision N_IncrementType43Counter_Node0_action["The ERR-43-CNT counter is
incremented by one"]:::exclusion N_IncrementType43Counter_Node0 -- Yes -->|Alternative| N_IncrementType43Counter_Node0_action N_IncrementType43Counter_Node0_action --> E_IncrementType43Counter S_IncrementType43Counter --> N_IncrementType43Counter_Node0 N_IncrementType43Counter_Node0 -- No --> E_IncrementType43Counter
File: GCX003.cbl
GIVEN:
An error message has been identified as Type 43
WHEN:
The system processes the Type 43 error
THEN:
The ERR-43-CNT counter is incremented by one
β Consolidated Acceptance Criteria
- The system checks if the message type indicator is 49 or 52 → warning types 49 and 52 additionally increment the DSP counter by one
- The message type indicator equals 49 or 52 → the system increments the DSP count by 1 in addition to the general warning count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WarningType49or52(["Start Step"])
E_WarningType49or52(["End Step"])
N_WarningType49or52_Node0{"The system checks if the message
type indicator is 49 or 52"}:::decision N_WarningType49or52_Node0_action["Warning types 49 and 52
additionally increment the DSP
counter by one"]:::main N_WarningType49or52_Node0 -- Yes --> N_WarningType49or52_Node0_action N_WarningType49or52_Node0_action --> E_WarningType49or52 S_WarningType49or52 --> N_WarningType49or52_Node0 N_WarningType49or52_Node1{"The message type indicator equals
49 or 52"}:::decision N_WarningType49or52_Node1_action["The system increments the DSP count
by 1 in addition to the general
warning count"]:::main N_WarningType49or52_Node1 -- Yes --> N_WarningType49or52_Node1_action N_WarningType49or52_Node1_action --> E_WarningType49or52 N_WarningType49or52_Node0 -- No --> N_WarningType49or52_Node1 N_WarningType49or52_Node1 -- No --> E_WarningType49or52
type indicator is 49 or 52"}:::decision N_WarningType49or52_Node0_action["Warning types 49 and 52
additionally increment the DSP
counter by one"]:::main N_WarningType49or52_Node0 -- Yes --> N_WarningType49or52_Node0_action N_WarningType49or52_Node0_action --> E_WarningType49or52 S_WarningType49or52 --> N_WarningType49or52_Node0 N_WarningType49or52_Node1{"The message type indicator equals
49 or 52"}:::decision N_WarningType49or52_Node1_action["The system increments the DSP count
by 1 in addition to the general
warning count"]:::main N_WarningType49or52_Node1 -- Yes --> N_WarningType49or52_Node1_action N_WarningType49or52_Node1_action --> E_WarningType49or52 N_WarningType49or52_Node0 -- No --> N_WarningType49or52_Node1 N_WarningType49or52_Node1 -- No --> E_WarningType49or52
File: GCX003.cbl
GIVEN:
A warning message has been processed and warning counter incremented
WHEN:
The system checks if the message type indicator is 49 or 52
THEN:
- Warning types 49
- 52 additionally increment the dsp counter by one
File: GCX003.cbl
GIVEN:
A warning message has been identified and warning count has been incremented
WHEN:
The message type indicator equals 49 or 52
THEN:
The system increments the DSP count by 1 in addition to the general warning count
β Consolidated Acceptance Criteria
- The system compares the total error count with the Type 43 error count → if error count equals Type 43 count, processing continues normally; otherwise excess Type 43 errors are converted to warnings with appropriate counter adjustments
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ErrorType43CountCheck(["Start Step"])
E_ErrorType43CountCheck(["End Step"])
N_ErrorType43CountCheck_Node0{"The system compares the total error
count with the Type 43 error count"}:::decision N_ErrorType43CountCheck_Node0_action["If error count equals Type 43
count, processing continues normally
otherwise excess Type 43 errors are
converted to warnings with
appropriate counter adjustments"]:::exclusion N_ErrorType43CountCheck_Node0 -- Yes -->|Alternative| N_ErrorType43CountCheck_Node0_action N_ErrorType43CountCheck_Node0_action --> E_ErrorType43CountCheck S_ErrorType43CountCheck --> N_ErrorType43CountCheck_Node0 N_ErrorType43CountCheck_Node0 -- No --> E_ErrorType43CountCheck
count with the Type 43 error count"}:::decision N_ErrorType43CountCheck_Node0_action["If error count equals Type 43
count, processing continues normally
otherwise excess Type 43 errors are
converted to warnings with
appropriate counter adjustments"]:::exclusion N_ErrorType43CountCheck_Node0 -- Yes -->|Alternative| N_ErrorType43CountCheck_Node0_action N_ErrorType43CountCheck_Node0_action --> E_ErrorType43CountCheck S_ErrorType43CountCheck --> N_ErrorType43CountCheck_Node0 N_ErrorType43CountCheck_Node0 -- No --> E_ErrorType43CountCheck
File: GCX003.cbl
GIVEN:
Error counting is complete and Type 43 error count exists
WHEN:
The system compares the total error count with the Type 43 error count
THEN:
If error count equals Type 43 count, processing continues normally; otherwise excess Type 43 errors are converted to warnings with appropriate counter adjustments
β Consolidated Acceptance Criteria
- The system processes the count correction → excess Type 43 error messages are converted to warning type 18 messages
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConvertErrortoWarning(["Start Step"])
E_ConvertErrortoWarning(["End Step"])
N_ConvertErrortoWarning_Node0{"The system processes the count
correction"}:::decision N_ConvertErrortoWarning_Node0_action["Excess Type 43 error messages are
converted to warning type 18
messages"]:::main N_ConvertErrortoWarning_Node0 -- Yes --> N_ConvertErrortoWarning_Node0_action N_ConvertErrortoWarning_Node0_action --> E_ConvertErrortoWarning S_ConvertErrortoWarning --> N_ConvertErrortoWarning_Node0 N_ConvertErrortoWarning_Node0 -- No --> E_ConvertErrortoWarning
correction"}:::decision N_ConvertErrortoWarning_Node0_action["Excess Type 43 error messages are
converted to warning type 18
messages"]:::main N_ConvertErrortoWarning_Node0 -- Yes --> N_ConvertErrortoWarning_Node0_action N_ConvertErrortoWarning_Node0_action --> E_ConvertErrortoWarning S_ConvertErrortoWarning --> N_ConvertErrortoWarning_Node0 N_ConvertErrortoWarning_Node0 -- No --> E_ConvertErrortoWarning
File: GCX003.cbl
GIVEN:
Type 43 error count validation has identified a count mismatch
WHEN:
The system processes the count correction
THEN:
Excess Type 43 error messages are converted to warning type 18 messages
β Consolidated Acceptance Criteria
- The system adjusts the error count → the report error counter is decremented by one for each converted error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AdjustErrorCounter(["Start Step"])
E_AdjustErrorCounter(["End Step"])
N_AdjustErrorCounter_Node0{"The system adjusts the error count"}:::decision
N_AdjustErrorCounter_Node0_action["The report error counter is
decremented by one for each
converted error"]:::exclusion N_AdjustErrorCounter_Node0 -- Yes -->|Alternative| N_AdjustErrorCounter_Node0_action N_AdjustErrorCounter_Node0_action --> E_AdjustErrorCounter S_AdjustErrorCounter --> N_AdjustErrorCounter_Node0 N_AdjustErrorCounter_Node0 -- No --> E_AdjustErrorCounter
decremented by one for each
converted error"]:::exclusion N_AdjustErrorCounter_Node0 -- Yes -->|Alternative| N_AdjustErrorCounter_Node0_action N_AdjustErrorCounter_Node0_action --> E_AdjustErrorCounter S_AdjustErrorCounter --> N_AdjustErrorCounter_Node0 N_AdjustErrorCounter_Node0 -- No --> E_AdjustErrorCounter
File: GCX003.cbl
GIVEN:
Type 43 errors are being converted to warnings
WHEN:
The system adjusts the error count
THEN:
The report error counter is decremented by one for each converted error
β Consolidated Acceptance Criteria
- The system adjusts the warning count → the report warning counter is incremented by one for each converted error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AdjustWarningCounter(["Start Step"])
E_AdjustWarningCounter(["End Step"])
N_AdjustWarningCounter_Node0{"The system adjusts the warning
count"}:::decision N_AdjustWarningCounter_Node0_action["The report warning counter is
incremented by one for each
converted error"]:::main N_AdjustWarningCounter_Node0 -- Yes --> N_AdjustWarningCounter_Node0_action N_AdjustWarningCounter_Node0_action --> E_AdjustWarningCounter S_AdjustWarningCounter --> N_AdjustWarningCounter_Node0 N_AdjustWarningCounter_Node0 -- No --> E_AdjustWarningCounter
count"}:::decision N_AdjustWarningCounter_Node0_action["The report warning counter is
incremented by one for each
converted error"]:::main N_AdjustWarningCounter_Node0 -- Yes --> N_AdjustWarningCounter_Node0_action N_AdjustWarningCounter_Node0_action --> E_AdjustWarningCounter S_AdjustWarningCounter --> N_AdjustWarningCounter_Node0 N_AdjustWarningCounter_Node0 -- No --> E_AdjustWarningCounter
File: GCX003.cbl
GIVEN:
Type 43 errors are being converted to warnings and error counter has been decremented
WHEN:
The system adjusts the warning count
THEN:
The report warning counter is incremented by one for each converted error
β Consolidated Acceptance Criteria
- The system generates the final report headers and summary → the report must include train ID in header line 1, user ID and terminal info in header line 2, action type and result status in header line 3, US customer train ID and ETA details in header line 4, detail headers in lines 6-7, and all header lines must be copied to email text lines
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateFinalReportHeadersandSummary(["Start Step"])
E_GenerateFinalReportHeadersandSummary(["End Step"])
N_GenerateFinalReportHeadersandSummary_Node0{"The system generates the final
report headers and summary"}:::decision N_GenerateFinalReportHeadersandSummary_Node0_action["The report must include train ID in
header line 1, user ID and terminal
info in header line 2, action type
and result status in header line 3,
US customer train ID and ETA details
in header line 4, detail headers in
lines 6-7, and all header lines must
be copied to email text lines"]:::main N_GenerateFinalReportHeadersandSummary_Node0 -- Yes --> N_GenerateFinalReportHeadersandSummary_Node0_action N_GenerateFinalReportHeadersandSummary_Node0_action --> E_GenerateFinalReportHeadersandSummary S_GenerateFinalReportHeadersandSummary --> N_GenerateFinalReportHeadersandSummary_Node0 N_GenerateFinalReportHeadersandSummary_Node0 -- No --> E_GenerateFinalReportHeadersandSummary
report headers and summary"}:::decision N_GenerateFinalReportHeadersandSummary_Node0_action["The report must include train ID in
header line 1, user ID and terminal
info in header line 2, action type
and result status in header line 3,
US customer train ID and ETA details
in header line 4, detail headers in
lines 6-7, and all header lines must
be copied to email text lines"]:::main N_GenerateFinalReportHeadersandSummary_Node0 -- Yes --> N_GenerateFinalReportHeadersandSummary_Node0_action N_GenerateFinalReportHeadersandSummary_Node0_action --> E_GenerateFinalReportHeadersandSummary S_GenerateFinalReportHeadersandSummary --> N_GenerateFinalReportHeadersandSummary_Node0 N_GenerateFinalReportHeadersandSummary_Node0 -- No --> E_GenerateFinalReportHeadersandSummary
File: GCX003.cbl
GIVEN:
A train processing request has been completed with processing results available
WHEN:
- The system generates the final report headers
- Summary
THEN:
- The report must include train id in header line 1, user id
- Terminal info in header line 2, action type
- Result status in header line 3, us customer train id
- Eta details in header line 4, detail headers in lines 6-7, and all header lines must be copied to email text lines
β Consolidated Acceptance Criteria
- The system processes the SEND action → the system must store train list in database, transmit via EDI, check for duplicates, send reports to customs, generate export reports, send acknowledgment to originator, and create audit logs
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SENDActionProcessing(["Start Step"])
E_SENDActionProcessing(["End Step"])
N_SENDActionProcessing_Node0{"The system processes the SEND
action"}:::decision N_SENDActionProcessing_Node0_action["The system must store train list in
database, transmit via EDI, check
for duplicates, send reports to
customs, generate export reports,
send acknowledgment to originator,
and create audit logs"]:::main N_SENDActionProcessing_Node0 -- Yes --> N_SENDActionProcessing_Node0_action N_SENDActionProcessing_Node0_action --> E_SENDActionProcessing S_SENDActionProcessing --> N_SENDActionProcessing_Node0 N_SENDActionProcessing_Node0 -- No --> E_SENDActionProcessing
action"}:::decision N_SENDActionProcessing_Node0_action["The system must store train list in
database, transmit via EDI, check
for duplicates, send reports to
customs, generate export reports,
send acknowledgment to originator,
and create audit logs"]:::main N_SENDActionProcessing_Node0 -- Yes --> N_SENDActionProcessing_Node0_action N_SENDActionProcessing_Node0_action --> E_SENDActionProcessing S_SENDActionProcessing --> N_SENDActionProcessing_Node0 N_SENDActionProcessing_Node0 -- No --> E_SENDActionProcessing
File: GCX003.cbl
GIVEN:
A SEND action request with no errors and no spawn conditions
WHEN:
The system processes the SEND action
THEN:
The system must store train list in database, transmit via EDI, check for duplicates, send reports to customs, generate export reports, send acknowledgment to originator, and create audit logs
β Consolidated Acceptance Criteria
- The system transmits the train list via EDI → the complete train manifest must be sent to customs system via GCCU358T module in background mode, and if AEI send is enabled, an AEI send log entry must be created
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TransmitTrainListviaEDI(["Start Step"])
E_TransmitTrainListviaEDI(["End Step"])
N_TransmitTrainListviaEDI_Node0{"The system transmits the train list
via EDI"}:::decision N_TransmitTrainListviaEDI_Node0_action["The complete train manifest must be
sent to customs system via GCCU358T
module in background mode, and if
AEI send is enabled, an AEI send log
entry must be created"]:::main N_TransmitTrainListviaEDI_Node0 -- Yes --> N_TransmitTrainListviaEDI_Node0_action N_TransmitTrainListviaEDI_Node0_action --> E_TransmitTrainListviaEDI S_TransmitTrainListviaEDI --> N_TransmitTrainListviaEDI_Node0 N_TransmitTrainListviaEDI_Node0 -- No --> E_TransmitTrainListviaEDI
via EDI"}:::decision N_TransmitTrainListviaEDI_Node0_action["The complete train manifest must be
sent to customs system via GCCU358T
module in background mode, and if
AEI send is enabled, an AEI send log
entry must be created"]:::main N_TransmitTrainListviaEDI_Node0 -- Yes --> N_TransmitTrainListviaEDI_Node0_action N_TransmitTrainListviaEDI_Node0_action --> E_TransmitTrainListviaEDI S_TransmitTrainListviaEDI --> N_TransmitTrainListviaEDI_Node0 N_TransmitTrainListviaEDI_Node0 -- No --> E_TransmitTrainListviaEDI
File: GCX003.cbl
GIVEN:
A stored train list ready for customs transmission
WHEN:
The system transmits the train list via EDI
THEN:
The complete train manifest must be sent to customs system via GCCU358T module in background mode, and if AEI send is enabled, an AEI send log entry must be created
β Consolidated Acceptance Criteria
- The system generates Canadian export reports → a new format report must be created with train ID, equipment counts by type (cars loaded/empty, containers loaded/empty, locomotives), ETA details, port information, and total equipment count
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateCanadianExportReports(["Start Step"])
E_GenerateCanadianExportReports(["End Step"])
N_GenerateCanadianExportReports_Node0{"The system generates Canadian
export reports"}:::decision N_GenerateCanadianExportReports_Node0_action["A new format report must be created
with train ID, equipment counts by
type cars loadedempty, containers
loadedempty, locomotives, ETA
details, port information, and total
equipment count"]:::main N_GenerateCanadianExportReports_Node0 -- Yes --> N_GenerateCanadianExportReports_Node0_action N_GenerateCanadianExportReports_Node0_action --> E_GenerateCanadianExportReports S_GenerateCanadianExportReports --> N_GenerateCanadianExportReports_Node0 N_GenerateCanadianExportReports_Node0 -- No --> E_GenerateCanadianExportReports
export reports"}:::decision N_GenerateCanadianExportReports_Node0_action["A new format report must be created
with train ID, equipment counts by
type cars loadedempty, containers
loadedempty, locomotives, ETA
details, port information, and total
equipment count"]:::main N_GenerateCanadianExportReports_Node0 -- Yes --> N_GenerateCanadianExportReports_Node0_action N_GenerateCanadianExportReports_Node0_action --> E_GenerateCanadianExportReports S_GenerateCanadianExportReports --> N_GenerateCanadianExportReports_Node0 N_GenerateCanadianExportReports_Node0 -- No --> E_GenerateCanadianExportReports
File: GCX003.cbl
GIVEN:
A processed train manifest for Laredo TX station crossing
WHEN:
The system generates Canadian export reports
THEN:
A new format report must be created with train ID, equipment counts by type (cars loaded/empty, containers loaded/empty, locomotives), ETA details, port information, and total equipment count
β Consolidated Acceptance Criteria
- The system generates enhanced format reports → a GCX141 message must be created with the US customer train ID and sent via message queue for enhanced report generation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateEnhancedFormatReports(["Start Step"])
E_GenerateEnhancedFormatReports(["End Step"])
N_GenerateEnhancedFormatReports_Node0{"The system generates enhanced
format reports"}:::decision N_GenerateEnhancedFormatReports_Node0_action["A GCX141 message must be created
with the US customer train ID and
sent via message queue for enhanced
report generation"]:::main N_GenerateEnhancedFormatReports_Node0 -- Yes --> N_GenerateEnhancedFormatReports_Node0_action N_GenerateEnhancedFormatReports_Node0_action --> E_GenerateEnhancedFormatReports S_GenerateEnhancedFormatReports --> N_GenerateEnhancedFormatReports_Node0 N_GenerateEnhancedFormatReports_Node0 -- No --> E_GenerateEnhancedFormatReports
format reports"}:::decision N_GenerateEnhancedFormatReports_Node0_action["A GCX141 message must be created
with the US customer train ID and
sent via message queue for enhanced
report generation"]:::main N_GenerateEnhancedFormatReports_Node0 -- Yes --> N_GenerateEnhancedFormatReports_Node0_action N_GenerateEnhancedFormatReports_Node0_action --> E_GenerateEnhancedFormatReports S_GenerateEnhancedFormatReports --> N_GenerateEnhancedFormatReports_Node0 N_GenerateEnhancedFormatReports_Node0 -- No --> E_GenerateEnhancedFormatReports
File: GCX003.cbl
GIVEN:
A processed train manifest for non-Laredo station crossing
WHEN:
The system generates enhanced format reports
THEN:
- A gcx141 message must be created with the us customer train id
- Sent via message queue for enhanced report generation
β Consolidated Acceptance Criteria
- The system generates PDF reports → two PDF reports must be created: a pre-exit report with 80-character width and an export train report with 132-character width, both containing the complete manifest data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GeneratePDFReports(["Start Step"])
E_GeneratePDFReports(["End Step"])
N_GeneratePDFReports_Node0{"The system generates PDF reports"}:::decision
N_GeneratePDFReports_Node0_action["Two PDF reports must be created: a
pre-exit report with 80-character
width and an export train report
with 132-character width, both
containing the complete manifest
data"]:::main N_GeneratePDFReports_Node0 -- Yes --> N_GeneratePDFReports_Node0_action N_GeneratePDFReports_Node0_action --> E_GeneratePDFReports S_GeneratePDFReports --> N_GeneratePDFReports_Node0 N_GeneratePDFReports_Node0 -- No --> E_GeneratePDFReports
pre-exit report with 80-character
width and an export train report
with 132-character width, both
containing the complete manifest
data"]:::main N_GeneratePDFReports_Node0 -- Yes --> N_GeneratePDFReports_Node0_action N_GeneratePDFReports_Node0_action --> E_GeneratePDFReports S_GeneratePDFReports --> N_GeneratePDFReports_Node0 N_GeneratePDFReports_Node0 -- No --> E_GeneratePDFReports
File: GCX003.cbl
GIVEN:
Completed train manifest reports in text format
WHEN:
The system generates PDF reports
THEN:
- Two pdf reports must be created: a pre-exit report with 80-character width
- An export train report with 132-character width, both containing the complete manifest data
β Consolidated Acceptance Criteria
- The system sends acknowledgment to the originator → the acknowledgment must include appropriate call letters based on processing result (error, sent, or report), complete report content based on report type (all lines for full report, headers only for summary), and be sent to the originating terminal or alternate terminal if specified
- The system sends AEI email notifications → email notifications must be sent to configured AEI users retrieved from database, or to default MERLIN ID if no users configured, with subject indicating train sent or not sent status and complete report content
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendAcknowledgmenttoOriginator(["Start Step"])
E_SendAcknowledgmenttoOriginator(["End Step"])
N_SendAcknowledgmenttoOriginator_Node0{"The system sends acknowledgment to
the originator"}:::decision N_SendAcknowledgmenttoOriginator_Node0_action["The acknowledgment must include
appropriate call letters based on
processing result error, sent, or
report, complete report content
based on report type all lines for
full report, headers only for
summary, and be sent to the
originating terminal or alternate
terminal if specified"]:::main N_SendAcknowledgmenttoOriginator_Node0 -- Yes --> N_SendAcknowledgmenttoOriginator_Node0_action N_SendAcknowledgmenttoOriginator_Node0_action --> E_SendAcknowledgmenttoOriginator S_SendAcknowledgmenttoOriginator --> N_SendAcknowledgmenttoOriginator_Node0 N_SendAcknowledgmenttoOriginator_Node1{"The system sends AEI email
notifications"}:::decision N_SendAcknowledgmenttoOriginator_Node1_action["Email notifications must be sent to
configured AEI users retrieved from
database, or to default MERLIN ID if
no users configured, with subject
indicating train sent or not sent
status and complete report content"]:::main N_SendAcknowledgmenttoOriginator_Node1 -- Yes --> N_SendAcknowledgmenttoOriginator_Node1_action N_SendAcknowledgmenttoOriginator_Node1_action --> E_SendAcknowledgmenttoOriginator N_SendAcknowledgmenttoOriginator_Node0 -- No --> N_SendAcknowledgmenttoOriginator_Node1 N_SendAcknowledgmenttoOriginator_Node1 -- No --> E_SendAcknowledgmenttoOriginator
the originator"}:::decision N_SendAcknowledgmenttoOriginator_Node0_action["The acknowledgment must include
appropriate call letters based on
processing result error, sent, or
report, complete report content
based on report type all lines for
full report, headers only for
summary, and be sent to the
originating terminal or alternate
terminal if specified"]:::main N_SendAcknowledgmenttoOriginator_Node0 -- Yes --> N_SendAcknowledgmenttoOriginator_Node0_action N_SendAcknowledgmenttoOriginator_Node0_action --> E_SendAcknowledgmenttoOriginator S_SendAcknowledgmenttoOriginator --> N_SendAcknowledgmenttoOriginator_Node0 N_SendAcknowledgmenttoOriginator_Node1{"The system sends AEI email
notifications"}:::decision N_SendAcknowledgmenttoOriginator_Node1_action["Email notifications must be sent to
configured AEI users retrieved from
database, or to default MERLIN ID if
no users configured, with subject
indicating train sent or not sent
status and complete report content"]:::main N_SendAcknowledgmenttoOriginator_Node1 -- Yes --> N_SendAcknowledgmenttoOriginator_Node1_action N_SendAcknowledgmenttoOriginator_Node1_action --> E_SendAcknowledgmenttoOriginator N_SendAcknowledgmenttoOriginator_Node0 -- No --> N_SendAcknowledgmenttoOriginator_Node1 N_SendAcknowledgmenttoOriginator_Node1 -- No --> E_SendAcknowledgmenttoOriginator
File: GCX003.cbl
GIVEN:
A completed train processing request with results
WHEN:
The system sends acknowledgment to the originator
THEN:
The acknowledgment must include appropriate call letters based on processing result (error, sent, or report), complete report content based on report type (all lines for full report, headers only for summary), and be sent to the originating terminal or alternate terminal if specified
File: GCX003.cbl
GIVEN:
An AEI-enabled train request that has been processed
WHEN:
The system sends AEI email notifications
THEN:
- Email notifications must be sent to configured aei users retrieved from database, or to default merlin id if no users configured, with subject indicating train sent or not sent status
- Complete report content
β Consolidated Acceptance Criteria
- The system creates activity audit logs → for each added cargo record, a log entry must be created with US cargo type, action code ZZZ, sending transaction GCT0031E, user ACF2 ID, current date and time, cargo CCN number, and cargo added message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateActivityAuditLogs(["Start Step"])
E_CreateActivityAuditLogs(["End Step"])
N_CreateActivityAuditLogs_Node0{"The system creates activity audit
logs"}:::decision N_CreateActivityAuditLogs_Node0_action["For each added cargo record, a log
entry must be created with US cargo
type, action code ZZZ, sending
transaction GCT0031E, user ACF2 ID,
current date and time, cargo CCN
number, and cargo added message"]:::main N_CreateActivityAuditLogs_Node0 -- Yes --> N_CreateActivityAuditLogs_Node0_action N_CreateActivityAuditLogs_Node0_action --> E_CreateActivityAuditLogs S_CreateActivityAuditLogs --> N_CreateActivityAuditLogs_Node0 N_CreateActivityAuditLogs_Node0 -- No --> E_CreateActivityAuditLogs
logs"}:::decision N_CreateActivityAuditLogs_Node0_action["For each added cargo record, a log
entry must be created with US cargo
type, action code ZZZ, sending
transaction GCT0031E, user ACF2 ID,
current date and time, cargo CCN
number, and cargo added message"]:::main N_CreateActivityAuditLogs_Node0 -- Yes --> N_CreateActivityAuditLogs_Node0_action N_CreateActivityAuditLogs_Node0_action --> E_CreateActivityAuditLogs S_CreateActivityAuditLogs --> N_CreateActivityAuditLogs_Node0 N_CreateActivityAuditLogs_Node0 -- No --> E_CreateActivityAuditLogs
File: GCX003.cbl
GIVEN:
Cargo records that were added during train processing
WHEN:
The system creates activity audit logs
THEN:
- For each added cargo record, a log entry must be created with us cargo type, action code zzz, sending transaction gct0031e, user acf2 id, current date
- Time, cargo ccn number, and cargo added message
β Consolidated Acceptance Criteria
- The system processes the REPORT action → the system must check for duplicates, generate and send the report to originator without storing data or transmitting to customs
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_REPORTActionProcessing(["Start Step"])
E_REPORTActionProcessing(["End Step"])
N_REPORTActionProcessing_Node0{"The system processes the REPORT
action"}:::decision N_REPORTActionProcessing_Node0_action["The system must check for
duplicates, generate and send the
report to originator without storing
data or transmitting to customs"]:::main N_REPORTActionProcessing_Node0 -- Yes --> N_REPORTActionProcessing_Node0_action N_REPORTActionProcessing_Node0_action --> E_REPORTActionProcessing S_REPORTActionProcessing --> N_REPORTActionProcessing_Node0 N_REPORTActionProcessing_Node0 -- No --> E_REPORTActionProcessing
action"}:::decision N_REPORTActionProcessing_Node0_action["The system must check for
duplicates, generate and send the
report to originator without storing
data or transmitting to customs"]:::main N_REPORTActionProcessing_Node0 -- Yes --> N_REPORTActionProcessing_Node0_action N_REPORTActionProcessing_Node0_action --> E_REPORTActionProcessing S_REPORTActionProcessing --> N_REPORTActionProcessing_Node0 N_REPORTActionProcessing_Node0 -- No --> E_REPORTActionProcessing
File: GCX003.cbl
GIVEN:
A REPORT action request
WHEN:
The system processes the REPORT action
THEN:
- The system must check for duplicates, generate
- Send the report to originator without storing data or transmitting to customs
β Consolidated Acceptance Criteria
- The system executes error processing → the system must perform database rollback to undo any changes, check for duplicates, and send error report to originator
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_OTHERActionProcessing(["Start Step"])
E_OTHERActionProcessing(["End Step"])
N_OTHERActionProcessing_Node0{"The system executes error
processing"}:::decision N_OTHERActionProcessing_Node0_action["The system must perform database
rollback to undo any changes, check
for duplicates, and send error
report to originator"]:::exclusion N_OTHERActionProcessing_Node0 -- Yes -->|Alternative| N_OTHERActionProcessing_Node0_action N_OTHERActionProcessing_Node0_action --> E_OTHERActionProcessing S_OTHERActionProcessing --> N_OTHERActionProcessing_Node0 N_OTHERActionProcessing_Node0 -- No --> E_OTHERActionProcessing
processing"}:::decision N_OTHERActionProcessing_Node0_action["The system must perform database
rollback to undo any changes, check
for duplicates, and send error
report to originator"]:::exclusion N_OTHERActionProcessing_Node0 -- Yes -->|Alternative| N_OTHERActionProcessing_Node0_action N_OTHERActionProcessing_Node0_action --> E_OTHERActionProcessing S_OTHERActionProcessing --> N_OTHERActionProcessing_Node0 N_OTHERActionProcessing_Node0 -- No --> E_OTHERActionProcessing
File: GCX003.cbl
GIVEN:
An invalid action type or error conditions during processing
WHEN:
The system executes error processing
THEN:
The system must perform database rollback to undo any changes, check for duplicates, and send error report to originator
β Consolidated Acceptance Criteria
- The transmission process completes → the system must verify the transmission was successful AND if unsuccessful, trigger parameter validation error handling
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EDITransmissionSuccessful(["Start Step"])
E_EDITransmissionSuccessful(["End Step"])
N_EDITransmissionSuccessful_Node0{"The transmission process completes"}:::decision
N_EDITransmissionSuccessful_Node0_action["The system must verify the
transmission was successful AND if
unsuccessful, trigger parameter
validation error handling"]:::main N_EDITransmissionSuccessful_Node0 -- Yes --> N_EDITransmissionSuccessful_Node0_action N_EDITransmissionSuccessful_Node0_action --> E_EDITransmissionSuccessful S_EDITransmissionSuccessful --> N_EDITransmissionSuccessful_Node0 N_EDITransmissionSuccessful_Node0 -- No --> E_EDITransmissionSuccessful
transmission was successful AND if
unsuccessful, trigger parameter
validation error handling"]:::main N_EDITransmissionSuccessful_Node0 -- Yes --> N_EDITransmissionSuccessful_Node0_action N_EDITransmissionSuccessful_Node0_action --> E_EDITransmissionSuccessful S_EDITransmissionSuccessful --> N_EDITransmissionSuccessful_Node0 N_EDITransmissionSuccessful_Node0 -- No --> E_EDITransmissionSuccessful
File: GCX003.cbl
GIVEN:
The GCCU358T module has been called for EDI transmission
WHEN:
The transmission process completes
THEN:
- The system must verify the transmission was successful
- If unsuccessful, trigger parameter validation error handling
β Consolidated Acceptance Criteria
- The transmission process is finalized → the EDI transmission process must be marked as complete and control returned to the calling process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CompleteEDITransmission(["Start Step"])
E_CompleteEDITransmission(["End Step"])
N_CompleteEDITransmission_Node0{"The transmission process is
finalized"}:::decision N_CompleteEDITransmission_Node0_action["The EDI transmission process must
be marked as complete and control
returned to the calling process"]:::main N_CompleteEDITransmission_Node0 -- Yes --> N_CompleteEDITransmission_Node0_action N_CompleteEDITransmission_Node0_action --> E_CompleteEDITransmission S_CompleteEDITransmission --> N_CompleteEDITransmission_Node0 N_CompleteEDITransmission_Node0 -- No --> E_CompleteEDITransmission
finalized"}:::decision N_CompleteEDITransmission_Node0_action["The EDI transmission process must
be marked as complete and control
returned to the calling process"]:::main N_CompleteEDITransmission_Node0 -- Yes --> N_CompleteEDITransmission_Node0_action N_CompleteEDITransmission_Node0_action --> E_CompleteEDITransmission S_CompleteEDITransmission --> N_CompleteEDITransmission_Node0 N_CompleteEDITransmission_Node0 -- No --> E_CompleteEDITransmission
File: GCX003.cbl
GIVEN:
The EDI transmission is successful AND any required AEI logging is complete
WHEN:
The transmission process is finalized
THEN:
- The edi transmission process must be marked as complete
- Control returned to the calling process
β Consolidated Acceptance Criteria
- The parameter validation fails → the system must initiate an abend condition with the specific error message indicating invalid GCCU358T module parameters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SystemAbendInvalidParameters(["Start Step"])
E_SystemAbendInvalidParameters(["End Step"])
N_SystemAbendInvalidParameters_Node0{"The parameter validation fails"}:::decision
N_SystemAbendInvalidParameters_Node0_action["The system must initiate an abend
condition with the specific error
message indicating invalid GCCU358T
module parameters"]:::exclusion N_SystemAbendInvalidParameters_Node0 -- Yes -->|Alternative| N_SystemAbendInvalidParameters_Node0_action N_SystemAbendInvalidParameters_Node0_action --> E_SystemAbendInvalidParameters S_SystemAbendInvalidParameters --> N_SystemAbendInvalidParameters_Node0 N_SystemAbendInvalidParameters_Node0 -- No --> E_SystemAbendInvalidParameters
condition with the specific error
message indicating invalid GCCU358T
module parameters"]:::exclusion N_SystemAbendInvalidParameters_Node0 -- Yes -->|Alternative| N_SystemAbendInvalidParameters_Node0_action N_SystemAbendInvalidParameters_Node0_action --> E_SystemAbendInvalidParameters S_SystemAbendInvalidParameters --> N_SystemAbendInvalidParameters_Node0 N_SystemAbendInvalidParameters_Node0 -- No --> E_SystemAbendInvalidParameters
File: GCX003.cbl
GIVEN:
EDI module parameters have been validated and found to be invalid
WHEN:
The parameter validation fails
THEN:
The system must initiate an abend condition with the specific error message indicating invalid GCCU358T module parameters
β Consolidated Acceptance Criteria
- The request action is OTHER → set request type in header and mark result as abort
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessingResults(["Start Step"])
E_ProcessingResults(["End Step"])
N_ProcessingResults_Node0{"The request action is OTHER"}:::decision
N_ProcessingResults_Node0_action["Set request type in header and mark
result as abort"]:::exclusion N_ProcessingResults_Node0 -- Yes -->|Alternative| N_ProcessingResults_Node0_action N_ProcessingResults_Node0_action --> E_ProcessingResults S_ProcessingResults --> N_ProcessingResults_Node0 N_ProcessingResults_Node0 -- No --> E_ProcessingResults
result as abort"]:::exclusion N_ProcessingResults_Node0 -- Yes -->|Alternative| N_ProcessingResults_Node0_action N_ProcessingResults_Node0_action --> E_ProcessingResults S_ProcessingResults --> N_ProcessingResults_Node0 N_ProcessingResults_Node0 -- No --> E_ProcessingResults
File: GCX003.cbl
GIVEN:
A report is being finalized
WHEN:
The request action is OTHER
THEN:
- Set request type in header
- Mark result as abort
β Consolidated Acceptance Criteria
- There are no errors (RPT-NO-ERROR) and no warnings (RPT-NO-WRN) → set the result status to no message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetNOMESSAGEResult(["Start Step"])
E_SetNOMESSAGEResult(["End Step"])
N_SetNOMESSAGEResult_Node0{"There are no errors RPT-NO-ERROR
and no warnings RPT-NO-WRN"}:::decision N_SetNOMESSAGEResult_Node0_action["Set the result status to no message"]:::exclusion N_SetNOMESSAGEResult_Node0 -- Yes -->|Alternative| N_SetNOMESSAGEResult_Node0_action N_SetNOMESSAGEResult_Node0_action --> E_SetNOMESSAGEResult S_SetNOMESSAGEResult --> N_SetNOMESSAGEResult_Node0 N_SetNOMESSAGEResult_Node0 -- No --> E_SetNOMESSAGEResult
and no warnings RPT-NO-WRN"}:::decision N_SetNOMESSAGEResult_Node0_action["Set the result status to no message"]:::exclusion N_SetNOMESSAGEResult_Node0 -- Yes -->|Alternative| N_SetNOMESSAGEResult_Node0_action N_SetNOMESSAGEResult_Node0_action --> E_SetNOMESSAGEResult S_SetNOMESSAGEResult --> N_SetNOMESSAGEResult_Node0 N_SetNOMESSAGEResult_Node0 -- No --> E_SetNOMESSAGEResult
File: GCX003.cbl
GIVEN:
A report action is being processed
WHEN:
There are no errors (RPT-NO-ERROR) and no warnings (RPT-NO-WRN)
THEN:
Set the result status to no message
β Consolidated Acceptance Criteria
- There are errors or warnings present → set result status to message, populate warning count, error count, and DSP count in the header
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetMESSAGEResultwithCounts(["Start Step"])
E_SetMESSAGEResultwithCounts(["End Step"])
N_SetMESSAGEResultwithCounts_Node0{"There are errors or warnings
present"}:::decision N_SetMESSAGEResultwithCounts_Node0_action["Set result status to message,
populate warning count, error count,
and DSP count in the header"]:::main N_SetMESSAGEResultwithCounts_Node0 -- Yes --> N_SetMESSAGEResultwithCounts_Node0_action N_SetMESSAGEResultwithCounts_Node0_action --> E_SetMESSAGEResultwithCounts S_SetMESSAGEResultwithCounts --> N_SetMESSAGEResultwithCounts_Node0 N_SetMESSAGEResultwithCounts_Node0 -- No --> E_SetMESSAGEResultwithCounts
present"}:::decision N_SetMESSAGEResultwithCounts_Node0_action["Set result status to message,
populate warning count, error count,
and DSP count in the header"]:::main N_SetMESSAGEResultwithCounts_Node0 -- Yes --> N_SetMESSAGEResultwithCounts_Node0_action N_SetMESSAGEResultwithCounts_Node0_action --> E_SetMESSAGEResultwithCounts S_SetMESSAGEResultwithCounts --> N_SetMESSAGEResultwithCounts_Node0 N_SetMESSAGEResultwithCounts_Node0 -- No --> E_SetMESSAGEResultwithCounts
File: GCX003.cbl
GIVEN:
A report action is being processed
WHEN:
There are errors or warnings present
THEN:
Set result status to message, populate warning count, error count, and DSP count in the header
β Consolidated Acceptance Criteria
- The system prepares the final result classification → count all warning messages and record the warning count in the result status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CountWarningMessages(["Start Step"])
E_CountWarningMessages(["End Step"])
N_CountWarningMessages_Node0{"The system prepares the final
result classification"}:::decision N_CountWarningMessages_Node0_action["Count all warning messages and
record the warning count in the
result status"]:::main N_CountWarningMessages_Node0 -- Yes --> N_CountWarningMessages_Node0_action N_CountWarningMessages_Node0_action --> E_CountWarningMessages S_CountWarningMessages --> N_CountWarningMessages_Node0 N_CountWarningMessages_Node0 -- No --> E_CountWarningMessages
result classification"}:::decision N_CountWarningMessages_Node0_action["Count all warning messages and
record the warning count in the
result status"]:::main N_CountWarningMessages_Node0 -- Yes --> N_CountWarningMessages_Node0_action N_CountWarningMessages_Node0_action --> E_CountWarningMessages S_CountWarningMessages --> N_CountWarningMessages_Node0 N_CountWarningMessages_Node0 -- No --> E_CountWarningMessages
File: GCX003.cbl
GIVEN:
Train manifest processing completed successfully
WHEN:
The system prepares the final result classification
THEN:
- Count all warning messages
- Record the warning count in the result status
β Consolidated Acceptance Criteria
- The system finalizes message counts for reporting → increment warning count by 1 and decrement error count by 1 for each converted message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateMessageCounts(["Start Step"])
E_UpdateMessageCounts(["End Step"])
N_UpdateMessageCounts_Node0{"The system finalizes message counts
for reporting"}:::decision N_UpdateMessageCounts_Node0_action["Increment warning count by 1 and
decrement error count by 1 for each
converted message"]:::main N_UpdateMessageCounts_Node0 -- Yes --> N_UpdateMessageCounts_Node0_action N_UpdateMessageCounts_Node0_action --> E_UpdateMessageCounts S_UpdateMessageCounts --> N_UpdateMessageCounts_Node0 N_UpdateMessageCounts_Node0 -- No --> E_UpdateMessageCounts
for reporting"}:::decision N_UpdateMessageCounts_Node0_action["Increment warning count by 1 and
decrement error count by 1 for each
converted message"]:::main N_UpdateMessageCounts_Node0 -- Yes --> N_UpdateMessageCounts_Node0_action N_UpdateMessageCounts_Node0_action --> E_UpdateMessageCounts S_UpdateMessageCounts --> N_UpdateMessageCounts_Node0 N_UpdateMessageCounts_Node0 -- No --> E_UpdateMessageCounts
File: GCX003.cbl
GIVEN:
Error messages have been evaluated and potentially converted to warnings
WHEN:
The system finalizes message counts for reporting
THEN:
- Increment warning count by 1
- Decrement error count by 1 for each converted message
β Consolidated Acceptance Criteria
- The system generates the final report header → create report header line 4 with train ID, ETA information, and set the appropriate result status (SENT, NOT SENT, or ABORTED) with final warning and error counts
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateReportHeaderwithStatus(["Start Step"])
E_GenerateReportHeaderwithStatus(["End Step"])
N_GenerateReportHeaderwithStatus_Node0{"The system generates the final
report header"}:::decision N_GenerateReportHeaderwithStatus_Node0_action["Create report header line 4 with
train ID, ETA information, and set
the appropriate result status SENT,
NOT SENT, or ABORTED with final
warning and error counts"]:::main N_GenerateReportHeaderwithStatus_Node0 -- Yes --> N_GenerateReportHeaderwithStatus_Node0_action N_GenerateReportHeaderwithStatus_Node0_action --> E_GenerateReportHeaderwithStatus S_GenerateReportHeaderwithStatus --> N_GenerateReportHeaderwithStatus_Node0 N_GenerateReportHeaderwithStatus_Node0 -- No --> E_GenerateReportHeaderwithStatus
report header"}:::decision N_GenerateReportHeaderwithStatus_Node0_action["Create report header line 4 with
train ID, ETA information, and set
the appropriate result status SENT,
NOT SENT, or ABORTED with final
warning and error counts"]:::main N_GenerateReportHeaderwithStatus_Node0 -- Yes --> N_GenerateReportHeaderwithStatus_Node0_action N_GenerateReportHeaderwithStatus_Node0_action --> E_GenerateReportHeaderwithStatus S_GenerateReportHeaderwithStatus --> N_GenerateReportHeaderwithStatus_Node0 N_GenerateReportHeaderwithStatus_Node0 -- No --> E_GenerateReportHeaderwithStatus
File: GCX003.cbl
GIVEN:
All processing result classifications and message counts have been determined
WHEN:
The system generates the final report header
THEN:
- Create report header line 4 with train id, eta information, and set the appropriate result status (sent, not sent, or aborted) with final warning
- Error counts
β Consolidated Acceptance Criteria
- The system checks if AEI train send flag is set to YES → the system processes AEI send report if flag is YES, otherwise continues with standard report distribution
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsAEITrainSend(["Start Step"])
E_IsAEITrainSend(["End Step"])
N_IsAEITrainSend_Node0{"The system checks if AEI train send
flag is set to YES"}:::decision N_IsAEITrainSend_Node0_action["The system processes AEI send
report if flag is YES, otherwise
continues with standard report
distribution"]:::main N_IsAEITrainSend_Node0 -- Yes --> N_IsAEITrainSend_Node0_action N_IsAEITrainSend_Node0_action --> E_IsAEITrainSend S_IsAEITrainSend --> N_IsAEITrainSend_Node0 N_IsAEITrainSend_Node0 -- No --> E_IsAEITrainSend
flag is set to YES"}:::decision N_IsAEITrainSend_Node0_action["The system processes AEI send
report if flag is YES, otherwise
continues with standard report
distribution"]:::main N_IsAEITrainSend_Node0 -- Yes --> N_IsAEITrainSend_Node0_action N_IsAEITrainSend_Node0_action --> E_IsAEITrainSend S_IsAEITrainSend --> N_IsAEITrainSend_Node0 N_IsAEITrainSend_Node0 -- No --> E_IsAEITrainSend
File: GCX003.cbl
GIVEN:
A train report distribution process is initiated
WHEN:
The system checks if AEI train send flag is set to YES
THEN:
The system processes AEI send report if flag is YES, otherwise continues with standard report distribution
β Consolidated Acceptance Criteria
- The system checks if an alternate terminal is configured and not empty → the system uses the alternate terminal if available, otherwise uses the original terminal from the request
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AlternateTerminalAvailable(["Start Step"])
E_AlternateTerminalAvailable(["End Step"])
N_AlternateTerminalAvailable_Node0{"The system checks if an alternate
terminal is configured and not empty"}:::decision N_AlternateTerminalAvailable_Node0_action["The system uses the alternate
terminal if available, otherwise
uses the original terminal from the
request"]:::main N_AlternateTerminalAvailable_Node0 -- Yes --> N_AlternateTerminalAvailable_Node0_action N_AlternateTerminalAvailable_Node0_action --> E_AlternateTerminalAvailable S_AlternateTerminalAvailable --> N_AlternateTerminalAvailable_Node0 N_AlternateTerminalAvailable_Node0 -- No --> E_AlternateTerminalAvailable
terminal is configured and not empty"}:::decision N_AlternateTerminalAvailable_Node0_action["The system uses the alternate
terminal if available, otherwise
uses the original terminal from the
request"]:::main N_AlternateTerminalAvailable_Node0 -- Yes --> N_AlternateTerminalAvailable_Node0_action N_AlternateTerminalAvailable_Node0_action --> E_AlternateTerminalAvailable S_AlternateTerminalAvailable --> N_AlternateTerminalAvailable_Node0 N_AlternateTerminalAvailable_Node0 -- No --> E_AlternateTerminalAvailable
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A report needs to be sent to an originator terminal
WHEN:
- The system checks if an alternate terminal is configured
- Not empty
THEN:
The system uses the alternate terminal if available, otherwise uses the original terminal from the request
β Consolidated Acceptance Criteria
- The system initiates report transmission → the system sends the report header line containing report identification and formatting information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendReportHeaderLine(["Start Step"])
E_SendReportHeaderLine(["End Step"])
N_SendReportHeaderLine_Node0{"The system initiates report
transmission"}:::decision N_SendReportHeaderLine_Node0_action["The system sends the report header
line containing report
identification and formatting
information"]:::main N_SendReportHeaderLine_Node0 -- Yes --> N_SendReportHeaderLine_Node0_action N_SendReportHeaderLine_Node0_action --> E_SendReportHeaderLine S_SendReportHeaderLine --> N_SendReportHeaderLine_Node0 N_SendReportHeaderLine_Node0 -- No --> E_SendReportHeaderLine
transmission"}:::decision N_SendReportHeaderLine_Node0_action["The system sends the report header
line containing report
identification and formatting
information"]:::main N_SendReportHeaderLine_Node0 -- Yes --> N_SendReportHeaderLine_Node0_action N_SendReportHeaderLine_Node0_action --> E_SendReportHeaderLine S_SendReportHeaderLine --> N_SendReportHeaderLine_Node0 N_SendReportHeaderLine_Node0 -- No --> E_SendReportHeaderLine
File: GCX003.cbl
GIVEN:
A report type has been determined and destination terminal is set
WHEN:
The system initiates report transmission
THEN:
- The system sends the report header line containing report identification
- Formatting information
β Consolidated Acceptance Criteria
- The system processes report line transmission → the system iterates through and sends every report line from first line to last line
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendAllReportLines(["Start Step"])
E_SendAllReportLines(["End Step"])
N_SendAllReportLines_Node0{"The system processes report line
transmission"}:::decision N_SendAllReportLines_Node0_action["The system iterates through and
sends every report line from first
line to last line"]:::main N_SendAllReportLines_Node0 -- Yes --> N_SendAllReportLines_Node0_action N_SendAllReportLines_Node0_action --> E_SendAllReportLines S_SendAllReportLines --> N_SendAllReportLines_Node0 N_SendAllReportLines_Node0 -- No --> E_SendAllReportLines
transmission"}:::decision N_SendAllReportLines_Node0_action["The system iterates through and
sends every report line from first
line to last line"]:::main N_SendAllReportLines_Node0 -- Yes --> N_SendAllReportLines_Node0_action N_SendAllReportLines_Node0_action --> E_SendAllReportLines S_SendAllReportLines --> N_SendAllReportLines_Node0 N_SendAllReportLines_Node0 -- No --> E_SendAllReportLines
File: GCX003.cbl
GIVEN:
Report display mode is set to all report and header has been sent
WHEN:
The system processes report line transmission
THEN:
- The system iterates through
- Sends every report line from first line to last line
β Consolidated Acceptance Criteria
- The system determines report content to transmit → the system sends only the first four header lines containing basic report information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendHeaderLinesOnly(["Start Step"])
E_SendHeaderLinesOnly(["End Step"])
N_SendHeaderLinesOnly_Node0{"The system determines report
content to transmit"}:::decision N_SendHeaderLinesOnly_Node0_action["The system sends only the first
four header lines containing basic
report information"]:::main N_SendHeaderLinesOnly_Node0 -- Yes --> N_SendHeaderLinesOnly_Node0_action N_SendHeaderLinesOnly_Node0_action --> E_SendHeaderLinesOnly S_SendHeaderLinesOnly --> N_SendHeaderLinesOnly_Node0 N_SendHeaderLinesOnly_Node0 -- No --> E_SendHeaderLinesOnly
content to transmit"}:::decision N_SendHeaderLinesOnly_Node0_action["The system sends only the first
four header lines containing basic
report information"]:::main N_SendHeaderLinesOnly_Node0 -- Yes --> N_SendHeaderLinesOnly_Node0_action N_SendHeaderLinesOnly_Node0_action --> E_SendHeaderLinesOnly S_SendHeaderLinesOnly --> N_SendHeaderLinesOnly_Node0 N_SendHeaderLinesOnly_Node0 -- No --> E_SendHeaderLinesOnly
File: GCX003.cbl
GIVEN:
Summary report mode is selected and no warning messages exist
WHEN:
The system determines report content to transmit
THEN:
The system sends only the first four header lines containing basic report information
β Consolidated Acceptance Criteria
- The system scans through report lines to identify warnings → the system processes each warning message line and its preceding context line for transmission
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendWarningMessagesOnly(["Start Step"])
E_SendWarningMessagesOnly(["End Step"])
N_SendWarningMessagesOnly_Node0{"The system scans through report
lines to identify warnings"}:::decision N_SendWarningMessagesOnly_Node0_action["The system processes each warning
message line and its preceding
context line for transmission"]:::main N_SendWarningMessagesOnly_Node0 -- Yes --> N_SendWarningMessagesOnly_Node0_action N_SendWarningMessagesOnly_Node0_action --> E_SendWarningMessagesOnly S_SendWarningMessagesOnly --> N_SendWarningMessagesOnly_Node0 N_SendWarningMessagesOnly_Node0 -- No --> E_SendWarningMessagesOnly
lines to identify warnings"}:::decision N_SendWarningMessagesOnly_Node0_action["The system processes each warning
message line and its preceding
context line for transmission"]:::main N_SendWarningMessagesOnly_Node0 -- Yes --> N_SendWarningMessagesOnly_Node0_action N_SendWarningMessagesOnly_Node0_action --> E_SendWarningMessagesOnly S_SendWarningMessagesOnly --> N_SendWarningMessagesOnly_Node0 N_SendWarningMessagesOnly_Node0 -- No --> E_SendWarningMessagesOnly
File: GCX003.cbl
GIVEN:
Summary report mode is selected and warning messages exist
WHEN:
The system scans through report lines to identify warnings
THEN:
- The system processes each warning message line
- Its preceding context line for transmission
β Consolidated Acceptance Criteria
- The system completes report line transmission → the system sends a wrap command with user function code to properly terminate the report session
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendReportWrapCommand(["Start Step"])
E_SendReportWrapCommand(["End Step"])
N_SendReportWrapCommand_Node0{"The system completes report line
transmission"}:::decision N_SendReportWrapCommand_Node0_action["The system sends a wrap command
with user function code to properly
terminate the report session"]:::exclusion N_SendReportWrapCommand_Node0 -- Yes -->|Alternative| N_SendReportWrapCommand_Node0_action N_SendReportWrapCommand_Node0_action --> E_SendReportWrapCommand S_SendReportWrapCommand --> N_SendReportWrapCommand_Node0 N_SendReportWrapCommand_Node0 -- No --> E_SendReportWrapCommand
transmission"}:::decision N_SendReportWrapCommand_Node0_action["The system sends a wrap command
with user function code to properly
terminate the report session"]:::exclusion N_SendReportWrapCommand_Node0 -- Yes -->|Alternative| N_SendReportWrapCommand_Node0_action N_SendReportWrapCommand_Node0_action --> E_SendReportWrapCommand S_SendReportWrapCommand --> N_SendReportWrapCommand_Node0 N_SendReportWrapCommand_Node0 -- No --> E_SendReportWrapCommand
File: GCX003.cbl
GIVEN:
All required report content has been transmitted to the destination terminal
WHEN:
The system completes report line transmission
THEN:
The system sends a wrap command with user function code to properly terminate the report session
β Consolidated Acceptance Criteria
- The system queries the AEI email distribution table using train origin as key with record type 'CUSEMAIL' → the system retrieves the email distribution configuration for that origin station
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_QueryAEIEmailDistributionList(["Start Step"])
E_QueryAEIEmailDistributionList(["End Step"])
N_QueryAEIEmailDistributionList_Node0{"The system queries the AEI email
distribution table using train
origin as key with record type
CUSEMAIL"}:::decision N_QueryAEIEmailDistributionList_Node0_action["The system retrieves the email
distribution configuration for that
origin station"]:::main N_QueryAEIEmailDistributionList_Node0 -- Yes --> N_QueryAEIEmailDistributionList_Node0_action N_QueryAEIEmailDistributionList_Node0_action --> E_QueryAEIEmailDistributionList S_QueryAEIEmailDistributionList --> N_QueryAEIEmailDistributionList_Node0 N_QueryAEIEmailDistributionList_Node0 -- No --> E_QueryAEIEmailDistributionList
distribution table using train
origin as key with record type
CUSEMAIL"}:::decision N_QueryAEIEmailDistributionList_Node0_action["The system retrieves the email
distribution configuration for that
origin station"]:::main N_QueryAEIEmailDistributionList_Node0 -- Yes --> N_QueryAEIEmailDistributionList_Node0_action N_QueryAEIEmailDistributionList_Node0_action --> E_QueryAEIEmailDistributionList S_QueryAEIEmailDistributionList --> N_QueryAEIEmailDistributionList_Node0 N_QueryAEIEmailDistributionList_Node0 -- No --> E_QueryAEIEmailDistributionList
File: GCX003.cbl
GIVEN:
A train origin station code is available
WHEN:
The system queries the AEI email distribution table using train origin as key with record type 'CUSEMAIL'
THEN:
The system retrieves the email distribution configuration for that origin station
β Consolidated Acceptance Criteria
- The system loads report content into email message → each report line is copied to email text lines sequentially, with line counter incremented, and email-more flag set to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LoadReportLinesintoEmail(["Start Step"])
E_LoadReportLinesintoEmail(["End Step"])
N_LoadReportLinesintoEmail_Node0{"The system loads report content
into email message"}:::decision N_LoadReportLinesintoEmail_Node0_action["Each report line is copied to email
text lines sequentially, with line
counter incremented, and email-more
flag set to true"]:::main N_LoadReportLinesintoEmail_Node0 -- Yes --> N_LoadReportLinesintoEmail_Node0_action N_LoadReportLinesintoEmail_Node0_action --> E_LoadReportLinesintoEmail S_LoadReportLinesintoEmail --> N_LoadReportLinesintoEmail_Node0 N_LoadReportLinesintoEmail_Node0 -- No --> E_LoadReportLinesintoEmail
into email message"}:::decision N_LoadReportLinesintoEmail_Node0_action["Each report line is copied to email
text lines sequentially, with line
counter incremented, and email-more
flag set to true"]:::main N_LoadReportLinesintoEmail_Node0 -- Yes --> N_LoadReportLinesintoEmail_Node0_action N_LoadReportLinesintoEmail_Node0_action --> E_LoadReportLinesintoEmail S_LoadReportLinesintoEmail --> N_LoadReportLinesintoEmail_Node0 N_LoadReportLinesintoEmail_Node0 -- No --> E_LoadReportLinesintoEmail
File: GCX003.cbl
GIVEN:
Report lines are available from train processing results
WHEN:
The system loads report content into email message
THEN:
Each report line is copied to email text lines sequentially, with line counter incremented, and email-more flag set to true
β Consolidated Acceptance Criteria
- The system begins the activity logging process → a new activity log record is initialized with all fields cleared and ready for population
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeActivityLogRecord(["Start Step"])
E_InitializeActivityLogRecord(["End Step"])
N_InitializeActivityLogRecord_Node0{"The system begins the activity
logging process"}:::decision N_InitializeActivityLogRecord_Node0_action["A new activity log record is
initialized with all fields cleared
and ready for population"]:::main N_InitializeActivityLogRecord_Node0 -- Yes --> N_InitializeActivityLogRecord_Node0_action N_InitializeActivityLogRecord_Node0_action --> E_InitializeActivityLogRecord S_InitializeActivityLogRecord --> N_InitializeActivityLogRecord_Node0 N_InitializeActivityLogRecord_Node0 -- No --> E_InitializeActivityLogRecord
logging process"}:::decision N_InitializeActivityLogRecord_Node0_action["A new activity log record is
initialized with all fields cleared
and ready for population"]:::main N_InitializeActivityLogRecord_Node0 -- Yes --> N_InitializeActivityLogRecord_Node0_action N_InitializeActivityLogRecord_Node0_action --> E_InitializeActivityLogRecord S_InitializeActivityLogRecord --> N_InitializeActivityLogRecord_Node0 N_InitializeActivityLogRecord_Node0 -- No --> E_InitializeActivityLogRecord
File: GCX003.cbl
GIVEN:
An AEI train send operation has been completed successfully
WHEN:
The system begins the activity logging process
THEN:
- A new activity log record is initialized with all fields cleared
- Ready for population
β Consolidated Acceptance Criteria
- The security classification needs to be assigned → the security byte is set to high-values to indicate maximum security level
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSecurityBytetoHighValues(["Start Step"])
E_SetSecurityBytetoHighValues(["End Step"])
N_SetSecurityBytetoHighValues_Node0{"The security classification needs
to be assigned"}:::decision N_SetSecurityBytetoHighValues_Node0_action["The security byte is set to
high-values to indicate maximum
security level"]:::main N_SetSecurityBytetoHighValues_Node0 -- Yes --> N_SetSecurityBytetoHighValues_Node0_action N_SetSecurityBytetoHighValues_Node0_action --> E_SetSecurityBytetoHighValues S_SetSecurityBytetoHighValues --> N_SetSecurityBytetoHighValues_Node0 N_SetSecurityBytetoHighValues_Node0 -- No --> E_SetSecurityBytetoHighValues
to be assigned"}:::decision N_SetSecurityBytetoHighValues_Node0_action["The security byte is set to
high-values to indicate maximum
security level"]:::main N_SetSecurityBytetoHighValues_Node0 -- Yes --> N_SetSecurityBytetoHighValues_Node0_action N_SetSecurityBytetoHighValues_Node0_action --> E_SetSecurityBytetoHighValues S_SetSecurityBytetoHighValues --> N_SetSecurityBytetoHighValues_Node0 N_SetSecurityBytetoHighValues_Node0 -- No --> E_SetSecurityBytetoHighValues
File: GCX003.cbl
GIVEN:
An AEI activity log record is being created
WHEN:
The security classification needs to be assigned
THEN:
The security byte is set to high-values to indicate maximum security level
β Consolidated Acceptance Criteria
- The record type classification is being assigned → the record type is set to 'US-TRAIN' to identify this as a US train activity
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRecordTypeasUSTRAIN(["Start Step"])
E_SetRecordTypeasUSTRAIN(["End Step"])
N_SetRecordTypeasUSTRAIN_Node0{"The record type classification is
being assigned"}:::decision N_SetRecordTypeasUSTRAIN_Node0_action["The record type is set to US-TRAIN
to identify this as a US train
activity"]:::main N_SetRecordTypeasUSTRAIN_Node0 -- Yes --> N_SetRecordTypeasUSTRAIN_Node0_action N_SetRecordTypeasUSTRAIN_Node0_action --> E_SetRecordTypeasUSTRAIN S_SetRecordTypeasUSTRAIN --> N_SetRecordTypeasUSTRAIN_Node0 N_SetRecordTypeasUSTRAIN_Node0 -- No --> E_SetRecordTypeasUSTRAIN
being assigned"}:::decision N_SetRecordTypeasUSTRAIN_Node0_action["The record type is set to US-TRAIN
to identify this as a US train
activity"]:::main N_SetRecordTypeasUSTRAIN_Node0 -- Yes --> N_SetRecordTypeasUSTRAIN_Node0_action N_SetRecordTypeasUSTRAIN_Node0_action --> E_SetRecordTypeasUSTRAIN S_SetRecordTypeasUSTRAIN --> N_SetRecordTypeasUSTRAIN_Node0 N_SetRecordTypeasUSTRAIN_Node0 -- No --> E_SetRecordTypeasUSTRAIN
File: GCX003.cbl
GIVEN:
An AEI activity log record is being created for a train send operation
WHEN:
The record type classification is being assigned
THEN:
The record type is set to 'US-TRAIN' to identify this as a US train activity
β Consolidated Acceptance Criteria
- The action code needs to be assigned → the action code is set to 'ZZZ' as the standard identifier for AEI logging activities
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetActionCodetoZZZ(["Start Step"])
E_SetActionCodetoZZZ(["End Step"])
N_SetActionCodetoZZZ_Node0{"The action code needs to be
assigned"}:::decision N_SetActionCodetoZZZ_Node0_action["The action code is set to ZZZ as
the standard identifier for AEI
logging activities"]:::main N_SetActionCodetoZZZ_Node0 -- Yes --> N_SetActionCodetoZZZ_Node0_action N_SetActionCodetoZZZ_Node0_action --> E_SetActionCodetoZZZ S_SetActionCodetoZZZ --> N_SetActionCodetoZZZ_Node0 N_SetActionCodetoZZZ_Node0 -- No --> E_SetActionCodetoZZZ
assigned"}:::decision N_SetActionCodetoZZZ_Node0_action["The action code is set to ZZZ as
the standard identifier for AEI
logging activities"]:::main N_SetActionCodetoZZZ_Node0 -- Yes --> N_SetActionCodetoZZZ_Node0_action N_SetActionCodetoZZZ_Node0_action --> E_SetActionCodetoZZZ S_SetActionCodetoZZZ --> N_SetActionCodetoZZZ_Node0 N_SetActionCodetoZZZ_Node0 -- No --> E_SetActionCodetoZZZ
File: GCX003.cbl
GIVEN:
An AEI activity log record is being created
WHEN:
The action code needs to be assigned
THEN:
The action code is set to 'ZZZ' as the standard identifier for AEI logging activities
β Consolidated Acceptance Criteria
- The sending transaction identifier needs to be recorded → the sending transaction is set to 'GCT0031E' to identify the source transaction
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSendingTransactiontoGCT0031E(["Start Step"])
E_SetSendingTransactiontoGCT0031E(["End Step"])
N_SetSendingTransactiontoGCT0031E_Node0{"The sending transaction identifier
needs to be recorded"}:::decision N_SetSendingTransactiontoGCT0031E_Node0_action["The sending transaction is set to
GCT0031E to identify the source
transaction"]:::main N_SetSendingTransactiontoGCT0031E_Node0 -- Yes --> N_SetSendingTransactiontoGCT0031E_Node0_action N_SetSendingTransactiontoGCT0031E_Node0_action --> E_SetSendingTransactiontoGCT0031E S_SetSendingTransactiontoGCT0031E --> N_SetSendingTransactiontoGCT0031E_Node0 N_SetSendingTransactiontoGCT0031E_Node0 -- No --> E_SetSendingTransactiontoGCT0031E
needs to be recorded"}:::decision N_SetSendingTransactiontoGCT0031E_Node0_action["The sending transaction is set to
GCT0031E to identify the source
transaction"]:::main N_SetSendingTransactiontoGCT0031E_Node0 -- Yes --> N_SetSendingTransactiontoGCT0031E_Node0_action N_SetSendingTransactiontoGCT0031E_Node0_action --> E_SetSendingTransactiontoGCT0031E S_SetSendingTransactiontoGCT0031E --> N_SetSendingTransactiontoGCT0031E_Node0 N_SetSendingTransactiontoGCT0031E_Node0 -- No --> E_SetSendingTransactiontoGCT0031E
File: GCX003.cbl
GIVEN:
An AEI activity log record is being created from a train send operation
WHEN:
The sending transaction identifier needs to be recorded
THEN:
The sending transaction is set to 'GCT0031E' to identify the source transaction
β Consolidated Acceptance Criteria
- The date timestamp needs to be recorded → the current system date from the machine century and date fields is captured and formatted for the log record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CaptureCurrentSystemDate(["Start Step"])
E_CaptureCurrentSystemDate(["End Step"])
N_CaptureCurrentSystemDate_Node0{"The date timestamp needs to be
recorded"}:::decision N_CaptureCurrentSystemDate_Node0_action["The current system date from the
machine century and date fields is
captured and formatted for the log
record"]:::main N_CaptureCurrentSystemDate_Node0 -- Yes --> N_CaptureCurrentSystemDate_Node0_action N_CaptureCurrentSystemDate_Node0_action --> E_CaptureCurrentSystemDate S_CaptureCurrentSystemDate --> N_CaptureCurrentSystemDate_Node0 N_CaptureCurrentSystemDate_Node0 -- No --> E_CaptureCurrentSystemDate
recorded"}:::decision N_CaptureCurrentSystemDate_Node0_action["The current system date from the
machine century and date fields is
captured and formatted for the log
record"]:::main N_CaptureCurrentSystemDate_Node0 -- Yes --> N_CaptureCurrentSystemDate_Node0_action N_CaptureCurrentSystemDate_Node0_action --> E_CaptureCurrentSystemDate S_CaptureCurrentSystemDate --> N_CaptureCurrentSystemDate_Node0 N_CaptureCurrentSystemDate_Node0 -- No --> E_CaptureCurrentSystemDate
File: GCX003.cbl
GIVEN:
An AEI activity log record is being created
WHEN:
The date timestamp needs to be recorded
THEN:
- The current system date from the machine century
- Date fields is captured
- Formatted for the log record
β Consolidated Acceptance Criteria
- The time timestamp needs to be recorded → the current system time from the machine time field is captured and recorded in the log
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CaptureCurrentSystemTime(["Start Step"])
E_CaptureCurrentSystemTime(["End Step"])
N_CaptureCurrentSystemTime_Node0{"The time timestamp needs to be
recorded"}:::decision N_CaptureCurrentSystemTime_Node0_action["The current system time from the
machine time field is captured and
recorded in the log"]:::main N_CaptureCurrentSystemTime_Node0 -- Yes --> N_CaptureCurrentSystemTime_Node0_action N_CaptureCurrentSystemTime_Node0_action --> E_CaptureCurrentSystemTime S_CaptureCurrentSystemTime --> N_CaptureCurrentSystemTime_Node0 N_CaptureCurrentSystemTime_Node0 -- No --> E_CaptureCurrentSystemTime
recorded"}:::decision N_CaptureCurrentSystemTime_Node0_action["The current system time from the
machine time field is captured and
recorded in the log"]:::main N_CaptureCurrentSystemTime_Node0 -- Yes --> N_CaptureCurrentSystemTime_Node0_action N_CaptureCurrentSystemTime_Node0_action --> E_CaptureCurrentSystemTime S_CaptureCurrentSystemTime --> N_CaptureCurrentSystemTime_Node0 N_CaptureCurrentSystemTime_Node0 -- No --> E_CaptureCurrentSystemTime
File: GCX003.cbl
GIVEN:
An AEI activity log record is being created
WHEN:
The time timestamp needs to be recorded
THEN:
- The current system time from the machine time field is captured
- Recorded in the log
β Consolidated Acceptance Criteria
- The activity log record is being populated with train information → the US Customs Train ID from the train list is recorded in the log as the train identifier
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RecordUSCustomsTrainID(["Start Step"])
E_RecordUSCustomsTrainID(["End Step"])
N_RecordUSCustomsTrainID_Node0{"The activity log record is being
populated with train information"}:::decision N_RecordUSCustomsTrainID_Node0_action["The US Customs Train ID from the
train list is recorded in the log as
the train identifier"]:::main N_RecordUSCustomsTrainID_Node0 -- Yes --> N_RecordUSCustomsTrainID_Node0_action N_RecordUSCustomsTrainID_Node0_action --> E_RecordUSCustomsTrainID S_RecordUSCustomsTrainID --> N_RecordUSCustomsTrainID_Node0 N_RecordUSCustomsTrainID_Node0 -- No --> E_RecordUSCustomsTrainID
populated with train information"}:::decision N_RecordUSCustomsTrainID_Node0_action["The US Customs Train ID from the
train list is recorded in the log as
the train identifier"]:::main N_RecordUSCustomsTrainID_Node0 -- Yes --> N_RecordUSCustomsTrainID_Node0_action N_RecordUSCustomsTrainID_Node0_action --> E_RecordUSCustomsTrainID S_RecordUSCustomsTrainID --> N_RecordUSCustomsTrainID_Node0 N_RecordUSCustomsTrainID_Node0 -- No --> E_RecordUSCustomsTrainID
File: GCX003.cbl
GIVEN:
An AEI train send operation has been completed for a specific train
WHEN:
The activity log record is being populated with train information
THEN:
The US Customs Train ID from the train list is recorded in the log as the train identifier
β Consolidated Acceptance Criteria
- The log message content needs to be assigned → the message field is set to the predefined 'AEI SEND LOG MESSAGE' constant
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetLogMessageasAEISENDLOGMESSAGE(["Start Step"])
E_SetLogMessageasAEISENDLOGMESSAGE(["End Step"])
N_SetLogMessageasAEISENDLOGMESSAGE_Node0{"The log message content needs to be
assigned"}:::decision N_SetLogMessageasAEISENDLOGMESSAGE_Node0_action["The message field is set to the
predefined AEI SEND LOG MESSAGE
constant"]:::main N_SetLogMessageasAEISENDLOGMESSAGE_Node0 -- Yes --> N_SetLogMessageasAEISENDLOGMESSAGE_Node0_action N_SetLogMessageasAEISENDLOGMESSAGE_Node0_action --> E_SetLogMessageasAEISENDLOGMESSAGE S_SetLogMessageasAEISENDLOGMESSAGE --> N_SetLogMessageasAEISENDLOGMESSAGE_Node0 N_SetLogMessageasAEISENDLOGMESSAGE_Node0 -- No --> E_SetLogMessageasAEISENDLOGMESSAGE
assigned"}:::decision N_SetLogMessageasAEISENDLOGMESSAGE_Node0_action["The message field is set to the
predefined AEI SEND LOG MESSAGE
constant"]:::main N_SetLogMessageasAEISENDLOGMESSAGE_Node0 -- Yes --> N_SetLogMessageasAEISENDLOGMESSAGE_Node0_action N_SetLogMessageasAEISENDLOGMESSAGE_Node0_action --> E_SetLogMessageasAEISENDLOGMESSAGE S_SetLogMessageasAEISENDLOGMESSAGE --> N_SetLogMessageasAEISENDLOGMESSAGE_Node0 N_SetLogMessageasAEISENDLOGMESSAGE_Node0 -- No --> E_SetLogMessageasAEISENDLOGMESSAGE
File: GCX003.cbl
GIVEN:
An AEI activity log record is being created for a train send operation
WHEN:
The log message content needs to be assigned
THEN:
The message field is set to the predefined 'AEI SEND LOG MESSAGE' constant
β Consolidated Acceptance Criteria
- The record needs to be prepared for transmission → the log input structure is formatted and moved to the GCT1051E message format
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatLogRecordforGCT1051E(["Start Step"])
E_FormatLogRecordforGCT1051E(["End Step"])
N_FormatLogRecordforGCT1051E_Node0{"The record needs to be prepared for
transmission"}:::decision N_FormatLogRecordforGCT1051E_Node0_action["The log input structure is
formatted and moved to the GCT1051E
message format"]:::main N_FormatLogRecordforGCT1051E_Node0 -- Yes --> N_FormatLogRecordforGCT1051E_Node0_action N_FormatLogRecordforGCT1051E_Node0_action --> E_FormatLogRecordforGCT1051E S_FormatLogRecordforGCT1051E --> N_FormatLogRecordforGCT1051E_Node0 N_FormatLogRecordforGCT1051E_Node0 -- No --> E_FormatLogRecordforGCT1051E
transmission"}:::decision N_FormatLogRecordforGCT1051E_Node0_action["The log input structure is
formatted and moved to the GCT1051E
message format"]:::main N_FormatLogRecordforGCT1051E_Node0 -- Yes --> N_FormatLogRecordforGCT1051E_Node0_action N_FormatLogRecordforGCT1051E_Node0_action --> E_FormatLogRecordforGCT1051E S_FormatLogRecordforGCT1051E --> N_FormatLogRecordforGCT1051E_Node0 N_FormatLogRecordforGCT1051E_Node0 -- No --> E_FormatLogRecordforGCT1051E
File: GCX003.cbl
GIVEN:
An AEI activity log record has been populated with all required information
WHEN:
The record needs to be prepared for transmission
THEN:
- The log input structure is formatted
- Moved to the gct1051e message format
β Consolidated Acceptance Criteria
- The record needs to be sent to the logging system → the system calls the message processing service to change the alternate PCB and queue the log record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendLogRecordtoMessageQueue(["Start Step"])
E_SendLogRecordtoMessageQueue(["End Step"])
N_SendLogRecordtoMessageQueue_Node0{"The record needs to be sent to the
logging system"}:::decision N_SendLogRecordtoMessageQueue_Node0_action["The system calls the message
processing service to change the
alternate PCB and queue the log
record"]:::main N_SendLogRecordtoMessageQueue_Node0 -- Yes --> N_SendLogRecordtoMessageQueue_Node0_action N_SendLogRecordtoMessageQueue_Node0_action --> E_SendLogRecordtoMessageQueue S_SendLogRecordtoMessageQueue --> N_SendLogRecordtoMessageQueue_Node0 N_SendLogRecordtoMessageQueue_Node0 -- No --> E_SendLogRecordtoMessageQueue
logging system"}:::decision N_SendLogRecordtoMessageQueue_Node0_action["The system calls the message
processing service to change the
alternate PCB and queue the log
record"]:::main N_SendLogRecordtoMessageQueue_Node0 -- Yes --> N_SendLogRecordtoMessageQueue_Node0_action N_SendLogRecordtoMessageQueue_Node0_action --> E_SendLogRecordtoMessageQueue S_SendLogRecordtoMessageQueue --> N_SendLogRecordtoMessageQueue_Node0 N_SendLogRecordtoMessageQueue_Node0 -- No --> E_SendLogRecordtoMessageQueue
File: GCX003.cbl
GIVEN:
An AEI activity log record has been formatted for transmission
WHEN:
The record needs to be sent to the logging system
THEN:
- The system calls the message processing service to change the alternate pcb
- Queue the log record
β Consolidated Acceptance Criteria
- A Canadian export message is being prepared for that train → the US customs train ID is copied to the GCX141 train ID field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveUSCustomsTrainIDtoGCX141TrainID(["Start Step"])
E_MoveUSCustomsTrainIDtoGCX141TrainID(["End Step"])
N_MoveUSCustomsTrainIDtoGCX141TrainID_Node0{"A Canadian export message is being
prepared for that train"}:::decision N_MoveUSCustomsTrainIDtoGCX141TrainID_Node0_action["The US customs train ID is copied
to the GCX141 train ID field"]:::main N_MoveUSCustomsTrainIDtoGCX141TrainID_Node0 -- Yes --> N_MoveUSCustomsTrainIDtoGCX141TrainID_Node0_action N_MoveUSCustomsTrainIDtoGCX141TrainID_Node0_action --> E_MoveUSCustomsTrainIDtoGCX141TrainID S_MoveUSCustomsTrainIDtoGCX141TrainID --> N_MoveUSCustomsTrainIDtoGCX141TrainID_Node0 N_MoveUSCustomsTrainIDtoGCX141TrainID_Node0 -- No --> E_MoveUSCustomsTrainIDtoGCX141TrainID
prepared for that train"}:::decision N_MoveUSCustomsTrainIDtoGCX141TrainID_Node0_action["The US customs train ID is copied
to the GCX141 train ID field"]:::main N_MoveUSCustomsTrainIDtoGCX141TrainID_Node0 -- Yes --> N_MoveUSCustomsTrainIDtoGCX141TrainID_Node0_action N_MoveUSCustomsTrainIDtoGCX141TrainID_Node0_action --> E_MoveUSCustomsTrainIDtoGCX141TrainID S_MoveUSCustomsTrainIDtoGCX141TrainID --> N_MoveUSCustomsTrainIDtoGCX141TrainID_Node0 N_MoveUSCustomsTrainIDtoGCX141TrainID_Node0 -- No --> E_MoveUSCustomsTrainIDtoGCX141TrainID
File: GCX003.cbl
GIVEN:
A train list contains a valid US customs train ID
WHEN:
A Canadian export message is being prepared for that train
THEN:
The US customs train ID is copied to the GCX141 train ID field
β Consolidated Acceptance Criteria
- The message needs to be prepared for output → the complete GCX141 input is moved to the message output text field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveGCX141InputtoMessageOutputText(["Start Step"])
E_MoveGCX141InputtoMessageOutputText(["End Step"])
N_MoveGCX141InputtoMessageOutputText_Node0{"The message needs to be prepared
for output"}:::decision N_MoveGCX141InputtoMessageOutputText_Node0_action["The complete GCX141 input is moved
to the message output text field"]:::main N_MoveGCX141InputtoMessageOutputText_Node0 -- Yes --> N_MoveGCX141InputtoMessageOutputText_Node0_action N_MoveGCX141InputtoMessageOutputText_Node0_action --> E_MoveGCX141InputtoMessageOutputText S_MoveGCX141InputtoMessageOutputText --> N_MoveGCX141InputtoMessageOutputText_Node0 N_MoveGCX141InputtoMessageOutputText_Node0 -- No --> E_MoveGCX141InputtoMessageOutputText
for output"}:::decision N_MoveGCX141InputtoMessageOutputText_Node0_action["The complete GCX141 input is moved
to the message output text field"]:::main N_MoveGCX141InputtoMessageOutputText_Node0 -- Yes --> N_MoveGCX141InputtoMessageOutputText_Node0_action N_MoveGCX141InputtoMessageOutputText_Node0_action --> E_MoveGCX141InputtoMessageOutputText S_MoveGCX141InputtoMessageOutputText --> N_MoveGCX141InputtoMessageOutputText_Node0 N_MoveGCX141InputtoMessageOutputText_Node0 -- No --> E_MoveGCX141InputtoMessageOutputText
File: GCX003.cbl
GIVEN:
GCX141 input parameters are fully configured with train ID and flags
WHEN:
The message needs to be prepared for output
THEN:
The complete GCX141 input is moved to the message output text field
β Consolidated Acceptance Criteria
- The system checks the train crossing location → enhanced report generation is enabled only for Laredo TX station, otherwise the process is skipped
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckLocation(["Start Step"])
E_CheckLocation(["End Step"])
N_CheckLocation_Node0{"The system checks the train
crossing location"}:::decision N_CheckLocation_Node0_action["Enhanced report generation is
enabled only for Laredo TX station,
otherwise the process is skipped"]:::main N_CheckLocation_Node0 -- Yes --> N_CheckLocation_Node0_action N_CheckLocation_Node0_action --> E_CheckLocation S_CheckLocation --> N_CheckLocation_Node0 N_CheckLocation_Node0 -- No --> E_CheckLocation
crossing location"}:::decision N_CheckLocation_Node0_action["Enhanced report generation is
enabled only for Laredo TX station,
otherwise the process is skipped"]:::main N_CheckLocation_Node0 -- Yes --> N_CheckLocation_Node0_action N_CheckLocation_Node0_action --> E_CheckLocation S_CheckLocation --> N_CheckLocation_Node0 N_CheckLocation_Node0 -- No --> E_CheckLocation
File: GCX003.cbl
GIVEN:
A train export request is being processed
WHEN:
The system checks the train crossing location
THEN:
Enhanced report generation is enabled only for Laredo TX station, otherwise the process is skipped
β Consolidated Acceptance Criteria
- The system builds the third header line → the header includes port code, port name, locomotive count, and total equipment count (sum of cars, containers, and locomotives)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildHeaderLine3PortInformationandTotals(["Start Step"])
E_BuildHeaderLine3PortInformationandTotals(["End Step"])
N_BuildHeaderLine3PortInformationandTotals_Node0{"The system builds the third header
line"}:::decision N_BuildHeaderLine3PortInformationandTotals_Node0_action["The header includes port code, port
name, locomotive count, and total
equipment count sum of cars,
containers, and locomotives"]:::main N_BuildHeaderLine3PortInformationandTotals_Node0 -- Yes --> N_BuildHeaderLine3PortInformationandTotals_Node0_action N_BuildHeaderLine3PortInformationandTotals_Node0_action --> E_BuildHeaderLine3PortInformationandTotals S_BuildHeaderLine3PortInformationandTotals --> N_BuildHeaderLine3PortInformationandTotals_Node0 N_BuildHeaderLine3PortInformationandTotals_Node0 -- No --> E_BuildHeaderLine3PortInformationandTotals
line"}:::decision N_BuildHeaderLine3PortInformationandTotals_Node0_action["The header includes port code, port
name, locomotive count, and total
equipment count sum of cars,
containers, and locomotives"]:::main N_BuildHeaderLine3PortInformationandTotals_Node0 -- Yes --> N_BuildHeaderLine3PortInformationandTotals_Node0_action N_BuildHeaderLine3PortInformationandTotals_Node0_action --> E_BuildHeaderLine3PortInformationandTotals S_BuildHeaderLine3PortInformationandTotals --> N_BuildHeaderLine3PortInformationandTotals_Node0 N_BuildHeaderLine3PortInformationandTotals_Node0 -- No --> E_BuildHeaderLine3PortInformationandTotals
File: GCX003.cbl
GIVEN:
Enhanced report generation is active
WHEN:
The system builds the third header line
THEN:
The header includes port code, port name, locomotive count, and total equipment count (sum of cars, containers, and locomotives)
β Consolidated Acceptance Criteria
- The system sends the email batch → email is sent to OM01247 usercode with 80-character line width and appropriate subject line containing train ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendEmailBatch(["Start Step"])
E_SendEmailBatch(["End Step"])
N_SendEmailBatch_Node0{"The system sends the email batch"}:::decision
N_SendEmailBatch_Node0_action["Email is sent to OM01247 usercode
with 80-character line width and
appropriate subject line containing
train ID"]:::main N_SendEmailBatch_Node0 -- Yes --> N_SendEmailBatch_Node0_action N_SendEmailBatch_Node0_action --> E_SendEmailBatch S_SendEmailBatch --> N_SendEmailBatch_Node0 N_SendEmailBatch_Node0 -- No --> E_SendEmailBatch
with 80-character line width and
appropriate subject line containing
train ID"]:::main N_SendEmailBatch_Node0 -- Yes --> N_SendEmailBatch_Node0_action N_SendEmailBatch_Node0_action --> E_SendEmailBatch S_SendEmailBatch --> N_SendEmailBatch_Node0 N_SendEmailBatch_Node0 -- No --> E_SendEmailBatch
File: GCX003.cbl
GIVEN:
Enhanced report content is ready for transmission
WHEN:
The system sends the email batch
THEN:
- Email is sent to om01247 usercode with 80-character line width
- Appropriate subject line containing train id
β Consolidated Acceptance Criteria
- The email send operation is unsuccessful → the system terminates processing with error message 'SEND TO FILE OF OM01247 FAILED'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleEmailError(["Start Step"])
E_HandleEmailError(["End Step"])
N_HandleEmailError_Node0{"The email send operation is
unsuccessful"}:::decision N_HandleEmailError_Node0_action["The system terminates processing
with error message SEND TO FILE OF
OM01247 FAILED"]:::main N_HandleEmailError_Node0 -- Yes --> N_HandleEmailError_Node0_action N_HandleEmailError_Node0_action --> E_HandleEmailError S_HandleEmailError --> N_HandleEmailError_Node0 N_HandleEmailError_Node0 -- No --> E_HandleEmailError
unsuccessful"}:::decision N_HandleEmailError_Node0_action["The system terminates processing
with error message SEND TO FILE OF
OM01247 FAILED"]:::main N_HandleEmailError_Node0 -- Yes --> N_HandleEmailError_Node0_action N_HandleEmailError_Node0_action --> E_HandleEmailError S_HandleEmailError --> N_HandleEmailError_Node0 N_HandleEmailError_Node0 -- No --> E_HandleEmailError
File: GCX003.cbl
GIVEN:
Enhanced report email transmission fails
WHEN:
The email send operation is unsuccessful
THEN:
The system terminates processing with error message 'SEND TO FILE OF OM01247 FAILED'
β Consolidated Acceptance Criteria
- The system checks if the current station is Laredo TX station → if the station is Laredo TX, the system should proceed to generate an enhanced report format, otherwise PDF generation should be marked as complete
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LaredoTXStation(["Start Step"])
E_LaredoTXStation(["End Step"])
N_LaredoTXStation_Node0{"The system checks if the current
station is Laredo TX station"}:::decision N_LaredoTXStation_Node0_action["If the station is Laredo TX, the
system should proceed to generate an
enhanced report format, otherwise
PDF generation should be marked as
complete"]:::main N_LaredoTXStation_Node0 -- Yes --> N_LaredoTXStation_Node0_action N_LaredoTXStation_Node0_action --> E_LaredoTXStation S_LaredoTXStation --> N_LaredoTXStation_Node0 N_LaredoTXStation_Node0 -- No --> E_LaredoTXStation
station is Laredo TX station"}:::decision N_LaredoTXStation_Node0_action["If the station is Laredo TX, the
system should proceed to generate an
enhanced report format, otherwise
PDF generation should be marked as
complete"]:::main N_LaredoTXStation_Node0 -- Yes --> N_LaredoTXStation_Node0_action N_LaredoTXStation_Node0_action --> E_LaredoTXStation S_LaredoTXStation --> N_LaredoTXStation_Node0 N_LaredoTXStation_Node0 -- No --> E_LaredoTXStation
File: GCX003.cbl
GIVEN:
A pre-exit PDF report has been generated
WHEN:
The system checks if the current station is Laredo TX station
THEN:
If the station is Laredo TX, the system should proceed to generate an enhanced report format, otherwise PDF generation should be marked as complete
β Consolidated Acceptance Criteria
- The system initiates enhanced PDF report generation → the system should prepare enhanced report data, set report title to 'Export Train Report', maintain report type as 'EXPORT', configure PDF line length to 132 characters, calculate enhanced report line count, and call GCX904R module to generate the enhanced PDF report
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCX904RforEnhancedPDF(["Start Step"])
E_CallGCX904RforEnhancedPDF(["End Step"])
N_CallGCX904RforEnhancedPDF_Node0{"The system initiates enhanced PDF
report generation"}:::decision N_CallGCX904RforEnhancedPDF_Node0_action["The system should prepare enhanced
report data, set report title to
Export Train Report , maintain
report type as EXPORT , configure
PDF line length to 132 characters,
calculate enhanced report line
count, and call GCX904R module to
generate the enhanced PDF report"]:::main N_CallGCX904RforEnhancedPDF_Node0 -- Yes --> N_CallGCX904RforEnhancedPDF_Node0_action N_CallGCX904RforEnhancedPDF_Node0_action --> E_CallGCX904RforEnhancedPDF S_CallGCX904RforEnhancedPDF --> N_CallGCX904RforEnhancedPDF_Node0 N_CallGCX904RforEnhancedPDF_Node0 -- No --> E_CallGCX904RforEnhancedPDF
report generation"}:::decision N_CallGCX904RforEnhancedPDF_Node0_action["The system should prepare enhanced
report data, set report title to
Export Train Report , maintain
report type as EXPORT , configure
PDF line length to 132 characters,
calculate enhanced report line
count, and call GCX904R module to
generate the enhanced PDF report"]:::main N_CallGCX904RforEnhancedPDF_Node0 -- Yes --> N_CallGCX904RforEnhancedPDF_Node0_action N_CallGCX904RforEnhancedPDF_Node0_action --> E_CallGCX904RforEnhancedPDF S_CallGCX904RforEnhancedPDF --> N_CallGCX904RforEnhancedPDF_Node0 N_CallGCX904RforEnhancedPDF_Node0 -- No --> E_CallGCX904RforEnhancedPDF
File: GCX003.cbl
GIVEN:
The processing station is Laredo TX and pre-exit PDF has been generated
WHEN:
The system initiates enhanced PDF report generation
THEN:
The system should prepare enhanced report data, set report title to 'Export Train Report', maintain report type as 'EXPORT', configure PDF line length to 132 characters, calculate enhanced report line count, and call GCX904R module to generate the enhanced PDF report
β Consolidated Acceptance Criteria
- The cargo SCAC is 'CPRS' AND the train origin is not '9089' → the port is classified as AUTOMATED
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CPRSCarrierANDOrigin9089(["Start Step"])
E_CPRSCarrierANDOrigin9089(["End Step"])
N_CPRSCarrierANDOrigin9089_Node0{"The cargo SCAC is CPRS AND the
train origin is not 9089"}:::decision N_CPRSCarrierANDOrigin9089_Node0_action["The port is classified as AUTOMATED"]:::main N_CPRSCarrierANDOrigin9089_Node0 -- Yes --> N_CPRSCarrierANDOrigin9089_Node0_action N_CPRSCarrierANDOrigin9089_Node0_action --> E_CPRSCarrierANDOrigin9089 S_CPRSCarrierANDOrigin9089 --> N_CPRSCarrierANDOrigin9089_Node0 N_CPRSCarrierANDOrigin9089_Node0 -- No --> E_CPRSCarrierANDOrigin9089
train origin is not 9089"}:::decision N_CPRSCarrierANDOrigin9089_Node0_action["The port is classified as AUTOMATED"]:::main N_CPRSCarrierANDOrigin9089_Node0 -- Yes --> N_CPRSCarrierANDOrigin9089_Node0_action N_CPRSCarrierANDOrigin9089_Node0_action --> E_CPRSCarrierANDOrigin9089 S_CPRSCarrierANDOrigin9089 --> N_CPRSCarrierANDOrigin9089_Node0 N_CPRSCarrierANDOrigin9089_Node0 -- No --> E_CPRSCarrierANDOrigin9089
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record with SCAC code and a train request with origin station
WHEN:
The cargo SCAC is 'CPRS' AND the train origin is not '9089'
THEN:
The port is classified as AUTOMATED
β Consolidated Acceptance Criteria
- The cargo SCAC is 'UPRR' AND the train origin is '9089' → the port is classified as AUTOMATED
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UPRRCarrierANDOrigin9089(["Start Step"])
E_UPRRCarrierANDOrigin9089(["End Step"])
N_UPRRCarrierANDOrigin9089_Node0{"The cargo SCAC is UPRR AND the
train origin is 9089"}:::decision N_UPRRCarrierANDOrigin9089_Node0_action["The port is classified as AUTOMATED"]:::main N_UPRRCarrierANDOrigin9089_Node0 -- Yes --> N_UPRRCarrierANDOrigin9089_Node0_action N_UPRRCarrierANDOrigin9089_Node0_action --> E_UPRRCarrierANDOrigin9089 S_UPRRCarrierANDOrigin9089 --> N_UPRRCarrierANDOrigin9089_Node0 N_UPRRCarrierANDOrigin9089_Node0 -- No --> E_UPRRCarrierANDOrigin9089
train origin is 9089"}:::decision N_UPRRCarrierANDOrigin9089_Node0_action["The port is classified as AUTOMATED"]:::main N_UPRRCarrierANDOrigin9089_Node0 -- Yes --> N_UPRRCarrierANDOrigin9089_Node0_action N_UPRRCarrierANDOrigin9089_Node0_action --> E_UPRRCarrierANDOrigin9089 S_UPRRCarrierANDOrigin9089 --> N_UPRRCarrierANDOrigin9089_Node0 N_UPRRCarrierANDOrigin9089_Node0 -- No --> E_UPRRCarrierANDOrigin9089
File: GCX003.cbl
GIVEN:
A cargo record with SCAC code and a train request with origin station
WHEN:
The cargo SCAC is 'UPRR' AND the train origin is '9089'
THEN:
The port is classified as AUTOMATED
β Consolidated Acceptance Criteria
- The port automation status needs to be determined from reference data → look up the port in GCSTBRT table using SCAC and station code combination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LookUpPortinReferenceTable(["Start Step"])
E_LookUpPortinReferenceTable(["End Step"])
N_LookUpPortinReferenceTable_Node0{"The port automation status needs to
be determined from reference data"}:::decision N_LookUpPortinReferenceTable_Node0_action["Look up the port in GCSTBRT table
using SCAC and station code
combination"]:::main N_LookUpPortinReferenceTable_Node0 -- Yes --> N_LookUpPortinReferenceTable_Node0_action N_LookUpPortinReferenceTable_Node0_action --> E_LookUpPortinReferenceTable S_LookUpPortinReferenceTable --> N_LookUpPortinReferenceTable_Node0 N_LookUpPortinReferenceTable_Node0 -- No --> E_LookUpPortinReferenceTable
be determined from reference data"}:::decision N_LookUpPortinReferenceTable_Node0_action["Look up the port in GCSTBRT table
using SCAC and station code
combination"]:::main N_LookUpPortinReferenceTable_Node0 -- Yes --> N_LookUpPortinReferenceTable_Node0_action N_LookUpPortinReferenceTable_Node0_action --> E_LookUpPortinReferenceTable S_LookUpPortinReferenceTable --> N_LookUpPortinReferenceTable_Node0 N_LookUpPortinReferenceTable_Node0 -- No --> E_LookUpPortinReferenceTable
File: GCX003.cbl
GIVEN:
A cargo SCAC code and a crossing port station code
WHEN:
The port automation status needs to be determined from reference data
THEN:
- Look up the port in gcstbrt table using scac
- Station code combination
β Consolidated Acceptance Criteria
- The automation flag is evaluated → if flag equals 'Y' then classify as AUTOMATED, otherwise classify as PAPER
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AutomationFlagY(["Start Step"])
E_AutomationFlagY(["End Step"])
N_AutomationFlagY_Node0{"The automation flag is evaluated"}:::decision
N_AutomationFlagY_Node0_action["If flag equals Y then classify as
AUTOMATED, otherwise classify as
PAPER"]:::main N_AutomationFlagY_Node0 -- Yes --> N_AutomationFlagY_Node0_action N_AutomationFlagY_Node0_action --> E_AutomationFlagY S_AutomationFlagY --> N_AutomationFlagY_Node0 N_AutomationFlagY_Node0 -- No --> E_AutomationFlagY
AUTOMATED, otherwise classify as
PAPER"]:::main N_AutomationFlagY_Node0 -- Yes --> N_AutomationFlagY_Node0_action N_AutomationFlagY_Node0_action --> E_AutomationFlagY S_AutomationFlagY --> N_AutomationFlagY_Node0 N_AutomationFlagY_Node0 -- No --> E_AutomationFlagY
File: GCX003.cbl
GIVEN:
A port record retrieved from reference table with automation flag
WHEN:
The automation flag is evaluated
THEN:
If flag equals 'Y' then classify as AUTOMATED, otherwise classify as PAPER
β Consolidated Acceptance Criteria
- Port classification is being determined → the port is classified as PAPER
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPortasPAPER(["Start Step"])
E_SetPortasPAPER(["End Step"])
N_SetPortasPAPER_Node0{"Port classification is being
determined"}:::decision N_SetPortasPAPER_Node0_action["The port is classified as PAPER"]:::main N_SetPortasPAPER_Node0 -- Yes --> N_SetPortasPAPER_Node0_action N_SetPortasPAPER_Node0_action --> E_SetPortasPAPER S_SetPortasPAPER --> N_SetPortasPAPER_Node0 N_SetPortasPAPER_Node0 -- No --> E_SetPortasPAPER
determined"}:::decision N_SetPortasPAPER_Node0_action["The port is classified as PAPER"]:::main N_SetPortasPAPER_Node0 -- Yes --> N_SetPortasPAPER_Node0_action N_SetPortasPAPER_Node0_action --> E_SetPortasPAPER S_SetPortasPAPER --> N_SetPortasPAPER_Node0 N_SetPortasPAPER_Node0 -- No --> E_SetPortasPAPER
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A port that is either not found in reference table or has automation flag not equal to 'Y'
WHEN:
Port classification is being determined
THEN:
The port is classified as PAPER
β Consolidated Acceptance Criteria
- The request action is SEND AND cargo is haulage type → check if automated haulage with paper port OR manual haulage with automated port creates a mismatch
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CurrentHaulageStatusvsPortTypeMismatch(["Start Step"])
E_CurrentHaulageStatusvsPortTypeMismatch(["End Step"])
N_CurrentHaulageStatusvsPortTypeMismatch_Node0{"The request action is SEND AND
cargo is haulage type"}:::decision N_CurrentHaulageStatusvsPortTypeMismatch_Node0_action["Check if automated haulage with
paper port OR manual haulage with
automated port creates a mismatch"]:::main N_CurrentHaulageStatusvsPortTypeMismatch_Node0 -- Yes --> N_CurrentHaulageStatusvsPortTypeMismatch_Node0_action N_CurrentHaulageStatusvsPortTypeMismatch_Node0_action --> E_CurrentHaulageStatusvsPortTypeMismatch S_CurrentHaulageStatusvsPortTypeMismatch --> N_CurrentHaulageStatusvsPortTypeMismatch_Node0 N_CurrentHaulageStatusvsPortTypeMismatch_Node0 -- No --> E_CurrentHaulageStatusvsPortTypeMismatch
cargo is haulage type"}:::decision N_CurrentHaulageStatusvsPortTypeMismatch_Node0_action["Check if automated haulage with
paper port OR manual haulage with
automated port creates a mismatch"]:::main N_CurrentHaulageStatusvsPortTypeMismatch_Node0 -- Yes --> N_CurrentHaulageStatusvsPortTypeMismatch_Node0_action N_CurrentHaulageStatusvsPortTypeMismatch_Node0_action --> E_CurrentHaulageStatusvsPortTypeMismatch S_CurrentHaulageStatusvsPortTypeMismatch --> N_CurrentHaulageStatusvsPortTypeMismatch_Node0 N_CurrentHaulageStatusvsPortTypeMismatch_Node0 -- No --> E_CurrentHaulageStatusvsPortTypeMismatch
File: GCX003.cbl
GIVEN:
A cargo with haulage automation flag and a classified port type
WHEN:
- The request action is send
- Cargo is haulage type
THEN:
Check if automated haulage with paper port OR manual haulage with automated port creates a mismatch
β Consolidated Acceptance Criteria
- A mismatch is detected between haulage status and port type → update haulage automation flag to 'N' for paper ports or 'Y' for automated ports
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateHaulageAutomationFlag(["Start Step"])
E_UpdateHaulageAutomationFlag(["End Step"])
N_UpdateHaulageAutomationFlag_Node0{"A mismatch is detected between
haulage status and port type"}:::decision N_UpdateHaulageAutomationFlag_Node0_action["Update haulage automation flag to N
for paper ports or Y for automated
ports"]:::main N_UpdateHaulageAutomationFlag_Node0 -- Yes --> N_UpdateHaulageAutomationFlag_Node0_action N_UpdateHaulageAutomationFlag_Node0_action --> E_UpdateHaulageAutomationFlag S_UpdateHaulageAutomationFlag --> N_UpdateHaulageAutomationFlag_Node0 N_UpdateHaulageAutomationFlag_Node0 -- No --> E_UpdateHaulageAutomationFlag
haulage status and port type"}:::decision N_UpdateHaulageAutomationFlag_Node0_action["Update haulage automation flag to N
for paper ports or Y for automated
ports"]:::main N_UpdateHaulageAutomationFlag_Node0 -- Yes --> N_UpdateHaulageAutomationFlag_Node0_action N_UpdateHaulageAutomationFlag_Node0_action --> E_UpdateHaulageAutomationFlag S_UpdateHaulageAutomationFlag --> N_UpdateHaulageAutomationFlag_Node0 N_UpdateHaulageAutomationFlag_Node0 -- No --> E_UpdateHaulageAutomationFlag
File: GCX003.cbl
GIVEN:
A haulage cargo with automation status that conflicts with port classification
WHEN:
- A mismatch is detected between haulage status
- Port type
THEN:
Update haulage automation flag to 'N' for paper ports or 'Y' for automated ports
β Consolidated Acceptance Criteria
- The equipment IMA code equals 'HM' indicating hazmat material → set route classification to type 2 (hazmat routing) and mark route as found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRouteType2HazmatRouting(["Start Step"])
E_SetRouteType2HazmatRouting(["End Step"])
N_SetRouteType2HazmatRouting_Node0{"The equipment IMA code equals HM
indicating hazmat material"}:::decision N_SetRouteType2HazmatRouting_Node0_action["Set route classification to type 2
hazmat routing and mark route as
found"]:::main N_SetRouteType2HazmatRouting_Node0 -- Yes --> N_SetRouteType2HazmatRouting_Node0_action N_SetRouteType2HazmatRouting_Node0_action --> E_SetRouteType2HazmatRouting S_SetRouteType2HazmatRouting --> N_SetRouteType2HazmatRouting_Node0 N_SetRouteType2HazmatRouting_Node0 -- No --> E_SetRouteType2HazmatRouting
indicating hazmat material"}:::decision N_SetRouteType2HazmatRouting_Node0_action["Set route classification to type 2
hazmat routing and mark route as
found"]:::main N_SetRouteType2HazmatRouting_Node0 -- Yes --> N_SetRouteType2HazmatRouting_Node0_action N_SetRouteType2HazmatRouting_Node0_action --> E_SetRouteType2HazmatRouting S_SetRouteType2HazmatRouting --> N_SetRouteType2HazmatRouting_Node0 N_SetRouteType2HazmatRouting_Node0 -- No --> E_SetRouteType2HazmatRouting
File: GCX003.cbl
GIVEN:
Equipment routing information is being processed
WHEN:
The equipment IMA code equals 'HM' indicating hazmat material
THEN:
Set route classification to type 2 (hazmat routing) and mark route as found
β Consolidated Acceptance Criteria
- First SCAC is CSXT or NS, second SCAC is CPRS, and junction point is DET, and first SCAC is specifically CSXT → set route classification to type 3 and mark route as found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRouteType3CSXTtoCPRSviaDET(["Start Step"])
E_SetRouteType3CSXTtoCPRSviaDET(["End Step"])
N_SetRouteType3CSXTtoCPRSviaDET_Node0{"First SCAC is CSXT or NS, second
SCAC is CPRS, and junction point is
DET, and first SCAC is specifically
CSXT"}:::decision N_SetRouteType3CSXTtoCPRSviaDET_Node0_action["Set route classification to type 3
and mark route as found"]:::main N_SetRouteType3CSXTtoCPRSviaDET_Node0 -- Yes --> N_SetRouteType3CSXTtoCPRSviaDET_Node0_action N_SetRouteType3CSXTtoCPRSviaDET_Node0_action --> E_SetRouteType3CSXTtoCPRSviaDET S_SetRouteType3CSXTtoCPRSviaDET --> N_SetRouteType3CSXTtoCPRSviaDET_Node0 N_SetRouteType3CSXTtoCPRSviaDET_Node0 -- No --> E_SetRouteType3CSXTtoCPRSviaDET
SCAC is CPRS, and junction point is
DET, and first SCAC is specifically
CSXT"}:::decision N_SetRouteType3CSXTtoCPRSviaDET_Node0_action["Set route classification to type 3
and mark route as found"]:::main N_SetRouteType3CSXTtoCPRSviaDET_Node0 -- Yes --> N_SetRouteType3CSXTtoCPRSviaDET_Node0_action N_SetRouteType3CSXTtoCPRSviaDET_Node0_action --> E_SetRouteType3CSXTtoCPRSviaDET S_SetRouteType3CSXTtoCPRSviaDET --> N_SetRouteType3CSXTtoCPRSviaDET_Node0 N_SetRouteType3CSXTtoCPRSviaDET_Node0 -- No --> E_SetRouteType3CSXTtoCPRSviaDET
File: GCX003.cbl
GIVEN:
Equipment has valid routing information with SCAC codes and junction points
WHEN:
First SCAC is CSXT or NS, second SCAC is CPRS, and junction point is DET, and first SCAC is specifically CSXT
THEN:
- Set route classification to type 3
- Mark route as found
β Consolidated Acceptance Criteria
- First SCAC is CSXT or NS, second SCAC is CPRS, and junction point is DET, and first SCAC is NS → set route classification to type 4 and mark route as found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRouteType4NStoCPRSviaDET(["Start Step"])
E_SetRouteType4NStoCPRSviaDET(["End Step"])
N_SetRouteType4NStoCPRSviaDET_Node0{"First SCAC is CSXT or NS, second
SCAC is CPRS, and junction point is
DET, and first SCAC is NS"}:::decision N_SetRouteType4NStoCPRSviaDET_Node0_action["Set route classification to type 4
and mark route as found"]:::main N_SetRouteType4NStoCPRSviaDET_Node0 -- Yes --> N_SetRouteType4NStoCPRSviaDET_Node0_action N_SetRouteType4NStoCPRSviaDET_Node0_action --> E_SetRouteType4NStoCPRSviaDET S_SetRouteType4NStoCPRSviaDET --> N_SetRouteType4NStoCPRSviaDET_Node0 N_SetRouteType4NStoCPRSviaDET_Node0 -- No --> E_SetRouteType4NStoCPRSviaDET
SCAC is CPRS, and junction point is
DET, and first SCAC is NS"}:::decision N_SetRouteType4NStoCPRSviaDET_Node0_action["Set route classification to type 4
and mark route as found"]:::main N_SetRouteType4NStoCPRSviaDET_Node0 -- Yes --> N_SetRouteType4NStoCPRSviaDET_Node0_action N_SetRouteType4NStoCPRSviaDET_Node0_action --> E_SetRouteType4NStoCPRSviaDET S_SetRouteType4NStoCPRSviaDET --> N_SetRouteType4NStoCPRSviaDET_Node0 N_SetRouteType4NStoCPRSviaDET_Node0 -- No --> E_SetRouteType4NStoCPRSviaDET
File: GCX003.cbl
GIVEN:
Equipment has valid routing information with SCAC codes and junction points
WHEN:
First SCAC is CSXT or NS, second SCAC is CPRS, and junction point is DET, and first SCAC is NS
THEN:
- Set route classification to type 4
- Mark route as found
β Consolidated Acceptance Criteria
- Equipment is not hazmat and routing pattern doesn't match CSXT/NS to CPRS via Detroit → set route classification to type 1 indicating no special routing requirements
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRouteType1NoSpecialRouting(["Start Step"])
E_SetRouteType1NoSpecialRouting(["End Step"])
N_SetRouteType1NoSpecialRouting_Node0{"Equipment is not hazmat and routing
pattern doesn t match CSXTNS to CPRS
via Detroit"}:::decision N_SetRouteType1NoSpecialRouting_Node0_action["Set route classification to type 1
indicating no special routing
requirements"]:::main N_SetRouteType1NoSpecialRouting_Node0 -- Yes --> N_SetRouteType1NoSpecialRouting_Node0_action N_SetRouteType1NoSpecialRouting_Node0_action --> E_SetRouteType1NoSpecialRouting S_SetRouteType1NoSpecialRouting --> N_SetRouteType1NoSpecialRouting_Node0 N_SetRouteType1NoSpecialRouting_Node0 -- No --> E_SetRouteType1NoSpecialRouting
pattern doesn t match CSXTNS to CPRS
via Detroit"}:::decision N_SetRouteType1NoSpecialRouting_Node0_action["Set route classification to type 1
indicating no special routing
requirements"]:::main N_SetRouteType1NoSpecialRouting_Node0 -- Yes --> N_SetRouteType1NoSpecialRouting_Node0_action N_SetRouteType1NoSpecialRouting_Node0_action --> E_SetRouteType1NoSpecialRouting S_SetRouteType1NoSpecialRouting --> N_SetRouteType1NoSpecialRouting_Node0 N_SetRouteType1NoSpecialRouting_Node0 -- No --> E_SetRouteType1NoSpecialRouting
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Equipment routing information is being processed
WHEN:
- Equipment is not hazmat
- Routing pattern doesn't match csxt/ns to cprs via detroit
THEN:
Set route classification to type 1 indicating no special routing requirements
β Consolidated Acceptance Criteria
- Route information fields are checked for valid data → if routing fields are spaces or low-values, skip pattern matching and use default classification
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateRouteFieldsPresent(["Start Step"])
E_ValidateRouteFieldsPresent(["End Step"])
N_ValidateRouteFieldsPresent_Node0{"Route information fields are
checked for valid data"}:::decision N_ValidateRouteFieldsPresent_Node0_action["If routing fields are spaces or
low-values, skip pattern matching
and use default classification"]:::main N_ValidateRouteFieldsPresent_Node0 -- Yes --> N_ValidateRouteFieldsPresent_Node0_action N_ValidateRouteFieldsPresent_Node0_action --> E_ValidateRouteFieldsPresent S_ValidateRouteFieldsPresent --> N_ValidateRouteFieldsPresent_Node0 N_ValidateRouteFieldsPresent_Node0 -- No --> E_ValidateRouteFieldsPresent
checked for valid data"}:::decision N_ValidateRouteFieldsPresent_Node0_action["If routing fields are spaces or
low-values, skip pattern matching
and use default classification"]:::main N_ValidateRouteFieldsPresent_Node0 -- Yes --> N_ValidateRouteFieldsPresent_Node0_action N_ValidateRouteFieldsPresent_Node0_action --> E_ValidateRouteFieldsPresent S_ValidateRouteFieldsPresent --> N_ValidateRouteFieldsPresent_Node0 N_ValidateRouteFieldsPresent_Node0 -- No --> E_ValidateRouteFieldsPresent
File: GCX003.cbl
GIVEN:
Routing information has been extracted and cleaned
WHEN:
Route information fields are checked for valid data
THEN:
- If routing fields are spaces or low-values, skip pattern matching
- Use default classification
β Consolidated Acceptance Criteria
- If port automation status AND ((SCAC is CPRS and train origin is not 9089) OR (SCAC is UPRR and train origin is 9089)) → set port as automated, otherwise set port as paper mode
- The system looks up the SCAC and port combination in the station table → set port automation status based on the automated carrier flag from station table (Y for automated, otherwise paper)
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DeterminePortAutomationStatus(["Start Step"])
E_DeterminePortAutomationStatus(["End Step"])
N_DeterminePortAutomationStatus_Node0{"The system evaluates port
automation status AND SCAC is CPRS
and train origin is not 9089 OR SCAC
is UPRR and train origin is 9089"}:::decision N_DeterminePortAutomationStatus_Node0_action["Set port as automated, otherwise
set port as paper mode"]:::main N_DeterminePortAutomationStatus_Node0 -- Yes --> N_DeterminePortAutomationStatus_Node0_action N_DeterminePortAutomationStatus_Node0_action --> E_DeterminePortAutomationStatus S_DeterminePortAutomationStatus --> N_DeterminePortAutomationStatus_Node0 N_DeterminePortAutomationStatus_Node1{"The system looks up the SCAC and
port combination in the station
table"}:::decision N_DeterminePortAutomationStatus_Node1_action["Set port automation status based on
the automated carrier flag from
station table Y for automated,
otherwise paper"]:::main N_DeterminePortAutomationStatus_Node1 -- Yes --> N_DeterminePortAutomationStatus_Node1_action N_DeterminePortAutomationStatus_Node1_action --> E_DeterminePortAutomationStatus N_DeterminePortAutomationStatus_Node0 -- No --> N_DeterminePortAutomationStatus_Node1 N_DeterminePortAutomationStatus_Node1 -- No --> E_DeterminePortAutomationStatus
automation status AND SCAC is CPRS
and train origin is not 9089 OR SCAC
is UPRR and train origin is 9089"}:::decision N_DeterminePortAutomationStatus_Node0_action["Set port as automated, otherwise
set port as paper mode"]:::main N_DeterminePortAutomationStatus_Node0 -- Yes --> N_DeterminePortAutomationStatus_Node0_action N_DeterminePortAutomationStatus_Node0_action --> E_DeterminePortAutomationStatus S_DeterminePortAutomationStatus --> N_DeterminePortAutomationStatus_Node0 N_DeterminePortAutomationStatus_Node1{"The system looks up the SCAC and
port combination in the station
table"}:::decision N_DeterminePortAutomationStatus_Node1_action["Set port automation status based on
the automated carrier flag from
station table Y for automated,
otherwise paper"]:::main N_DeterminePortAutomationStatus_Node1 -- Yes --> N_DeterminePortAutomationStatus_Node1_action N_DeterminePortAutomationStatus_Node1_action --> E_DeterminePortAutomationStatus N_DeterminePortAutomationStatus_Node0 -- No --> N_DeterminePortAutomationStatus_Node1 N_DeterminePortAutomationStatus_Node1 -- No --> E_DeterminePortAutomationStatus
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record with SCAC code and train origin location
WHEN:
- The system evaluates port automation status and ((scac is cprs
- Train origin is not 9089) or (scac is uprr
- Train origin is 9089))
THEN:
Set port as automated, otherwise set port as paper mode
File: GCX003.cbl
GIVEN:
A cargo record that doesn't meet standard automated port criteria AND station table contains port configuration data
WHEN:
- The system looks up the scac
- Port combination in the station table
THEN:
Set port automation status based on the automated carrier flag from station table (Y for automated, otherwise paper)
β Consolidated Acceptance Criteria
- The system detects mismatch between automated haulage and paper port → update the haulage automation flag to 'N' (manual) and replace the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateHaulageFlagtoManualSetN(["Start Step"])
E_UpdateHaulageFlagtoManualSetN(["End Step"])
N_UpdateHaulageFlagtoManualSetN_Node0{"The system detects mismatch between
automated haulage and paper port"}:::decision N_UpdateHaulageFlagtoManualSetN_Node0_action["Update the haulage automation flag
to N manual and replace the cargo
record"]:::main N_UpdateHaulageFlagtoManualSetN_Node0 -- Yes --> N_UpdateHaulageFlagtoManualSetN_Node0_action N_UpdateHaulageFlagtoManualSetN_Node0_action --> E_UpdateHaulageFlagtoManualSetN S_UpdateHaulageFlagtoManualSetN --> N_UpdateHaulageFlagtoManualSetN_Node0 N_UpdateHaulageFlagtoManualSetN_Node0 -- No --> E_UpdateHaulageFlagtoManualSetN
automated haulage and paper port"}:::decision N_UpdateHaulageFlagtoManualSetN_Node0_action["Update the haulage automation flag
to N manual and replace the cargo
record"]:::main N_UpdateHaulageFlagtoManualSetN_Node0 -- Yes --> N_UpdateHaulageFlagtoManualSetN_Node0_action N_UpdateHaulageFlagtoManualSetN_Node0_action --> E_UpdateHaulageFlagtoManualSetN S_UpdateHaulageFlagtoManualSetN --> N_UpdateHaulageFlagtoManualSetN_Node0 N_UpdateHaulageFlagtoManualSetN_Node0 -- No --> E_UpdateHaulageFlagtoManualSetN
File: GCX003.cbl
GIVEN:
A cargo record with haulage indicator AND cargo has automated haulage flag AND port is determined to be paper mode AND request action is SEND
WHEN:
- The system detects mismatch between automated haulage
- Paper port
THEN:
Update the haulage automation flag to 'N' (manual) and replace the cargo record
β Consolidated Acceptance Criteria
- The system detects mismatch between manual haulage and automated port → update the haulage automation flag to 'Y' (automated) and replace the cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateHaulageFlagtoAutomatedSetY(["Start Step"])
E_UpdateHaulageFlagtoAutomatedSetY(["End Step"])
N_UpdateHaulageFlagtoAutomatedSetY_Node0{"The system detects mismatch between
manual haulage and automated port"}:::decision N_UpdateHaulageFlagtoAutomatedSetY_Node0_action["Update the haulage automation flag
to Y automated and replace the cargo
record"]:::main N_UpdateHaulageFlagtoAutomatedSetY_Node0 -- Yes --> N_UpdateHaulageFlagtoAutomatedSetY_Node0_action N_UpdateHaulageFlagtoAutomatedSetY_Node0_action --> E_UpdateHaulageFlagtoAutomatedSetY S_UpdateHaulageFlagtoAutomatedSetY --> N_UpdateHaulageFlagtoAutomatedSetY_Node0 N_UpdateHaulageFlagtoAutomatedSetY_Node0 -- No --> E_UpdateHaulageFlagtoAutomatedSetY
manual haulage and automated port"}:::decision N_UpdateHaulageFlagtoAutomatedSetY_Node0_action["Update the haulage automation flag
to Y automated and replace the cargo
record"]:::main N_UpdateHaulageFlagtoAutomatedSetY_Node0 -- Yes --> N_UpdateHaulageFlagtoAutomatedSetY_Node0_action N_UpdateHaulageFlagtoAutomatedSetY_Node0_action --> E_UpdateHaulageFlagtoAutomatedSetY S_UpdateHaulageFlagtoAutomatedSetY --> N_UpdateHaulageFlagtoAutomatedSetY_Node0 N_UpdateHaulageFlagtoAutomatedSetY_Node0 -- No --> E_UpdateHaulageFlagtoAutomatedSetY
File: GCX003.cbl
GIVEN:
A cargo record with haulage indicator AND cargo has manual haulage flag AND port is determined to be automated mode AND request action is SEND
WHEN:
- The system detects mismatch between manual haulage
- Automated port
THEN:
Update the haulage automation flag to 'Y' (automated) and replace the cargo record
β Consolidated Acceptance Criteria
- The cargo does not have haulage indicator set → skip all haulage automation flag processing and continue with next processing step
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsCargoHaulage(["Start Step"])
E_IsCargoHaulage(["End Step"])
N_IsCargoHaulage_Node0{"The cargo does not have haulage
indicator set"}:::decision N_IsCargoHaulage_Node0_action["Skip all haulage automation flag
processing and continue with next
processing step"]:::main N_IsCargoHaulage_Node0 -- Yes --> N_IsCargoHaulage_Node0_action N_IsCargoHaulage_Node0_action --> E_IsCargoHaulage S_IsCargoHaulage --> N_IsCargoHaulage_Node0 N_IsCargoHaulage_Node0 -- No --> E_IsCargoHaulage
indicator set"}:::decision N_IsCargoHaulage_Node0_action["Skip all haulage automation flag
processing and continue with next
processing step"]:::main N_IsCargoHaulage_Node0 -- Yes --> N_IsCargoHaulage_Node0_action N_IsCargoHaulage_Node0_action --> E_IsCargoHaulage S_IsCargoHaulage --> N_IsCargoHaulage_Node0 N_IsCargoHaulage_Node0 -- No --> E_IsCargoHaulage
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo record being processed for haulage automation flags
WHEN:
The cargo does not have haulage indicator set
THEN:
- Skip all haulage automation flag processing
- Continue with next processing step
β Consolidated Acceptance Criteria
- The message type is classified as an error message → the system increments the error count by 1 for report statistics
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementErrorCount(["Start Step"])
E_IncrementErrorCount(["End Step"])
N_IncrementErrorCount_Node0{"The message type is classified as
an error message"}:::decision N_IncrementErrorCount_Node0_action["The system increments the error
count by 1 for report statistics"]:::exclusion N_IncrementErrorCount_Node0 -- Yes -->|Alternative| N_IncrementErrorCount_Node0_action N_IncrementErrorCount_Node0_action --> E_IncrementErrorCount S_IncrementErrorCount --> N_IncrementErrorCount_Node0 N_IncrementErrorCount_Node0 -- No --> E_IncrementErrorCount
an error message"}:::decision N_IncrementErrorCount_Node0_action["The system increments the error
count by 1 for report statistics"]:::exclusion N_IncrementErrorCount_Node0 -- Yes -->|Alternative| N_IncrementErrorCount_Node0_action N_IncrementErrorCount_Node0_action --> E_IncrementErrorCount S_IncrementErrorCount --> N_IncrementErrorCount_Node0 N_IncrementErrorCount_Node0 -- No --> E_IncrementErrorCount
File: GCX003.cbl
GIVEN:
A non-spawn message line has been identified
WHEN:
The message type is classified as an error message
THEN:
The system increments the error count by 1 for report statistics
β Consolidated Acceptance Criteria
- The message type is classified as a warning message → the system increments the warning count by 1 for report statistics
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementWarningCount(["Start Step"])
E_IncrementWarningCount(["End Step"])
N_IncrementWarningCount_Node0{"The message type is classified as a
warning message"}:::decision N_IncrementWarningCount_Node0_action["The system increments the warning
count by 1 for report statistics"]:::main N_IncrementWarningCount_Node0 -- Yes --> N_IncrementWarningCount_Node0_action N_IncrementWarningCount_Node0_action --> E_IncrementWarningCount S_IncrementWarningCount --> N_IncrementWarningCount_Node0 N_IncrementWarningCount_Node0 -- No --> E_IncrementWarningCount
warning message"}:::decision N_IncrementWarningCount_Node0_action["The system increments the warning
count by 1 for report statistics"]:::main N_IncrementWarningCount_Node0 -- Yes --> N_IncrementWarningCount_Node0_action N_IncrementWarningCount_Node0_action --> E_IncrementWarningCount S_IncrementWarningCount --> N_IncrementWarningCount_Node0 N_IncrementWarningCount_Node0 -- No --> E_IncrementWarningCount
File: GCX003.cbl
GIVEN:
A non-spawn message line has been identified
WHEN:
The message type is classified as a warning message
THEN:
The system increments the warning count by 1 for report statistics
β Consolidated Acceptance Criteria
- The message type is classified as an informational message → the system increments the information count by 1 for report statistics
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementInfoCount(["Start Step"])
E_IncrementInfoCount(["End Step"])
N_IncrementInfoCount_Node0{"The message type is classified as
an informational message"}:::decision N_IncrementInfoCount_Node0_action["The system increments the
information count by 1 for report
statistics"]:::main N_IncrementInfoCount_Node0 -- Yes --> N_IncrementInfoCount_Node0_action N_IncrementInfoCount_Node0_action --> E_IncrementInfoCount S_IncrementInfoCount --> N_IncrementInfoCount_Node0 N_IncrementInfoCount_Node0 -- No --> E_IncrementInfoCount
an informational message"}:::decision N_IncrementInfoCount_Node0_action["The system increments the
information count by 1 for report
statistics"]:::main N_IncrementInfoCount_Node0 -- Yes --> N_IncrementInfoCount_Node0_action N_IncrementInfoCount_Node0_action --> E_IncrementInfoCount S_IncrementInfoCount --> N_IncrementInfoCount_Node0 N_IncrementInfoCount_Node0 -- No --> E_IncrementInfoCount
File: GCX003.cbl
GIVEN:
A non-spawn message line has been identified
WHEN:
The message type is classified as an informational message
THEN:
The system increments the information count by 1 for report statistics
β Consolidated Acceptance Criteria
- The system checks if the report has reached its maximum capacity → if maximum capacity is reached, set an overflow message indicator, otherwise continue normal processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReportMaximumReached(["Start Step"])
E_ReportMaximumReached(["End Step"])
N_ReportMaximumReached_Node0{"The system checks if the report has
reached its maximum capacity"}:::decision N_ReportMaximumReached_Node0_action["If maximum capacity is reached, set
an overflow message indicator,
otherwise continue normal processing"]:::main N_ReportMaximumReached_Node0 -- Yes --> N_ReportMaximumReached_Node0_action N_ReportMaximumReached_Node0_action --> E_ReportMaximumReached S_ReportMaximumReached --> N_ReportMaximumReached_Node0 N_ReportMaximumReached_Node0 -- No --> E_ReportMaximumReached
reached its maximum capacity"}:::decision N_ReportMaximumReached_Node0_action["If maximum capacity is reached, set
an overflow message indicator,
otherwise continue normal processing"]:::main N_ReportMaximumReached_Node0 -- Yes --> N_ReportMaximumReached_Node0_action N_ReportMaximumReached_Node0_action --> E_ReportMaximumReached S_ReportMaximumReached --> N_ReportMaximumReached_Node0 N_ReportMaximumReached_Node0 -- No --> E_ReportMaximumReached
File: GCX003.cbl
GIVEN:
The report index has been incremented to the next position
WHEN:
The system checks if the report has reached its maximum capacity
THEN:
If maximum capacity is reached, set an overflow message indicator, otherwise continue normal processing
β Consolidated Acceptance Criteria
- Line counting needs to be reset → the line counter is set to zero to start counting lines for the current email batch
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetLineCountertoZero(["Start Step"])
E_SetLineCountertoZero(["End Step"])
N_SetLineCountertoZero_Node0{"Line counting needs to be reset"}:::decision
N_SetLineCountertoZero_Node0_action["The line counter is set to zero to
start counting lines for the current
email batch"]:::main N_SetLineCountertoZero_Node0 -- Yes --> N_SetLineCountertoZero_Node0_action N_SetLineCountertoZero_Node0_action --> E_SetLineCountertoZero S_SetLineCountertoZero --> N_SetLineCountertoZero_Node0 N_SetLineCountertoZero_Node0 -- No --> E_SetLineCountertoZero
start counting lines for the current
email batch"]:::main N_SetLineCountertoZero_Node0 -- Yes --> N_SetLineCountertoZero_Node0_action N_SetLineCountertoZero_Node0_action --> E_SetLineCountertoZero S_SetLineCountertoZero --> N_SetLineCountertoZero_Node0 N_SetLineCountertoZero_Node0 -- No --> E_SetLineCountertoZero
File: GCX003.cbl
GIVEN:
Email pagination process is starting or a new email batch is beginning
WHEN:
Line counting needs to be reset
THEN:
The line counter is set to zero to start counting lines for the current email batch
β Consolidated Acceptance Criteria
- Email status needs to be set for active processing → email status is set to 'More Email' indicating active processing state
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEmailStatustoMoreEmail(["Start Step"])
E_SetEmailStatustoMoreEmail(["End Step"])
N_SetEmailStatustoMoreEmail_Node0{"Email status needs to be set for
active processing"}:::decision N_SetEmailStatustoMoreEmail_Node0_action["Email status is set to More Email
indicating active processing state"]:::main N_SetEmailStatustoMoreEmail_Node0 -- Yes --> N_SetEmailStatustoMoreEmail_Node0_action N_SetEmailStatustoMoreEmail_Node0_action --> E_SetEmailStatustoMoreEmail S_SetEmailStatustoMoreEmail --> N_SetEmailStatustoMoreEmail_Node0 N_SetEmailStatustoMoreEmail_Node0 -- No --> E_SetEmailStatustoMoreEmail
active processing"}:::decision N_SetEmailStatustoMoreEmail_Node0_action["Email status is set to More Email
indicating active processing state"]:::main N_SetEmailStatustoMoreEmail_Node0 -- Yes --> N_SetEmailStatustoMoreEmail_Node0_action N_SetEmailStatustoMoreEmail_Node0_action --> E_SetEmailStatustoMoreEmail S_SetEmailStatustoMoreEmail --> N_SetEmailStatustoMoreEmail_Node0 N_SetEmailStatustoMoreEmail_Node0 -- No --> E_SetEmailStatustoMoreEmail
File: GCX003.cbl
GIVEN:
Email report processing is active with lines to send
WHEN:
Email status needs to be set for active processing
THEN:
Email status is set to 'More Email' indicating active processing state
β Consolidated Acceptance Criteria
- The current email batch needs to be marked as complete → email status is set to 'No More Email' indicating the batch is ready for sending
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetNoMoreEmailStatus(["Start Step"])
E_SetNoMoreEmailStatus(["End Step"])
N_SetNoMoreEmailStatus_Node0{"The current email batch needs to be
marked as complete"}:::decision N_SetNoMoreEmailStatus_Node0_action["Email status is set to No More
Email indicating the batch is ready
for sending"]:::main N_SetNoMoreEmailStatus_Node0 -- Yes --> N_SetNoMoreEmailStatus_Node0_action N_SetNoMoreEmailStatus_Node0_action --> E_SetNoMoreEmailStatus S_SetNoMoreEmailStatus --> N_SetNoMoreEmailStatus_Node0 N_SetNoMoreEmailStatus_Node0 -- No --> E_SetNoMoreEmailStatus
marked as complete"}:::decision N_SetNoMoreEmailStatus_Node0_action["Email status is set to No More
Email indicating the batch is ready
for sending"]:::main N_SetNoMoreEmailStatus_Node0 -- Yes --> N_SetNoMoreEmailStatus_Node0_action N_SetNoMoreEmailStatus_Node0_action --> E_SetNoMoreEmailStatus S_SetNoMoreEmailStatus --> N_SetNoMoreEmailStatus_Node0 N_SetNoMoreEmailStatus_Node0 -- No --> E_SetNoMoreEmailStatus
File: GCX003.cbl
GIVEN:
The email line counter has exceeded 699 lines
WHEN:
The current email batch needs to be marked as complete
THEN:
Email status is set to 'No More Email' indicating the batch is ready for sending
β Consolidated Acceptance Criteria
- Line counter needs to reflect added headers → line counter is updated to account for the header lines added to the email batch
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateLineCounterforHeaders(["Start Step"])
E_UpdateLineCounterforHeaders(["End Step"])
N_UpdateLineCounterforHeaders_Node0{"Line counter needs to reflect added
headers"}:::decision N_UpdateLineCounterforHeaders_Node0_action["Line counter is updated to account
for the header lines added to the
email batch"]:::main N_UpdateLineCounterforHeaders_Node0 -- Yes --> N_UpdateLineCounterforHeaders_Node0_action N_UpdateLineCounterforHeaders_Node0_action --> E_UpdateLineCounterforHeaders S_UpdateLineCounterforHeaders --> N_UpdateLineCounterforHeaders_Node0 N_UpdateLineCounterforHeaders_Node0 -- No --> E_UpdateLineCounterforHeaders
headers"}:::decision N_UpdateLineCounterforHeaders_Node0_action["Line counter is updated to account
for the header lines added to the
email batch"]:::main N_UpdateLineCounterforHeaders_Node0 -- Yes --> N_UpdateLineCounterforHeaders_Node0_action N_UpdateLineCounterforHeaders_Node0_action --> E_UpdateLineCounterforHeaders S_UpdateLineCounterforHeaders --> N_UpdateLineCounterforHeaders_Node0 N_UpdateLineCounterforHeaders_Node0 -- No --> E_UpdateLineCounterforHeaders
File: GCX003.cbl
GIVEN:
Continuation header and detail headers have been added to new email batch
WHEN:
Line counter needs to reflect added headers
THEN:
Line counter is updated to account for the header lines added to the email batch
β Consolidated Acceptance Criteria
- System needs to determine if more lines exist to process → if more report lines exist, continue processing loop, otherwise proceed to send final email batch
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreLinestoProcess(["Start Step"])
E_MoreLinestoProcess(["End Step"])
N_MoreLinestoProcess_Node0{"System needs to determine if more
lines exist to process"}:::decision N_MoreLinestoProcess_Node0_action["If more report lines exist,
continue processing loop, otherwise
proceed to send final email batch"]:::main N_MoreLinestoProcess_Node0 -- Yes --> N_MoreLinestoProcess_Node0_action N_MoreLinestoProcess_Node0_action --> E_MoreLinestoProcess S_MoreLinestoProcess --> N_MoreLinestoProcess_Node0 N_MoreLinestoProcess_Node0 -- No --> E_MoreLinestoProcess
lines exist to process"}:::decision N_MoreLinestoProcess_Node0_action["If more report lines exist,
continue processing loop, otherwise
proceed to send final email batch"]:::main N_MoreLinestoProcess_Node0 -- Yes --> N_MoreLinestoProcess_Node0_action N_MoreLinestoProcess_Node0_action --> E_MoreLinestoProcess S_MoreLinestoProcess --> N_MoreLinestoProcess_Node0 N_MoreLinestoProcess_Node0 -- No --> E_MoreLinestoProcess
File: GCX003.cbl
GIVEN:
Email processing is in progress
WHEN:
System needs to determine if more lines exist to process
THEN:
If more report lines exist, continue processing loop, otherwise proceed to send final email batch
β Consolidated Acceptance Criteria
- System begins email distribution setup process → database access structure AELWRKTB is initialized to empty state
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeAELWRKTBDatabaseAccess(["Start Step"])
E_InitializeAELWRKTBDatabaseAccess(["End Step"])
N_InitializeAELWRKTBDatabaseAccess_Node0{"System begins email distribution
setup process"}:::decision N_InitializeAELWRKTBDatabaseAccess_Node0_action["Database access structure AELWRKTB
is initialized to empty state"]:::main N_InitializeAELWRKTBDatabaseAccess_Node0 -- Yes --> N_InitializeAELWRKTBDatabaseAccess_Node0_action N_InitializeAELWRKTBDatabaseAccess_Node0_action --> E_InitializeAELWRKTBDatabaseAccess S_InitializeAELWRKTBDatabaseAccess --> N_InitializeAELWRKTBDatabaseAccess_Node0 N_InitializeAELWRKTBDatabaseAccess_Node0 -- No --> E_InitializeAELWRKTBDatabaseAccess
setup process"}:::decision N_InitializeAELWRKTBDatabaseAccess_Node0_action["Database access structure AELWRKTB
is initialized to empty state"]:::main N_InitializeAELWRKTBDatabaseAccess_Node0 -- Yes --> N_InitializeAELWRKTBDatabaseAccess_Node0_action N_InitializeAELWRKTBDatabaseAccess_Node0_action --> E_InitializeAELWRKTBDatabaseAccess S_InitializeAELWRKTBDatabaseAccess --> N_InitializeAELWRKTBDatabaseAccess_Node0 N_InitializeAELWRKTBDatabaseAccess_Node0 -- No --> E_InitializeAELWRKTBDatabaseAccess
File: GCX003.cbl
GIVEN:
Email distribution list retrieval is required
WHEN:
System begins email distribution setup process
THEN:
Database access structure AELWRKTB is initialized to empty state
β Consolidated Acceptance Criteria
- System needs to query email distribution database → database record key is populated with train origin location in first 4 positions
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildDatabaseKeywithTrainOriginLocation(["Start Step"])
E_BuildDatabaseKeywithTrainOriginLocation(["End Step"])
N_BuildDatabaseKeywithTrainOriginLocation_Node0{"System needs to query email
distribution database"}:::decision N_BuildDatabaseKeywithTrainOriginLocation_Node0_action["Database record key is populated
with train origin location in first
4 positions"]:::main N_BuildDatabaseKeywithTrainOriginLocation_Node0 -- Yes --> N_BuildDatabaseKeywithTrainOriginLocation_Node0_action N_BuildDatabaseKeywithTrainOriginLocation_Node0_action --> E_BuildDatabaseKeywithTrainOriginLocation S_BuildDatabaseKeywithTrainOriginLocation --> N_BuildDatabaseKeywithTrainOriginLocation_Node0 N_BuildDatabaseKeywithTrainOriginLocation_Node0 -- No --> E_BuildDatabaseKeywithTrainOriginLocation
distribution database"}:::decision N_BuildDatabaseKeywithTrainOriginLocation_Node0_action["Database record key is populated
with train origin location in first
4 positions"]:::main N_BuildDatabaseKeywithTrainOriginLocation_Node0 -- Yes --> N_BuildDatabaseKeywithTrainOriginLocation_Node0_action N_BuildDatabaseKeywithTrainOriginLocation_Node0_action --> E_BuildDatabaseKeywithTrainOriginLocation S_BuildDatabaseKeywithTrainOriginLocation --> N_BuildDatabaseKeywithTrainOriginLocation_Node0 N_BuildDatabaseKeywithTrainOriginLocation_Node0 -- No --> E_BuildDatabaseKeywithTrainOriginLocation
File: GCX003.cbl
GIVEN:
Train origin location is available in request
WHEN:
System needs to query email distribution database
THEN:
Database record key is populated with train origin location in first 4 positions
β Consolidated Acceptance Criteria
- System prepares to retrieve email distribution list → record type is set to 'CUSEMAIL' to identify email records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetRecordTypetoCUSEMAIL(["Start Step"])
E_SetRecordTypetoCUSEMAIL(["End Step"])
N_SetRecordTypetoCUSEMAIL_Node0{"System prepares to retrieve email
distribution list"}:::decision N_SetRecordTypetoCUSEMAIL_Node0_action["Record type is set to CUSEMAIL to
identify email records"]:::main N_SetRecordTypetoCUSEMAIL_Node0 -- Yes --> N_SetRecordTypetoCUSEMAIL_Node0_action N_SetRecordTypetoCUSEMAIL_Node0_action --> E_SetRecordTypetoCUSEMAIL S_SetRecordTypetoCUSEMAIL --> N_SetRecordTypetoCUSEMAIL_Node0 N_SetRecordTypetoCUSEMAIL_Node0 -- No --> E_SetRecordTypetoCUSEMAIL
distribution list"}:::decision N_SetRecordTypetoCUSEMAIL_Node0_action["Record type is set to CUSEMAIL to
identify email records"]:::main N_SetRecordTypetoCUSEMAIL_Node0 -- Yes --> N_SetRecordTypetoCUSEMAIL_Node0_action N_SetRecordTypetoCUSEMAIL_Node0_action --> E_SetRecordTypetoCUSEMAIL S_SetRecordTypetoCUSEMAIL --> N_SetRecordTypetoCUSEMAIL_Node0 N_SetRecordTypetoCUSEMAIL_Node0 -- No --> E_SetRecordTypetoCUSEMAIL
File: GCX003.cbl
GIVEN:
Database query key is being constructed
WHEN:
System prepares to retrieve email distribution list
THEN:
Record type is set to 'CUSEMAIL' to identify email records
β Consolidated Acceptance Criteria
- System executes AECWRKTB database call → database query is performed and return code and SQL code are captured
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallAECWRKTBtoRetrieveEmailList(["Start Step"])
E_CallAECWRKTBtoRetrieveEmailList(["End Step"])
N_CallAECWRKTBtoRetrieveEmailList_Node0{"System executes AECWRKTB database
call"}:::decision N_CallAECWRKTBtoRetrieveEmailList_Node0_action["Database query is performed and
return code and SQL code are
captured"]:::main N_CallAECWRKTBtoRetrieveEmailList_Node0 -- Yes --> N_CallAECWRKTBtoRetrieveEmailList_Node0_action N_CallAECWRKTBtoRetrieveEmailList_Node0_action --> E_CallAECWRKTBtoRetrieveEmailList S_CallAECWRKTBtoRetrieveEmailList --> N_CallAECWRKTBtoRetrieveEmailList_Node0 N_CallAECWRKTBtoRetrieveEmailList_Node0 -- No --> E_CallAECWRKTBtoRetrieveEmailList
call"}:::decision N_CallAECWRKTBtoRetrieveEmailList_Node0_action["Database query is performed and
return code and SQL code are
captured"]:::main N_CallAECWRKTBtoRetrieveEmailList_Node0 -- Yes --> N_CallAECWRKTBtoRetrieveEmailList_Node0_action N_CallAECWRKTBtoRetrieveEmailList_Node0_action --> E_CallAECWRKTBtoRetrieveEmailList S_CallAECWRKTBtoRetrieveEmailList --> N_CallAECWRKTBtoRetrieveEmailList_Node0 N_CallAECWRKTBtoRetrieveEmailList_Node0 -- No --> E_CallAECWRKTBtoRetrieveEmailList
File: GCX003.cbl
GIVEN:
Database key is constructed with train origin and record type
WHEN:
System executes AECWRKTB database call
THEN:
- Database query is performed
- Return code
- Sql code are captured
β Consolidated Acceptance Criteria
- System checks database return code → if return code equals success constant, processing continues with retrieved data, otherwise error handling is initiated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DatabaseAccessSuccessful(["Start Step"])
E_DatabaseAccessSuccessful(["End Step"])
N_DatabaseAccessSuccessful_Node0{"System checks database return code"}:::decision
N_DatabaseAccessSuccessful_Node0_action["If return code equals success
constant, processing continues with
retrieved data, otherwise error
handling is initiated"]:::main N_DatabaseAccessSuccessful_Node0 -- Yes --> N_DatabaseAccessSuccessful_Node0_action N_DatabaseAccessSuccessful_Node0_action --> E_DatabaseAccessSuccessful S_DatabaseAccessSuccessful --> N_DatabaseAccessSuccessful_Node0 N_DatabaseAccessSuccessful_Node0 -- No --> E_DatabaseAccessSuccessful
constant, processing continues with
retrieved data, otherwise error
handling is initiated"]:::main N_DatabaseAccessSuccessful_Node0 -- Yes --> N_DatabaseAccessSuccessful_Node0_action N_DatabaseAccessSuccessful_Node0_action --> E_DatabaseAccessSuccessful S_DatabaseAccessSuccessful --> N_DatabaseAccessSuccessful_Node0 N_DatabaseAccessSuccessful_Node0 -- No --> E_DatabaseAccessSuccessful
File: GCX003.cbl
GIVEN:
Database query has been executed
WHEN:
System checks database return code
THEN:
If return code equals success constant, processing continues with retrieved data, otherwise error handling is initiated
β Consolidated Acceptance Criteria
- Email distribution list is available for processing → system sets default MERLIN ID as sender and prepares to extract individual email addresses
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessRetrievedEmailDistributionList(["Start Step"])
E_ProcessRetrievedEmailDistributionList(["End Step"])
N_ProcessRetrievedEmailDistributionList_Node0{"Email distribution list is
available for processing"}:::decision N_ProcessRetrievedEmailDistributionList_Node0_action["System sets default MERLIN ID as
sender and prepares to extract
individual email addresses"]:::main N_ProcessRetrievedEmailDistributionList_Node0 -- Yes --> N_ProcessRetrievedEmailDistributionList_Node0_action N_ProcessRetrievedEmailDistributionList_Node0_action --> E_ProcessRetrievedEmailDistributionList S_ProcessRetrievedEmailDistributionList --> N_ProcessRetrievedEmailDistributionList_Node0 N_ProcessRetrievedEmailDistributionList_Node0 -- No --> E_ProcessRetrievedEmailDistributionList
available for processing"}:::decision N_ProcessRetrievedEmailDistributionList_Node0_action["System sets default MERLIN ID as
sender and prepares to extract
individual email addresses"]:::main N_ProcessRetrievedEmailDistributionList_Node0 -- Yes --> N_ProcessRetrievedEmailDistributionList_Node0_action N_ProcessRetrievedEmailDistributionList_Node0_action --> E_ProcessRetrievedEmailDistributionList S_ProcessRetrievedEmailDistributionList --> N_ProcessRetrievedEmailDistributionList_Node0 N_ProcessRetrievedEmailDistributionList_Node0 -- No --> E_ProcessRetrievedEmailDistributionList
File: GCX003.cbl
GIVEN:
Database query returned success status
WHEN:
Email distribution list is available for processing
THEN:
- System sets default merlin id as sender
- Prepares to extract individual email addresses
β Consolidated Acceptance Criteria
- System processes each email address position → if email address at current position is not spaces, it is added to distribution list
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractUserEmailIDfromDatabaseRecord(["Start Step"])
E_ExtractUserEmailIDfromDatabaseRecord(["End Step"])
N_ExtractUserEmailIDfromDatabaseRecord_Node0{"System processes each email address
position"}:::decision N_ExtractUserEmailIDfromDatabaseRecord_Node0_action["If email address at current
position is not spaces, it is added
to distribution list"]:::main N_ExtractUserEmailIDfromDatabaseRecord_Node0 -- Yes --> N_ExtractUserEmailIDfromDatabaseRecord_Node0_action N_ExtractUserEmailIDfromDatabaseRecord_Node0_action --> E_ExtractUserEmailIDfromDatabaseRecord S_ExtractUserEmailIDfromDatabaseRecord --> N_ExtractUserEmailIDfromDatabaseRecord_Node0 N_ExtractUserEmailIDfromDatabaseRecord_Node0 -- No --> E_ExtractUserEmailIDfromDatabaseRecord
position"}:::decision N_ExtractUserEmailIDfromDatabaseRecord_Node0_action["If email address at current
position is not spaces, it is added
to distribution list"]:::main N_ExtractUserEmailIDfromDatabaseRecord_Node0 -- Yes --> N_ExtractUserEmailIDfromDatabaseRecord_Node0_action N_ExtractUserEmailIDfromDatabaseRecord_Node0_action --> E_ExtractUserEmailIDfromDatabaseRecord S_ExtractUserEmailIDfromDatabaseRecord --> N_ExtractUserEmailIDfromDatabaseRecord_Node0 N_ExtractUserEmailIDfromDatabaseRecord_Node0 -- No --> E_ExtractUserEmailIDfromDatabaseRecord
File: GCX003.cbl
GIVEN:
Email distribution list record is available and counter is within range 1 to 10
WHEN:
System processes each email address position
THEN:
If email address at current position is not spaces, it is added to distribution list
β Consolidated Acceptance Criteria
- Return code indicates no entry found condition → system continues processing without error and uses default email configuration
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleNoEntryFoundCondition(["Start Step"])
E_HandleNoEntryFoundCondition(["End Step"])
N_HandleNoEntryFoundCondition_Node0{"Return code indicates no entry
found condition"}:::decision N_HandleNoEntryFoundCondition_Node0_action["System continues processing without
error and uses default email
configuration"]:::main N_HandleNoEntryFoundCondition_Node0 -- Yes --> N_HandleNoEntryFoundCondition_Node0_action N_HandleNoEntryFoundCondition_Node0_action --> E_HandleNoEntryFoundCondition S_HandleNoEntryFoundCondition --> N_HandleNoEntryFoundCondition_Node0 N_HandleNoEntryFoundCondition_Node0 -- No --> E_HandleNoEntryFoundCondition
found condition"}:::decision N_HandleNoEntryFoundCondition_Node0_action["System continues processing without
error and uses default email
configuration"]:::main N_HandleNoEntryFoundCondition_Node0 -- Yes --> N_HandleNoEntryFoundCondition_Node0_action N_HandleNoEntryFoundCondition_Node0_action --> E_HandleNoEntryFoundCondition S_HandleNoEntryFoundCondition --> N_HandleNoEntryFoundCondition_Node0 N_HandleNoEntryFoundCondition_Node0 -- No --> E_HandleNoEntryFoundCondition
File: GCX003.cbl
GIVEN:
Database query completed with return code
WHEN:
Return code indicates no entry found condition
THEN:
- System continues processing without error
- Uses default email configuration
β Consolidated Acceptance Criteria
- Return code indicates error other than no entry found → system initiates database error handling procedure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleDatabaseErrorOccurred(["Start Step"])
E_HandleDatabaseErrorOccurred(["End Step"])
N_HandleDatabaseErrorOccurred_Node0{"Return code indicates error other
than no entry found"}:::decision N_HandleDatabaseErrorOccurred_Node0_action["System initiates database error
handling procedure"]:::exclusion N_HandleDatabaseErrorOccurred_Node0 -- Yes -->|Alternative| N_HandleDatabaseErrorOccurred_Node0_action N_HandleDatabaseErrorOccurred_Node0_action --> E_HandleDatabaseErrorOccurred S_HandleDatabaseErrorOccurred --> N_HandleDatabaseErrorOccurred_Node0 N_HandleDatabaseErrorOccurred_Node0 -- No --> E_HandleDatabaseErrorOccurred
than no entry found"}:::decision N_HandleDatabaseErrorOccurred_Node0_action["System initiates database error
handling procedure"]:::exclusion N_HandleDatabaseErrorOccurred_Node0 -- Yes -->|Alternative| N_HandleDatabaseErrorOccurred_Node0_action N_HandleDatabaseErrorOccurred_Node0_action --> E_HandleDatabaseErrorOccurred S_HandleDatabaseErrorOccurred --> N_HandleDatabaseErrorOccurred_Node0 N_HandleDatabaseErrorOccurred_Node0 -- No --> E_HandleDatabaseErrorOccurred
File: GCX003.cbl
GIVEN:
Database query completed with return code
WHEN:
Return code indicates error other than no entry found
THEN:
System initiates database error handling procedure
β Consolidated Acceptance Criteria
- System needs to establish email distribution → default MERLIN ID is set as both sender and recipient for email notifications
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDefaultEmailRecipients(["Start Step"])
E_SetDefaultEmailRecipients(["End Step"])
N_SetDefaultEmailRecipients_Node0{"System needs to establish email
distribution"}:::decision N_SetDefaultEmailRecipients_Node0_action["Default MERLIN ID is set as both
sender and recipient for email
notifications"]:::main N_SetDefaultEmailRecipients_Node0 -- Yes --> N_SetDefaultEmailRecipients_Node0_action N_SetDefaultEmailRecipients_Node0_action --> E_SetDefaultEmailRecipients S_SetDefaultEmailRecipients --> N_SetDefaultEmailRecipients_Node0 N_SetDefaultEmailRecipients_Node0 -- No --> E_SetDefaultEmailRecipients
distribution"}:::decision N_SetDefaultEmailRecipients_Node0_action["Default MERLIN ID is set as both
sender and recipient for email
notifications"]:::main N_SetDefaultEmailRecipients_Node0 -- Yes --> N_SetDefaultEmailRecipients_Node0_action N_SetDefaultEmailRecipients_Node0_action --> E_SetDefaultEmailRecipients S_SetDefaultEmailRecipients --> N_SetDefaultEmailRecipients_Node0 N_SetDefaultEmailRecipients_Node0 -- No --> E_SetDefaultEmailRecipients
File: GCX003.cbl
GIVEN:
Database lookup failed or returned no email addresses
WHEN:
System needs to establish email distribution
THEN:
- Default merlin id is set as both sender
- Recipient for email notifications
β Consolidated Acceptance Criteria
- The system generates an email subject line for AEI notification → the subject line should be formatted as 'US TRAIN [train_id] NOT SENT AT [origin_station]'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateNOTSENTSubjectLine(["Start Step"])
E_GenerateNOTSENTSubjectLine(["End Step"])
N_GenerateNOTSENTSubjectLine_Node0{"The system generates an email
subject line for AEI notification"}:::decision N_GenerateNOTSENTSubjectLine_Node0_action["The subject line should be
formatted as US TRAIN trainid NOT
SENT AT originstation"]:::main N_GenerateNOTSENTSubjectLine_Node0 -- Yes --> N_GenerateNOTSENTSubjectLine_Node0_action N_GenerateNOTSENTSubjectLine_Node0_action --> E_GenerateNOTSENTSubjectLine S_GenerateNOTSENTSubjectLine --> N_GenerateNOTSENTSubjectLine_Node0 N_GenerateNOTSENTSubjectLine_Node0 -- No --> E_GenerateNOTSENTSubjectLine
subject line for AEI notification"}:::decision N_GenerateNOTSENTSubjectLine_Node0_action["The subject line should be
formatted as US TRAIN trainid NOT
SENT AT originstation"]:::main N_GenerateNOTSENTSubjectLine_Node0 -- Yes --> N_GenerateNOTSENTSubjectLine_Node0_action N_GenerateNOTSENTSubjectLine_Node0_action --> E_GenerateNOTSENTSubjectLine S_GenerateNOTSENTSubjectLine --> N_GenerateNOTSENTSubjectLine_Node0 N_GenerateNOTSENTSubjectLine_Node0 -- No --> E_GenerateNOTSENTSubjectLine
File: GCX003.cbl
GIVEN:
A train processing request has completed with errors and RPT-ERROR-APPEND is true
WHEN:
The system generates an email subject line for AEI notification
THEN:
The subject line should be formatted as 'US TRAIN [train_id] NOT SENT AT [origin_station]'
β Consolidated Acceptance Criteria
- The system generates an email subject line for AEI notification → the subject line should be formatted as 'US TRAIN [train_id] SENT AT [origin_station]'
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GenerateSENTSubjectLine(["Start Step"])
E_GenerateSENTSubjectLine(["End Step"])
N_GenerateSENTSubjectLine_Node0{"The system generates an email
subject line for AEI notification"}:::decision N_GenerateSENTSubjectLine_Node0_action["The subject line should be
formatted as US TRAIN trainid SENT
AT originstation"]:::main N_GenerateSENTSubjectLine_Node0 -- Yes --> N_GenerateSENTSubjectLine_Node0_action N_GenerateSENTSubjectLine_Node0_action --> E_GenerateSENTSubjectLine S_GenerateSENTSubjectLine --> N_GenerateSENTSubjectLine_Node0 N_GenerateSENTSubjectLine_Node0 -- No --> E_GenerateSENTSubjectLine
subject line for AEI notification"}:::decision N_GenerateSENTSubjectLine_Node0_action["The subject line should be
formatted as US TRAIN trainid SENT
AT originstation"]:::main N_GenerateSENTSubjectLine_Node0 -- Yes --> N_GenerateSENTSubjectLine_Node0_action N_GenerateSENTSubjectLine_Node0_action --> E_GenerateSENTSubjectLine S_GenerateSENTSubjectLine --> N_GenerateSENTSubjectLine_Node0 N_GenerateSENTSubjectLine_Node0 -- No --> E_GenerateSENTSubjectLine
File: GCX003.cbl
GIVEN:
A train processing request has completed successfully and RPT-ERROR-APPEND is false
WHEN:
The system generates an email subject line for AEI notification
THEN:
The subject line should be formatted as 'US TRAIN [train_id] SENT AT [origin_station]'
β Consolidated Acceptance Criteria
- The system builds the complete subject line → the train ID from RPT-HDR-TRAIN-ID should be inserted into the subject template
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildSubjectStringwithTrainID(["Start Step"])
E_BuildSubjectStringwithTrainID(["End Step"])
N_BuildSubjectStringwithTrainID_Node0{"The system builds the complete
subject line"}:::decision N_BuildSubjectStringwithTrainID_Node0_action["The train ID from RPT-HDR-TRAIN-ID
should be inserted into the subject
template"]:::main N_BuildSubjectStringwithTrainID_Node0 -- Yes --> N_BuildSubjectStringwithTrainID_Node0_action N_BuildSubjectStringwithTrainID_Node0_action --> E_BuildSubjectStringwithTrainID S_BuildSubjectStringwithTrainID --> N_BuildSubjectStringwithTrainID_Node0 N_BuildSubjectStringwithTrainID_Node0 -- No --> E_BuildSubjectStringwithTrainID
subject line"}:::decision N_BuildSubjectStringwithTrainID_Node0_action["The train ID from RPT-HDR-TRAIN-ID
should be inserted into the subject
template"]:::main N_BuildSubjectStringwithTrainID_Node0 -- Yes --> N_BuildSubjectStringwithTrainID_Node0_action N_BuildSubjectStringwithTrainID_Node0_action --> E_BuildSubjectStringwithTrainID S_BuildSubjectStringwithTrainID --> N_BuildSubjectStringwithTrainID_Node0 N_BuildSubjectStringwithTrainID_Node0 -- No --> E_BuildSubjectStringwithTrainID
File: GCX003.cbl
GIVEN:
An email subject template has been determined based on train send status
WHEN:
The system builds the complete subject line
THEN:
The train ID from RPT-HDR-TRAIN-ID should be inserted into the subject template
β Consolidated Acceptance Criteria
- The system completes the subject line building process → the origin station from RPT-HDR-ORIGIN should be inserted into the subject template to complete the subject line
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildSubjectStringwithOriginStation(["Start Step"])
E_BuildSubjectStringwithOriginStation(["End Step"])
N_BuildSubjectStringwithOriginStation_Node0{"The system completes the subject
line building process"}:::decision N_BuildSubjectStringwithOriginStation_Node0_action["The origin station from
RPT-HDR-ORIGIN should be inserted
into the subject template to
complete the subject line"]:::main N_BuildSubjectStringwithOriginStation_Node0 -- Yes --> N_BuildSubjectStringwithOriginStation_Node0_action N_BuildSubjectStringwithOriginStation_Node0_action --> E_BuildSubjectStringwithOriginStation S_BuildSubjectStringwithOriginStation --> N_BuildSubjectStringwithOriginStation_Node0 N_BuildSubjectStringwithOriginStation_Node0 -- No --> E_BuildSubjectStringwithOriginStation
line building process"}:::decision N_BuildSubjectStringwithOriginStation_Node0_action["The origin station from
RPT-HDR-ORIGIN should be inserted
into the subject template to
complete the subject line"]:::main N_BuildSubjectStringwithOriginStation_Node0 -- Yes --> N_BuildSubjectStringwithOriginStation_Node0_action N_BuildSubjectStringwithOriginStation_Node0_action --> E_BuildSubjectStringwithOriginStation S_BuildSubjectStringwithOriginStation --> N_BuildSubjectStringwithOriginStation_Node0 N_BuildSubjectStringwithOriginStation_Node0 -- No --> E_BuildSubjectStringwithOriginStation
File: GCX003.cbl
GIVEN:
An email subject template with train ID has been partially constructed
WHEN:
The system completes the subject line building process
THEN:
The origin station from RPT-HDR-ORIGIN should be inserted into the subject template to complete the subject line
β Consolidated Acceptance Criteria
- The system checks the return code from the database operation → the system should identify if the operation failed and determine if it is a DB2 SQLCODE error type
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckReturnCode(["Start Step"])
E_CheckReturnCode(["End Step"])
N_CheckReturnCode_Node0{"The system checks the return code
from the database operation"}:::decision N_CheckReturnCode_Node0_action["The system should identify if the
operation failed and determine if it
is a DB2 SQLCODE error type"]:::main N_CheckReturnCode_Node0 -- Yes --> N_CheckReturnCode_Node0_action N_CheckReturnCode_Node0_action --> E_CheckReturnCode S_CheckReturnCode --> N_CheckReturnCode_Node0 N_CheckReturnCode_Node0 -- No --> E_CheckReturnCode
from the database operation"}:::decision N_CheckReturnCode_Node0_action["The system should identify if the
operation failed and determine if it
is a DB2 SQLCODE error type"]:::main N_CheckReturnCode_Node0 -- Yes --> N_CheckReturnCode_Node0_action N_CheckReturnCode_Node0_action --> E_CheckReturnCode S_CheckReturnCode --> N_CheckReturnCode_Node0 N_CheckReturnCode_Node0 -- No --> E_CheckReturnCode
File: GCX003.cbl
GIVEN:
A database operation has been attempted
WHEN:
The system checks the return code from the database operation
THEN:
- The system should identify if the operation failed
- Determine if it is a db2 sqlcode error type
β Consolidated Acceptance Criteria
- The system prepares error notification → the email recipient should be set to the support team identifier and the sender should be set to the default Merlin ID
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetSupportTeamasRecipient(["Start Step"])
E_SetSupportTeamasRecipient(["End Step"])
N_SetSupportTeamasRecipient_Node0{"The system prepares error
notification"}:::decision N_SetSupportTeamasRecipient_Node0_action["The email recipient should be set
to the support team identifier and
the sender should be set to the
default Merlin ID"]:::exclusion N_SetSupportTeamasRecipient_Node0 -- Yes -->|Alternative| N_SetSupportTeamasRecipient_Node0_action N_SetSupportTeamasRecipient_Node0_action --> E_SetSupportTeamasRecipient S_SetSupportTeamasRecipient --> N_SetSupportTeamasRecipient_Node0 N_SetSupportTeamasRecipient_Node0 -- No --> E_SetSupportTeamasRecipient
notification"}:::decision N_SetSupportTeamasRecipient_Node0_action["The email recipient should be set
to the support team identifier and
the sender should be set to the
default Merlin ID"]:::exclusion N_SetSupportTeamasRecipient_Node0 -- Yes -->|Alternative| N_SetSupportTeamasRecipient_Node0_action N_SetSupportTeamasRecipient_Node0_action --> E_SetSupportTeamasRecipient S_SetSupportTeamasRecipient --> N_SetSupportTeamasRecipient_Node0 N_SetSupportTeamasRecipient_Node0 -- No --> E_SetSupportTeamasRecipient
File: GCX003.cbl
GIVEN:
A database error has been detected
WHEN:
The system prepares error notification
THEN:
- The email recipient should be set to the support team identifier
- The sender should be set to the default merlin id
β Consolidated Acceptance Criteria
- The system formats the error notification → the subject line should contain 'GCX003 DB2 SQLCODE:' followed by the specific SQLCODE value and the message text should contain the same error information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatErrorSubjectLinewithSQLCODE(["Start Step"])
E_FormatErrorSubjectLinewithSQLCODE(["End Step"])
N_FormatErrorSubjectLinewithSQLCODE_Node0{"The system formats the error
notification"}:::decision N_FormatErrorSubjectLinewithSQLCODE_Node0_action["The subject line should contain
GCX003 DB2 SQLCODE: followed by the
specific SQLCODE value and the
message text should contain the same
error information"]:::exclusion N_FormatErrorSubjectLinewithSQLCODE_Node0 -- Yes -->|Alternative| N_FormatErrorSubjectLinewithSQLCODE_Node0_action N_FormatErrorSubjectLinewithSQLCODE_Node0_action --> E_FormatErrorSubjectLinewithSQLCODE S_FormatErrorSubjectLinewithSQLCODE --> N_FormatErrorSubjectLinewithSQLCODE_Node0 N_FormatErrorSubjectLinewithSQLCODE_Node0 -- No --> E_FormatErrorSubjectLinewithSQLCODE
notification"}:::decision N_FormatErrorSubjectLinewithSQLCODE_Node0_action["The subject line should contain
GCX003 DB2 SQLCODE: followed by the
specific SQLCODE value and the
message text should contain the same
error information"]:::exclusion N_FormatErrorSubjectLinewithSQLCODE_Node0 -- Yes -->|Alternative| N_FormatErrorSubjectLinewithSQLCODE_Node0_action N_FormatErrorSubjectLinewithSQLCODE_Node0_action --> E_FormatErrorSubjectLinewithSQLCODE S_FormatErrorSubjectLinewithSQLCODE --> N_FormatErrorSubjectLinewithSQLCODE_Node0 N_FormatErrorSubjectLinewithSQLCODE_Node0 -- No --> E_FormatErrorSubjectLinewithSQLCODE
File: GCX003.cbl
GIVEN:
A DB2 SQLCODE error has occurred
WHEN:
The system formats the error notification
THEN:
- The subject line should contain 'gcx003 db2 sqlcode:' followed by the specific sqlcode value
- The message text should contain the same error information
β Consolidated Acceptance Criteria
- The system configures the email delivery settings → the email destination should be set to the support inbox and email parameters should be initialized for sending
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEmailDestinationtoSupportInbox(["Start Step"])
E_SetEmailDestinationtoSupportInbox(["End Step"])
N_SetEmailDestinationtoSupportInbox_Node0{"The system configures the email
delivery settings"}:::decision N_SetEmailDestinationtoSupportInbox_Node0_action["The email destination should be set
to the support inbox and email
parameters should be initialized for
sending"]:::main N_SetEmailDestinationtoSupportInbox_Node0 -- Yes --> N_SetEmailDestinationtoSupportInbox_Node0_action N_SetEmailDestinationtoSupportInbox_Node0_action --> E_SetEmailDestinationtoSupportInbox S_SetEmailDestinationtoSupportInbox --> N_SetEmailDestinationtoSupportInbox_Node0 N_SetEmailDestinationtoSupportInbox_Node0 -- No --> E_SetEmailDestinationtoSupportInbox
delivery settings"}:::decision N_SetEmailDestinationtoSupportInbox_Node0_action["The email destination should be set
to the support inbox and email
parameters should be initialized for
sending"]:::main N_SetEmailDestinationtoSupportInbox_Node0 -- Yes --> N_SetEmailDestinationtoSupportInbox_Node0_action N_SetEmailDestinationtoSupportInbox_Node0_action --> E_SetEmailDestinationtoSupportInbox S_SetEmailDestinationtoSupportInbox --> N_SetEmailDestinationtoSupportInbox_Node0 N_SetEmailDestinationtoSupportInbox_Node0 -- No --> E_SetEmailDestinationtoSupportInbox
File: GCX003.cbl
GIVEN:
An error notification email is being prepared
WHEN:
The system configures the email delivery settings
THEN:
- The email destination should be set to the support inbox
- Email parameters should be initialized for sending
β Consolidated Acceptance Criteria
- The email delivery validation detects the failure → the system should set an error message indicating 'SEND TO FILE OF OM01247 FAILED' and perform an abend to halt processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SystemAbendEmailSendFailed(["Start Step"])
E_SystemAbendEmailSendFailed(["End Step"])
N_SystemAbendEmailSendFailed_Node0{"The email delivery validation
detects the failure"}:::decision N_SystemAbendEmailSendFailed_Node0_action["The system should set an error
message indicating SEND TO FILE OF
OM01247 FAILED and perform an abend
to halt processing"]:::exclusion N_SystemAbendEmailSendFailed_Node0 -- Yes -->|Alternative| N_SystemAbendEmailSendFailed_Node0_action N_SystemAbendEmailSendFailed_Node0_action --> E_SystemAbendEmailSendFailed S_SystemAbendEmailSendFailed --> N_SystemAbendEmailSendFailed_Node0 N_SystemAbendEmailSendFailed_Node0 -- No --> E_SystemAbendEmailSendFailed
detects the failure"}:::decision N_SystemAbendEmailSendFailed_Node0_action["The system should set an error
message indicating SEND TO FILE OF
OM01247 FAILED and perform an abend
to halt processing"]:::exclusion N_SystemAbendEmailSendFailed_Node0 -- Yes -->|Alternative| N_SystemAbendEmailSendFailed_Node0_action N_SystemAbendEmailSendFailed_Node0_action --> E_SystemAbendEmailSendFailed S_SystemAbendEmailSendFailed --> N_SystemAbendEmailSendFailed_Node0 N_SystemAbendEmailSendFailed_Node0 -- No --> E_SystemAbendEmailSendFailed
File: GCX003.cbl
GIVEN:
A database error notification email has failed to send
WHEN:
The email delivery validation detects the failure
THEN:
The system should set an error message indicating 'SEND TO FILE OF OM01247 FAILED' and perform an abend to halt processing
β Consolidated Acceptance Criteria
- The system performs database retrieval operation using train identifier as key → the system should retrieve the existing train record if found or return not found status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetTrainListRecord(["Start Step"])
E_GetTrainListRecord(["End Step"])
N_GetTrainListRecord_Node0{"The system performs database
retrieval operation using train
identifier as key"}:::decision N_GetTrainListRecord_Node0_action["The system should retrieve the
existing train record if found or
return not found status"]:::main N_GetTrainListRecord_Node0 -- Yes --> N_GetTrainListRecord_Node0_action N_GetTrainListRecord_Node0_action --> E_GetTrainListRecord S_GetTrainListRecord --> N_GetTrainListRecord_Node0 N_GetTrainListRecord_Node0 -- No --> E_GetTrainListRecord
retrieval operation using train
identifier as key"}:::decision N_GetTrainListRecord_Node0_action["The system should retrieve the
existing train record if found or
return not found status"]:::main N_GetTrainListRecord_Node0 -- Yes --> N_GetTrainListRecord_Node0_action N_GetTrainListRecord_Node0_action --> E_GetTrainListRecord S_GetTrainListRecord --> N_GetTrainListRecord_Node0 N_GetTrainListRecord_Node0 -- No --> E_GetTrainListRecord
File: GCX003.cbl
GIVEN:
A train list database operation is requested with operation type GET and train identifier is provided
WHEN:
The system performs database retrieval operation using train identifier as key
THEN:
The system should retrieve the existing train record if found or return not found status
β Consolidated Acceptance Criteria
- The system performs delete operation on the train record → the system should remove the train record from the database permanently
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DeleteTrainListRecord(["Start Step"])
E_DeleteTrainListRecord(["End Step"])
N_DeleteTrainListRecord_Node0{"The system performs delete
operation on the train record"}:::decision N_DeleteTrainListRecord_Node0_action["The system should remove the train
record from the database permanently"]:::main N_DeleteTrainListRecord_Node0 -- Yes --> N_DeleteTrainListRecord_Node0_action N_DeleteTrainListRecord_Node0_action --> E_DeleteTrainListRecord S_DeleteTrainListRecord --> N_DeleteTrainListRecord_Node0 N_DeleteTrainListRecord_Node0 -- No --> E_DeleteTrainListRecord
operation on the train record"}:::decision N_DeleteTrainListRecord_Node0_action["The system should remove the train
record from the database permanently"]:::main N_DeleteTrainListRecord_Node0 -- Yes --> N_DeleteTrainListRecord_Node0_action N_DeleteTrainListRecord_Node0_action --> E_DeleteTrainListRecord S_DeleteTrainListRecord --> N_DeleteTrainListRecord_Node0 N_DeleteTrainListRecord_Node0 -- No --> E_DeleteTrainListRecord
File: GCX003.cbl
GIVEN:
A train record exists in database and is marked as deleted with confirmation status
WHEN:
The system performs delete operation on the train record
THEN:
The system should remove the train record from the database permanently
β Consolidated Acceptance Criteria
- The system performs insert operation for new train record → the system should create new train record with all equipment details in the database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InsertTrainListRecord(["Start Step"])
E_InsertTrainListRecord(["End Step"])
N_InsertTrainListRecord_Node0{"The system performs insert
operation for new train record"}:::decision N_InsertTrainListRecord_Node0_action["The system should create new train
record with all equipment details in
the database"]:::main N_InsertTrainListRecord_Node0 -- Yes --> N_InsertTrainListRecord_Node0_action N_InsertTrainListRecord_Node0_action --> E_InsertTrainListRecord S_InsertTrainListRecord --> N_InsertTrainListRecord_Node0 N_InsertTrainListRecord_Node0 -- No --> E_InsertTrainListRecord
operation for new train record"}:::decision N_InsertTrainListRecord_Node0_action["The system should create new train
record with all equipment details in
the database"]:::main N_InsertTrainListRecord_Node0 -- Yes --> N_InsertTrainListRecord_Node0_action N_InsertTrainListRecord_Node0_action --> E_InsertTrainListRecord S_InsertTrainListRecord --> N_InsertTrainListRecord_Node0 N_InsertTrainListRecord_Node0 -- No --> E_InsertTrainListRecord
File: GCX003.cbl
GIVEN:
Train request has been validated successfully with no errors and train list data is prepared with equipment details
WHEN:
The system performs insert operation for new train record
THEN:
The system should create new train record with all equipment details in the database
β Consolidated Acceptance Criteria
- The system builds train list key for database operations → the system should create unique train identifier by concatenating SCAC code, train ID, origin, consist number and Julian creation date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildTrainListKey(["Start Step"])
E_BuildTrainListKey(["End Step"])
N_BuildTrainListKey_Node0{"The system builds train list key
for database operations"}:::decision N_BuildTrainListKey_Node0_action["The system should create unique
train identifier by concatenating
SCAC code, train ID, origin, consist
number and Julian creation date"]:::main N_BuildTrainListKey_Node0 -- Yes --> N_BuildTrainListKey_Node0_action N_BuildTrainListKey_Node0_action --> E_BuildTrainListKey S_BuildTrainListKey --> N_BuildTrainListKey_Node0 N_BuildTrainListKey_Node0 -- No --> E_BuildTrainListKey
for database operations"}:::decision N_BuildTrainListKey_Node0_action["The system should create unique
train identifier by concatenating
SCAC code, train ID, origin, consist
number and Julian creation date"]:::main N_BuildTrainListKey_Node0 -- Yes --> N_BuildTrainListKey_Node0_action N_BuildTrainListKey_Node0_action --> E_BuildTrainListKey S_BuildTrainListKey --> N_BuildTrainListKey_Node0 N_BuildTrainListKey_Node0 -- No --> E_BuildTrainListKey
File: GCX003.cbl
GIVEN:
Train request contains SCAC code, train ID, train origin, consist number and current system date
WHEN:
The system builds train list key for database operations
THEN:
- The system should create unique train identifier by concatenating scac code, train id, origin, consist number
- Julian creation date
β Consolidated Acceptance Criteria
- The system sets database operation parameters → the system should configure operation type flags, PCB reference, and data structure parameters appropriate for the requested operation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDatabaseParameters(["Start Step"])
E_SetDatabaseParameters(["End Step"])
N_SetDatabaseParameters_Node0{"The system sets database operation
parameters"}:::decision N_SetDatabaseParameters_Node0_action["The system should configure
operation type flags, PCB reference,
and data structure parameters
appropriate for the requested
operation"]:::main N_SetDatabaseParameters_Node0 -- Yes --> N_SetDatabaseParameters_Node0_action N_SetDatabaseParameters_Node0_action --> E_SetDatabaseParameters S_SetDatabaseParameters --> N_SetDatabaseParameters_Node0 N_SetDatabaseParameters_Node0 -- No --> E_SetDatabaseParameters
parameters"}:::decision N_SetDatabaseParameters_Node0_action["The system should configure
operation type flags, PCB reference,
and data structure parameters
appropriate for the requested
operation"]:::main N_SetDatabaseParameters_Node0 -- Yes --> N_SetDatabaseParameters_Node0_action N_SetDatabaseParameters_Node0_action --> E_SetDatabaseParameters S_SetDatabaseParameters --> N_SetDatabaseParameters_Node0 N_SetDatabaseParameters_Node0 -- No --> E_SetDatabaseParameters
File: GCX003.cbl
GIVEN:
A specific database operation type is determined (GET, DELETE, or INSERT)
WHEN:
The system sets database operation parameters
THEN:
The system should configure operation type flags, PCB reference, and data structure parameters appropriate for the requested operation
β Consolidated Acceptance Criteria
- The system calls database interface GCCUTRIO → the system should execute the database operation and return operation status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallDatabaseInterfaceGCCUTRIO(["Start Step"])
E_CallDatabaseInterfaceGCCUTRIO(["End Step"])
N_CallDatabaseInterfaceGCCUTRIO_Node0{"The system calls database interface
GCCUTRIO"}:::decision N_CallDatabaseInterfaceGCCUTRIO_Node0_action["The system should execute the
database operation and return
operation status"]:::main N_CallDatabaseInterfaceGCCUTRIO_Node0 -- Yes --> N_CallDatabaseInterfaceGCCUTRIO_Node0_action N_CallDatabaseInterfaceGCCUTRIO_Node0_action --> E_CallDatabaseInterfaceGCCUTRIO S_CallDatabaseInterfaceGCCUTRIO --> N_CallDatabaseInterfaceGCCUTRIO_Node0 N_CallDatabaseInterfaceGCCUTRIO_Node0 -- No --> E_CallDatabaseInterfaceGCCUTRIO
GCCUTRIO"}:::decision N_CallDatabaseInterfaceGCCUTRIO_Node0_action["The system should execute the
database operation and return
operation status"]:::main N_CallDatabaseInterfaceGCCUTRIO_Node0 -- Yes --> N_CallDatabaseInterfaceGCCUTRIO_Node0_action N_CallDatabaseInterfaceGCCUTRIO_Node0_action --> E_CallDatabaseInterfaceGCCUTRIO S_CallDatabaseInterfaceGCCUTRIO --> N_CallDatabaseInterfaceGCCUTRIO_Node0 N_CallDatabaseInterfaceGCCUTRIO_Node0 -- No --> E_CallDatabaseInterfaceGCCUTRIO
File: GCX003.cbl
GIVEN:
Database operation parameters are properly configured and train list data structure is prepared
WHEN:
The system calls database interface GCCUTRIO
THEN:
- The system should execute the database operation
- Return operation status
β Consolidated Acceptance Criteria
- The system checks operation success status → the system should validate return code is successful and no invalid parameters, equipment limits, or other error conditions exist
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_OperationSuccessful(["Start Step"])
E_OperationSuccessful(["End Step"])
N_OperationSuccessful_Node0{"The system checks operation success
status"}:::decision N_OperationSuccessful_Node0_action["The system should validate return
code is successful and no invalid
parameters, equipment limits, or
other error conditions exist"]:::main N_OperationSuccessful_Node0 -- Yes --> N_OperationSuccessful_Node0_action N_OperationSuccessful_Node0_action --> E_OperationSuccessful S_OperationSuccessful --> N_OperationSuccessful_Node0 N_OperationSuccessful_Node0 -- No --> E_OperationSuccessful
status"}:::decision N_OperationSuccessful_Node0_action["The system should validate return
code is successful and no invalid
parameters, equipment limits, or
other error conditions exist"]:::main N_OperationSuccessful_Node0 -- Yes --> N_OperationSuccessful_Node0_action N_OperationSuccessful_Node0_action --> E_OperationSuccessful S_OperationSuccessful --> N_OperationSuccessful_Node0 N_OperationSuccessful_Node0 -- No --> E_OperationSuccessful
File: GCX003.cbl
GIVEN:
Database operation has been executed through GCCUTRIO interface
WHEN:
The system checks operation success status
THEN:
- The system should validate return code is successful
- No invalid parameters, equipment limits, or other error conditions exist
β Consolidated Acceptance Criteria
- The system handles database error → the system should create detailed error message including operation type and train identifier, then terminate processing with abend
- The system detects a database operation failure → error handling procedures are executed and appropriate error status is set for the cargo operation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleDatabaseError(["Start Step"])
E_HandleDatabaseError(["End Step"])
N_HandleDatabaseError_Node0{"The system handles database error"}:::decision
N_HandleDatabaseError_Node0_action["The system should create detailed
error message including operation
type and train identifier, then
terminate processing with abend"]:::exclusion N_HandleDatabaseError_Node0 -- Yes -->|Alternative| N_HandleDatabaseError_Node0_action N_HandleDatabaseError_Node0_action --> E_HandleDatabaseError S_HandleDatabaseError --> N_HandleDatabaseError_Node0 N_HandleDatabaseError_Node1{"The system detects a database
operation failure"}:::decision N_HandleDatabaseError_Node1_action["Error handling procedures are
executed and appropriate error
status is set for the cargo
operation"]:::main N_HandleDatabaseError_Node1 -- Yes --> N_HandleDatabaseError_Node1_action N_HandleDatabaseError_Node1_action --> E_HandleDatabaseError N_HandleDatabaseError_Node0 -- No --> N_HandleDatabaseError_Node1 N_HandleDatabaseError_Node1 -- No --> E_HandleDatabaseError
error message including operation
type and train identifier, then
terminate processing with abend"]:::exclusion N_HandleDatabaseError_Node0 -- Yes -->|Alternative| N_HandleDatabaseError_Node0_action N_HandleDatabaseError_Node0_action --> E_HandleDatabaseError S_HandleDatabaseError --> N_HandleDatabaseError_Node0 N_HandleDatabaseError_Node1{"The system detects a database
operation failure"}:::decision N_HandleDatabaseError_Node1_action["Error handling procedures are
executed and appropriate error
status is set for the cargo
operation"]:::main N_HandleDatabaseError_Node1 -- Yes --> N_HandleDatabaseError_Node1_action N_HandleDatabaseError_Node1_action --> E_HandleDatabaseError N_HandleDatabaseError_Node0 -- No --> N_HandleDatabaseError_Node1 N_HandleDatabaseError_Node1 -- No --> E_HandleDatabaseError
File: GCX003.cbl
GIVEN:
Database operation failed with invalid parameters, equipment limit exceeded, or other error conditions
WHEN:
The system handles database error
THEN:
- The system should create detailed error message including operation type
- Train identifier, then terminate processing with abend
File: GCX003.cbl
GIVEN:
The database operation fails or returns an error
WHEN:
The system detects a database operation failure
THEN:
- Error handling procedures are executed
- Appropriate error status is set for the cargo operation
β Consolidated Acceptance Criteria
- The system logs operation result → the system should record operation outcome and continue with next processing step
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogOperationResult(["Start Step"])
E_LogOperationResult(["End Step"])
N_LogOperationResult_Node0{"The system logs operation result"}:::decision
N_LogOperationResult_Node0_action["The system should record operation
outcome and continue with next
processing step"]:::main N_LogOperationResult_Node0 -- Yes --> N_LogOperationResult_Node0_action N_LogOperationResult_Node0_action --> E_LogOperationResult S_LogOperationResult --> N_LogOperationResult_Node0 N_LogOperationResult_Node0 -- No --> E_LogOperationResult
outcome and continue with next
processing step"]:::main N_LogOperationResult_Node0 -- Yes --> N_LogOperationResult_Node0_action N_LogOperationResult_Node0_action --> E_LogOperationResult S_LogOperationResult --> N_LogOperationResult_Node0 N_LogOperationResult_Node0 -- No --> E_LogOperationResult
File: GCX003.cbl
GIVEN:
Database operation has completed either successfully or with handled errors
WHEN:
The system logs operation result
THEN:
- The system should record operation outcome
- Continue with next processing step
β Consolidated Acceptance Criteria
- The system begins the database operation process → database parameters are initialized and accept status is set to allow database operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeDatabaseParameters(["Start Step"])
E_InitializeDatabaseParameters(["End Step"])
N_InitializeDatabaseParameters_Node0{"The system begins the database
operation process"}:::decision N_InitializeDatabaseParameters_Node0_action["Database parameters are initialized
and accept status is set to allow
database operations"]:::main N_InitializeDatabaseParameters_Node0 -- Yes --> N_InitializeDatabaseParameters_Node0_action N_InitializeDatabaseParameters_Node0_action --> E_InitializeDatabaseParameters S_InitializeDatabaseParameters --> N_InitializeDatabaseParameters_Node0 N_InitializeDatabaseParameters_Node0 -- No --> E_InitializeDatabaseParameters
operation process"}:::decision N_InitializeDatabaseParameters_Node0_action["Database parameters are initialized
and accept status is set to allow
database operations"]:::main N_InitializeDatabaseParameters_Node0 -- Yes --> N_InitializeDatabaseParameters_Node0_action N_InitializeDatabaseParameters_Node0_action --> E_InitializeDatabaseParameters S_InitializeDatabaseParameters --> N_InitializeDatabaseParameters_Node0 N_InitializeDatabaseParameters_Node0 -- No --> E_InitializeDatabaseParameters
File: GCX003.cbl
GIVEN:
A cargo record database operation is requested
WHEN:
The system begins the database operation process
THEN:
- Database parameters are initialized
- Accept status is set to allow database operations
β Consolidated Acceptance Criteria
- The system prepares for cargo record access → the cargo segment type is set to target cargo records in the database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCargoSegmentType(["Start Step"])
E_SetCargoSegmentType(["End Step"])
N_SetCargoSegmentType_Node0{"The system prepares for cargo
record access"}:::decision N_SetCargoSegmentType_Node0_action["The cargo segment type is set to
target cargo records in the database"]:::main N_SetCargoSegmentType_Node0 -- Yes --> N_SetCargoSegmentType_Node0_action N_SetCargoSegmentType_Node0_action --> E_SetCargoSegmentType S_SetCargoSegmentType --> N_SetCargoSegmentType_Node0 N_SetCargoSegmentType_Node0 -- No --> E_SetCargoSegmentType
record access"}:::decision N_SetCargoSegmentType_Node0_action["The cargo segment type is set to
target cargo records in the database"]:::main N_SetCargoSegmentType_Node0 -- Yes --> N_SetCargoSegmentType_Node0_action N_SetCargoSegmentType_Node0_action --> E_SetCargoSegmentType S_SetCargoSegmentType --> N_SetCargoSegmentType_Node0 N_SetCargoSegmentType_Node0 -- No --> E_SetCargoSegmentType
File: GCX003.cbl
GIVEN:
Database parameters are initialized
WHEN:
The system prepares for cargo record access
THEN:
The cargo segment type is set to target cargo records in the database
β Consolidated Acceptance Criteria
- The system determines the type of database operation needed → the appropriate function code is set for get first (GU), get next (GN), or replace (REPL) operations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetDatabaseFunctionCode(["Start Step"])
E_SetDatabaseFunctionCode(["End Step"])
N_SetDatabaseFunctionCode_Node0{"The system determines the type of
database operation needed"}:::decision N_SetDatabaseFunctionCode_Node0_action["The appropriate function code is
set for get first GU, get next GN,
or replace REPL operations"]:::main N_SetDatabaseFunctionCode_Node0 -- Yes --> N_SetDatabaseFunctionCode_Node0_action N_SetDatabaseFunctionCode_Node0_action --> E_SetDatabaseFunctionCode S_SetDatabaseFunctionCode --> N_SetDatabaseFunctionCode_Node0 N_SetDatabaseFunctionCode_Node0 -- No --> E_SetDatabaseFunctionCode
database operation needed"}:::decision N_SetDatabaseFunctionCode_Node0_action["The appropriate function code is
set for get first GU, get next GN,
or replace REPL operations"]:::main N_SetDatabaseFunctionCode_Node0 -- Yes --> N_SetDatabaseFunctionCode_Node0_action N_SetDatabaseFunctionCode_Node0_action --> E_SetDatabaseFunctionCode S_SetDatabaseFunctionCode --> N_SetDatabaseFunctionCode_Node0 N_SetDatabaseFunctionCode_Node0 -- No --> E_SetDatabaseFunctionCode
File: GCX003.cbl
GIVEN:
The cargo segment type is set
WHEN:
The system determines the type of database operation needed
THEN:
The appropriate function code is set for get first (GU), get next (GN), or replace (REPL) operations
β Consolidated Acceptance Criteria
- The system needs to retrieve the initial cargo record for an equipment → the database function is set to GU (Get Unique) to fetch the first matching cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetGUFunctionGetFirstRecord(["Start Step"])
E_SetGUFunctionGetFirstRecord(["End Step"])
N_SetGUFunctionGetFirstRecord_Node0{"The system needs to retrieve the
initial cargo record for an
equipment"}:::decision N_SetGUFunctionGetFirstRecord_Node0_action["The database function is set to GU
Get Unique to fetch the first
matching cargo record"]:::main N_SetGUFunctionGetFirstRecord_Node0 -- Yes --> N_SetGUFunctionGetFirstRecord_Node0_action N_SetGUFunctionGetFirstRecord_Node0_action --> E_SetGUFunctionGetFirstRecord S_SetGUFunctionGetFirstRecord --> N_SetGUFunctionGetFirstRecord_Node0 N_SetGUFunctionGetFirstRecord_Node0 -- No --> E_SetGUFunctionGetFirstRecord
initial cargo record for an
equipment"}:::decision N_SetGUFunctionGetFirstRecord_Node0_action["The database function is set to GU
Get Unique to fetch the first
matching cargo record"]:::main N_SetGUFunctionGetFirstRecord_Node0 -- Yes --> N_SetGUFunctionGetFirstRecord_Node0_action N_SetGUFunctionGetFirstRecord_Node0_action --> E_SetGUFunctionGetFirstRecord S_SetGUFunctionGetFirstRecord --> N_SetGUFunctionGetFirstRecord_Node0 N_SetGUFunctionGetFirstRecord_Node0 -- No --> E_SetGUFunctionGetFirstRecord
File: GCX003.cbl
GIVEN:
The operation type is determined to be get first record
WHEN:
The system needs to retrieve the initial cargo record for an equipment
THEN:
The database function is set to GU (Get Unique) to fetch the first matching cargo record
β Consolidated Acceptance Criteria
- The system needs to retrieve additional cargo records for the same equipment → the database function is set to GN (Get Next) to fetch the next sequential cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetGNFunctionGetNextRecord(["Start Step"])
E_SetGNFunctionGetNextRecord(["End Step"])
N_SetGNFunctionGetNextRecord_Node0{"The system needs to retrieve
additional cargo records for the
same equipment"}:::decision N_SetGNFunctionGetNextRecord_Node0_action["The database function is set to GN
Get Next to fetch the next
sequential cargo record"]:::main N_SetGNFunctionGetNextRecord_Node0 -- Yes --> N_SetGNFunctionGetNextRecord_Node0_action N_SetGNFunctionGetNextRecord_Node0_action --> E_SetGNFunctionGetNextRecord S_SetGNFunctionGetNextRecord --> N_SetGNFunctionGetNextRecord_Node0 N_SetGNFunctionGetNextRecord_Node0 -- No --> E_SetGNFunctionGetNextRecord
additional cargo records for the
same equipment"}:::decision N_SetGNFunctionGetNextRecord_Node0_action["The database function is set to GN
Get Next to fetch the next
sequential cargo record"]:::main N_SetGNFunctionGetNextRecord_Node0 -- Yes --> N_SetGNFunctionGetNextRecord_Node0_action N_SetGNFunctionGetNextRecord_Node0_action --> E_SetGNFunctionGetNextRecord S_SetGNFunctionGetNextRecord --> N_SetGNFunctionGetNextRecord_Node0 N_SetGNFunctionGetNextRecord_Node0 -- No --> E_SetGNFunctionGetNextRecord
File: GCX003.cbl
GIVEN:
The operation type is determined to be get next record
WHEN:
The system needs to retrieve additional cargo records for the same equipment
THEN:
The database function is set to GN (Get Next) to fetch the next sequential cargo record
β Consolidated Acceptance Criteria
- The system needs to update cargo record information → the database function is set to REPL (Replace) to modify the existing cargo record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetREPLFunctionReplaceRecord(["Start Step"])
E_SetREPLFunctionReplaceRecord(["End Step"])
N_SetREPLFunctionReplaceRecord_Node0{"The system needs to update cargo
record information"}:::decision N_SetREPLFunctionReplaceRecord_Node0_action["The database function is set to
REPL Replace to modify the existing
cargo record"]:::main N_SetREPLFunctionReplaceRecord_Node0 -- Yes --> N_SetREPLFunctionReplaceRecord_Node0_action N_SetREPLFunctionReplaceRecord_Node0_action --> E_SetREPLFunctionReplaceRecord S_SetREPLFunctionReplaceRecord --> N_SetREPLFunctionReplaceRecord_Node0 N_SetREPLFunctionReplaceRecord_Node0 -- No --> E_SetREPLFunctionReplaceRecord
record information"}:::decision N_SetREPLFunctionReplaceRecord_Node0_action["The database function is set to
REPL Replace to modify the existing
cargo record"]:::main N_SetREPLFunctionReplaceRecord_Node0 -- Yes --> N_SetREPLFunctionReplaceRecord_Node0_action N_SetREPLFunctionReplaceRecord_Node0_action --> E_SetREPLFunctionReplaceRecord S_SetREPLFunctionReplaceRecord --> N_SetREPLFunctionReplaceRecord_Node0 N_SetREPLFunctionReplaceRecord_Node0 -- No --> E_SetREPLFunctionReplaceRecord
File: GCX003.cbl
GIVEN:
The operation type is determined to be replace record
WHEN:
The system needs to update cargo record information
THEN:
The database function is set to REPL (Replace) to modify the existing cargo record
β Consolidated Acceptance Criteria
- The system prepares to access cargo records → the index type is set to car-waybill to enable efficient cargo record retrieval by equipment and waybill combination
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetIndexTypetoCarWaybill(["Start Step"])
E_SetIndexTypetoCarWaybill(["End Step"])
N_SetIndexTypetoCarWaybill_Node0{"The system prepares to access cargo
records"}:::decision N_SetIndexTypetoCarWaybill_Node0_action["The index type is set to
car-waybill to enable efficient
cargo record retrieval by equipment
and waybill combination"]:::main N_SetIndexTypetoCarWaybill_Node0 -- Yes --> N_SetIndexTypetoCarWaybill_Node0_action N_SetIndexTypetoCarWaybill_Node0_action --> E_SetIndexTypetoCarWaybill S_SetIndexTypetoCarWaybill --> N_SetIndexTypetoCarWaybill_Node0 N_SetIndexTypetoCarWaybill_Node0 -- No --> E_SetIndexTypetoCarWaybill
records"}:::decision N_SetIndexTypetoCarWaybill_Node0_action["The index type is set to
car-waybill to enable efficient
cargo record retrieval by equipment
and waybill combination"]:::main N_SetIndexTypetoCarWaybill_Node0 -- Yes --> N_SetIndexTypetoCarWaybill_Node0_action N_SetIndexTypetoCarWaybill_Node0_action --> E_SetIndexTypetoCarWaybill S_SetIndexTypetoCarWaybill --> N_SetIndexTypetoCarWaybill_Node0 N_SetIndexTypetoCarWaybill_Node0 -- No --> E_SetIndexTypetoCarWaybill
File: GCX003.cbl
GIVEN:
The database function code is set
WHEN:
The system prepares to access cargo records
THEN:
- The index type is set to car-waybill to enable efficient cargo record retrieval by equipment
- Waybill combination
β Consolidated Acceptance Criteria
- The system needs to perform sequential cargo record searches → the search operator is set to greater than (>) to enable sequential record retrieval
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetOperatortoGreaterThan(["Start Step"])
E_SetOperatortoGreaterThan(["End Step"])
N_SetOperatortoGreaterThan_Node0{"The system needs to perform
sequential cargo record searches"}:::decision N_SetOperatortoGreaterThan_Node0_action["The search operator is set to
greater than to enable sequential
record retrieval"]:::main N_SetOperatortoGreaterThan_Node0 -- Yes --> N_SetOperatortoGreaterThan_Node0_action N_SetOperatortoGreaterThan_Node0_action --> E_SetOperatortoGreaterThan S_SetOperatortoGreaterThan --> N_SetOperatortoGreaterThan_Node0 N_SetOperatortoGreaterThan_Node0 -- No --> E_SetOperatortoGreaterThan
sequential cargo record searches"}:::decision N_SetOperatortoGreaterThan_Node0_action["The search operator is set to
greater than to enable sequential
record retrieval"]:::main N_SetOperatortoGreaterThan_Node0 -- Yes --> N_SetOperatortoGreaterThan_Node0_action N_SetOperatortoGreaterThan_Node0_action --> E_SetOperatortoGreaterThan S_SetOperatortoGreaterThan --> N_SetOperatortoGreaterThan_Node0 N_SetOperatortoGreaterThan_Node0 -- No --> E_SetOperatortoGreaterThan
File: GCX003.cbl
GIVEN:
The index type is set to car-waybill
WHEN:
The system needs to perform sequential cargo record searches
THEN:
The search operator is set to greater than (>) to enable sequential record retrieval
β Consolidated Acceptance Criteria
- The system is ready to perform the cargo record database operation → the GCCUSIO database I/O module is called to execute the configured operation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallDatabaseIOModuleGCCUSIO(["Start Step"])
E_CallDatabaseIOModuleGCCUSIO(["End Step"])
N_CallDatabaseIOModuleGCCUSIO_Node0{"The system is ready to perform the
cargo record database operation"}:::decision N_CallDatabaseIOModuleGCCUSIO_Node0_action["The GCCUSIO database IO module is
called to execute the configured
operation"]:::main N_CallDatabaseIOModuleGCCUSIO_Node0 -- Yes --> N_CallDatabaseIOModuleGCCUSIO_Node0_action N_CallDatabaseIOModuleGCCUSIO_Node0_action --> E_CallDatabaseIOModuleGCCUSIO S_CallDatabaseIOModuleGCCUSIO --> N_CallDatabaseIOModuleGCCUSIO_Node0 N_CallDatabaseIOModuleGCCUSIO_Node0 -- No --> E_CallDatabaseIOModuleGCCUSIO
cargo record database operation"}:::decision N_CallDatabaseIOModuleGCCUSIO_Node0_action["The GCCUSIO database IO module is
called to execute the configured
operation"]:::main N_CallDatabaseIOModuleGCCUSIO_Node0 -- Yes --> N_CallDatabaseIOModuleGCCUSIO_Node0_action N_CallDatabaseIOModuleGCCUSIO_Node0_action --> E_CallDatabaseIOModuleGCCUSIO S_CallDatabaseIOModuleGCCUSIO --> N_CallDatabaseIOModuleGCCUSIO_Node0 N_CallDatabaseIOModuleGCCUSIO_Node0 -- No --> E_CallDatabaseIOModuleGCCUSIO
File: GCX003.cbl
GIVEN:
All database operation parameters are configured
WHEN:
The system is ready to perform the cargo record database operation
THEN:
The GCCUSIO database I/O module is called to execute the configured operation
β Consolidated Acceptance Criteria
- The system receives the operation result → the system validates that no database errors occurred and the operation completed successfully
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DatabaseCallSuccessful(["Start Step"])
E_DatabaseCallSuccessful(["End Step"])
N_DatabaseCallSuccessful_Node0{"The system receives the operation
result"}:::decision N_DatabaseCallSuccessful_Node0_action["The system validates that no
database errors occurred and the
operation completed successfully"]:::main N_DatabaseCallSuccessful_Node0 -- Yes --> N_DatabaseCallSuccessful_Node0_action N_DatabaseCallSuccessful_Node0_action --> E_DatabaseCallSuccessful S_DatabaseCallSuccessful --> N_DatabaseCallSuccessful_Node0 N_DatabaseCallSuccessful_Node0 -- No --> E_DatabaseCallSuccessful
result"}:::decision N_DatabaseCallSuccessful_Node0_action["The system validates that no
database errors occurred and the
operation completed successfully"]:::main N_DatabaseCallSuccessful_Node0 -- Yes --> N_DatabaseCallSuccessful_Node0_action N_DatabaseCallSuccessful_Node0_action --> E_DatabaseCallSuccessful S_DatabaseCallSuccessful --> N_DatabaseCallSuccessful_Node0 N_DatabaseCallSuccessful_Node0 -- No --> E_DatabaseCallSuccessful
File: GCX003.cbl
GIVEN:
The database I/O module has been called
WHEN:
The system receives the operation result
THEN:
- The system validates that no database errors occurred
- The operation completed successfully
β Consolidated Acceptance Criteria
- The system needs to verify the cargo belongs to the correct equipment → the equipment ID from the cargo record is compared with the expected equipment ID to ensure they match
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckEquipmentIDMatch(["Start Step"])
E_CheckEquipmentIDMatch(["End Step"])
N_CheckEquipmentIDMatch_Node0{"The system needs to verify the
cargo belongs to the correct
equipment"}:::decision N_CheckEquipmentIDMatch_Node0_action["The equipment ID from the cargo
record is compared with the expected
equipment ID to ensure they match"]:::main N_CheckEquipmentIDMatch_Node0 -- Yes --> N_CheckEquipmentIDMatch_Node0_action N_CheckEquipmentIDMatch_Node0_action --> E_CheckEquipmentIDMatch S_CheckEquipmentIDMatch --> N_CheckEquipmentIDMatch_Node0 N_CheckEquipmentIDMatch_Node0 -- No --> E_CheckEquipmentIDMatch
cargo belongs to the correct
equipment"}:::decision N_CheckEquipmentIDMatch_Node0_action["The equipment ID from the cargo
record is compared with the expected
equipment ID to ensure they match"]:::main N_CheckEquipmentIDMatch_Node0 -- Yes --> N_CheckEquipmentIDMatch_Node0_action N_CheckEquipmentIDMatch_Node0_action --> E_CheckEquipmentIDMatch S_CheckEquipmentIDMatch --> N_CheckEquipmentIDMatch_Node0 N_CheckEquipmentIDMatch_Node0 -- No --> E_CheckEquipmentIDMatch
File: GCX003.cbl
GIVEN:
A cargo record is successfully retrieved from the database
WHEN:
The system needs to verify the cargo belongs to the correct equipment
THEN:
The equipment ID from the cargo record is compared with the expected equipment ID to ensure they match
β Consolidated Acceptance Criteria
- The system needs to verify the cargo belongs to the correct waybill → the waybill root date from the cargo record is compared with the expected waybill root date to ensure they match
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckWaybillRootDateMatch(["Start Step"])
E_CheckWaybillRootDateMatch(["End Step"])
N_CheckWaybillRootDateMatch_Node0{"The system needs to verify the
cargo belongs to the correct waybill"}:::decision N_CheckWaybillRootDateMatch_Node0_action["The waybill root date from the
cargo record is compared with the
expected waybill root date to ensure
they match"]:::main N_CheckWaybillRootDateMatch_Node0 -- Yes --> N_CheckWaybillRootDateMatch_Node0_action N_CheckWaybillRootDateMatch_Node0_action --> E_CheckWaybillRootDateMatch S_CheckWaybillRootDateMatch --> N_CheckWaybillRootDateMatch_Node0 N_CheckWaybillRootDateMatch_Node0 -- No --> E_CheckWaybillRootDateMatch
cargo belongs to the correct waybill"}:::decision N_CheckWaybillRootDateMatch_Node0_action["The waybill root date from the
cargo record is compared with the
expected waybill root date to ensure
they match"]:::main N_CheckWaybillRootDateMatch_Node0 -- Yes --> N_CheckWaybillRootDateMatch_Node0_action N_CheckWaybillRootDateMatch_Node0_action --> E_CheckWaybillRootDateMatch S_CheckWaybillRootDateMatch --> N_CheckWaybillRootDateMatch_Node0 N_CheckWaybillRootDateMatch_Node0 -- No --> E_CheckWaybillRootDateMatch
File: GCX003.cbl
GIVEN:
The equipment ID match is verified
WHEN:
The system needs to verify the cargo belongs to the correct waybill
THEN:
The waybill root date from the cargo record is compared with the expected waybill root date to ensure they match
β Consolidated Acceptance Criteria
- The system needs to determine if the cargo record is valid → if both equipment ID and waybill root date match, the cargo record is considered valid for processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentandWaybillMatch(["Start Step"])
E_EquipmentandWaybillMatch(["End Step"])
N_EquipmentandWaybillMatch_Node0{"The system needs to determine if
the cargo record is valid"}:::decision N_EquipmentandWaybillMatch_Node0_action["If both equipment ID and waybill
root date match, the cargo record is
considered valid for processing"]:::main N_EquipmentandWaybillMatch_Node0 -- Yes --> N_EquipmentandWaybillMatch_Node0_action N_EquipmentandWaybillMatch_Node0_action --> E_EquipmentandWaybillMatch S_EquipmentandWaybillMatch --> N_EquipmentandWaybillMatch_Node0 N_EquipmentandWaybillMatch_Node0 -- No --> E_EquipmentandWaybillMatch
the cargo record is valid"}:::decision N_EquipmentandWaybillMatch_Node0_action["If both equipment ID and waybill
root date match, the cargo record is
considered valid for processing"]:::main N_EquipmentandWaybillMatch_Node0 -- Yes --> N_EquipmentandWaybillMatch_Node0_action N_EquipmentandWaybillMatch_Node0_action --> E_EquipmentandWaybillMatch S_EquipmentandWaybillMatch --> N_EquipmentandWaybillMatch_Node0 N_EquipmentandWaybillMatch_Node0 -- No --> E_EquipmentandWaybillMatch
File: GCX003.cbl
GIVEN:
Both equipment ID and waybill root date comparisons are completed
WHEN:
The system needs to determine if the cargo record is valid
THEN:
- If both equipment id
- Waybill root date match, the cargo record is considered valid for processing
β Consolidated Acceptance Criteria
- The system determines the cargo record is not valid for the current equipment and waybill → the cargo status is set to not found to indicate no valid cargo record exists
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetCargoNotFoundStatus(["Start Step"])
E_SetCargoNotFoundStatus(["End Step"])
N_SetCargoNotFoundStatus_Node0{"The system determines the cargo
record is not valid for the current
equipment and waybill"}:::decision N_SetCargoNotFoundStatus_Node0_action["The cargo status is set to not
found to indicate no valid cargo
record exists"]:::main N_SetCargoNotFoundStatus_Node0 -- Yes --> N_SetCargoNotFoundStatus_Node0_action N_SetCargoNotFoundStatus_Node0_action --> E_SetCargoNotFoundStatus S_SetCargoNotFoundStatus --> N_SetCargoNotFoundStatus_Node0 N_SetCargoNotFoundStatus_Node0 -- No --> E_SetCargoNotFoundStatus
record is not valid for the current
equipment and waybill"}:::decision N_SetCargoNotFoundStatus_Node0_action["The cargo status is set to not
found to indicate no valid cargo
record exists"]:::main N_SetCargoNotFoundStatus_Node0 -- Yes --> N_SetCargoNotFoundStatus_Node0_action N_SetCargoNotFoundStatus_Node0_action --> E_SetCargoNotFoundStatus S_SetCargoNotFoundStatus --> N_SetCargoNotFoundStatus_Node0 N_SetCargoNotFoundStatus_Node0 -- No --> E_SetCargoNotFoundStatus
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Either equipment ID or waybill root date does not match the retrieved cargo record
WHEN:
- The system determines the cargo record is not valid for the current equipment
- Waybill
THEN:
The cargo status is set to not found to indicate no valid cargo record exists
β Consolidated Acceptance Criteria
- The system needs to record the final status of the cargo operation → the cargo status code is updated to reflect the outcome of the database operation
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateCargoStatusCode(["Start Step"])
E_UpdateCargoStatusCode(["End Step"])
N_UpdateCargoStatusCode_Node0{"The system needs to record the
final status of the cargo operation"}:::decision N_UpdateCargoStatusCode_Node0_action["The cargo status code is updated to
reflect the outcome of the database
operation"]:::main N_UpdateCargoStatusCode_Node0 -- Yes --> N_UpdateCargoStatusCode_Node0_action N_UpdateCargoStatusCode_Node0_action --> E_UpdateCargoStatusCode S_UpdateCargoStatusCode --> N_UpdateCargoStatusCode_Node0 N_UpdateCargoStatusCode_Node0 -- No --> E_UpdateCargoStatusCode
final status of the cargo operation"}:::decision N_UpdateCargoStatusCode_Node0_action["The cargo status code is updated to
reflect the outcome of the database
operation"]:::main N_UpdateCargoStatusCode_Node0 -- Yes --> N_UpdateCargoStatusCode_Node0_action N_UpdateCargoStatusCode_Node0_action --> E_UpdateCargoStatusCode S_UpdateCargoStatusCode --> N_UpdateCargoStatusCode_Node0 N_UpdateCargoStatusCode_Node0 -- No --> E_UpdateCargoStatusCode
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
The cargo record processing is completed (found, not found, or error)
WHEN:
The system needs to record the final status of the cargo operation
THEN:
The cargo status code is updated to reflect the outcome of the database operation
β Consolidated Acceptance Criteria
- The system searches freight waybill inquiry system using container inquiry root information → retrieve waybill root information from FWIQROOT database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchFreightWaybillInquirySystem(["Start Step"])
E_SearchFreightWaybillInquirySystem(["End Step"])
N_SearchFreightWaybillInquirySystem_Node0{"The system searches freight waybill
inquiry system using container
inquiry root information"}:::decision N_SearchFreightWaybillInquirySystem_Node0_action["Retrieve waybill root information
from FWIQROOT database"]:::main N_SearchFreightWaybillInquirySystem_Node0 -- Yes --> N_SearchFreightWaybillInquirySystem_Node0_action N_SearchFreightWaybillInquirySystem_Node0_action --> E_SearchFreightWaybillInquirySystem S_SearchFreightWaybillInquirySystem --> N_SearchFreightWaybillInquirySystem_Node0 N_SearchFreightWaybillInquirySystem_Node0 -- No --> E_SearchFreightWaybillInquirySystem
inquiry system using container
inquiry root information"}:::decision N_SearchFreightWaybillInquirySystem_Node0_action["Retrieve waybill root information
from FWIQROOT database"]:::main N_SearchFreightWaybillInquirySystem_Node0 -- Yes --> N_SearchFreightWaybillInquirySystem_Node0_action N_SearchFreightWaybillInquirySystem_Node0_action --> E_SearchFreightWaybillInquirySystem S_SearchFreightWaybillInquirySystem --> N_SearchFreightWaybillInquirySystem_Node0 N_SearchFreightWaybillInquirySystem_Node0 -- No --> E_SearchFreightWaybillInquirySystem
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Container is not found in primary container system
WHEN:
The system searches freight waybill inquiry system using container inquiry root information
THEN:
Retrieve waybill root information from FWIQROOT database
β Consolidated Acceptance Criteria
- The system processes FWIQBOTL segments to extract container cross-reference data → identify and extract container IDs, waybill railroad, station, and number information from T/C XREF entries
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractContainerCrossReferenceData(["Start Step"])
E_ExtractContainerCrossReferenceData(["End Step"])
N_ExtractContainerCrossReferenceData_Node0{"The system processes FWIQBOTL
segments to extract container
cross-reference data"}:::decision N_ExtractContainerCrossReferenceData_Node0_action["Identify and extract container IDs,
waybill railroad, station, and
number information from TC XREF
entries"]:::main N_ExtractContainerCrossReferenceData_Node0 -- Yes --> N_ExtractContainerCrossReferenceData_Node0_action N_ExtractContainerCrossReferenceData_Node0_action --> E_ExtractContainerCrossReferenceData S_ExtractContainerCrossReferenceData --> N_ExtractContainerCrossReferenceData_Node0 N_ExtractContainerCrossReferenceData_Node0 -- No --> E_ExtractContainerCrossReferenceData
segments to extract container
cross-reference data"}:::decision N_ExtractContainerCrossReferenceData_Node0_action["Identify and extract container IDs,
waybill railroad, station, and
number information from TC XREF
entries"]:::main N_ExtractContainerCrossReferenceData_Node0 -- Yes --> N_ExtractContainerCrossReferenceData_Node0_action N_ExtractContainerCrossReferenceData_Node0_action --> E_ExtractContainerCrossReferenceData S_ExtractContainerCrossReferenceData --> N_ExtractContainerCrossReferenceData_Node0 N_ExtractContainerCrossReferenceData_Node0 -- No --> E_ExtractContainerCrossReferenceData
File: GCX003.cbl
GIVEN:
Waybill root information has been retrieved successfully
WHEN:
The system processes FWIQBOTL segments to extract container cross-reference data
THEN:
- Identify
- Extract container ids, waybill railroad, station, and number information from t/c xref entries
β Consolidated Acceptance Criteria
- The system validates the extracted cross-reference information → if valid container cross-reference is found, get multiple container IDs, otherwise proceed to map inquiry data to standard format
- Checking for container cross-reference information → if inquiry bottom line starts with 'T/C XREF' then container cross-reference record is found, otherwise continue searching
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContainerCrossReferenceFound(["Start Step"])
E_ContainerCrossReferenceFound(["End Step"])
N_ContainerCrossReferenceFound_Node0{"The system validates the extracted
cross-reference information"}:::decision N_ContainerCrossReferenceFound_Node0_action["If valid container cross-reference
is found, get multiple container
IDs, otherwise proceed to map
inquiry data to standard format"]:::main N_ContainerCrossReferenceFound_Node0 -- Yes --> N_ContainerCrossReferenceFound_Node0_action N_ContainerCrossReferenceFound_Node0_action --> E_ContainerCrossReferenceFound S_ContainerCrossReferenceFound --> N_ContainerCrossReferenceFound_Node0 N_ContainerCrossReferenceFound_Node1{"Checking for container
cross-reference information"}:::decision N_ContainerCrossReferenceFound_Node1_action["If inquiry bottom line starts with
TC XREF then container
cross-reference record is found,
otherwise continue searching"]:::main N_ContainerCrossReferenceFound_Node1 -- Yes --> N_ContainerCrossReferenceFound_Node1_action N_ContainerCrossReferenceFound_Node1_action --> E_ContainerCrossReferenceFound N_ContainerCrossReferenceFound_Node0 -- No --> N_ContainerCrossReferenceFound_Node1 N_ContainerCrossReferenceFound_Node1 -- No --> E_ContainerCrossReferenceFound
cross-reference information"}:::decision N_ContainerCrossReferenceFound_Node0_action["If valid container cross-reference
is found, get multiple container
IDs, otherwise proceed to map
inquiry data to standard format"]:::main N_ContainerCrossReferenceFound_Node0 -- Yes --> N_ContainerCrossReferenceFound_Node0_action N_ContainerCrossReferenceFound_Node0_action --> E_ContainerCrossReferenceFound S_ContainerCrossReferenceFound --> N_ContainerCrossReferenceFound_Node0 N_ContainerCrossReferenceFound_Node1{"Checking for container
cross-reference information"}:::decision N_ContainerCrossReferenceFound_Node1_action["If inquiry bottom line starts with
TC XREF then container
cross-reference record is found,
otherwise continue searching"]:::main N_ContainerCrossReferenceFound_Node1 -- Yes --> N_ContainerCrossReferenceFound_Node1_action N_ContainerCrossReferenceFound_Node1_action --> E_ContainerCrossReferenceFound N_ContainerCrossReferenceFound_Node0 -- No --> N_ContainerCrossReferenceFound_Node1 N_ContainerCrossReferenceFound_Node1 -- No --> E_ContainerCrossReferenceFound
File: GCX003.cbl
GIVEN:
Container cross-reference data has been extracted from FWIQBOTL
WHEN:
The system validates the extracted cross-reference information
THEN:
If valid container cross-reference is found, get multiple container IDs, otherwise proceed to map inquiry data to standard format
File: GCX003.cbl
GIVEN:
Inquiry system returned bottom line data
WHEN:
Checking for container cross-reference information
THEN:
If inquiry bottom line starts with 'T/C XREF' then container cross-reference record is found, otherwise continue searching
β Consolidated Acceptance Criteria
- The system processes the cross-reference to extract multiple container IDs → store up to 30 container IDs with their associated waybill information for sequential processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetMultipleContainerIDsfromCrossReference(["Start Step"])
E_GetMultipleContainerIDsfromCrossReference(["End Step"])
N_GetMultipleContainerIDsfromCrossReference_Node0{"The system processes the
cross-reference to extract multiple
container IDs"}:::decision N_GetMultipleContainerIDsfromCrossReference_Node0_action["Store up to 30 container IDs with
their associated waybill information
for sequential processing"]:::main N_GetMultipleContainerIDsfromCrossReference_Node0 -- Yes --> N_GetMultipleContainerIDsfromCrossReference_Node0_action N_GetMultipleContainerIDsfromCrossReference_Node0_action --> E_GetMultipleContainerIDsfromCrossReference S_GetMultipleContainerIDsfromCrossReference --> N_GetMultipleContainerIDsfromCrossReference_Node0 N_GetMultipleContainerIDsfromCrossReference_Node0 -- No --> E_GetMultipleContainerIDsfromCrossReference
cross-reference to extract multiple
container IDs"}:::decision N_GetMultipleContainerIDsfromCrossReference_Node0_action["Store up to 30 container IDs with
their associated waybill information
for sequential processing"]:::main N_GetMultipleContainerIDsfromCrossReference_Node0 -- Yes --> N_GetMultipleContainerIDsfromCrossReference_Node0_action N_GetMultipleContainerIDsfromCrossReference_Node0_action --> E_GetMultipleContainerIDsfromCrossReference S_GetMultipleContainerIDsfromCrossReference --> N_GetMultipleContainerIDsfromCrossReference_Node0 N_GetMultipleContainerIDsfromCrossReference_Node0 -- No --> E_GetMultipleContainerIDsfromCrossReference
File: GCX003.cbl
GIVEN:
Valid container cross-reference data is found
WHEN:
The system processes the cross-reference to extract multiple container IDs
THEN:
Store up to 30 container IDs with their associated waybill information for sequential processing
β Consolidated Acceptance Criteria
- The system retrieves routing information from FWIQINFO with segment type B1 → extract and parse routing fields including SCAC codes and junction information, then format into routing groups
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetRoutingInformationfromInquiry(["Start Step"])
E_GetRoutingInformationfromInquiry(["End Step"])
N_GetRoutingInformationfromInquiry_Node0{"The system retrieves routing
information from FWIQINFO with
segment type B1"}:::decision N_GetRoutingInformationfromInquiry_Node0_action["Extract and parse routing fields
including SCAC codes and junction
information, then format into
routing groups"]:::main N_GetRoutingInformationfromInquiry_Node0 -- Yes --> N_GetRoutingInformationfromInquiry_Node0_action N_GetRoutingInformationfromInquiry_Node0_action --> E_GetRoutingInformationfromInquiry S_GetRoutingInformationfromInquiry --> N_GetRoutingInformationfromInquiry_Node0 N_GetRoutingInformationfromInquiry_Node0 -- No --> E_GetRoutingInformationfromInquiry
information from FWIQINFO with
segment type B1"}:::decision N_GetRoutingInformationfromInquiry_Node0_action["Extract and parse routing fields
including SCAC codes and junction
information, then format into
routing groups"]:::main N_GetRoutingInformationfromInquiry_Node0 -- Yes --> N_GetRoutingInformationfromInquiry_Node0_action N_GetRoutingInformationfromInquiry_Node0_action --> E_GetRoutingInformationfromInquiry S_GetRoutingInformationfromInquiry --> N_GetRoutingInformationfromInquiry_Node0 N_GetRoutingInformationfromInquiry_Node0 -- No --> E_GetRoutingInformationfromInquiry
File: GCX003.cbl
GIVEN:
Waybill data has been mapped to standard format
WHEN:
The system retrieves routing information from FWIQINFO with segment type B1
THEN:
- Extract
- Parse routing fields including scac codes
- Junction information, then format into routing groups
β Consolidated Acceptance Criteria
- The system checks if this is the first call to the waybill retrieval function OR the current car ID is different from the previously processed car ID → if either condition is true, proceed with full waybill retrieval process, otherwise use cached information and exit
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FirstCallorDifferentCarID(["Start Step"])
E_FirstCallorDifferentCarID(["End Step"])
N_FirstCallorDifferentCarID_Node0{"The system checks if this is the
first call to the waybill retrieval
function OR the current car ID is
different from the previously
processed car ID"}:::decision N_FirstCallorDifferentCarID_Node0_action["If either condition is true,
proceed with full waybill retrieval
process, otherwise use cached
information and exit"]:::main N_FirstCallorDifferentCarID_Node0 -- Yes --> N_FirstCallorDifferentCarID_Node0_action N_FirstCallorDifferentCarID_Node0_action --> E_FirstCallorDifferentCarID S_FirstCallorDifferentCarID --> N_FirstCallorDifferentCarID_Node0 N_FirstCallorDifferentCarID_Node0 -- No --> E_FirstCallorDifferentCarID
first call to the waybill retrieval
function OR the current car ID is
different from the previously
processed car ID"}:::decision N_FirstCallorDifferentCarID_Node0_action["If either condition is true,
proceed with full waybill retrieval
process, otherwise use cached
information and exit"]:::main N_FirstCallorDifferentCarID_Node0 -- Yes --> N_FirstCallorDifferentCarID_Node0_action N_FirstCallorDifferentCarID_Node0_action --> E_FirstCallorDifferentCarID S_FirstCallorDifferentCarID --> N_FirstCallorDifferentCarID_Node0 N_FirstCallorDifferentCarID_Node0 -- No --> E_FirstCallorDifferentCarID
File: GCX003.cbl
GIVEN:
A car waybill retrieval request is initiated
WHEN:
The system checks if this is the first call to the waybill retrieval function OR the current car ID is different from the previously processed car ID
THEN:
- If either condition is true, proceed with full waybill retrieval process, otherwise use cached information
- Exit
β Consolidated Acceptance Criteria
- The system initializes waybill retrieval parameters → set car type to all except 98-99, status to all status types, exclude EDI incomplete records, include temporary waybills, exclude corrector waybills, return lead waybill, and use latest waybill date
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeCarWaybillParameters(["Start Step"])
E_InitializeCarWaybillParameters(["End Step"])
N_InitializeCarWaybillParameters_Node0{"The system initializes waybill
retrieval parameters"}:::decision N_InitializeCarWaybillParameters_Node0_action["Set car type to all except 98-99,
status to all status types, exclude
EDI incomplete records, include
temporary waybills, exclude
corrector waybills, return lead
waybill, and use latest waybill date"]:::main N_InitializeCarWaybillParameters_Node0 -- Yes --> N_InitializeCarWaybillParameters_Node0_action N_InitializeCarWaybillParameters_Node0_action --> E_InitializeCarWaybillParameters S_InitializeCarWaybillParameters --> N_InitializeCarWaybillParameters_Node0 N_InitializeCarWaybillParameters_Node0 -- No --> E_InitializeCarWaybillParameters
retrieval parameters"}:::decision N_InitializeCarWaybillParameters_Node0_action["Set car type to all except 98-99,
status to all status types, exclude
EDI incomplete records, include
temporary waybills, exclude
corrector waybills, return lead
waybill, and use latest waybill date"]:::main N_InitializeCarWaybillParameters_Node0 -- Yes --> N_InitializeCarWaybillParameters_Node0_action N_InitializeCarWaybillParameters_Node0_action --> E_InitializeCarWaybillParameters S_InitializeCarWaybillParameters --> N_InitializeCarWaybillParameters_Node0 N_InitializeCarWaybillParameters_Node0 -- No --> E_InitializeCarWaybillParameters
File: GCX003.cbl
GIVEN:
A new car waybill retrieval is required
WHEN:
The system initializes waybill retrieval parameters
THEN:
Set car type to all except 98-99, status to all status types, exclude EDI incomplete records, include temporary waybills, exclude corrector waybills, return lead waybill, and use latest waybill date
β Consolidated Acceptance Criteria
- The system calls the primary waybill system FWCARGET → retrieve waybill data from the primary database and return the lookup status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallPrimaryWaybillSystemFWCARGET(["Start Step"])
E_CallPrimaryWaybillSystemFWCARGET(["End Step"])
N_CallPrimaryWaybillSystemFWCARGET_Node0{"The system calls the primary
waybill system FWCARGET"}:::decision N_CallPrimaryWaybillSystemFWCARGET_Node0_action["Retrieve waybill data from the
primary database and return the
lookup status"]:::main N_CallPrimaryWaybillSystemFWCARGET_Node0 -- Yes --> N_CallPrimaryWaybillSystemFWCARGET_Node0_action N_CallPrimaryWaybillSystemFWCARGET_Node0_action --> E_CallPrimaryWaybillSystemFWCARGET S_CallPrimaryWaybillSystemFWCARGET --> N_CallPrimaryWaybillSystemFWCARGET_Node0 N_CallPrimaryWaybillSystemFWCARGET_Node0 -- No --> E_CallPrimaryWaybillSystemFWCARGET
waybill system FWCARGET"}:::decision N_CallPrimaryWaybillSystemFWCARGET_Node0_action["Retrieve waybill data from the
primary database and return the
lookup status"]:::main N_CallPrimaryWaybillSystemFWCARGET_Node0 -- Yes --> N_CallPrimaryWaybillSystemFWCARGET_Node0_action N_CallPrimaryWaybillSystemFWCARGET_Node0_action --> E_CallPrimaryWaybillSystemFWCARGET S_CallPrimaryWaybillSystemFWCARGET --> N_CallPrimaryWaybillSystemFWCARGET_Node0 N_CallPrimaryWaybillSystemFWCARGET_Node0 -- No --> E_CallPrimaryWaybillSystemFWCARGET
File: GCX003.cbl
GIVEN:
Waybill retrieval parameters are initialized with car ID
WHEN:
The system calls the primary waybill system FWCARGET
THEN:
- Retrieve waybill data from the primary database
- Return the lookup status
β Consolidated Acceptance Criteria
- The system checks the EDI completion release status → if EDI completion release equals 'Y', accept the waybill as found, otherwise continue with duplicate key checking
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EDICompleteReleaseAvailable(["Start Step"])
E_EDICompleteReleaseAvailable(["End Step"])
N_EDICompleteReleaseAvailable_Node0{"The system checks the EDI
completion release status"}:::decision N_EDICompleteReleaseAvailable_Node0_action["If EDI completion release equals Y
, accept the waybill as found,
otherwise continue with duplicate
key checking"]:::main N_EDICompleteReleaseAvailable_Node0 -- Yes --> N_EDICompleteReleaseAvailable_Node0_action N_EDICompleteReleaseAvailable_Node0_action --> E_EDICompleteReleaseAvailable S_EDICompleteReleaseAvailable --> N_EDICompleteReleaseAvailable_Node0 N_EDICompleteReleaseAvailable_Node0 -- No --> E_EDICompleteReleaseAvailable
completion release status"}:::decision N_EDICompleteReleaseAvailable_Node0_action["If EDI completion release equals Y
, accept the waybill as found,
otherwise continue with duplicate
key checking"]:::main N_EDICompleteReleaseAvailable_Node0 -- Yes --> N_EDICompleteReleaseAvailable_Node0_action N_EDICompleteReleaseAvailable_Node0_action --> E_EDICompleteReleaseAvailable S_EDICompleteReleaseAvailable --> N_EDICompleteReleaseAvailable_Node0 N_EDICompleteReleaseAvailable_Node0 -- No --> E_EDICompleteReleaseAvailable
File: GCX003.cbl
GIVEN:
A waybill has a haulage right carrier assigned
WHEN:
The system checks the EDI completion release status
THEN:
If EDI completion release equals 'Y', accept the waybill as found, otherwise continue with duplicate key checking
β Consolidated Acceptance Criteria
- The system sets the search criteria to previous status waybill date → update the waybill key feedback tracker and repeat the primary waybill system search with previous status criteria
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetPreviousStatusDateFlag(["Start Step"])
E_SetPreviousStatusDateFlag(["End Step"])
N_SetPreviousStatusDateFlag_Node0{"The system sets the search criteria
to previous status waybill date"}:::decision N_SetPreviousStatusDateFlag_Node0_action["Update the waybill key feedback
tracker and repeat the primary
waybill system search with previous
status criteria"]:::main N_SetPreviousStatusDateFlag_Node0 -- Yes --> N_SetPreviousStatusDateFlag_Node0_action N_SetPreviousStatusDateFlag_Node0_action --> E_SetPreviousStatusDateFlag S_SetPreviousStatusDateFlag --> N_SetPreviousStatusDateFlag_Node0 N_SetPreviousStatusDateFlag_Node0 -- No --> E_SetPreviousStatusDateFlag
to previous status waybill date"}:::decision N_SetPreviousStatusDateFlag_Node0_action["Update the waybill key feedback
tracker and repeat the primary
waybill system search with previous
status criteria"]:::main N_SetPreviousStatusDateFlag_Node0 -- Yes --> N_SetPreviousStatusDateFlag_Node0_action N_SetPreviousStatusDateFlag_Node0_action --> E_SetPreviousStatusDateFlag S_SetPreviousStatusDateFlag --> N_SetPreviousStatusDateFlag_Node0 N_SetPreviousStatusDateFlag_Node0 -- No --> E_SetPreviousStatusDateFlag
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Current waybill does not have EDI completion and is not a duplicate key
WHEN:
The system sets the search criteria to previous status waybill date
THEN:
- Update the waybill key feedback tracker
- Repeat the primary waybill system search with previous status criteria
β Consolidated Acceptance Criteria
- The system calls the container inquiry system FWCIIO using the car ID → retrieve container and waybill reference information from the inquiry database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallInquirySystemFWCIIO(["Start Step"])
E_CallInquirySystemFWCIIO(["End Step"])
N_CallInquirySystemFWCIIO_Node0{"The system calls the container
inquiry system FWCIIO using the car
ID"}:::decision N_CallInquirySystemFWCIIO_Node0_action["Retrieve container and waybill
reference information from the
inquiry database"]:::main N_CallInquirySystemFWCIIO_Node0 -- Yes --> N_CallInquirySystemFWCIIO_Node0_action N_CallInquirySystemFWCIIO_Node0_action --> E_CallInquirySystemFWCIIO S_CallInquirySystemFWCIIO --> N_CallInquirySystemFWCIIO_Node0 N_CallInquirySystemFWCIIO_Node0 -- No --> E_CallInquirySystemFWCIIO
inquiry system FWCIIO using the car
ID"}:::decision N_CallInquirySystemFWCIIO_Node0_action["Retrieve container and waybill
reference information from the
inquiry database"]:::main N_CallInquirySystemFWCIIO_Node0 -- Yes --> N_CallInquirySystemFWCIIO_Node0_action N_CallInquirySystemFWCIIO_Node0_action --> E_CallInquirySystemFWCIIO S_CallInquirySystemFWCIIO --> N_CallInquirySystemFWCIIO_Node0 N_CallInquirySystemFWCIIO_Node0 -- No --> E_CallInquirySystemFWCIIO
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Primary waybill system did not find a valid waybill record
WHEN:
The system calls the container inquiry system FWCIIO using the car ID
THEN:
- Retrieve container
- Waybill reference information from the inquiry database
β Consolidated Acceptance Criteria
- The system calls waybill inquiry system FWIQIO with the reference data → retrieve detailed waybill information from the inquiry database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallWaybillInquiryFWIQIO(["Start Step"])
E_CallWaybillInquiryFWIQIO(["End Step"])
N_CallWaybillInquiryFWIQIO_Node0{"The system calls waybill inquiry
system FWIQIO with the reference
data"}:::decision N_CallWaybillInquiryFWIQIO_Node0_action["Retrieve detailed waybill
information from the inquiry
database"]:::main N_CallWaybillInquiryFWIQIO_Node0 -- Yes --> N_CallWaybillInquiryFWIQIO_Node0_action N_CallWaybillInquiryFWIQIO_Node0_action --> E_CallWaybillInquiryFWIQIO S_CallWaybillInquiryFWIQIO --> N_CallWaybillInquiryFWIQIO_Node0 N_CallWaybillInquiryFWIQIO_Node0 -- No --> E_CallWaybillInquiryFWIQIO
system FWIQIO with the reference
data"}:::decision N_CallWaybillInquiryFWIQIO_Node0_action["Retrieve detailed waybill
information from the inquiry
database"]:::main N_CallWaybillInquiryFWIQIO_Node0 -- Yes --> N_CallWaybillInquiryFWIQIO_Node0_action N_CallWaybillInquiryFWIQIO_Node0_action --> E_CallWaybillInquiryFWIQIO S_CallWaybillInquiryFWIQIO --> N_CallWaybillInquiryFWIQIO_Node0 N_CallWaybillInquiryFWIQIO_Node0 -- No --> E_CallWaybillInquiryFWIQIO
File: GCX003.cbl
GIVEN:
Container inquiry system returned valid reference data including railroad number, station number, and waybill number
WHEN:
The system calls waybill inquiry system FWIQIO with the reference data
THEN:
Retrieve detailed waybill information from the inquiry database
β Consolidated Acceptance Criteria
- The system processes the routing information from the inquiry waybill → extract routing details and populate routing information fields in the waybill structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractRoutingInformation(["Start Step"])
E_ExtractRoutingInformation(["End Step"])
N_ExtractRoutingInformation_Node0{"The system processes the routing
information from the inquiry waybill"}:::decision N_ExtractRoutingInformation_Node0_action["Extract routing details and
populate routing information fields
in the waybill structure"]:::main N_ExtractRoutingInformation_Node0 -- Yes --> N_ExtractRoutingInformation_Node0_action N_ExtractRoutingInformation_Node0_action --> E_ExtractRoutingInformation S_ExtractRoutingInformation --> N_ExtractRoutingInformation_Node0 N_ExtractRoutingInformation_Node0 -- No --> E_ExtractRoutingInformation
information from the inquiry waybill"}:::decision N_ExtractRoutingInformation_Node0_action["Extract routing details and
populate routing information fields
in the waybill structure"]:::main N_ExtractRoutingInformation_Node0 -- Yes --> N_ExtractRoutingInformation_Node0_action N_ExtractRoutingInformation_Node0_action --> E_ExtractRoutingInformation S_ExtractRoutingInformation --> N_ExtractRoutingInformation_Node0 N_ExtractRoutingInformation_Node0 -- No --> E_ExtractRoutingInformation
File: GCX003.cbl
GIVEN:
Waybill inquiry system returned valid waybill data
WHEN:
The system processes the routing information from the inquiry waybill
THEN:
- Extract routing details
- Populate routing information fields in the waybill structure
β Consolidated Acceptance Criteria
- The system maps inquiry fields to standard waybill structure → map railroad number, waybill number, car ID, convert billing code 'ZE' to empty status 'E' otherwise to loaded status 'L', map TOFC/COFC indicator, waybill date, and station number to corresponding waybill fields
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MapInquiryDatatoWaybillFormat(["Start Step"])
E_MapInquiryDatatoWaybillFormat(["End Step"])
N_MapInquiryDatatoWaybillFormat_Node0{"The system maps inquiry fields to
standard waybill structure"}:::decision N_MapInquiryDatatoWaybillFormat_Node0_action["Map railroad number, waybill
number, car ID, convert billing code
ZE to empty status E otherwise to
loaded status L , map TOFCCOFC
indicator, waybill date, and station
number to corresponding waybill
fields"]:::main N_MapInquiryDatatoWaybillFormat_Node0 -- Yes --> N_MapInquiryDatatoWaybillFormat_Node0_action N_MapInquiryDatatoWaybillFormat_Node0_action --> E_MapInquiryDatatoWaybillFormat S_MapInquiryDatatoWaybillFormat --> N_MapInquiryDatatoWaybillFormat_Node0 N_MapInquiryDatatoWaybillFormat_Node0 -- No --> E_MapInquiryDatatoWaybillFormat
standard waybill structure"}:::decision N_MapInquiryDatatoWaybillFormat_Node0_action["Map railroad number, waybill
number, car ID, convert billing code
ZE to empty status E otherwise to
loaded status L , map TOFCCOFC
indicator, waybill date, and station
number to corresponding waybill
fields"]:::main N_MapInquiryDatatoWaybillFormat_Node0 -- Yes --> N_MapInquiryDatatoWaybillFormat_Node0_action N_MapInquiryDatatoWaybillFormat_Node0_action --> E_MapInquiryDatatoWaybillFormat S_MapInquiryDatatoWaybillFormat --> N_MapInquiryDatatoWaybillFormat_Node0 N_MapInquiryDatatoWaybillFormat_Node0 -- No --> E_MapInquiryDatatoWaybillFormat
File: GCX003.cbl
GIVEN:
Valid waybill data is retrieved from inquiry system
WHEN:
The system maps inquiry fields to standard waybill structure
THEN:
Map railroad number, waybill number, car ID, convert billing code 'ZE' to empty status 'E' otherwise to loaded status 'L', map TOFC/COFC indicator, waybill date, and station number to corresponding waybill fields
β Consolidated Acceptance Criteria
- System accesses FWIQINFO segment with B1 key → routing information fields are retrieved from the waybill inquiry database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessFWIQINFOSegmentwithB1Key(["Start Step"])
E_AccessFWIQINFOSegmentwithB1Key(["End Step"])
N_AccessFWIQINFOSegmentwithB1Key_Node0{"System accesses FWIQINFO segment
with B1 key"}:::decision N_AccessFWIQINFOSegmentwithB1Key_Node0_action["Routing information fields are
retrieved from the waybill inquiry
database"]:::main N_AccessFWIQINFOSegmentwithB1Key_Node0 -- Yes --> N_AccessFWIQINFOSegmentwithB1Key_Node0_action N_AccessFWIQINFOSegmentwithB1Key_Node0_action --> E_AccessFWIQINFOSegmentwithB1Key S_AccessFWIQINFOSegmentwithB1Key --> N_AccessFWIQINFOSegmentwithB1Key_Node0 N_AccessFWIQINFOSegmentwithB1Key_Node0 -- No --> E_AccessFWIQINFOSegmentwithB1Key
with B1 key"}:::decision N_AccessFWIQINFOSegmentwithB1Key_Node0_action["Routing information fields are
retrieved from the waybill inquiry
database"]:::main N_AccessFWIQINFOSegmentwithB1Key_Node0 -- Yes --> N_AccessFWIQINFOSegmentwithB1Key_Node0_action N_AccessFWIQINFOSegmentwithB1Key_Node0_action --> E_AccessFWIQINFOSegmentwithB1Key S_AccessFWIQINFOSegmentwithB1Key --> N_AccessFWIQINFOSegmentwithB1Key_Node0 N_AccessFWIQINFOSegmentwithB1Key_Node0 -- No --> E_AccessFWIQINFOSegmentwithB1Key
File: GCX003.cbl
GIVEN:
A waybill inquiry record exists for equipment
WHEN:
System accesses FWIQINFO segment with B1 key
THEN:
Routing information fields are retrieved from the waybill inquiry database
β Consolidated Acceptance Criteria
- System checks if routing info fields are spaces or low-values → processing continues only if valid routing data is present, otherwise routing processing is skipped
- The routing information fields are checked for data availability → processing continues only if routing fields are not spaces or low-values, otherwise routing extraction is skipped
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RoutingInfoFieldsAvailable(["Start Step"])
E_RoutingInfoFieldsAvailable(["End Step"])
N_RoutingInfoFieldsAvailable_Node0{"System checks if routing info
fields are spaces or low-values"}:::decision N_RoutingInfoFieldsAvailable_Node0_action["Processing continues only if valid
routing data is present, otherwise
routing processing is skipped"]:::main N_RoutingInfoFieldsAvailable_Node0 -- Yes --> N_RoutingInfoFieldsAvailable_Node0_action N_RoutingInfoFieldsAvailable_Node0_action --> E_RoutingInfoFieldsAvailable S_RoutingInfoFieldsAvailable --> N_RoutingInfoFieldsAvailable_Node0 N_RoutingInfoFieldsAvailable_Node1{"The routing information fields are
checked for data availability"}:::decision N_RoutingInfoFieldsAvailable_Node1_action["Processing continues only if
routing fields are not spaces or
low-values, otherwise routing
extraction is skipped"]:::main N_RoutingInfoFieldsAvailable_Node1 -- Yes --> N_RoutingInfoFieldsAvailable_Node1_action N_RoutingInfoFieldsAvailable_Node1_action --> E_RoutingInfoFieldsAvailable N_RoutingInfoFieldsAvailable_Node0 -- No --> N_RoutingInfoFieldsAvailable_Node1 N_RoutingInfoFieldsAvailable_Node1 -- No --> E_RoutingInfoFieldsAvailable
fields are spaces or low-values"}:::decision N_RoutingInfoFieldsAvailable_Node0_action["Processing continues only if valid
routing data is present, otherwise
routing processing is skipped"]:::main N_RoutingInfoFieldsAvailable_Node0 -- Yes --> N_RoutingInfoFieldsAvailable_Node0_action N_RoutingInfoFieldsAvailable_Node0_action --> E_RoutingInfoFieldsAvailable S_RoutingInfoFieldsAvailable --> N_RoutingInfoFieldsAvailable_Node0 N_RoutingInfoFieldsAvailable_Node1{"The routing information fields are
checked for data availability"}:::decision N_RoutingInfoFieldsAvailable_Node1_action["Processing continues only if
routing fields are not spaces or
low-values, otherwise routing
extraction is skipped"]:::main N_RoutingInfoFieldsAvailable_Node1 -- Yes --> N_RoutingInfoFieldsAvailable_Node1_action N_RoutingInfoFieldsAvailable_Node1_action --> E_RoutingInfoFieldsAvailable N_RoutingInfoFieldsAvailable_Node0 -- No --> N_RoutingInfoFieldsAvailable_Node1 N_RoutingInfoFieldsAvailable_Node1 -- No --> E_RoutingInfoFieldsAvailable
File: GCX003.cbl
GIVEN:
Routing information has been retrieved from waybill inquiry
WHEN:
System checks if routing info fields are spaces or low-values
THEN:
Processing continues only if valid routing data is present, otherwise routing processing is skipped
File: GCX003.cbl
GIVEN:
FWIQINFO segment has been accessed
WHEN:
The routing information fields are checked for data availability
THEN:
Processing continues only if routing fields are not spaces or low-values, otherwise routing extraction is skipped
β Consolidated Acceptance Criteria
- System begins routing field processing → field processing variables are set to initial values with byte position 1, field number 1, and routing group cleared
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeFieldProcessingVariables(["Start Step"])
E_InitializeFieldProcessingVariables(["End Step"])
N_InitializeFieldProcessingVariables_Node0{"System begins routing field
processing"}:::decision N_InitializeFieldProcessingVariables_Node0_action["Field processing variables are set
to initial values with byte position
1, field number 1, and routing group
cleared"]:::main N_InitializeFieldProcessingVariables_Node0 -- Yes --> N_InitializeFieldProcessingVariables_Node0_action N_InitializeFieldProcessingVariables_Node0_action --> E_InitializeFieldProcessingVariables S_InitializeFieldProcessingVariables --> N_InitializeFieldProcessingVariables_Node0 N_InitializeFieldProcessingVariables_Node0 -- No --> E_InitializeFieldProcessingVariables
processing"}:::decision N_InitializeFieldProcessingVariables_Node0_action["Field processing variables are set
to initial values with byte position
1, field number 1, and routing group
cleared"]:::main N_InitializeFieldProcessingVariables_Node0 -- Yes --> N_InitializeFieldProcessingVariables_Node0_action N_InitializeFieldProcessingVariables_Node0_action --> E_InitializeFieldProcessingVariables S_InitializeFieldProcessingVariables --> N_InitializeFieldProcessingVariables_Node0 N_InitializeFieldProcessingVariables_Node0 -- No --> E_InitializeFieldProcessingVariables
File: GCX003.cbl
GIVEN:
Valid routing information fields are available
WHEN:
System begins routing field processing
THEN:
Field processing variables are set to initial values with byte position 1, field number 1, and routing group cleared
β Consolidated Acceptance Criteria
- System encounters non-space characters in routing fields → field length counter is incremented until space character is found or maximum field length is reached
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateFieldLength(["Start Step"])
E_CalculateFieldLength(["End Step"])
N_CalculateFieldLength_Node0{"System encounters non-space
characters in routing fields"}:::decision N_CalculateFieldLength_Node0_action["Field length counter is incremented
until space character is found or
maximum field length is reached"]:::main N_CalculateFieldLength_Node0 -- Yes --> N_CalculateFieldLength_Node0_action N_CalculateFieldLength_Node0_action --> E_CalculateFieldLength S_CalculateFieldLength --> N_CalculateFieldLength_Node0 N_CalculateFieldLength_Node0 -- No --> E_CalculateFieldLength
characters in routing fields"}:::decision N_CalculateFieldLength_Node0_action["Field length counter is incremented
until space character is found or
maximum field length is reached"]:::main N_CalculateFieldLength_Node0 -- Yes --> N_CalculateFieldLength_Node0_action N_CalculateFieldLength_Node0_action --> E_CalculateFieldLength S_CalculateFieldLength --> N_CalculateFieldLength_Node0 N_CalculateFieldLength_Node0 -- No --> E_CalculateFieldLength
File: GCX003.cbl
GIVEN:
System is processing routing information bytes
WHEN:
System encounters non-space characters in routing fields
THEN:
Field length counter is incremented until space character is found or maximum field length is reached
β Consolidated Acceptance Criteria
- System checks if field length is less than 1 → field processing terminates if length is invalid, otherwise field extraction continues
- Field length validation is performed → field processing continues only if length is 1 or greater, otherwise field processing terminates
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FieldLengthValid(["Start Step"])
E_FieldLengthValid(["End Step"])
N_FieldLengthValid_Node0{"System checks if field length is
less than 1"}:::decision N_FieldLengthValid_Node0_action["Field processing terminates if
length is invalid, otherwise field
extraction continues"]:::main N_FieldLengthValid_Node0 -- Yes --> N_FieldLengthValid_Node0_action N_FieldLengthValid_Node0_action --> E_FieldLengthValid S_FieldLengthValid --> N_FieldLengthValid_Node0 N_FieldLengthValid_Node1{"Field length validation is
performed"}:::decision N_FieldLengthValid_Node1_action["Field processing continues only if
length is 1 or greater, otherwise
field processing terminates"]:::main N_FieldLengthValid_Node1 -- Yes --> N_FieldLengthValid_Node1_action N_FieldLengthValid_Node1_action --> E_FieldLengthValid N_FieldLengthValid_Node0 -- No --> N_FieldLengthValid_Node1 N_FieldLengthValid_Node1 -- No --> E_FieldLengthValid
less than 1"}:::decision N_FieldLengthValid_Node0_action["Field processing terminates if
length is invalid, otherwise field
extraction continues"]:::main N_FieldLengthValid_Node0 -- Yes --> N_FieldLengthValid_Node0_action N_FieldLengthValid_Node0_action --> E_FieldLengthValid S_FieldLengthValid --> N_FieldLengthValid_Node0 N_FieldLengthValid_Node1{"Field length validation is
performed"}:::decision N_FieldLengthValid_Node1_action["Field processing continues only if
length is 1 or greater, otherwise
field processing terminates"]:::main N_FieldLengthValid_Node1 -- Yes --> N_FieldLengthValid_Node1_action N_FieldLengthValid_Node1_action --> E_FieldLengthValid N_FieldLengthValid_Node0 -- No --> N_FieldLengthValid_Node1 N_FieldLengthValid_Node1 -- No --> E_FieldLengthValid
File: GCX003.cbl
GIVEN:
Field length has been calculated for a routing field
WHEN:
System checks if field length is less than 1
THEN:
Field processing terminates if length is invalid, otherwise field extraction continues
File: GCX003.cbl
GIVEN:
Field length has been calculated
WHEN:
Field length validation is performed
THEN:
Field processing continues only if length is 1 or greater, otherwise field processing terminates
β Consolidated Acceptance Criteria
- System processes the first routing field → first carrier SCAC code is extracted and stored, and field number is incremented to 2
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractSCAC1Code(["Start Step"])
E_ExtractSCAC1Code(["End Step"])
N_ExtractSCAC1Code_Node0{"System processes the first routing
field"}:::decision N_ExtractSCAC1Code_Node0_action["First carrier SCAC code is
extracted and stored, and field
number is incremented to 2"]:::main N_ExtractSCAC1Code_Node0 -- Yes --> N_ExtractSCAC1Code_Node0_action N_ExtractSCAC1Code_Node0_action --> E_ExtractSCAC1Code S_ExtractSCAC1Code --> N_ExtractSCAC1Code_Node0 N_ExtractSCAC1Code_Node0 -- No --> E_ExtractSCAC1Code
field"}:::decision N_ExtractSCAC1Code_Node0_action["First carrier SCAC code is
extracted and stored, and field
number is incremented to 2"]:::main N_ExtractSCAC1Code_Node0 -- Yes --> N_ExtractSCAC1Code_Node0_action N_ExtractSCAC1Code_Node0_action --> E_ExtractSCAC1Code S_ExtractSCAC1Code --> N_ExtractSCAC1Code_Node0 N_ExtractSCAC1Code_Node0 -- No --> E_ExtractSCAC1Code
File: GCX003.cbl
GIVEN:
Field number is 1 and field length is valid
WHEN:
System processes the first routing field
THEN:
- First carrier scac code is extracted
- Stored, and field number is incremented to 2
β Consolidated Acceptance Criteria
- System processes the second routing field → first junction/R260 code is extracted and stored, and field number is incremented to 3
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractJunction1R260Code(["Start Step"])
E_ExtractJunction1R260Code(["End Step"])
N_ExtractJunction1R260Code_Node0{"System processes the second routing
field"}:::decision N_ExtractJunction1R260Code_Node0_action["First junctionR260 code is
extracted and stored, and field
number is incremented to 3"]:::main N_ExtractJunction1R260Code_Node0 -- Yes --> N_ExtractJunction1R260Code_Node0_action N_ExtractJunction1R260Code_Node0_action --> E_ExtractJunction1R260Code S_ExtractJunction1R260Code --> N_ExtractJunction1R260Code_Node0 N_ExtractJunction1R260Code_Node0 -- No --> E_ExtractJunction1R260Code
field"}:::decision N_ExtractJunction1R260Code_Node0_action["First junctionR260 code is
extracted and stored, and field
number is incremented to 3"]:::main N_ExtractJunction1R260Code_Node0 -- Yes --> N_ExtractJunction1R260Code_Node0_action N_ExtractJunction1R260Code_Node0_action --> E_ExtractJunction1R260Code S_ExtractJunction1R260Code --> N_ExtractJunction1R260Code_Node0 N_ExtractJunction1R260Code_Node0 -- No --> E_ExtractJunction1R260Code
File: GCX003.cbl
GIVEN:
Field number is 2 and field length is valid
WHEN:
System processes the second routing field
THEN:
- First junction/r260 code is extracted
- Stored, and field number is incremented to 3
β Consolidated Acceptance Criteria
- System processes the third routing field → second carrier SCAC code is extracted and stored, and field number is incremented to 4
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractSCAC2Code(["Start Step"])
E_ExtractSCAC2Code(["End Step"])
N_ExtractSCAC2Code_Node0{"System processes the third routing
field"}:::decision N_ExtractSCAC2Code_Node0_action["Second carrier SCAC code is
extracted and stored, and field
number is incremented to 4"]:::main N_ExtractSCAC2Code_Node0 -- Yes --> N_ExtractSCAC2Code_Node0_action N_ExtractSCAC2Code_Node0_action --> E_ExtractSCAC2Code S_ExtractSCAC2Code --> N_ExtractSCAC2Code_Node0 N_ExtractSCAC2Code_Node0 -- No --> E_ExtractSCAC2Code
field"}:::decision N_ExtractSCAC2Code_Node0_action["Second carrier SCAC code is
extracted and stored, and field
number is incremented to 4"]:::main N_ExtractSCAC2Code_Node0 -- Yes --> N_ExtractSCAC2Code_Node0_action N_ExtractSCAC2Code_Node0_action --> E_ExtractSCAC2Code S_ExtractSCAC2Code --> N_ExtractSCAC2Code_Node0 N_ExtractSCAC2Code_Node0 -- No --> E_ExtractSCAC2Code
File: GCX003.cbl
GIVEN:
Field number is 3 and field length is valid
WHEN:
System processes the third routing field
THEN:
- Second carrier scac code is extracted
- Stored, and field number is incremented to 4
β Consolidated Acceptance Criteria
- System processes the fourth routing field → second junction/R260 code is extracted and stored, and field number is incremented to 5
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractJunction2R260Code(["Start Step"])
E_ExtractJunction2R260Code(["End Step"])
N_ExtractJunction2R260Code_Node0{"System processes the fourth routing
field"}:::decision N_ExtractJunction2R260Code_Node0_action["Second junctionR260 code is
extracted and stored, and field
number is incremented to 5"]:::main N_ExtractJunction2R260Code_Node0 -- Yes --> N_ExtractJunction2R260Code_Node0_action N_ExtractJunction2R260Code_Node0_action --> E_ExtractJunction2R260Code S_ExtractJunction2R260Code --> N_ExtractJunction2R260Code_Node0 N_ExtractJunction2R260Code_Node0 -- No --> E_ExtractJunction2R260Code
field"}:::decision N_ExtractJunction2R260Code_Node0_action["Second junctionR260 code is
extracted and stored, and field
number is incremented to 5"]:::main N_ExtractJunction2R260Code_Node0 -- Yes --> N_ExtractJunction2R260Code_Node0_action N_ExtractJunction2R260Code_Node0_action --> E_ExtractJunction2R260Code S_ExtractJunction2R260Code --> N_ExtractJunction2R260Code_Node0 N_ExtractJunction2R260Code_Node0 -- No --> E_ExtractJunction2R260Code
File: GCX003.cbl
GIVEN:
Field number is 4 and field length is valid
WHEN:
System processes the fourth routing field
THEN:
- Second junction/r260 code is extracted
- Stored, and field number is incremented to 5
β Consolidated Acceptance Criteria
- System processes the fifth routing field → third carrier SCAC code is extracted and stored, and field number is incremented to 6
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractSCAC3Code(["Start Step"])
E_ExtractSCAC3Code(["End Step"])
N_ExtractSCAC3Code_Node0{"System processes the fifth routing
field"}:::decision N_ExtractSCAC3Code_Node0_action["Third carrier SCAC code is
extracted and stored, and field
number is incremented to 6"]:::main N_ExtractSCAC3Code_Node0 -- Yes --> N_ExtractSCAC3Code_Node0_action N_ExtractSCAC3Code_Node0_action --> E_ExtractSCAC3Code S_ExtractSCAC3Code --> N_ExtractSCAC3Code_Node0 N_ExtractSCAC3Code_Node0 -- No --> E_ExtractSCAC3Code
field"}:::decision N_ExtractSCAC3Code_Node0_action["Third carrier SCAC code is
extracted and stored, and field
number is incremented to 6"]:::main N_ExtractSCAC3Code_Node0 -- Yes --> N_ExtractSCAC3Code_Node0_action N_ExtractSCAC3Code_Node0_action --> E_ExtractSCAC3Code S_ExtractSCAC3Code --> N_ExtractSCAC3Code_Node0 N_ExtractSCAC3Code_Node0 -- No --> E_ExtractSCAC3Code
File: GCX003.cbl
GIVEN:
Field number is 5 and field length is valid
WHEN:
System processes the fifth routing field
THEN:
- Third carrier scac code is extracted
- Stored, and field number is incremented to 6
β Consolidated Acceptance Criteria
- System processes the sixth routing field → third junction/R260 code is extracted and stored, and field number is incremented to 7
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractJunction3R260Code(["Start Step"])
E_ExtractJunction3R260Code(["End Step"])
N_ExtractJunction3R260Code_Node0{"System processes the sixth routing
field"}:::decision N_ExtractJunction3R260Code_Node0_action["Third junctionR260 code is
extracted and stored, and field
number is incremented to 7"]:::main N_ExtractJunction3R260Code_Node0 -- Yes --> N_ExtractJunction3R260Code_Node0_action N_ExtractJunction3R260Code_Node0_action --> E_ExtractJunction3R260Code S_ExtractJunction3R260Code --> N_ExtractJunction3R260Code_Node0 N_ExtractJunction3R260Code_Node0 -- No --> E_ExtractJunction3R260Code
field"}:::decision N_ExtractJunction3R260Code_Node0_action["Third junctionR260 code is
extracted and stored, and field
number is incremented to 7"]:::main N_ExtractJunction3R260Code_Node0 -- Yes --> N_ExtractJunction3R260Code_Node0_action N_ExtractJunction3R260Code_Node0_action --> E_ExtractJunction3R260Code S_ExtractJunction3R260Code --> N_ExtractJunction3R260Code_Node0 N_ExtractJunction3R260Code_Node0 -- No --> E_ExtractJunction3R260Code
File: GCX003.cbl
GIVEN:
Field number is 6 and field length is valid
WHEN:
System processes the sixth routing field
THEN:
- Third junction/r260 code is extracted
- Stored, and field number is incremented to 7
β Consolidated Acceptance Criteria
- System processes the seventh routing field → fourth carrier SCAC code is extracted and stored, and field processing terminates
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractSCAC4Code(["Start Step"])
E_ExtractSCAC4Code(["End Step"])
N_ExtractSCAC4Code_Node0{"System processes the seventh
routing field"}:::decision N_ExtractSCAC4Code_Node0_action["Fourth carrier SCAC code is
extracted and stored, and field
processing terminates"]:::main N_ExtractSCAC4Code_Node0 -- Yes --> N_ExtractSCAC4Code_Node0_action N_ExtractSCAC4Code_Node0_action --> E_ExtractSCAC4Code S_ExtractSCAC4Code --> N_ExtractSCAC4Code_Node0 N_ExtractSCAC4Code_Node0 -- No --> E_ExtractSCAC4Code
routing field"}:::decision N_ExtractSCAC4Code_Node0_action["Fourth carrier SCAC code is
extracted and stored, and field
processing terminates"]:::main N_ExtractSCAC4Code_Node0 -- Yes --> N_ExtractSCAC4Code_Node0_action N_ExtractSCAC4Code_Node0_action --> E_ExtractSCAC4Code S_ExtractSCAC4Code --> N_ExtractSCAC4Code_Node0 N_ExtractSCAC4Code_Node0 -- No --> E_ExtractSCAC4Code
File: GCX003.cbl
GIVEN:
Field number is 7 and field length is valid
WHEN:
System processes the seventh routing field
THEN:
- Fourth carrier scac code is extracted
- Stored, and field processing terminates
β Consolidated Acceptance Criteria
- System completes routing field processing → complete routing information group is moved to the equipment shiproot record for further processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveRoutingGrouptoShiproot(["Start Step"])
E_MoveRoutingGrouptoShiproot(["End Step"])
N_MoveRoutingGrouptoShiproot_Node0{"System completes routing field
processing"}:::decision N_MoveRoutingGrouptoShiproot_Node0_action["Complete routing information group
is moved to the equipment shiproot
record for further processing"]:::main N_MoveRoutingGrouptoShiproot_Node0 -- Yes --> N_MoveRoutingGrouptoShiproot_Node0_action N_MoveRoutingGrouptoShiproot_Node0_action --> E_MoveRoutingGrouptoShiproot S_MoveRoutingGrouptoShiproot --> N_MoveRoutingGrouptoShiproot_Node0 N_MoveRoutingGrouptoShiproot_Node0 -- No --> E_MoveRoutingGrouptoShiproot
processing"}:::decision N_MoveRoutingGrouptoShiproot_Node0_action["Complete routing information group
is moved to the equipment shiproot
record for further processing"]:::main N_MoveRoutingGrouptoShiproot_Node0 -- Yes --> N_MoveRoutingGrouptoShiproot_Node0_action N_MoveRoutingGrouptoShiproot_Node0_action --> E_MoveRoutingGrouptoShiproot S_MoveRoutingGrouptoShiproot --> N_MoveRoutingGrouptoShiproot_Node0 N_MoveRoutingGrouptoShiproot_Node0 -- No --> E_MoveRoutingGrouptoShiproot
File: GCX003.cbl
GIVEN:
Routing information fields have been successfully extracted and processed
WHEN:
System completes routing field processing
THEN:
Complete routing information group is moved to the equipment shiproot record for further processing
β Consolidated Acceptance Criteria
- The system checks the container found status → if container is already found, skip to next container processing, otherwise proceed with container database retrieval
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContainerAlreadyFound(["Start Step"])
E_ContainerAlreadyFound(["End Step"])
N_ContainerAlreadyFound_Node0{"The system checks the container
found status"}:::decision N_ContainerAlreadyFound_Node0_action["If container is already found, skip
to next container processing,
otherwise proceed with container
database retrieval"]:::main N_ContainerAlreadyFound_Node0 -- Yes --> N_ContainerAlreadyFound_Node0_action N_ContainerAlreadyFound_Node0_action --> E_ContainerAlreadyFound S_ContainerAlreadyFound --> N_ContainerAlreadyFound_Node0 N_ContainerAlreadyFound_Node0 -- No --> E_ContainerAlreadyFound
found status"}:::decision N_ContainerAlreadyFound_Node0_action["If container is already found, skip
to next container processing,
otherwise proceed with container
database retrieval"]:::main N_ContainerAlreadyFound_Node0 -- Yes --> N_ContainerAlreadyFound_Node0_action N_ContainerAlreadyFound_Node0_action --> E_ContainerAlreadyFound S_ContainerAlreadyFound --> N_ContainerAlreadyFound_Node0 N_ContainerAlreadyFound_Node0 -- No --> E_ContainerAlreadyFound
File: GCX003.cbl
GIVEN:
A container retrieval process is initiated
WHEN:
The system checks the container found status
THEN:
If container is already found, skip to next container processing, otherwise proceed with container database retrieval
β Consolidated Acceptance Criteria
- System performs database lookup in FWSWRWR using the waybill root key → container database record is retrieved if it exists
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessFWSWRWRDatabasewithWaybillRootKey(["Start Step"])
E_AccessFWSWRWRDatabasewithWaybillRootKey(["End Step"])
N_AccessFWSWRWRDatabasewithWaybillRootKey_Node0{"System performs database lookup in
FWSWRWR using the waybill root key"}:::decision N_AccessFWSWRWRDatabasewithWaybillRootKey_Node0_action["Container database record is
retrieved if it exists"]:::main N_AccessFWSWRWRDatabasewithWaybillRootKey_Node0 -- Yes --> N_AccessFWSWRWRDatabasewithWaybillRootKey_Node0_action N_AccessFWSWRWRDatabasewithWaybillRootKey_Node0_action --> E_AccessFWSWRWRDatabasewithWaybillRootKey S_AccessFWSWRWRDatabasewithWaybillRootKey --> N_AccessFWSWRWRDatabasewithWaybillRootKey_Node0 N_AccessFWSWRWRDatabasewithWaybillRootKey_Node0 -- No --> E_AccessFWSWRWRDatabasewithWaybillRootKey
FWSWRWR using the waybill root key"}:::decision N_AccessFWSWRWRDatabasewithWaybillRootKey_Node0_action["Container database record is
retrieved if it exists"]:::main N_AccessFWSWRWRDatabasewithWaybillRootKey_Node0 -- Yes --> N_AccessFWSWRWRDatabasewithWaybillRootKey_Node0_action N_AccessFWSWRWRDatabasewithWaybillRootKey_Node0_action --> E_AccessFWSWRWRDatabasewithWaybillRootKey S_AccessFWSWRWRDatabasewithWaybillRootKey --> N_AccessFWSWRWRDatabasewithWaybillRootKey_Node0 N_AccessFWSWRWRDatabasewithWaybillRootKey_Node0 -- No --> E_AccessFWSWRWRDatabasewithWaybillRootKey
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Container is not already found and waybill root key is available
WHEN:
System performs database lookup in FWSWRWR using the waybill root key
THEN:
Container database record is retrieved if it exists
β Consolidated Acceptance Criteria
- System evaluates the database response status → if container found, proceed to retrieve equipment details, otherwise access FWIQ inquiry database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContainerFoundinFWSWRWR(["Start Step"])
E_ContainerFoundinFWSWRWR(["End Step"])
N_ContainerFoundinFWSWRWR_Node0{"System evaluates the database
response status"}:::decision N_ContainerFoundinFWSWRWR_Node0_action["If container found, proceed to
retrieve equipment details,
otherwise access FWIQ inquiry
database"]:::main N_ContainerFoundinFWSWRWR_Node0 -- Yes --> N_ContainerFoundinFWSWRWR_Node0_action N_ContainerFoundinFWSWRWR_Node0_action --> E_ContainerFoundinFWSWRWR S_ContainerFoundinFWSWRWR --> N_ContainerFoundinFWSWRWR_Node0 N_ContainerFoundinFWSWRWR_Node0 -- No --> E_ContainerFoundinFWSWRWR
response status"}:::decision N_ContainerFoundinFWSWRWR_Node0_action["If container found, proceed to
retrieve equipment details,
otherwise access FWIQ inquiry
database"]:::main N_ContainerFoundinFWSWRWR_Node0 -- Yes --> N_ContainerFoundinFWSWRWR_Node0_action N_ContainerFoundinFWSWRWR_Node0_action --> E_ContainerFoundinFWSWRWR S_ContainerFoundinFWSWRWR --> N_ContainerFoundinFWSWRWR_Node0 N_ContainerFoundinFWSWRWR_Node0 -- No --> E_ContainerFoundinFWSWRWR
File: GCX003.cbl
GIVEN:
FWSWRWR database lookup has been performed
WHEN:
System evaluates the database response status
THEN:
If container found, proceed to retrieve equipment details, otherwise access FWIQ inquiry database
β Consolidated Acceptance Criteria
- System accesses FWSWREQ database for equipment details → container equipment record is retrieved with detailed information
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveNextContainerEquipmentRecord(["Start Step"])
E_RetrieveNextContainerEquipmentRecord(["End Step"])
N_RetrieveNextContainerEquipmentRecord_Node0{"System accesses FWSWREQ database
for equipment details"}:::decision N_RetrieveNextContainerEquipmentRecord_Node0_action["Container equipment record is
retrieved with detailed information"]:::main N_RetrieveNextContainerEquipmentRecord_Node0 -- Yes --> N_RetrieveNextContainerEquipmentRecord_Node0_action N_RetrieveNextContainerEquipmentRecord_Node0_action --> E_RetrieveNextContainerEquipmentRecord S_RetrieveNextContainerEquipmentRecord --> N_RetrieveNextContainerEquipmentRecord_Node0 N_RetrieveNextContainerEquipmentRecord_Node0 -- No --> E_RetrieveNextContainerEquipmentRecord
for equipment details"}:::decision N_RetrieveNextContainerEquipmentRecord_Node0_action["Container equipment record is
retrieved with detailed information"]:::main N_RetrieveNextContainerEquipmentRecord_Node0 -- Yes --> N_RetrieveNextContainerEquipmentRecord_Node0_action N_RetrieveNextContainerEquipmentRecord_Node0_action --> E_RetrieveNextContainerEquipmentRecord S_RetrieveNextContainerEquipmentRecord --> N_RetrieveNextContainerEquipmentRecord_Node0 N_RetrieveNextContainerEquipmentRecord_Node0 -- No --> E_RetrieveNextContainerEquipmentRecord
File: GCX003.cbl
GIVEN:
Container record exists in FWSWRWR database
WHEN:
System accesses FWSWREQ database for equipment details
THEN:
Container equipment record is retrieved with detailed information
β Consolidated Acceptance Criteria
- System evaluates the equipment record retrieval status → if equipment record found, set container found status, otherwise generate container not found error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContainerEquipmentRecordFound(["Start Step"])
E_ContainerEquipmentRecordFound(["End Step"])
N_ContainerEquipmentRecordFound_Node0{"System evaluates the equipment
record retrieval status"}:::decision N_ContainerEquipmentRecordFound_Node0_action["If equipment record found, set
container found status, otherwise
generate container not found error"]:::main N_ContainerEquipmentRecordFound_Node0 -- Yes --> N_ContainerEquipmentRecordFound_Node0_action N_ContainerEquipmentRecordFound_Node0_action --> E_ContainerEquipmentRecordFound S_ContainerEquipmentRecordFound --> N_ContainerEquipmentRecordFound_Node0 N_ContainerEquipmentRecordFound_Node0 -- No --> E_ContainerEquipmentRecordFound
record retrieval status"}:::decision N_ContainerEquipmentRecordFound_Node0_action["If equipment record found, set
container found status, otherwise
generate container not found error"]:::main N_ContainerEquipmentRecordFound_Node0 -- Yes --> N_ContainerEquipmentRecordFound_Node0_action N_ContainerEquipmentRecordFound_Node0_action --> E_ContainerEquipmentRecordFound S_ContainerEquipmentRecordFound --> N_ContainerEquipmentRecordFound_Node0 N_ContainerEquipmentRecordFound_Node0 -- No --> E_ContainerEquipmentRecordFound
File: GCX003.cbl
GIVEN:
FWSWREQ database lookup has been performed
WHEN:
System evaluates the equipment record retrieval status
THEN:
If equipment record found, set container found status, otherwise generate container not found error
β Consolidated Acceptance Criteria
- System performs lookup in FWIQ inquiry database using waybill information → inquiry database records are accessed for container search
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessFWIQInquiryDatabase(["Start Step"])
E_AccessFWIQInquiryDatabase(["End Step"])
N_AccessFWIQInquiryDatabase_Node0{"System performs lookup in FWIQ
inquiry database using waybill
information"}:::decision N_AccessFWIQInquiryDatabase_Node0_action["Inquiry database records are
accessed for container search"]:::main N_AccessFWIQInquiryDatabase_Node0 -- Yes --> N_AccessFWIQInquiryDatabase_Node0_action N_AccessFWIQInquiryDatabase_Node0_action --> E_AccessFWIQInquiryDatabase S_AccessFWIQInquiryDatabase --> N_AccessFWIQInquiryDatabase_Node0 N_AccessFWIQInquiryDatabase_Node0 -- No --> E_AccessFWIQInquiryDatabase
inquiry database using waybill
information"}:::decision N_AccessFWIQInquiryDatabase_Node0_action["Inquiry database records are
accessed for container search"]:::main N_AccessFWIQInquiryDatabase_Node0 -- Yes --> N_AccessFWIQInquiryDatabase_Node0_action N_AccessFWIQInquiryDatabase_Node0_action --> E_AccessFWIQInquiryDatabase S_AccessFWIQInquiryDatabase --> N_AccessFWIQInquiryDatabase_Node0 N_AccessFWIQInquiryDatabase_Node0 -- No --> E_AccessFWIQInquiryDatabase
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Container not found in FWSWRWR database
WHEN:
System performs lookup in FWIQ inquiry database using waybill information
THEN:
Inquiry database records are accessed for container search
β Consolidated Acceptance Criteria
- System evaluates the inquiry database response → if container found, proceed to scan bottom line records, otherwise generate container not found error
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ContainerFoundinFWIQ(["Start Step"])
E_ContainerFoundinFWIQ(["End Step"])
N_ContainerFoundinFWIQ_Node0{"System evaluates the inquiry
database response"}:::decision N_ContainerFoundinFWIQ_Node0_action["If container found, proceed to scan
bottom line records, otherwise
generate container not found error"]:::main N_ContainerFoundinFWIQ_Node0 -- Yes --> N_ContainerFoundinFWIQ_Node0_action N_ContainerFoundinFWIQ_Node0_action --> E_ContainerFoundinFWIQ S_ContainerFoundinFWIQ --> N_ContainerFoundinFWIQ_Node0 N_ContainerFoundinFWIQ_Node0 -- No --> E_ContainerFoundinFWIQ
database response"}:::decision N_ContainerFoundinFWIQ_Node0_action["If container found, proceed to scan
bottom line records, otherwise
generate container not found error"]:::main N_ContainerFoundinFWIQ_Node0 -- Yes --> N_ContainerFoundinFWIQ_Node0_action N_ContainerFoundinFWIQ_Node0_action --> E_ContainerFoundinFWIQ S_ContainerFoundinFWIQ --> N_ContainerFoundinFWIQ_Node0 N_ContainerFoundinFWIQ_Node0 -- No --> E_ContainerFoundinFWIQ
File: GCX003.cbl
GIVEN:
FWIQ inquiry database lookup has been performed
WHEN:
System evaluates the inquiry database response
THEN:
If container found, proceed to scan bottom line records, otherwise generate container not found error
β Consolidated Acceptance Criteria
- System scans FWIQBOTL bottom line records → each bottom line record is examined for container cross-reference data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ScanFWIQBottomLineRecords(["Start Step"])
E_ScanFWIQBottomLineRecords(["End Step"])
N_ScanFWIQBottomLineRecords_Node0{"System scans FWIQBOTL bottom line
records"}:::decision N_ScanFWIQBottomLineRecords_Node0_action["Each bottom line record is examined
for container cross-reference data"]:::main N_ScanFWIQBottomLineRecords_Node0 -- Yes --> N_ScanFWIQBottomLineRecords_Node0_action N_ScanFWIQBottomLineRecords_Node0_action --> E_ScanFWIQBottomLineRecords S_ScanFWIQBottomLineRecords --> N_ScanFWIQBottomLineRecords_Node0 N_ScanFWIQBottomLineRecords_Node0 -- No --> E_ScanFWIQBottomLineRecords
records"}:::decision N_ScanFWIQBottomLineRecords_Node0_action["Each bottom line record is examined
for container cross-reference data"]:::main N_ScanFWIQBottomLineRecords_Node0 -- Yes --> N_ScanFWIQBottomLineRecords_Node0_action N_ScanFWIQBottomLineRecords_Node0_action --> E_ScanFWIQBottomLineRecords S_ScanFWIQBottomLineRecords --> N_ScanFWIQBottomLineRecords_Node0 N_ScanFWIQBottomLineRecords_Node0 -- No --> E_ScanFWIQBottomLineRecords
File: GCX003.cbl
GIVEN:
Container exists in FWIQ inquiry database
WHEN:
System scans FWIQBOTL bottom line records
THEN:
Each bottom line record is examined for container cross-reference data
β Consolidated Acceptance Criteria
- System examines each record for 'T/C XREF' identifier in positions 1-8 → if T/C XREF record found, extract container information, otherwise continue scanning records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_TCXREFRecordFound(["Start Step"])
E_TCXREFRecordFound(["End Step"])
N_TCXREFRecordFound_Node0{"System examines each record for TC
XREF identifier in positions 1-8"}:::decision N_TCXREFRecordFound_Node0_action["If TC XREF record found, extract
container information, otherwise
continue scanning records"]:::main N_TCXREFRecordFound_Node0 -- Yes --> N_TCXREFRecordFound_Node0_action N_TCXREFRecordFound_Node0_action --> E_TCXREFRecordFound S_TCXREFRecordFound --> N_TCXREFRecordFound_Node0 N_TCXREFRecordFound_Node0 -- No --> E_TCXREFRecordFound
XREF identifier in positions 1-8"}:::decision N_TCXREFRecordFound_Node0_action["If TC XREF record found, extract
container information, otherwise
continue scanning records"]:::main N_TCXREFRecordFound_Node0 -- Yes --> N_TCXREFRecordFound_Node0_action N_TCXREFRecordFound_Node0_action --> E_TCXREFRecordFound S_TCXREFRecordFound --> N_TCXREFRecordFound_Node0 N_TCXREFRecordFound_Node0 -- No --> E_TCXREFRecordFound
File: GCX003.cbl
GIVEN:
Bottom line records are being scanned
WHEN:
System examines each record for 'T/C XREF' identifier in positions 1-8
THEN:
If T/C XREF record found, extract container information, otherwise continue scanning records
β Consolidated Acceptance Criteria
- System processes the record data → container ID is extracted from positions 28-39, waybill railroad from positions 10-12, station from positions 14-19, and number from positions 21-26
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractContainerIDandWaybillInformation(["Start Step"])
E_ExtractContainerIDandWaybillInformation(["End Step"])
N_ExtractContainerIDandWaybillInformation_Node0{"System processes the record data"}:::decision
N_ExtractContainerIDandWaybillInformation_Node0_action["Container ID is extracted from
positions 28-39, waybill railroad
from positions 10-12, station from
positions 14-19, and number from
positions 21-26"]:::main N_ExtractContainerIDandWaybillInformation_Node0 -- Yes --> N_ExtractContainerIDandWaybillInformation_Node0_action N_ExtractContainerIDandWaybillInformation_Node0_action --> E_ExtractContainerIDandWaybillInformation S_ExtractContainerIDandWaybillInformation --> N_ExtractContainerIDandWaybillInformation_Node0 N_ExtractContainerIDandWaybillInformation_Node0 -- No --> E_ExtractContainerIDandWaybillInformation
positions 28-39, waybill railroad
from positions 10-12, station from
positions 14-19, and number from
positions 21-26"]:::main N_ExtractContainerIDandWaybillInformation_Node0 -- Yes --> N_ExtractContainerIDandWaybillInformation_Node0_action N_ExtractContainerIDandWaybillInformation_Node0_action --> E_ExtractContainerIDandWaybillInformation S_ExtractContainerIDandWaybillInformation --> N_ExtractContainerIDandWaybillInformation_Node0 N_ExtractContainerIDandWaybillInformation_Node0 -- No --> E_ExtractContainerIDandWaybillInformation
File: GCX003.cbl
GIVEN:
T/C XREF record is identified in bottom line data
WHEN:
System processes the record data
THEN:
Container ID is extracted from positions 28-39, waybill railroad from positions 10-12, station from positions 14-19, and number from positions 21-26
β Consolidated Acceptance Criteria
- System advances container processing sequence → container sequence index is incremented to process next container
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MovetoNextContainerinSequence(["Start Step"])
E_MovetoNextContainerinSequence(["End Step"])
N_MovetoNextContainerinSequence_Node0{"System advances container
processing sequence"}:::decision N_MovetoNextContainerinSequence_Node0_action["Container sequence index is
incremented to process next
container"]:::main N_MovetoNextContainerinSequence_Node0 -- Yes --> N_MovetoNextContainerinSequence_Node0_action N_MovetoNextContainerinSequence_Node0_action --> E_MovetoNextContainerinSequence S_MovetoNextContainerinSequence --> N_MovetoNextContainerinSequence_Node0 N_MovetoNextContainerinSequence_Node0 -- No --> E_MovetoNextContainerinSequence
processing sequence"}:::decision N_MovetoNextContainerinSequence_Node0_action["Container sequence index is
incremented to process next
container"]:::main N_MovetoNextContainerinSequence_Node0 -- Yes --> N_MovetoNextContainerinSequence_Node0_action N_MovetoNextContainerinSequence_Node0_action --> E_MovetoNextContainerinSequence S_MovetoNextContainerinSequence --> N_MovetoNextContainerinSequence_Node0 N_MovetoNextContainerinSequence_Node0 -- No --> E_MovetoNextContainerinSequence
File: GCX003.cbl
GIVEN:
Current container processing is complete (found or error generated)
WHEN:
System advances container processing sequence
THEN:
Container sequence index is incremented to process next container
β Consolidated Acceptance Criteria
- System checks for remaining containers in the sequence → if more containers exist and sequence index is within limits (β€30), continue processing, otherwise set no more containers flag
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreContainerstoProcess(["Start Step"])
E_MoreContainerstoProcess(["End Step"])
N_MoreContainerstoProcess_Node0{"System checks for remaining
containers in the sequence"}:::decision N_MoreContainerstoProcess_Node0_action["If more containers exist and
sequence index is within limits 30,
continue processing, otherwise set
no more containers flag"]:::main N_MoreContainerstoProcess_Node0 -- Yes --> N_MoreContainerstoProcess_Node0_action N_MoreContainerstoProcess_Node0_action --> E_MoreContainerstoProcess S_MoreContainerstoProcess --> N_MoreContainerstoProcess_Node0 N_MoreContainerstoProcess_Node0 -- No --> E_MoreContainerstoProcess
containers in the sequence"}:::decision N_MoreContainerstoProcess_Node0_action["If more containers exist and
sequence index is within limits 30,
continue processing, otherwise set
no more containers flag"]:::main N_MoreContainerstoProcess_Node0 -- Yes --> N_MoreContainerstoProcess_Node0_action N_MoreContainerstoProcess_Node0_action --> E_MoreContainerstoProcess S_MoreContainerstoProcess --> N_MoreContainerstoProcess_Node0 N_MoreContainerstoProcess_Node0 -- No --> E_MoreContainerstoProcess
File: GCX003.cbl
GIVEN:
Container sequence has been advanced
WHEN:
System checks for remaining containers in the sequence
THEN:
- If more containers exist
- Sequence index is within limits (β€30), continue processing, otherwise set no more containers flag
β Consolidated Acceptance Criteria
- System completes container sequence processing → no more containers flag is set to terminate container retrieval process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetNoMoreContainersFlag(["Start Step"])
E_SetNoMoreContainersFlag(["End Step"])
N_SetNoMoreContainersFlag_Node0{"System completes container sequence
processing"}:::decision N_SetNoMoreContainersFlag_Node0_action["No more containers flag is set to
terminate container retrieval
process"]:::exclusion N_SetNoMoreContainersFlag_Node0 -- Yes -->|Alternative| N_SetNoMoreContainersFlag_Node0_action N_SetNoMoreContainersFlag_Node0_action --> E_SetNoMoreContainersFlag S_SetNoMoreContainersFlag --> N_SetNoMoreContainersFlag_Node0 N_SetNoMoreContainersFlag_Node0 -- No --> E_SetNoMoreContainersFlag
processing"}:::decision N_SetNoMoreContainersFlag_Node0_action["No more containers flag is set to
terminate container retrieval
process"]:::exclusion N_SetNoMoreContainersFlag_Node0 -- Yes -->|Alternative| N_SetNoMoreContainersFlag_Node0_action N_SetNoMoreContainersFlag_Node0_action --> E_SetNoMoreContainersFlag S_SetNoMoreContainersFlag --> N_SetNoMoreContainersFlag_Node0 N_SetNoMoreContainersFlag_Node0 -- No --> E_SetNoMoreContainersFlag
File: GCX003.cbl
GIVEN:
No more containers remain in the processing sequence
WHEN:
System completes container sequence processing
THEN:
No more containers flag is set to terminate container retrieval process
β Consolidated Acceptance Criteria
- The system needs to query the inquiry database for missing equipment details → initialize inquiry system parameters and clear all status codes and segment data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeInquirySystemParameters(["Start Step"])
E_InitializeInquirySystemParameters(["End Step"])
N_InitializeInquirySystemParameters_Node0{"The system needs to query the
inquiry database for missing
equipment details"}:::decision N_InitializeInquirySystemParameters_Node0_action["Initialize inquiry system
parameters and clear all status
codes and segment data"]:::main N_InitializeInquirySystemParameters_Node0 -- Yes --> N_InitializeInquirySystemParameters_Node0_action N_InitializeInquirySystemParameters_Node0_action --> E_InitializeInquirySystemParameters S_InitializeInquirySystemParameters --> N_InitializeInquirySystemParameters_Node0 N_InitializeInquirySystemParameters_Node0 -- No --> E_InitializeInquirySystemParameters
inquiry database for missing
equipment details"}:::decision N_InitializeInquirySystemParameters_Node0_action["Initialize inquiry system
parameters and clear all status
codes and segment data"]:::main N_InitializeInquirySystemParameters_Node0 -- Yes --> N_InitializeInquirySystemParameters_Node0_action N_InitializeInquirySystemParameters_Node0_action --> E_InitializeInquirySystemParameters S_InitializeInquirySystemParameters --> N_InitializeInquirySystemParameters_Node0 N_InitializeInquirySystemParameters_Node0 -- No --> E_InitializeInquirySystemParameters
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Equipment information is not found in the primary waybill system
WHEN:
The system needs to query the inquiry database for missing equipment details
THEN:
- Initialize inquiry system parameters
- Clear all status codes
- Segment data
β Consolidated Acceptance Criteria
- Building the inquiry system key for waybill lookup → set inquiry road number from container origin road number, inquiry station number from container origin station number, and inquiry waybill number from container waybill number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetWaybillNumberfromContainerRoot(["Start Step"])
E_SetWaybillNumberfromContainerRoot(["End Step"])
N_SetWaybillNumberfromContainerRoot_Node0{"Building the inquiry system key for
waybill lookup"}:::decision N_SetWaybillNumberfromContainerRoot_Node0_action["Set inquiry road number from
container origin road number,
inquiry station number from
container origin station number, and
inquiry waybill number from
container waybill number"]:::main N_SetWaybillNumberfromContainerRoot_Node0 -- Yes --> N_SetWaybillNumberfromContainerRoot_Node0_action N_SetWaybillNumberfromContainerRoot_Node0_action --> E_SetWaybillNumberfromContainerRoot S_SetWaybillNumberfromContainerRoot --> N_SetWaybillNumberfromContainerRoot_Node0 N_SetWaybillNumberfromContainerRoot_Node0 -- No --> E_SetWaybillNumberfromContainerRoot
waybill lookup"}:::decision N_SetWaybillNumberfromContainerRoot_Node0_action["Set inquiry road number from
container origin road number,
inquiry station number from
container origin station number, and
inquiry waybill number from
container waybill number"]:::main N_SetWaybillNumberfromContainerRoot_Node0 -- Yes --> N_SetWaybillNumberfromContainerRoot_Node0_action N_SetWaybillNumberfromContainerRoot_Node0_action --> E_SetWaybillNumberfromContainerRoot S_SetWaybillNumberfromContainerRoot --> N_SetWaybillNumberfromContainerRoot_Node0 N_SetWaybillNumberfromContainerRoot_Node0 -- No --> E_SetWaybillNumberfromContainerRoot
File: GCX003.cbl
GIVEN:
Container root data contains origin road number, station number, and waybill number
WHEN:
Building the inquiry system key for waybill lookup
THEN:
Set inquiry road number from container origin road number, inquiry station number from container origin station number, and inquiry waybill number from container waybill number
β Consolidated Acceptance Criteria
- Executing waybill inquiry system call with FWIQIO module → call FWIQIO module using inquiry parameters and waybill root segment to retrieve equipment data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallWaybillInquirySystemFWIQIO(["Start Step"])
E_CallWaybillInquirySystemFWIQIO(["End Step"])
N_CallWaybillInquirySystemFWIQIO_Node0{"Executing waybill inquiry system
call with FWIQIO module"}:::decision N_CallWaybillInquirySystemFWIQIO_Node0_action["Call FWIQIO module using inquiry
parameters and waybill root segment
to retrieve equipment data"]:::main N_CallWaybillInquirySystemFWIQIO_Node0 -- Yes --> N_CallWaybillInquirySystemFWIQIO_Node0_action N_CallWaybillInquirySystemFWIQIO_Node0_action --> E_CallWaybillInquirySystemFWIQIO S_CallWaybillInquirySystemFWIQIO --> N_CallWaybillInquirySystemFWIQIO_Node0 N_CallWaybillInquirySystemFWIQIO_Node0 -- No --> E_CallWaybillInquirySystemFWIQIO
call with FWIQIO module"}:::decision N_CallWaybillInquirySystemFWIQIO_Node0_action["Call FWIQIO module using inquiry
parameters and waybill root segment
to retrieve equipment data"]:::main N_CallWaybillInquirySystemFWIQIO_Node0 -- Yes --> N_CallWaybillInquirySystemFWIQIO_Node0_action N_CallWaybillInquirySystemFWIQIO_Node0_action --> E_CallWaybillInquirySystemFWIQIO S_CallWaybillInquirySystemFWIQIO --> N_CallWaybillInquirySystemFWIQIO_Node0 N_CallWaybillInquirySystemFWIQIO_Node0 -- No --> E_CallWaybillInquirySystemFWIQIO
File: GCX003.cbl
GIVEN:
Inquiry system parameters are properly initialized with waybill key information
WHEN:
Executing waybill inquiry system call with FWIQIO module
THEN:
- Call fwiqio module using inquiry parameters
- Waybill root segment to retrieve equipment data
β Consolidated Acceptance Criteria
- Checking the response status from the inquiry system → if status code is blank then inquiry was successful, otherwise inquiry failed and equipment information is not available
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InquirySystemResponse(["Start Step"])
E_InquirySystemResponse(["End Step"])
N_InquirySystemResponse_Node0{"Checking the response status from
the inquiry system"}:::decision N_InquirySystemResponse_Node0_action["If status code is blank then
inquiry was successful, otherwise
inquiry failed and equipment
information is not available"]:::main N_InquirySystemResponse_Node0 -- Yes --> N_InquirySystemResponse_Node0_action N_InquirySystemResponse_Node0_action --> E_InquirySystemResponse S_InquirySystemResponse --> N_InquirySystemResponse_Node0 N_InquirySystemResponse_Node0 -- No --> E_InquirySystemResponse
the inquiry system"}:::decision N_InquirySystemResponse_Node0_action["If status code is blank then
inquiry was successful, otherwise
inquiry failed and equipment
information is not available"]:::main N_InquirySystemResponse_Node0 -- Yes --> N_InquirySystemResponse_Node0_action N_InquirySystemResponse_Node0_action --> E_InquirySystemResponse S_InquirySystemResponse --> N_InquirySystemResponse_Node0 N_InquirySystemResponse_Node0 -- No --> E_InquirySystemResponse
File: GCX003.cbl
GIVEN:
Waybill inquiry system call has been executed
WHEN:
Checking the response status from the inquiry system
THEN:
- If status code is blank then inquiry was successful, otherwise inquiry failed
- Equipment information is not available
β Consolidated Acceptance Criteria
- Determining equipment load status → if billing code equals 'ZE' then set equipment status to empty, otherwise set equipment status to loaded
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractCarIDandLoadStatus(["Start Step"])
E_ExtractCarIDandLoadStatus(["End Step"])
N_ExtractCarIDandLoadStatus_Node0{"Determining equipment load status"}:::decision
N_ExtractCarIDandLoadStatus_Node0_action["If billing code equals ZE then set
equipment status to empty, otherwise
set equipment status to loaded"]:::main N_ExtractCarIDandLoadStatus_Node0 -- Yes --> N_ExtractCarIDandLoadStatus_Node0_action N_ExtractCarIDandLoadStatus_Node0_action --> E_ExtractCarIDandLoadStatus S_ExtractCarIDandLoadStatus --> N_ExtractCarIDandLoadStatus_Node0 N_ExtractCarIDandLoadStatus_Node0 -- No --> E_ExtractCarIDandLoadStatus
equipment status to empty, otherwise
set equipment status to loaded"]:::main N_ExtractCarIDandLoadStatus_Node0 -- Yes --> N_ExtractCarIDandLoadStatus_Node0_action N_ExtractCarIDandLoadStatus_Node0_action --> E_ExtractCarIDandLoadStatus S_ExtractCarIDandLoadStatus --> N_ExtractCarIDandLoadStatus_Node0 N_ExtractCarIDandLoadStatus_Node0 -- No --> E_ExtractCarIDandLoadStatus
File: GCX003.cbl
GIVEN:
Inquiry system returned equipment data with billing code
WHEN:
Determining equipment load status
THEN:
If billing code equals 'ZE' then set equipment status to empty, otherwise set equipment status to loaded
β Consolidated Acceptance Criteria
- Extracting temporal and location data → set waybill date from inquiry waybill date and set origin station number from inquiry origin station number
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractWaybillDateInformation(["Start Step"])
E_ExtractWaybillDateInformation(["End Step"])
N_ExtractWaybillDateInformation_Node0{"Extracting temporal and location
data"}:::decision N_ExtractWaybillDateInformation_Node0_action["Set waybill date from inquiry
waybill date and set origin station
number from inquiry origin station
number"]:::main N_ExtractWaybillDateInformation_Node0 -- Yes --> N_ExtractWaybillDateInformation_Node0_action N_ExtractWaybillDateInformation_Node0_action --> E_ExtractWaybillDateInformation S_ExtractWaybillDateInformation --> N_ExtractWaybillDateInformation_Node0 N_ExtractWaybillDateInformation_Node0 -- No --> E_ExtractWaybillDateInformation
data"}:::decision N_ExtractWaybillDateInformation_Node0_action["Set waybill date from inquiry
waybill date and set origin station
number from inquiry origin station
number"]:::main N_ExtractWaybillDateInformation_Node0 -- Yes --> N_ExtractWaybillDateInformation_Node0_action N_ExtractWaybillDateInformation_Node0_action --> E_ExtractWaybillDateInformation S_ExtractWaybillDateInformation --> N_ExtractWaybillDateInformation_Node0 N_ExtractWaybillDateInformation_Node0 -- No --> E_ExtractWaybillDateInformation
File: GCX003.cbl
GIVEN:
Inquiry system returned valid waybill information
WHEN:
- Extracting temporal
- Location data
THEN:
- Set waybill date from inquiry waybill date
- Set origin station number from inquiry origin station number
β Consolidated Acceptance Criteria
- Requesting detailed routing information from inquiry system → set inquiry segment type to 'FWIQINFO', set inquiry key to 'B1', and call inquiry system to retrieve routing details
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveAdditionalRoutingInformation(["Start Step"])
E_RetrieveAdditionalRoutingInformation(["End Step"])
N_RetrieveAdditionalRoutingInformation_Node0{"Requesting detailed routing
information from inquiry system"}:::decision N_RetrieveAdditionalRoutingInformation_Node0_action["Set inquiry segment type to
FWIQINFO , set inquiry key to B1 ,
and call inquiry system to retrieve
routing details"]:::main N_RetrieveAdditionalRoutingInformation_Node0 -- Yes --> N_RetrieveAdditionalRoutingInformation_Node0_action N_RetrieveAdditionalRoutingInformation_Node0_action --> E_RetrieveAdditionalRoutingInformation S_RetrieveAdditionalRoutingInformation --> N_RetrieveAdditionalRoutingInformation_Node0 N_RetrieveAdditionalRoutingInformation_Node0 -- No --> E_RetrieveAdditionalRoutingInformation
information from inquiry system"}:::decision N_RetrieveAdditionalRoutingInformation_Node0_action["Set inquiry segment type to
FWIQINFO , set inquiry key to B1 ,
and call inquiry system to retrieve
routing details"]:::main N_RetrieveAdditionalRoutingInformation_Node0 -- Yes --> N_RetrieveAdditionalRoutingInformation_Node0_action N_RetrieveAdditionalRoutingInformation_Node0_action --> E_RetrieveAdditionalRoutingInformation S_RetrieveAdditionalRoutingInformation --> N_RetrieveAdditionalRoutingInformation_Node0 N_RetrieveAdditionalRoutingInformation_Node0 -- No --> E_RetrieveAdditionalRoutingInformation
File: GCX003.cbl
GIVEN:
Basic waybill information has been successfully retrieved
WHEN:
Requesting detailed routing information from inquiry system
THEN:
Set inquiry segment type to 'FWIQINFO', set inquiry key to 'B1', and call inquiry system to retrieve routing details
β Consolidated Acceptance Criteria
- Parsing routing information into individual components → if routing information is not blank then iterate through each space-separated field and extract field length by counting characters until space or end of string
- System processes the routing information string → parse into structured fields including SCAC codes, junction points, and route segments up to 4 routing entries
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ParseRoutingFieldsintoStructuredFormat(["Start Step"])
E_ParseRoutingFieldsintoStructuredFormat(["End Step"])
N_ParseRoutingFieldsintoStructuredFormat_Node0{"Parsing routing information into
individual components"}:::decision N_ParseRoutingFieldsintoStructuredFormat_Node0_action["If routing information is not blank
then iterate through each
space-separated field and extract
field length by counting characters
until space or end of string"]:::main N_ParseRoutingFieldsintoStructuredFormat_Node0 -- Yes --> N_ParseRoutingFieldsintoStructuredFormat_Node0_action N_ParseRoutingFieldsintoStructuredFormat_Node0_action --> E_ParseRoutingFieldsintoStructuredFormat S_ParseRoutingFieldsintoStructuredFormat --> N_ParseRoutingFieldsintoStructuredFormat_Node0 N_ParseRoutingFieldsintoStructuredFormat_Node1{"System processes the routing
information string"}:::decision N_ParseRoutingFieldsintoStructuredFormat_Node1_action["Parse into structured fields
including SCAC codes, junction
points, and route segments up to 4
routing entries"]:::main N_ParseRoutingFieldsintoStructuredFormat_Node1 -- Yes --> N_ParseRoutingFieldsintoStructuredFormat_Node1_action N_ParseRoutingFieldsintoStructuredFormat_Node1_action --> E_ParseRoutingFieldsintoStructuredFormat N_ParseRoutingFieldsintoStructuredFormat_Node0 -- No --> N_ParseRoutingFieldsintoStructuredFormat_Node1 N_ParseRoutingFieldsintoStructuredFormat_Node1 -- No --> E_ParseRoutingFieldsintoStructuredFormat
individual components"}:::decision N_ParseRoutingFieldsintoStructuredFormat_Node0_action["If routing information is not blank
then iterate through each
space-separated field and extract
field length by counting characters
until space or end of string"]:::main N_ParseRoutingFieldsintoStructuredFormat_Node0 -- Yes --> N_ParseRoutingFieldsintoStructuredFormat_Node0_action N_ParseRoutingFieldsintoStructuredFormat_Node0_action --> E_ParseRoutingFieldsintoStructuredFormat S_ParseRoutingFieldsintoStructuredFormat --> N_ParseRoutingFieldsintoStructuredFormat_Node0 N_ParseRoutingFieldsintoStructuredFormat_Node1{"System processes the routing
information string"}:::decision N_ParseRoutingFieldsintoStructuredFormat_Node1_action["Parse into structured fields
including SCAC codes, junction
points, and route segments up to 4
routing entries"]:::main N_ParseRoutingFieldsintoStructuredFormat_Node1 -- Yes --> N_ParseRoutingFieldsintoStructuredFormat_Node1_action N_ParseRoutingFieldsintoStructuredFormat_Node1_action --> E_ParseRoutingFieldsintoStructuredFormat N_ParseRoutingFieldsintoStructuredFormat_Node0 -- No --> N_ParseRoutingFieldsintoStructuredFormat_Node1 N_ParseRoutingFieldsintoStructuredFormat_Node1 -- No --> E_ParseRoutingFieldsintoStructuredFormat
File: GCX003.cbl
GIVEN:
Routing information string contains space-separated routing fields
WHEN:
Parsing routing information into individual components
THEN:
- If routing information is not blank then iterate through each space-separated field
- Extract field length by counting characters until space or end of string
File: GCX003.cbl
GIVEN:
Raw routing information has been extracted from the database
WHEN:
System processes the routing information string
THEN:
Parse into structured fields including SCAC codes, junction points, and route segments up to 4 routing entries
β Consolidated Acceptance Criteria
- Extracting routing components in sequence → set field 1 as primary SCAC code, field 2 as first junction R260 code, field 3 as secondary SCAC code, field 4 as second junction R260 code, field 5 as tertiary SCAC code, and field 6 as final junction code
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractSCACCodesandJunctionPoints(["Start Step"])
E_ExtractSCACCodesandJunctionPoints(["End Step"])
N_ExtractSCACCodesandJunctionPoints_Node0{"Extracting routing components in
sequence"}:::decision N_ExtractSCACCodesandJunctionPoints_Node0_action["Set field 1 as primary SCAC code,
field 2 as first junction R260 code,
field 3 as secondary SCAC code,
field 4 as second junction R260
code, field 5 as tertiary SCAC code,
and field 6 as final junction code"]:::main N_ExtractSCACCodesandJunctionPoints_Node0 -- Yes --> N_ExtractSCACCodesandJunctionPoints_Node0_action N_ExtractSCACCodesandJunctionPoints_Node0_action --> E_ExtractSCACCodesandJunctionPoints S_ExtractSCACCodesandJunctionPoints --> N_ExtractSCACCodesandJunctionPoints_Node0 N_ExtractSCACCodesandJunctionPoints_Node0 -- No --> E_ExtractSCACCodesandJunctionPoints
sequence"}:::decision N_ExtractSCACCodesandJunctionPoints_Node0_action["Set field 1 as primary SCAC code,
field 2 as first junction R260 code,
field 3 as secondary SCAC code,
field 4 as second junction R260
code, field 5 as tertiary SCAC code,
and field 6 as final junction code"]:::main N_ExtractSCACCodesandJunctionPoints_Node0 -- Yes --> N_ExtractSCACCodesandJunctionPoints_Node0_action N_ExtractSCACCodesandJunctionPoints_Node0_action --> E_ExtractSCACCodesandJunctionPoints S_ExtractSCACCodesandJunctionPoints --> N_ExtractSCACCodesandJunctionPoints_Node0 N_ExtractSCACCodesandJunctionPoints_Node0 -- No --> E_ExtractSCACCodesandJunctionPoints
File: GCX003.cbl
GIVEN:
Routing fields have been parsed into individual components
WHEN:
Extracting routing components in sequence
THEN:
Set field 1 as primary SCAC code, field 2 as first junction R260 code, field 3 as secondary SCAC code, field 4 as second junction R260 code, field 5 as tertiary SCAC code, and field 6 as final junction code
β Consolidated Acceptance Criteria
- Querying for container cross-reference information → set inquiry segment type to 'FWIQBOTL', clear inquiry key, set function to 'GNP', and call inquiry system repeatedly until no more container cross-reference records found or maximum 30 records reached
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReadContainerCrossReference(["Start Step"])
E_ReadContainerCrossReference(["End Step"])
N_ReadContainerCrossReference_Node0{"Querying for container
cross-reference information"}:::decision N_ReadContainerCrossReference_Node0_action["Set inquiry segment type to
FWIQBOTL , clear inquiry key, set
function to GNP , and call inquiry
system repeatedly until no more
container cross-reference records
found or maximum 30 records reached"]:::main N_ReadContainerCrossReference_Node0 -- Yes --> N_ReadContainerCrossReference_Node0_action N_ReadContainerCrossReference_Node0_action --> E_ReadContainerCrossReference S_ReadContainerCrossReference --> N_ReadContainerCrossReference_Node0 N_ReadContainerCrossReference_Node0 -- No --> E_ReadContainerCrossReference
cross-reference information"}:::decision N_ReadContainerCrossReference_Node0_action["Set inquiry segment type to
FWIQBOTL , clear inquiry key, set
function to GNP , and call inquiry
system repeatedly until no more
container cross-reference records
found or maximum 30 records reached"]:::main N_ReadContainerCrossReference_Node0 -- Yes --> N_ReadContainerCrossReference_Node0_action N_ReadContainerCrossReference_Node0_action --> E_ReadContainerCrossReference S_ReadContainerCrossReference --> N_ReadContainerCrossReference_Node0 N_ReadContainerCrossReference_Node0 -- No --> E_ReadContainerCrossReference
File: GCX003.cbl
GIVEN:
Waybill inquiry system is available for container cross-reference lookup
WHEN:
Querying for container cross-reference information
THEN:
Set inquiry segment type to 'FWIQBOTL', clear inquiry key, set function to 'GNP', and call inquiry system repeatedly until no more container cross-reference records found or maximum 30 records reached
β Consolidated Acceptance Criteria
- Extracting container and waybill cross-reference data → extract container ID from positions 28-39, waybill road number from positions 10-12, waybill station number from positions 14-19, waybill number from positions 21-26, and replace all spaces in waybill information with zeros
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractContainerID(["Start Step"])
E_ExtractContainerID(["End Step"])
N_ExtractContainerID_Node0{"Extracting container and waybill
cross-reference data"}:::decision N_ExtractContainerID_Node0_action["Extract container ID from positions
28-39, waybill road number from
positions 10-12, waybill station
number from positions 14-19, waybill
number from positions 21-26, and
replace all spaces in waybill
information with zeros"]:::main N_ExtractContainerID_Node0 -- Yes --> N_ExtractContainerID_Node0_action N_ExtractContainerID_Node0_action --> E_ExtractContainerID S_ExtractContainerID --> N_ExtractContainerID_Node0 N_ExtractContainerID_Node0 -- No --> E_ExtractContainerID
cross-reference data"}:::decision N_ExtractContainerID_Node0_action["Extract container ID from positions
28-39, waybill road number from
positions 10-12, waybill station
number from positions 14-19, waybill
number from positions 21-26, and
replace all spaces in waybill
information with zeros"]:::main N_ExtractContainerID_Node0 -- Yes --> N_ExtractContainerID_Node0_action N_ExtractContainerID_Node0_action --> E_ExtractContainerID S_ExtractContainerID --> N_ExtractContainerID_Node0 N_ExtractContainerID_Node0 -- No --> E_ExtractContainerID
File: GCX003.cbl
GIVEN:
Container cross-reference record is identified in inquiry bottom line
WHEN:
- Extracting container
- Waybill cross-reference data
THEN:
Extract container ID from positions 28-39, waybill road number from positions 10-12, waybill station number from positions 14-19, waybill number from positions 21-26, and replace all spaces in waybill information with zeros
β Consolidated Acceptance Criteria
- Building the final equipment record → combine waybill information, equipment details, routing data, and container cross-references into a complete equipment record with all fields properly populated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BuildCompleteEquipmentRecord(["Start Step"])
E_BuildCompleteEquipmentRecord(["End Step"])
N_BuildCompleteEquipmentRecord_Node0{"Building the final equipment record"}:::decision
N_BuildCompleteEquipmentRecord_Node0_action["Combine waybill information,
equipment details, routing data, and
container cross-references into a
complete equipment record with all
fields properly populated"]:::main N_BuildCompleteEquipmentRecord_Node0 -- Yes --> N_BuildCompleteEquipmentRecord_Node0_action N_BuildCompleteEquipmentRecord_Node0_action --> E_BuildCompleteEquipmentRecord S_BuildCompleteEquipmentRecord --> N_BuildCompleteEquipmentRecord_Node0 N_BuildCompleteEquipmentRecord_Node0 -- No --> E_BuildCompleteEquipmentRecord
equipment details, routing data, and
container cross-references into a
complete equipment record with all
fields properly populated"]:::main N_BuildCompleteEquipmentRecord_Node0 -- Yes --> N_BuildCompleteEquipmentRecord_Node0_action N_BuildCompleteEquipmentRecord_Node0_action --> E_BuildCompleteEquipmentRecord S_BuildCompleteEquipmentRecord --> N_BuildCompleteEquipmentRecord_Node0 N_BuildCompleteEquipmentRecord_Node0 -- No --> E_BuildCompleteEquipmentRecord
File: GCX003.cbl
GIVEN:
All inquiry system calls have been completed and data has been extracted
WHEN:
Building the final equipment record
THEN:
Combine waybill information, equipment details, routing data, and container cross-references into a complete equipment record with all fields properly populated
β Consolidated Acceptance Criteria
- Handling inquiry system errors → set waybill indicator to the error status code and set equipment not found status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LogInquirySystemError(["Start Step"])
E_LogInquirySystemError(["End Step"])
N_LogInquirySystemError_Node0{"Handling inquiry system errors"}:::decision
N_LogInquirySystemError_Node0_action["Set waybill indicator to the error
status code and set equipment not
found status"]:::main N_LogInquirySystemError_Node0 -- Yes --> N_LogInquirySystemError_Node0_action N_LogInquirySystemError_Node0_action --> E_LogInquirySystemError S_LogInquirySystemError --> N_LogInquirySystemError_Node0 N_LogInquirySystemError_Node0 -- No --> E_LogInquirySystemError
status code and set equipment not
found status"]:::main N_LogInquirySystemError_Node0 -- Yes --> N_LogInquirySystemError_Node0_action N_LogInquirySystemError_Node0_action --> E_LogInquirySystemError S_LogInquirySystemError --> N_LogInquirySystemError_Node0 N_LogInquirySystemError_Node0 -- No --> E_LogInquirySystemError
File: GCX003.cbl
GIVEN:
Waybill inquiry system call returned an error status
WHEN:
Handling inquiry system errors
THEN:
- Set waybill indicator to the error status code
- Set equipment not found status
β Consolidated Acceptance Criteria
- Setting final equipment status → set container not found status and container inquiry not found status to indicate equipment information is unavailable
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetEquipmentNotFoundStatus(["Start Step"])
E_SetEquipmentNotFoundStatus(["End Step"])
N_SetEquipmentNotFoundStatus_Node0{"Setting final equipment status"}:::decision
N_SetEquipmentNotFoundStatus_Node0_action["Set container not found status and
container inquiry not found status
to indicate equipment information is
unavailable"]:::main N_SetEquipmentNotFoundStatus_Node0 -- Yes --> N_SetEquipmentNotFoundStatus_Node0_action N_SetEquipmentNotFoundStatus_Node0_action --> E_SetEquipmentNotFoundStatus S_SetEquipmentNotFoundStatus --> N_SetEquipmentNotFoundStatus_Node0 N_SetEquipmentNotFoundStatus_Node0 -- No --> E_SetEquipmentNotFoundStatus
container inquiry not found status
to indicate equipment information is
unavailable"]:::main N_SetEquipmentNotFoundStatus_Node0 -- Yes --> N_SetEquipmentNotFoundStatus_Node0_action N_SetEquipmentNotFoundStatus_Node0_action --> E_SetEquipmentNotFoundStatus S_SetEquipmentNotFoundStatus --> N_SetEquipmentNotFoundStatus_Node0 N_SetEquipmentNotFoundStatus_Node0 -- No --> E_SetEquipmentNotFoundStatus
File: GCX003.cbl
GIVEN:
Inquiry system failed to retrieve equipment information or returned errors
WHEN:
Setting final equipment status
THEN:
- Set container not found status
- Container inquiry not found status to indicate equipment information is unavailable
β Consolidated Acceptance Criteria
- The system checks if container information exists in the equipment record → route to container processing if container found, otherwise route to car processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentTypeCheck(["Start Step"])
E_EquipmentTypeCheck(["End Step"])
N_EquipmentTypeCheck_Node0{"The system checks if container
information exists in the equipment
record"}:::decision N_EquipmentTypeCheck_Node0_action["Route to container processing if
container found, otherwise route to
car processing"]:::main N_EquipmentTypeCheck_Node0 -- Yes --> N_EquipmentTypeCheck_Node0_action N_EquipmentTypeCheck_Node0_action --> E_EquipmentTypeCheck S_EquipmentTypeCheck --> N_EquipmentTypeCheck_Node0 N_EquipmentTypeCheck_Node0 -- No --> E_EquipmentTypeCheck
information exists in the equipment
record"}:::decision N_EquipmentTypeCheck_Node0_action["Route to container processing if
container found, otherwise route to
car processing"]:::main N_EquipmentTypeCheck_Node0 -- Yes --> N_EquipmentTypeCheck_Node0_action N_EquipmentTypeCheck_Node0_action --> E_EquipmentTypeCheck S_EquipmentTypeCheck --> N_EquipmentTypeCheck_Node0 N_EquipmentTypeCheck_Node0 -- No --> E_EquipmentTypeCheck
File: GCX003.cbl
GIVEN:
An equipment item needs to be processed
WHEN:
The system checks if container information exists in the equipment record
THEN:
Route to container processing if container found, otherwise route to car processing
β Consolidated Acceptance Criteria
- System searches FWSWRWR database using waybill root key → retrieve container segment information and set container status indicator
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveContainerInformationfromFWSWRWR(["Start Step"])
E_RetrieveContainerInformationfromFWSWRWR(["End Step"])
N_RetrieveContainerInformationfromFWSWRWR_Node0{"System searches FWSWRWR database
using waybill root key"}:::decision N_RetrieveContainerInformationfromFWSWRWR_Node0_action["Retrieve container segment
information and set container status
indicator"]:::main N_RetrieveContainerInformationfromFWSWRWR_Node0 -- Yes --> N_RetrieveContainerInformationfromFWSWRWR_Node0_action N_RetrieveContainerInformationfromFWSWRWR_Node0_action --> E_RetrieveContainerInformationfromFWSWRWR S_RetrieveContainerInformationfromFWSWRWR --> N_RetrieveContainerInformationfromFWSWRWR_Node0 N_RetrieveContainerInformationfromFWSWRWR_Node0 -- No --> E_RetrieveContainerInformationfromFWSWRWR
using waybill root key"}:::decision N_RetrieveContainerInformationfromFWSWRWR_Node0_action["Retrieve container segment
information and set container status
indicator"]:::main N_RetrieveContainerInformationfromFWSWRWR_Node0 -- Yes --> N_RetrieveContainerInformationfromFWSWRWR_Node0_action N_RetrieveContainerInformationfromFWSWRWR_Node0_action --> E_RetrieveContainerInformationfromFWSWRWR S_RetrieveContainerInformationfromFWSWRWR --> N_RetrieveContainerInformationfromFWSWRWR_Node0 N_RetrieveContainerInformationfromFWSWRWR_Node0 -- No --> E_RetrieveContainerInformationfromFWSWRWR
File: GCX003.cbl
GIVEN:
Equipment is identified as a container type
WHEN:
System searches FWSWRWR database using waybill root key
THEN:
- Retrieve container segment information
- Set container status indicator
β Consolidated Acceptance Criteria
- System searches SHIPROOT using car identification details → retrieve waybill information and set waybill status indicator
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveCarInformationfromSHIPROOT(["Start Step"])
E_RetrieveCarInformationfromSHIPROOT(["End Step"])
N_RetrieveCarInformationfromSHIPROOT_Node0{"System searches SHIPROOT using car
identification details"}:::decision N_RetrieveCarInformationfromSHIPROOT_Node0_action["Retrieve waybill information and
set waybill status indicator"]:::main N_RetrieveCarInformationfromSHIPROOT_Node0 -- Yes --> N_RetrieveCarInformationfromSHIPROOT_Node0_action N_RetrieveCarInformationfromSHIPROOT_Node0_action --> E_RetrieveCarInformationfromSHIPROOT S_RetrieveCarInformationfromSHIPROOT --> N_RetrieveCarInformationfromSHIPROOT_Node0 N_RetrieveCarInformationfromSHIPROOT_Node0 -- No --> E_RetrieveCarInformationfromSHIPROOT
identification details"}:::decision N_RetrieveCarInformationfromSHIPROOT_Node0_action["Retrieve waybill information and
set waybill status indicator"]:::main N_RetrieveCarInformationfromSHIPROOT_Node0 -- Yes --> N_RetrieveCarInformationfromSHIPROOT_Node0_action N_RetrieveCarInformationfromSHIPROOT_Node0_action --> E_RetrieveCarInformationfromSHIPROOT S_RetrieveCarInformationfromSHIPROOT --> N_RetrieveCarInformationfromSHIPROOT_Node0 N_RetrieveCarInformationfromSHIPROOT_Node0 -- No --> E_RetrieveCarInformationfromSHIPROOT
File: GCX003.cbl
GIVEN:
Equipment is identified as a car type
WHEN:
System searches SHIPROOT using car identification details
THEN:
- Retrieve waybill information
- Set waybill status indicator
β Consolidated Acceptance Criteria
- System evaluates the waybill retrieval status → proceed to consolidation if found, otherwise attempt inquiry system retrieval
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PrimaryWaybillFound(["Start Step"])
E_PrimaryWaybillFound(["End Step"])
N_PrimaryWaybillFound_Node0{"System evaluates the waybill
retrieval status"}:::decision N_PrimaryWaybillFound_Node0_action["Proceed to consolidation if found,
otherwise attempt inquiry system
retrieval"]:::main N_PrimaryWaybillFound_Node0 -- Yes --> N_PrimaryWaybillFound_Node0_action N_PrimaryWaybillFound_Node0_action --> E_PrimaryWaybillFound S_PrimaryWaybillFound --> N_PrimaryWaybillFound_Node0 N_PrimaryWaybillFound_Node0 -- No --> E_PrimaryWaybillFound
retrieval status"}:::decision N_PrimaryWaybillFound_Node0_action["Proceed to consolidation if found,
otherwise attempt inquiry system
retrieval"]:::main N_PrimaryWaybillFound_Node0 -- Yes --> N_PrimaryWaybillFound_Node0_action N_PrimaryWaybillFound_Node0_action --> E_PrimaryWaybillFound S_PrimaryWaybillFound --> N_PrimaryWaybillFound_Node0 N_PrimaryWaybillFound_Node0 -- No --> E_PrimaryWaybillFound
File: GCX003.cbl
GIVEN:
System has attempted to retrieve waybill information from primary sources
WHEN:
System evaluates the waybill retrieval status
THEN:
Proceed to consolidation if found, otherwise attempt inquiry system retrieval
β Consolidated Acceptance Criteria
- System searches FWCIROOT inquiry system using equipment ID → retrieve inquiry data and set inquiry status indicator
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrievefromInquirySystemFWCIROOT(["Start Step"])
E_RetrievefromInquirySystemFWCIROOT(["End Step"])
N_RetrievefromInquirySystemFWCIROOT_Node0{"System searches FWCIROOT inquiry
system using equipment ID"}:::decision N_RetrievefromInquirySystemFWCIROOT_Node0_action["Retrieve inquiry data and set
inquiry status indicator"]:::main N_RetrievefromInquirySystemFWCIROOT_Node0 -- Yes --> N_RetrievefromInquirySystemFWCIROOT_Node0_action N_RetrievefromInquirySystemFWCIROOT_Node0_action --> E_RetrievefromInquirySystemFWCIROOT S_RetrievefromInquirySystemFWCIROOT --> N_RetrievefromInquirySystemFWCIROOT_Node0 N_RetrievefromInquirySystemFWCIROOT_Node0 -- No --> E_RetrievefromInquirySystemFWCIROOT
system using equipment ID"}:::decision N_RetrievefromInquirySystemFWCIROOT_Node0_action["Retrieve inquiry data and set
inquiry status indicator"]:::main N_RetrievefromInquirySystemFWCIROOT_Node0 -- Yes --> N_RetrievefromInquirySystemFWCIROOT_Node0_action N_RetrievefromInquirySystemFWCIROOT_Node0_action --> E_RetrievefromInquirySystemFWCIROOT S_RetrievefromInquirySystemFWCIROOT --> N_RetrievefromInquirySystemFWCIROOT_Node0 N_RetrievefromInquirySystemFWCIROOT_Node0 -- No --> E_RetrievefromInquirySystemFWCIROOT
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Primary waybill data was not found
WHEN:
System searches FWCIROOT inquiry system using equipment ID
THEN:
- Retrieve inquiry data
- Set inquiry status indicator
β Consolidated Acceptance Criteria
- System evaluates the inquiry retrieval status → process inquiry data if found, otherwise attempt waybill inquiry database
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InquiryDataFound(["Start Step"])
E_InquiryDataFound(["End Step"])
N_InquiryDataFound_Node0{"System evaluates the inquiry
retrieval status"}:::decision N_InquiryDataFound_Node0_action["Process inquiry data if found,
otherwise attempt waybill inquiry
database"]:::main N_InquiryDataFound_Node0 -- Yes --> N_InquiryDataFound_Node0_action N_InquiryDataFound_Node0_action --> E_InquiryDataFound S_InquiryDataFound --> N_InquiryDataFound_Node0 N_InquiryDataFound_Node0 -- No --> E_InquiryDataFound
retrieval status"}:::decision N_InquiryDataFound_Node0_action["Process inquiry data if found,
otherwise attempt waybill inquiry
database"]:::main N_InquiryDataFound_Node0 -- Yes --> N_InquiryDataFound_Node0_action N_InquiryDataFound_Node0_action --> E_InquiryDataFound S_InquiryDataFound --> N_InquiryDataFound_Node0 N_InquiryDataFound_Node0 -- No --> E_InquiryDataFound
File: GCX003.cbl
GIVEN:
System has searched the inquiry system for equipment data
WHEN:
System evaluates the inquiry retrieval status
THEN:
Process inquiry data if found, otherwise attempt waybill inquiry database
β Consolidated Acceptance Criteria
- System searches FWIQROOT database using waybill details → retrieve waybill inquiry data and set final retrieval status
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrievefromFWIQROOTDatabase(["Start Step"])
E_RetrievefromFWIQROOTDatabase(["End Step"])
N_RetrievefromFWIQROOTDatabase_Node0{"System searches FWIQROOT database
using waybill details"}:::decision N_RetrievefromFWIQROOTDatabase_Node0_action["Retrieve waybill inquiry data and
set final retrieval status"]:::main N_RetrievefromFWIQROOTDatabase_Node0 -- Yes --> N_RetrievefromFWIQROOTDatabase_Node0_action N_RetrievefromFWIQROOTDatabase_Node0_action --> E_RetrievefromFWIQROOTDatabase S_RetrievefromFWIQROOTDatabase --> N_RetrievefromFWIQROOTDatabase_Node0 N_RetrievefromFWIQROOTDatabase_Node0 -- No --> E_RetrievefromFWIQROOTDatabase
using waybill details"}:::decision N_RetrievefromFWIQROOTDatabase_Node0_action["Retrieve waybill inquiry data and
set final retrieval status"]:::main N_RetrievefromFWIQROOTDatabase_Node0 -- Yes --> N_RetrievefromFWIQROOTDatabase_Node0_action N_RetrievefromFWIQROOTDatabase_Node0_action --> E_RetrievefromFWIQROOTDatabase S_RetrievefromFWIQROOTDatabase --> N_RetrievefromFWIQROOTDatabase_Node0 N_RetrievefromFWIQROOTDatabase_Node0 -- No --> E_RetrievefromFWIQROOTDatabase
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
Both primary and inquiry systems did not return equipment data
WHEN:
System searches FWIQROOT database using waybill details
THEN:
- Retrieve waybill inquiry data
- Set final retrieval status
β Consolidated Acceptance Criteria
- System processes the inquiry data format → convert and map inquiry fields to shiproot structure including load/empty status, dates, and identifiers
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveInquiryDatatoShiprootFormat(["Start Step"])
E_MoveInquiryDatatoShiprootFormat(["End Step"])
N_MoveInquiryDatatoShiprootFormat_Node0{"System processes the inquiry data
format"}:::decision N_MoveInquiryDatatoShiprootFormat_Node0_action["Convert and map inquiry fields to
shiproot structure including
loadempty status, dates, and
identifiers"]:::main N_MoveInquiryDatatoShiprootFormat_Node0 -- Yes --> N_MoveInquiryDatatoShiprootFormat_Node0_action N_MoveInquiryDatatoShiprootFormat_Node0_action --> E_MoveInquiryDatatoShiprootFormat S_MoveInquiryDatatoShiprootFormat --> N_MoveInquiryDatatoShiprootFormat_Node0 N_MoveInquiryDatatoShiprootFormat_Node0 -- No --> E_MoveInquiryDatatoShiprootFormat
format"}:::decision N_MoveInquiryDatatoShiprootFormat_Node0_action["Convert and map inquiry fields to
shiproot structure including
loadempty status, dates, and
identifiers"]:::main N_MoveInquiryDatatoShiprootFormat_Node0 -- Yes --> N_MoveInquiryDatatoShiprootFormat_Node0_action N_MoveInquiryDatatoShiprootFormat_Node0_action --> E_MoveInquiryDatatoShiprootFormat S_MoveInquiryDatatoShiprootFormat --> N_MoveInquiryDatatoShiprootFormat_Node0 N_MoveInquiryDatatoShiprootFormat_Node0 -- No --> E_MoveInquiryDatatoShiprootFormat
File: GCX003.cbl
GIVEN:
Equipment data has been retrieved from inquiry systems
WHEN:
System processes the inquiry data format
THEN:
- Convert
- Map inquiry fields to shiproot structure including load/empty status, dates, and identifiers
β Consolidated Acceptance Criteria
- System accesses FWIQINFO database for routing details → extract routing information and prepare for field parsing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractRoutingInformationfromFWIQINFO(["Start Step"])
E_ExtractRoutingInformationfromFWIQINFO(["End Step"])
N_ExtractRoutingInformationfromFWIQINFO_Node0{"System accesses FWIQINFO database
for routing details"}:::decision N_ExtractRoutingInformationfromFWIQINFO_Node0_action["Extract routing information and
prepare for field parsing"]:::main N_ExtractRoutingInformationfromFWIQINFO_Node0 -- Yes --> N_ExtractRoutingInformationfromFWIQINFO_Node0_action N_ExtractRoutingInformationfromFWIQINFO_Node0_action --> E_ExtractRoutingInformationfromFWIQINFO S_ExtractRoutingInformationfromFWIQINFO --> N_ExtractRoutingInformationfromFWIQINFO_Node0 N_ExtractRoutingInformationfromFWIQINFO_Node0 -- No --> E_ExtractRoutingInformationfromFWIQINFO
for routing details"}:::decision N_ExtractRoutingInformationfromFWIQINFO_Node0_action["Extract routing information and
prepare for field parsing"]:::main N_ExtractRoutingInformationfromFWIQINFO_Node0 -- Yes --> N_ExtractRoutingInformationfromFWIQINFO_Node0_action N_ExtractRoutingInformationfromFWIQINFO_Node0_action --> E_ExtractRoutingInformationfromFWIQINFO S_ExtractRoutingInformationfromFWIQINFO --> N_ExtractRoutingInformationfromFWIQINFO_Node0 N_ExtractRoutingInformationfromFWIQINFO_Node0 -- No --> E_ExtractRoutingInformationfromFWIQINFO
File: GCX003.cbl
GIVEN:
Equipment data has been successfully retrieved and converted
WHEN:
System accesses FWIQINFO database for routing details
THEN:
- Extract routing information
- Prepare for field parsing
β Consolidated Acceptance Criteria
- System consolidates all available equipment information → create unified equipment record with all available details from primary and inquiry sources
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ConsolidateEquipmentDetails(["Start Step"])
E_ConsolidateEquipmentDetails(["End Step"])
N_ConsolidateEquipmentDetails_Node0{"System consolidates all available
equipment information"}:::decision N_ConsolidateEquipmentDetails_Node0_action["Create unified equipment record
with all available details from
primary and inquiry sources"]:::main N_ConsolidateEquipmentDetails_Node0 -- Yes --> N_ConsolidateEquipmentDetails_Node0_action N_ConsolidateEquipmentDetails_Node0_action --> E_ConsolidateEquipmentDetails S_ConsolidateEquipmentDetails --> N_ConsolidateEquipmentDetails_Node0 N_ConsolidateEquipmentDetails_Node0 -- No --> E_ConsolidateEquipmentDetails
equipment information"}:::decision N_ConsolidateEquipmentDetails_Node0_action["Create unified equipment record
with all available details from
primary and inquiry sources"]:::main N_ConsolidateEquipmentDetails_Node0 -- Yes --> N_ConsolidateEquipmentDetails_Node0_action N_ConsolidateEquipmentDetails_Node0_action --> E_ConsolidateEquipmentDetails S_ConsolidateEquipmentDetails --> N_ConsolidateEquipmentDetails_Node0 N_ConsolidateEquipmentDetails_Node0 -- No --> E_ConsolidateEquipmentDetails
File: GCX003.cbl
GIVEN:
Equipment data has been retrieved from one or more data sources
WHEN:
System consolidates all available equipment information
THEN:
- Create unified equipment record with all available details from primary
- Inquiry sources
β Consolidated Acceptance Criteria
- System validates the equipment type against reference tables → retrieve equipment type description and validate type code exists in system tables
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ValidateEquipmentTypeandDescription(["Start Step"])
E_ValidateEquipmentTypeandDescription(["End Step"])
N_ValidateEquipmentTypeandDescription_Node0{"System validates the equipment type
against reference tables"}:::decision N_ValidateEquipmentTypeandDescription_Node0_action["Retrieve equipment type description
and validate type code exists in
system tables"]:::main N_ValidateEquipmentTypeandDescription_Node0 -- Yes --> N_ValidateEquipmentTypeandDescription_Node0_action N_ValidateEquipmentTypeandDescription_Node0_action --> E_ValidateEquipmentTypeandDescription S_ValidateEquipmentTypeandDescription --> N_ValidateEquipmentTypeandDescription_Node0 N_ValidateEquipmentTypeandDescription_Node0 -- No --> E_ValidateEquipmentTypeandDescription
against reference tables"}:::decision N_ValidateEquipmentTypeandDescription_Node0_action["Retrieve equipment type description
and validate type code exists in
system tables"]:::main N_ValidateEquipmentTypeandDescription_Node0 -- Yes --> N_ValidateEquipmentTypeandDescription_Node0_action N_ValidateEquipmentTypeandDescription_Node0_action --> E_ValidateEquipmentTypeandDescription S_ValidateEquipmentTypeandDescription --> N_ValidateEquipmentTypeandDescription_Node0 N_ValidateEquipmentTypeandDescription_Node0 -- No --> E_ValidateEquipmentTypeandDescription
File: GCX003.cbl
GIVEN:
Consolidated equipment record contains equipment type code
WHEN:
System validates the equipment type against reference tables
THEN:
- Retrieve equipment type description
- Validate type code exists in system tables
β Consolidated Acceptance Criteria
- System applies classification business rules → apply double-stack container counting for SK car types, validate routing information, and set empty indicators based on routing patterns
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ApplyBusinessRulesforEquipmentClassification(["Start Step"])
E_ApplyBusinessRulesforEquipmentClassification(["End Step"])
N_ApplyBusinessRulesforEquipmentClassification_Node0{"System applies classification
business rules"}:::decision N_ApplyBusinessRulesforEquipmentClassification_Node0_action["Apply double-stack container
counting for SK car types, validate
routing information, and set empty
indicators based on routing patterns"]:::main N_ApplyBusinessRulesforEquipmentClassification_Node0 -- Yes --> N_ApplyBusinessRulesforEquipmentClassification_Node0_action N_ApplyBusinessRulesforEquipmentClassification_Node0_action --> E_ApplyBusinessRulesforEquipmentClassification S_ApplyBusinessRulesforEquipmentClassification --> N_ApplyBusinessRulesforEquipmentClassification_Node0 N_ApplyBusinessRulesforEquipmentClassification_Node0 -- No --> E_ApplyBusinessRulesforEquipmentClassification
business rules"}:::decision N_ApplyBusinessRulesforEquipmentClassification_Node0_action["Apply double-stack container
counting for SK car types, validate
routing information, and set empty
indicators based on routing patterns"]:::main N_ApplyBusinessRulesforEquipmentClassification_Node0 -- Yes --> N_ApplyBusinessRulesforEquipmentClassification_Node0_action N_ApplyBusinessRulesforEquipmentClassification_Node0_action --> E_ApplyBusinessRulesforEquipmentClassification S_ApplyBusinessRulesforEquipmentClassification --> N_ApplyBusinessRulesforEquipmentClassification_Node0 N_ApplyBusinessRulesforEquipmentClassification_Node0 -- No --> E_ApplyBusinessRulesforEquipmentClassification
File: GCX003.cbl
GIVEN:
Equipment has been validated and status determined
WHEN:
System applies classification business rules
THEN:
Apply double-stack container counting for SK car types, validate routing information, and set empty indicators based on routing patterns
β Consolidated Acceptance Criteria
- System creates the final equipment record → generate unified record with equipment ID, type, status, routing, and all relevant business attributes
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CreateUnifiedEquipmentRecord(["Start Step"])
E_CreateUnifiedEquipmentRecord(["End Step"])
N_CreateUnifiedEquipmentRecord_Node0{"System creates the final equipment
record"}:::decision N_CreateUnifiedEquipmentRecord_Node0_action["Generate unified record with
equipment ID, type, status, routing,
and all relevant business attributes"]:::main N_CreateUnifiedEquipmentRecord_Node0 -- Yes --> N_CreateUnifiedEquipmentRecord_Node0_action N_CreateUnifiedEquipmentRecord_Node0_action --> E_CreateUnifiedEquipmentRecord S_CreateUnifiedEquipmentRecord --> N_CreateUnifiedEquipmentRecord_Node0 N_CreateUnifiedEquipmentRecord_Node0 -- No --> E_CreateUnifiedEquipmentRecord
record"}:::decision N_CreateUnifiedEquipmentRecord_Node0_action["Generate unified record with
equipment ID, type, status, routing,
and all relevant business attributes"]:::main N_CreateUnifiedEquipmentRecord_Node0 -- Yes --> N_CreateUnifiedEquipmentRecord_Node0_action N_CreateUnifiedEquipmentRecord_Node0_action --> E_CreateUnifiedEquipmentRecord S_CreateUnifiedEquipmentRecord --> N_CreateUnifiedEquipmentRecord_Node0 N_CreateUnifiedEquipmentRecord_Node0 -- No --> E_CreateUnifiedEquipmentRecord
File: GCX003.cbl
GIVEN:
All equipment information has been consolidated and business rules applied
WHEN:
System creates the final equipment record
THEN:
Generate unified record with equipment ID, type, status, routing, and all relevant business attributes
β Consolidated Acceptance Criteria
- System processes FWIQBOTL cross-reference data → extract container IDs and associated waybill information from cross-reference records
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_HandleContainerCrossReferenceData(["Start Step"])
E_HandleContainerCrossReferenceData(["End Step"])
N_HandleContainerCrossReferenceData_Node0{"System processes FWIQBOTL
cross-reference data"}:::decision N_HandleContainerCrossReferenceData_Node0_action["Extract container IDs and
associated waybill information from
cross-reference records"]:::main N_HandleContainerCrossReferenceData_Node0 -- Yes --> N_HandleContainerCrossReferenceData_Node0_action N_HandleContainerCrossReferenceData_Node0_action --> E_HandleContainerCrossReferenceData S_HandleContainerCrossReferenceData --> N_HandleContainerCrossReferenceData_Node0 N_HandleContainerCrossReferenceData_Node0 -- No --> E_HandleContainerCrossReferenceData
cross-reference data"}:::decision N_HandleContainerCrossReferenceData_Node0_action["Extract container IDs and
associated waybill information from
cross-reference records"]:::main N_HandleContainerCrossReferenceData_Node0 -- Yes --> N_HandleContainerCrossReferenceData_Node0_action N_HandleContainerCrossReferenceData_Node0_action --> E_HandleContainerCrossReferenceData S_HandleContainerCrossReferenceData --> N_HandleContainerCrossReferenceData_Node0 N_HandleContainerCrossReferenceData_Node0 -- No --> E_HandleContainerCrossReferenceData
File: GCX003.cbl
GIVEN:
Container equipment requires cross-reference validation
WHEN:
System processes FWIQBOTL cross-reference data
THEN:
- Extract container ids
- Associated waybill information from cross-reference records
β Consolidated Acceptance Criteria
- System processes all container source references → handle up to 30 container cross-references and manage container sequence processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ProcessMultipleContainerSources(["Start Step"])
E_ProcessMultipleContainerSources(["End Step"])
N_ProcessMultipleContainerSources_Node0{"System processes all container
source references"}:::decision N_ProcessMultipleContainerSources_Node0_action["Handle up to 30 container
cross-references and manage
container sequence processing"]:::main N_ProcessMultipleContainerSources_Node0 -- Yes --> N_ProcessMultipleContainerSources_Node0_action N_ProcessMultipleContainerSources_Node0_action --> E_ProcessMultipleContainerSources S_ProcessMultipleContainerSources --> N_ProcessMultipleContainerSources_Node0 N_ProcessMultipleContainerSources_Node0 -- No --> E_ProcessMultipleContainerSources
source references"}:::decision N_ProcessMultipleContainerSources_Node0_action["Handle up to 30 container
cross-references and manage
container sequence processing"]:::main N_ProcessMultipleContainerSources_Node0 -- Yes --> N_ProcessMultipleContainerSources_Node0_action N_ProcessMultipleContainerSources_Node0_action --> E_ProcessMultipleContainerSources S_ProcessMultipleContainerSources --> N_ProcessMultipleContainerSources_Node0 N_ProcessMultipleContainerSources_Node0 -- No --> E_ProcessMultipleContainerSources
File: GCX003.cbl
GIVEN:
Equipment may have multiple container associations
WHEN:
System processes all container source references
THEN:
- Handle up to 30 container cross-references
- Manage container sequence processing
β Consolidated Acceptance Criteria
- The system needs to access routing information using segment key 'B1' → the FWIQINFO segment is retrieved with routing information fields populated
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessFWIQINFOSegmentwithKeyB1(["Start Step"])
E_AccessFWIQINFOSegmentwithKeyB1(["End Step"])
N_AccessFWIQINFOSegmentwithKeyB1_Node0{"The system needs to access routing
information using segment key B1"}:::decision N_AccessFWIQINFOSegmentwithKeyB1_Node0_action["The FWIQINFO segment is retrieved
with routing information fields
populated"]:::main N_AccessFWIQINFOSegmentwithKeyB1_Node0 -- Yes --> N_AccessFWIQINFOSegmentwithKeyB1_Node0_action N_AccessFWIQINFOSegmentwithKeyB1_Node0_action --> E_AccessFWIQINFOSegmentwithKeyB1 S_AccessFWIQINFOSegmentwithKeyB1 --> N_AccessFWIQINFOSegmentwithKeyB1_Node0 N_AccessFWIQINFOSegmentwithKeyB1_Node0 -- No --> E_AccessFWIQINFOSegmentwithKeyB1
information using segment key B1"}:::decision N_AccessFWIQINFOSegmentwithKeyB1_Node0_action["The FWIQINFO segment is retrieved
with routing information fields
populated"]:::main N_AccessFWIQINFOSegmentwithKeyB1_Node0 -- Yes --> N_AccessFWIQINFOSegmentwithKeyB1_Node0_action N_AccessFWIQINFOSegmentwithKeyB1_Node0_action --> E_AccessFWIQINFOSegmentwithKeyB1 S_AccessFWIQINFOSegmentwithKeyB1 --> N_AccessFWIQINFOSegmentwithKeyB1_Node0 N_AccessFWIQINFOSegmentwithKeyB1_Node0 -- No --> E_AccessFWIQINFOSegmentwithKeyB1
File: GCX003.cbl
GIVEN:
A waybill inquiry record exists in the system
WHEN:
The system needs to access routing information using segment key 'B1'
THEN:
The FWIQINFO segment is retrieved with routing information fields populated
β Consolidated Acceptance Criteria
- Field parsing begins → field length counter is set to 0, byte position counters are set to 1, and field number is set to 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeFieldParsingVariables(["Start Step"])
E_InitializeFieldParsingVariables(["End Step"])
N_InitializeFieldParsingVariables_Node0{"Field parsing begins"}:::decision
N_InitializeFieldParsingVariables_Node0_action["Field length counter is set to 0,
byte position counters are set to 1,
and field number is set to 1"]:::main N_InitializeFieldParsingVariables_Node0 -- Yes --> N_InitializeFieldParsingVariables_Node0_action N_InitializeFieldParsingVariables_Node0_action --> E_InitializeFieldParsingVariables S_InitializeFieldParsingVariables --> N_InitializeFieldParsingVariables_Node0 N_InitializeFieldParsingVariables_Node0 -- No --> E_InitializeFieldParsingVariables
byte position counters are set to 1,
and field number is set to 1"]:::main N_InitializeFieldParsingVariables_Node0 -- Yes --> N_InitializeFieldParsingVariables_Node0_action N_InitializeFieldParsingVariables_Node0_action --> E_InitializeFieldParsingVariables S_InitializeFieldParsingVariables --> N_InitializeFieldParsingVariables_Node0 N_InitializeFieldParsingVariables_Node0 -- No --> E_InitializeFieldParsingVariables
File: GCX003.cbl
GIVEN:
Valid routing information fields are available
WHEN:
Field parsing begins
THEN:
Field length counter is set to 0, byte position counters are set to 1, and field number is set to 1
β Consolidated Acceptance Criteria
- The system checks for more fields to process → processing continues if current byte position is 34 or less and current field is not spaces, otherwise field processing ends
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoreFieldstoProcess(["Start Step"])
E_MoreFieldstoProcess(["End Step"])
N_MoreFieldstoProcess_Node0{"The system checks for more fields
to process"}:::decision N_MoreFieldstoProcess_Node0_action["Processing continues if current
byte position is 34 or less and
current field is not spaces,
otherwise field processing ends"]:::main N_MoreFieldstoProcess_Node0 -- Yes --> N_MoreFieldstoProcess_Node0_action N_MoreFieldstoProcess_Node0_action --> E_MoreFieldstoProcess S_MoreFieldstoProcess --> N_MoreFieldstoProcess_Node0 N_MoreFieldstoProcess_Node0 -- No --> E_MoreFieldstoProcess
to process"}:::decision N_MoreFieldstoProcess_Node0_action["Processing continues if current
byte position is 34 or less and
current field is not spaces,
otherwise field processing ends"]:::main N_MoreFieldstoProcess_Node0 -- Yes --> N_MoreFieldstoProcess_Node0_action N_MoreFieldstoProcess_Node0_action --> E_MoreFieldstoProcess S_MoreFieldstoProcess --> N_MoreFieldstoProcess_Node0 N_MoreFieldstoProcess_Node0 -- No --> E_MoreFieldstoProcess
File: GCX003.cbl
GIVEN:
Field parsing is in progress
WHEN:
The system checks for more fields to process
THEN:
- Processing continues if current byte position is 34 or less
- Current field is not spaces, otherwise field processing ends
β Consolidated Acceptance Criteria
- Field length calculation is performed → the system scans from current position until a space is found or position exceeds 34, incrementing both byte position and field length counters
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CalculateFieldLengthbyFindingSpaceDelimiter(["Start Step"])
E_CalculateFieldLengthbyFindingSpaceDelimiter(["End Step"])
N_CalculateFieldLengthbyFindingSpaceDelimiter_Node0{"Field length calculation is
performed"}:::decision N_CalculateFieldLengthbyFindingSpaceDelimiter_Node0_action["The system scans from current
position until a space is found or
position exceeds 34, incrementing
both byte position and field length
counters"]:::main N_CalculateFieldLengthbyFindingSpaceDelimiter_Node0 -- Yes --> N_CalculateFieldLengthbyFindingSpaceDelimiter_Node0_action N_CalculateFieldLengthbyFindingSpaceDelimiter_Node0_action --> E_CalculateFieldLengthbyFindingSpaceDelimiter S_CalculateFieldLengthbyFindingSpaceDelimiter --> N_CalculateFieldLengthbyFindingSpaceDelimiter_Node0 N_CalculateFieldLengthbyFindingSpaceDelimiter_Node0 -- No --> E_CalculateFieldLengthbyFindingSpaceDelimiter
performed"}:::decision N_CalculateFieldLengthbyFindingSpaceDelimiter_Node0_action["The system scans from current
position until a space is found or
position exceeds 34, incrementing
both byte position and field length
counters"]:::main N_CalculateFieldLengthbyFindingSpaceDelimiter_Node0 -- Yes --> N_CalculateFieldLengthbyFindingSpaceDelimiter_Node0_action N_CalculateFieldLengthbyFindingSpaceDelimiter_Node0_action --> E_CalculateFieldLengthbyFindingSpaceDelimiter S_CalculateFieldLengthbyFindingSpaceDelimiter --> N_CalculateFieldLengthbyFindingSpaceDelimiter_Node0 N_CalculateFieldLengthbyFindingSpaceDelimiter_Node0 -- No --> E_CalculateFieldLengthbyFindingSpaceDelimiter
File: GCX003.cbl
GIVEN:
A routing field is being processed
WHEN:
Field length calculation is performed
THEN:
- The system scans from current position until a space is found or position exceeds 34, incrementing both byte position
- Field length counters
β Consolidated Acceptance Criteria
- Field number evaluation is performed → field 1 maps to SCAC1, Field 2 to Junction1, Field 3 to SCAC2, Field 4 to Junction2, Field 5 to SCAC3, Field 6 to Junction3, and Field 7 to SCAC4
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_WhichFieldNumber(["Start Step"])
E_WhichFieldNumber(["End Step"])
N_WhichFieldNumber_Node0{"Field number evaluation is
performed"}:::decision N_WhichFieldNumber_Node0_action["Field 1 maps to SCAC1, Field 2 to
Junction1, Field 3 to SCAC2, Field 4
to Junction2, Field 5 to SCAC3,
Field 6 to Junction3, and Field 7 to
SCAC4"]:::main N_WhichFieldNumber_Node0 -- Yes --> N_WhichFieldNumber_Node0_action N_WhichFieldNumber_Node0_action --> E_WhichFieldNumber S_WhichFieldNumber --> N_WhichFieldNumber_Node0 N_WhichFieldNumber_Node0 -- No --> E_WhichFieldNumber
performed"}:::decision N_WhichFieldNumber_Node0_action["Field 1 maps to SCAC1, Field 2 to
Junction1, Field 3 to SCAC2, Field 4
to Junction2, Field 5 to SCAC3,
Field 6 to Junction3, and Field 7 to
SCAC4"]:::main N_WhichFieldNumber_Node0 -- Yes --> N_WhichFieldNumber_Node0_action N_WhichFieldNumber_Node0_action --> E_WhichFieldNumber S_WhichFieldNumber --> N_WhichFieldNumber_Node0 N_WhichFieldNumber_Node0 -- No --> E_WhichFieldNumber
File: GCX003.cbl
GIVEN:
A valid routing field has been extracted
WHEN:
Field number evaluation is performed
THEN:
Field 1 maps to SCAC1, Field 2 to Junction1, Field 3 to SCAC2, Field 4 to Junction2, Field 5 to SCAC3, Field 6 to Junction3, and Field 7 to SCAC4
β Consolidated Acceptance Criteria
- SCAC Code 1 extraction is performed → the field value is moved to SCAC1 position in routing group and field number is incremented to 2
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractSCACCode1(["Start Step"])
E_ExtractSCACCode1(["End Step"])
N_ExtractSCACCode1_Node0{"SCAC Code 1 extraction is performed"}:::decision
N_ExtractSCACCode1_Node0_action["The field value is moved to SCAC1
position in routing group and field
number is incremented to 2"]:::main N_ExtractSCACCode1_Node0 -- Yes --> N_ExtractSCACCode1_Node0_action N_ExtractSCACCode1_Node0_action --> E_ExtractSCACCode1 S_ExtractSCACCode1 --> N_ExtractSCACCode1_Node0 N_ExtractSCACCode1_Node0 -- No --> E_ExtractSCACCode1
position in routing group and field
number is incremented to 2"]:::main N_ExtractSCACCode1_Node0 -- Yes --> N_ExtractSCACCode1_Node0_action N_ExtractSCACCode1_Node0_action --> E_ExtractSCACCode1 S_ExtractSCACCode1 --> N_ExtractSCACCode1_Node0 N_ExtractSCACCode1_Node0 -- No --> E_ExtractSCACCode1
File: GCX003.cbl
GIVEN:
Field number 1 is being processed with valid field length
WHEN:
SCAC Code 1 extraction is performed
THEN:
- The field value is moved to scac1 position in routing group
- Field number is incremented to 2
β Consolidated Acceptance Criteria
- Junction Code 1 extraction is performed → the field value is moved to Junction1 position in routing group and field number is incremented to 3
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractJunctionR260Code1(["Start Step"])
E_ExtractJunctionR260Code1(["End Step"])
N_ExtractJunctionR260Code1_Node0{"Junction Code 1 extraction is
performed"}:::decision N_ExtractJunctionR260Code1_Node0_action["The field value is moved to
Junction1 position in routing group
and field number is incremented to 3"]:::main N_ExtractJunctionR260Code1_Node0 -- Yes --> N_ExtractJunctionR260Code1_Node0_action N_ExtractJunctionR260Code1_Node0_action --> E_ExtractJunctionR260Code1 S_ExtractJunctionR260Code1 --> N_ExtractJunctionR260Code1_Node0 N_ExtractJunctionR260Code1_Node0 -- No --> E_ExtractJunctionR260Code1
performed"}:::decision N_ExtractJunctionR260Code1_Node0_action["The field value is moved to
Junction1 position in routing group
and field number is incremented to 3"]:::main N_ExtractJunctionR260Code1_Node0 -- Yes --> N_ExtractJunctionR260Code1_Node0_action N_ExtractJunctionR260Code1_Node0_action --> E_ExtractJunctionR260Code1 S_ExtractJunctionR260Code1 --> N_ExtractJunctionR260Code1_Node0 N_ExtractJunctionR260Code1_Node0 -- No --> E_ExtractJunctionR260Code1
File: GCX003.cbl
GIVEN:
Field number 2 is being processed with valid field length
WHEN:
Junction Code 1 extraction is performed
THEN:
- The field value is moved to junction1 position in routing group
- Field number is incremented to 3
β Consolidated Acceptance Criteria
- SCAC Code 2 extraction is performed → the field value is moved to SCAC2 position in routing group and field number is incremented to 4
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractSCACCode2(["Start Step"])
E_ExtractSCACCode2(["End Step"])
N_ExtractSCACCode2_Node0{"SCAC Code 2 extraction is performed"}:::decision
N_ExtractSCACCode2_Node0_action["The field value is moved to SCAC2
position in routing group and field
number is incremented to 4"]:::main N_ExtractSCACCode2_Node0 -- Yes --> N_ExtractSCACCode2_Node0_action N_ExtractSCACCode2_Node0_action --> E_ExtractSCACCode2 S_ExtractSCACCode2 --> N_ExtractSCACCode2_Node0 N_ExtractSCACCode2_Node0 -- No --> E_ExtractSCACCode2
position in routing group and field
number is incremented to 4"]:::main N_ExtractSCACCode2_Node0 -- Yes --> N_ExtractSCACCode2_Node0_action N_ExtractSCACCode2_Node0_action --> E_ExtractSCACCode2 S_ExtractSCACCode2 --> N_ExtractSCACCode2_Node0 N_ExtractSCACCode2_Node0 -- No --> E_ExtractSCACCode2
File: GCX003.cbl
GIVEN:
Field number 3 is being processed with valid field length
WHEN:
SCAC Code 2 extraction is performed
THEN:
- The field value is moved to scac2 position in routing group
- Field number is incremented to 4
β Consolidated Acceptance Criteria
- Junction Code 2 extraction is performed → the field value is moved to Junction2 position in routing group and field number is incremented to 5
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractJunctionR260Code2(["Start Step"])
E_ExtractJunctionR260Code2(["End Step"])
N_ExtractJunctionR260Code2_Node0{"Junction Code 2 extraction is
performed"}:::decision N_ExtractJunctionR260Code2_Node0_action["The field value is moved to
Junction2 position in routing group
and field number is incremented to 5"]:::main N_ExtractJunctionR260Code2_Node0 -- Yes --> N_ExtractJunctionR260Code2_Node0_action N_ExtractJunctionR260Code2_Node0_action --> E_ExtractJunctionR260Code2 S_ExtractJunctionR260Code2 --> N_ExtractJunctionR260Code2_Node0 N_ExtractJunctionR260Code2_Node0 -- No --> E_ExtractJunctionR260Code2
performed"}:::decision N_ExtractJunctionR260Code2_Node0_action["The field value is moved to
Junction2 position in routing group
and field number is incremented to 5"]:::main N_ExtractJunctionR260Code2_Node0 -- Yes --> N_ExtractJunctionR260Code2_Node0_action N_ExtractJunctionR260Code2_Node0_action --> E_ExtractJunctionR260Code2 S_ExtractJunctionR260Code2 --> N_ExtractJunctionR260Code2_Node0 N_ExtractJunctionR260Code2_Node0 -- No --> E_ExtractJunctionR260Code2
File: GCX003.cbl
GIVEN:
Field number 4 is being processed with valid field length
WHEN:
Junction Code 2 extraction is performed
THEN:
- The field value is moved to junction2 position in routing group
- Field number is incremented to 5
β Consolidated Acceptance Criteria
- SCAC Code 3 extraction is performed → the field value is moved to SCAC3 position in routing group and field number is incremented to 6
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractSCACCode3(["Start Step"])
E_ExtractSCACCode3(["End Step"])
N_ExtractSCACCode3_Node0{"SCAC Code 3 extraction is performed"}:::decision
N_ExtractSCACCode3_Node0_action["The field value is moved to SCAC3
position in routing group and field
number is incremented to 6"]:::main N_ExtractSCACCode3_Node0 -- Yes --> N_ExtractSCACCode3_Node0_action N_ExtractSCACCode3_Node0_action --> E_ExtractSCACCode3 S_ExtractSCACCode3 --> N_ExtractSCACCode3_Node0 N_ExtractSCACCode3_Node0 -- No --> E_ExtractSCACCode3
position in routing group and field
number is incremented to 6"]:::main N_ExtractSCACCode3_Node0 -- Yes --> N_ExtractSCACCode3_Node0_action N_ExtractSCACCode3_Node0_action --> E_ExtractSCACCode3 S_ExtractSCACCode3 --> N_ExtractSCACCode3_Node0 N_ExtractSCACCode3_Node0 -- No --> E_ExtractSCACCode3
File: GCX003.cbl
GIVEN:
Field number 5 is being processed with valid field length
WHEN:
SCAC Code 3 extraction is performed
THEN:
- The field value is moved to scac3 position in routing group
- Field number is incremented to 6
β Consolidated Acceptance Criteria
- Junction Code 3 extraction is performed → the field value is moved to Junction3 position in routing group and field number is incremented to 7
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractJunctionR260Code3(["Start Step"])
E_ExtractJunctionR260Code3(["End Step"])
N_ExtractJunctionR260Code3_Node0{"Junction Code 3 extraction is
performed"}:::decision N_ExtractJunctionR260Code3_Node0_action["The field value is moved to
Junction3 position in routing group
and field number is incremented to 7"]:::main N_ExtractJunctionR260Code3_Node0 -- Yes --> N_ExtractJunctionR260Code3_Node0_action N_ExtractJunctionR260Code3_Node0_action --> E_ExtractJunctionR260Code3 S_ExtractJunctionR260Code3 --> N_ExtractJunctionR260Code3_Node0 N_ExtractJunctionR260Code3_Node0 -- No --> E_ExtractJunctionR260Code3
performed"}:::decision N_ExtractJunctionR260Code3_Node0_action["The field value is moved to
Junction3 position in routing group
and field number is incremented to 7"]:::main N_ExtractJunctionR260Code3_Node0 -- Yes --> N_ExtractJunctionR260Code3_Node0_action N_ExtractJunctionR260Code3_Node0_action --> E_ExtractJunctionR260Code3 S_ExtractJunctionR260Code3 --> N_ExtractJunctionR260Code3_Node0 N_ExtractJunctionR260Code3_Node0 -- No --> E_ExtractJunctionR260Code3
File: GCX003.cbl
GIVEN:
Field number 6 is being processed with valid field length
WHEN:
Junction Code 3 extraction is performed
THEN:
- The field value is moved to junction3 position in routing group
- Field number is incremented to 7
β Consolidated Acceptance Criteria
- SCAC Code 4 extraction is performed → the field value is moved to SCAC4 position in routing group and byte position is set to 35 to terminate processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractSCACCode4(["Start Step"])
E_ExtractSCACCode4(["End Step"])
N_ExtractSCACCode4_Node0{"SCAC Code 4 extraction is performed"}:::decision
N_ExtractSCACCode4_Node0_action["The field value is moved to SCAC4
position in routing group and byte
position is set to 35 to terminate
processing"]:::exclusion N_ExtractSCACCode4_Node0 -- Yes -->|Alternative| N_ExtractSCACCode4_Node0_action N_ExtractSCACCode4_Node0_action --> E_ExtractSCACCode4 S_ExtractSCACCode4 --> N_ExtractSCACCode4_Node0 N_ExtractSCACCode4_Node0 -- No --> E_ExtractSCACCode4
position in routing group and byte
position is set to 35 to terminate
processing"]:::exclusion N_ExtractSCACCode4_Node0 -- Yes -->|Alternative| N_ExtractSCACCode4_Node0_action N_ExtractSCACCode4_Node0_action --> E_ExtractSCACCode4 S_ExtractSCACCode4 --> N_ExtractSCACCode4_Node0 N_ExtractSCACCode4_Node0 -- No --> E_ExtractSCACCode4
File: GCX003.cbl
GIVEN:
Field number 7 is being processed with valid field length
WHEN:
SCAC Code 4 extraction is performed
THEN:
- The field value is moved to scac4 position in routing group
- Byte position is set to 35 to terminate processing
β Consolidated Acceptance Criteria
- Routing information storage is performed → the structured routing group containing SCAC codes and junction points is moved to the SHIPROOT routing information field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreStructuredRoutingGroupinSHIPROOT(["Start Step"])
E_StoreStructuredRoutingGroupinSHIPROOT(["End Step"])
N_StoreStructuredRoutingGroupinSHIPROOT_Node0{"Routing information storage is
performed"}:::decision N_StoreStructuredRoutingGroupinSHIPROOT_Node0_action["The structured routing group
containing SCAC codes and junction
points is moved to the SHIPROOT
routing information field"]:::main N_StoreStructuredRoutingGroupinSHIPROOT_Node0 -- Yes --> N_StoreStructuredRoutingGroupinSHIPROOT_Node0_action N_StoreStructuredRoutingGroupinSHIPROOT_Node0_action --> E_StoreStructuredRoutingGroupinSHIPROOT S_StoreStructuredRoutingGroupinSHIPROOT --> N_StoreStructuredRoutingGroupinSHIPROOT_Node0 N_StoreStructuredRoutingGroupinSHIPROOT_Node0 -- No --> E_StoreStructuredRoutingGroupinSHIPROOT
performed"}:::decision N_StoreStructuredRoutingGroupinSHIPROOT_Node0_action["The structured routing group
containing SCAC codes and junction
points is moved to the SHIPROOT
routing information field"]:::main N_StoreStructuredRoutingGroupinSHIPROOT_Node0 -- Yes --> N_StoreStructuredRoutingGroupinSHIPROOT_Node0_action N_StoreStructuredRoutingGroupinSHIPROOT_Node0_action --> E_StoreStructuredRoutingGroupinSHIPROOT S_StoreStructuredRoutingGroupinSHIPROOT --> N_StoreStructuredRoutingGroupinSHIPROOT_Node0 N_StoreStructuredRoutingGroupinSHIPROOT_Node0 -- No --> E_StoreStructuredRoutingGroupinSHIPROOT
File: GCX003.cbl
GIVEN:
Routing information has been successfully parsed into structured format
WHEN:
Routing information storage is performed
THEN:
- The structured routing group containing scac codes
- Junction points is moved to the shiproot routing information field
β Consolidated Acceptance Criteria
- The system accesses the inquiry system using the waybill key information → the inquiry system is accessed with the waybill railroad number, station number, and waybill number to retrieve container cross-reference data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AccessInquirySystemwithWaybillInformation(["Start Step"])
E_AccessInquirySystemwithWaybillInformation(["End Step"])
N_AccessInquirySystemwithWaybillInformation_Node0{"The system accesses the inquiry
system using the waybill key
information"}:::decision N_AccessInquirySystemwithWaybillInformation_Node0_action["The inquiry system is accessed with
the waybill railroad number, station
number, and waybill number to
retrieve container cross-reference
data"]:::main N_AccessInquirySystemwithWaybillInformation_Node0 -- Yes --> N_AccessInquirySystemwithWaybillInformation_Node0_action N_AccessInquirySystemwithWaybillInformation_Node0_action --> E_AccessInquirySystemwithWaybillInformation S_AccessInquirySystemwithWaybillInformation --> N_AccessInquirySystemwithWaybillInformation_Node0 N_AccessInquirySystemwithWaybillInformation_Node0 -- No --> E_AccessInquirySystemwithWaybillInformation
system using the waybill key
information"}:::decision N_AccessInquirySystemwithWaybillInformation_Node0_action["The inquiry system is accessed with
the waybill railroad number, station
number, and waybill number to
retrieve container cross-reference
data"]:::main N_AccessInquirySystemwithWaybillInformation_Node0 -- Yes --> N_AccessInquirySystemwithWaybillInformation_Node0_action N_AccessInquirySystemwithWaybillInformation_Node0_action --> E_AccessInquirySystemwithWaybillInformation S_AccessInquirySystemwithWaybillInformation --> N_AccessInquirySystemwithWaybillInformation_Node0 N_AccessInquirySystemwithWaybillInformation_Node0 -- No --> E_AccessInquirySystemwithWaybillInformation
File: GCX003.cbl
GIVEN:
A waybill exists with railroad number, station number, and waybill number from container inquiry root
WHEN:
The system accesses the inquiry system using the waybill key information
THEN:
The inquiry system is accessed with the waybill railroad number, station number, and waybill number to retrieve container cross-reference data
β Consolidated Acceptance Criteria
- The system begins container cross-reference extraction → the container cross-reference table is cleared and the processing counter is set to position 1
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeContainerCrossReferenceTable(["Start Step"])
E_InitializeContainerCrossReferenceTable(["End Step"])
N_InitializeContainerCrossReferenceTable_Node0{"The system begins container
cross-reference extraction"}:::decision N_InitializeContainerCrossReferenceTable_Node0_action["The container cross-reference table
is cleared and the processing
counter is set to position 1"]:::main N_InitializeContainerCrossReferenceTable_Node0 -- Yes --> N_InitializeContainerCrossReferenceTable_Node0_action N_InitializeContainerCrossReferenceTable_Node0_action --> E_InitializeContainerCrossReferenceTable S_InitializeContainerCrossReferenceTable --> N_InitializeContainerCrossReferenceTable_Node0 N_InitializeContainerCrossReferenceTable_Node0 -- No --> E_InitializeContainerCrossReferenceTable
cross-reference extraction"}:::decision N_InitializeContainerCrossReferenceTable_Node0_action["The container cross-reference table
is cleared and the processing
counter is set to position 1"]:::main N_InitializeContainerCrossReferenceTable_Node0 -- Yes --> N_InitializeContainerCrossReferenceTable_Node0_action N_InitializeContainerCrossReferenceTable_Node0_action --> E_InitializeContainerCrossReferenceTable S_InitializeContainerCrossReferenceTable --> N_InitializeContainerCrossReferenceTable_Node0 N_InitializeContainerCrossReferenceTable_Node0 -- No --> E_InitializeContainerCrossReferenceTable
File: GCX003.cbl
GIVEN:
Container cross-reference processing is starting
WHEN:
The system begins container cross-reference extraction
THEN:
- The container cross-reference table is cleared
- The processing counter is set to position 1
β Consolidated Acceptance Criteria
- The system checks if the line contains 'T/C XREF' in positions 1-8 → if the line contains 'T/C XREF', it is identified as a container cross-reference line for further processing, otherwise it is skipped
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_LineContainsTCXREF(["Start Step"])
E_LineContainsTCXREF(["End Step"])
N_LineContainsTCXREF_Node0{"The system checks if the line
contains TC XREF in positions 1-8"}:::decision N_LineContainsTCXREF_Node0_action["If the line contains TC XREF , it
is identified as a container
cross-reference line for further
processing, otherwise it is skipped"]:::main N_LineContainsTCXREF_Node0 -- Yes --> N_LineContainsTCXREF_Node0_action N_LineContainsTCXREF_Node0_action --> E_LineContainsTCXREF S_LineContainsTCXREF --> N_LineContainsTCXREF_Node0 N_LineContainsTCXREF_Node0 -- No --> E_LineContainsTCXREF
contains TC XREF in positions 1-8"}:::decision N_LineContainsTCXREF_Node0_action["If the line contains TC XREF , it
is identified as a container
cross-reference line for further
processing, otherwise it is skipped"]:::main N_LineContainsTCXREF_Node0 -- Yes --> N_LineContainsTCXREF_Node0_action N_LineContainsTCXREF_Node0_action --> E_LineContainsTCXREF S_LineContainsTCXREF --> N_LineContainsTCXREF_Node0 N_LineContainsTCXREF_Node0 -- No --> E_LineContainsTCXREF
File: GCX003.cbl
GIVEN:
An inquiry bottom line is being processed
WHEN:
The system checks if the line contains 'T/C XREF' in positions 1-8
THEN:
If the line contains 'T/C XREF', it is identified as a container cross-reference line for further processing, otherwise it is skipped
β Consolidated Acceptance Criteria
- The system creates a container cross-reference entry → the container ID and associated waybill information are stored in the container cross-reference table at the current counter position
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StoreContainerCrossReferenceEntry(["Start Step"])
E_StoreContainerCrossReferenceEntry(["End Step"])
N_StoreContainerCrossReferenceEntry_Node0{"The system creates a container
cross-reference entry"}:::decision N_StoreContainerCrossReferenceEntry_Node0_action["The container ID and associated
waybill information are stored in
the container cross-reference table
at the current counter position"]:::main N_StoreContainerCrossReferenceEntry_Node0 -- Yes --> N_StoreContainerCrossReferenceEntry_Node0_action N_StoreContainerCrossReferenceEntry_Node0_action --> E_StoreContainerCrossReferenceEntry S_StoreContainerCrossReferenceEntry --> N_StoreContainerCrossReferenceEntry_Node0 N_StoreContainerCrossReferenceEntry_Node0 -- No --> E_StoreContainerCrossReferenceEntry
cross-reference entry"}:::decision N_StoreContainerCrossReferenceEntry_Node0_action["The container ID and associated
waybill information are stored in
the container cross-reference table
at the current counter position"]:::main N_StoreContainerCrossReferenceEntry_Node0 -- Yes --> N_StoreContainerCrossReferenceEntry_Node0_action N_StoreContainerCrossReferenceEntry_Node0_action --> E_StoreContainerCrossReferenceEntry S_StoreContainerCrossReferenceEntry --> N_StoreContainerCrossReferenceEntry_Node0 N_StoreContainerCrossReferenceEntry_Node0 -- No --> E_StoreContainerCrossReferenceEntry
File: GCX003.cbl
GIVEN:
Container ID and waybill information have been successfully extracted and formatted
WHEN:
The system creates a container cross-reference entry
THEN:
- The container id
- Associated waybill information are stored in the container cross-reference table at the current counter position
β Consolidated Acceptance Criteria
- The system completes processing of a container cross-reference line → the cross-reference counter is incremented by 1 to prepare for the next container entry
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementCrossReferenceCounter(["Start Step"])
E_IncrementCrossReferenceCounter(["End Step"])
N_IncrementCrossReferenceCounter_Node0{"The system completes processing of
a container cross-reference line"}:::decision N_IncrementCrossReferenceCounter_Node0_action["The cross-reference counter is
incremented by 1 to prepare for the
next container entry"]:::main N_IncrementCrossReferenceCounter_Node0 -- Yes --> N_IncrementCrossReferenceCounter_Node0_action N_IncrementCrossReferenceCounter_Node0_action --> E_IncrementCrossReferenceCounter S_IncrementCrossReferenceCounter --> N_IncrementCrossReferenceCounter_Node0 N_IncrementCrossReferenceCounter_Node0 -- No --> E_IncrementCrossReferenceCounter
a container cross-reference line"}:::decision N_IncrementCrossReferenceCounter_Node0_action["The cross-reference counter is
incremented by 1 to prepare for the
next container entry"]:::main N_IncrementCrossReferenceCounter_Node0 -- Yes --> N_IncrementCrossReferenceCounter_Node0_action N_IncrementCrossReferenceCounter_Node0_action --> E_IncrementCrossReferenceCounter S_IncrementCrossReferenceCounter --> N_IncrementCrossReferenceCounter_Node0 N_IncrementCrossReferenceCounter_Node0 -- No --> E_IncrementCrossReferenceCounter
File: GCX003.cbl
GIVEN:
A container cross-reference entry has been successfully stored
WHEN:
The system completes processing of a container cross-reference line
THEN:
The cross-reference counter is incremented by 1 to prepare for the next container entry
β Consolidated Acceptance Criteria
- The system checks the current cross-reference counter → if the counter exceeds 30 containers, processing stops to prevent system overload, otherwise processing continues
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CounterExceeds30Containers(["Start Step"])
E_CounterExceeds30Containers(["End Step"])
N_CounterExceeds30Containers_Node0{"The system checks the current
cross-reference counter"}:::decision N_CounterExceeds30Containers_Node0_action["If the counter exceeds 30
containers, processing stops to
prevent system overload, otherwise
processing continues"]:::main N_CounterExceeds30Containers_Node0 -- Yes --> N_CounterExceeds30Containers_Node0_action N_CounterExceeds30Containers_Node0_action --> E_CounterExceeds30Containers S_CounterExceeds30Containers --> N_CounterExceeds30Containers_Node0 N_CounterExceeds30Containers_Node0 -- No --> E_CounterExceeds30Containers
cross-reference counter"}:::decision N_CounterExceeds30Containers_Node0_action["If the counter exceeds 30
containers, processing stops to
prevent system overload, otherwise
processing continues"]:::main N_CounterExceeds30Containers_Node0 -- Yes --> N_CounterExceeds30Containers_Node0_action N_CounterExceeds30Containers_Node0_action --> E_CounterExceeds30Containers S_CounterExceeds30Containers --> N_CounterExceeds30Containers_Node0 N_CounterExceeds30Containers_Node0 -- No --> E_CounterExceeds30Containers
File: GCX003.cbl
GIVEN:
Container cross-reference entries are being processed and stored
WHEN:
The system checks the current cross-reference counter
THEN:
If the counter exceeds 30 containers, processing stops to prevent system overload, otherwise processing continues
β Consolidated Acceptance Criteria
- If the results of the container cross-reference extraction → if the first container ID entry is not spaces or low-values, container cross-references are considered found, otherwise none were found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_AnyContainerCrossReferencesFound(["Start Step"])
E_AnyContainerCrossReferencesFound(["End Step"])
N_AnyContainerCrossReferencesFound_Node0{"The system evaluates the results of
the container cross-reference
extraction"}:::decision N_AnyContainerCrossReferencesFound_Node0_action["If the first container ID entry is
not spaces or low-values, container
cross-references are considered
found, otherwise none were found"]:::main N_AnyContainerCrossReferencesFound_Node0 -- Yes --> N_AnyContainerCrossReferencesFound_Node0_action N_AnyContainerCrossReferencesFound_Node0_action --> E_AnyContainerCrossReferencesFound S_AnyContainerCrossReferencesFound --> N_AnyContainerCrossReferencesFound_Node0 N_AnyContainerCrossReferencesFound_Node0 -- No --> E_AnyContainerCrossReferencesFound
the container cross-reference
extraction"}:::decision N_AnyContainerCrossReferencesFound_Node0_action["If the first container ID entry is
not spaces or low-values, container
cross-references are considered
found, otherwise none were found"]:::main N_AnyContainerCrossReferencesFound_Node0 -- Yes --> N_AnyContainerCrossReferencesFound_Node0_action N_AnyContainerCrossReferencesFound_Node0_action --> E_AnyContainerCrossReferencesFound S_AnyContainerCrossReferencesFound --> N_AnyContainerCrossReferencesFound_Node0 N_AnyContainerCrossReferencesFound_Node0 -- No --> E_AnyContainerCrossReferencesFound
File: GCX003.cbl
GIVEN:
All inquiry bottom lines have been processed for container cross-references
WHEN:
The system evaluates the results of the container cross-reference extraction
THEN:
If the first container ID entry is not spaces or low-values, container cross-references are considered found, otherwise none were found
β Consolidated Acceptance Criteria
- The system needs to establish the active equipment for processing → the first container ID from the cross-reference table is assigned as the active equipment ID and the container cross-reference status is set to found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetFirstContainerasActiveEquipment(["Start Step"])
E_SetFirstContainerasActiveEquipment(["End Step"])
N_SetFirstContainerasActiveEquipment_Node0{"The system needs to establish the
active equipment for processing"}:::decision N_SetFirstContainerasActiveEquipment_Node0_action["The first container ID from the
cross-reference table is assigned as
the active equipment ID and the
container cross-reference status is
set to found"]:::main N_SetFirstContainerasActiveEquipment_Node0 -- Yes --> N_SetFirstContainerasActiveEquipment_Node0_action N_SetFirstContainerasActiveEquipment_Node0_action --> E_SetFirstContainerasActiveEquipment S_SetFirstContainerasActiveEquipment --> N_SetFirstContainerasActiveEquipment_Node0 N_SetFirstContainerasActiveEquipment_Node0 -- No --> E_SetFirstContainerasActiveEquipment
active equipment for processing"}:::decision N_SetFirstContainerasActiveEquipment_Node0_action["The first container ID from the
cross-reference table is assigned as
the active equipment ID and the
container cross-reference status is
set to found"]:::main N_SetFirstContainerasActiveEquipment_Node0 -- Yes --> N_SetFirstContainerasActiveEquipment_Node0_action N_SetFirstContainerasActiveEquipment_Node0_action --> E_SetFirstContainerasActiveEquipment S_SetFirstContainerasActiveEquipment --> N_SetFirstContainerasActiveEquipment_Node0 N_SetFirstContainerasActiveEquipment_Node0 -- No --> E_SetFirstContainerasActiveEquipment
File: GCX003.cbl
GIVEN:
Container cross-references have been found in the inquiry system
WHEN:
The system needs to establish the active equipment for processing
THEN:
- The first container id from the cross-reference table is assigned as the active equipment id
- The container cross-reference status is set to found
β Consolidated Acceptance Criteria
- The system completes successful container cross-reference processing → the container cross-reference status is marked as found and the container status is set to found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkContainerCrossReferenceasFound(["Start Step"])
E_MarkContainerCrossReferenceasFound(["End Step"])
N_MarkContainerCrossReferenceasFound_Node0{"The system completes successful
container cross-reference processing"}:::decision N_MarkContainerCrossReferenceasFound_Node0_action["The container cross-reference
status is marked as found and the
container status is set to found"]:::main N_MarkContainerCrossReferenceasFound_Node0 -- Yes --> N_MarkContainerCrossReferenceasFound_Node0_action N_MarkContainerCrossReferenceasFound_Node0_action --> E_MarkContainerCrossReferenceasFound S_MarkContainerCrossReferenceasFound --> N_MarkContainerCrossReferenceasFound_Node0 N_MarkContainerCrossReferenceasFound_Node0 -- No --> E_MarkContainerCrossReferenceasFound
container cross-reference processing"}:::decision N_MarkContainerCrossReferenceasFound_Node0_action["The container cross-reference
status is marked as found and the
container status is set to found"]:::main N_MarkContainerCrossReferenceasFound_Node0 -- Yes --> N_MarkContainerCrossReferenceasFound_Node0_action N_MarkContainerCrossReferenceasFound_Node0_action --> E_MarkContainerCrossReferenceasFound S_MarkContainerCrossReferenceasFound --> N_MarkContainerCrossReferenceasFound_Node0 N_MarkContainerCrossReferenceasFound_Node0 -- No --> E_MarkContainerCrossReferenceasFound
File: GCX003.cbl
GIVEN:
Valid container cross-references have been extracted and the first container has been set as active equipment
WHEN:
The system completes successful container cross-reference processing
THEN:
- The container cross-reference status is marked as found
- The container status is set to found
β Consolidated Acceptance Criteria
- The system completes container cross-reference processing without finding valid entries → the container cross-reference status is set to not found and the container status is set to not found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetContainerCrossReferenceNotFound(["Start Step"])
E_SetContainerCrossReferenceNotFound(["End Step"])
N_SetContainerCrossReferenceNotFound_Node0{"The system completes container
cross-reference processing without
finding valid entries"}:::decision N_SetContainerCrossReferenceNotFound_Node0_action["The container cross-reference
status is set to not found and the
container status is set to not found"]:::main N_SetContainerCrossReferenceNotFound_Node0 -- Yes --> N_SetContainerCrossReferenceNotFound_Node0_action N_SetContainerCrossReferenceNotFound_Node0_action --> E_SetContainerCrossReferenceNotFound S_SetContainerCrossReferenceNotFound --> N_SetContainerCrossReferenceNotFound_Node0 N_SetContainerCrossReferenceNotFound_Node0 -- No --> E_SetContainerCrossReferenceNotFound
cross-reference processing without
finding valid entries"}:::decision N_SetContainerCrossReferenceNotFound_Node0_action["The container cross-reference
status is set to not found and the
container status is set to not found"]:::main N_SetContainerCrossReferenceNotFound_Node0 -- Yes --> N_SetContainerCrossReferenceNotFound_Node0_action N_SetContainerCrossReferenceNotFound_Node0_action --> E_SetContainerCrossReferenceNotFound S_SetContainerCrossReferenceNotFound --> N_SetContainerCrossReferenceNotFound_Node0 N_SetContainerCrossReferenceNotFound_Node0 -- No --> E_SetContainerCrossReferenceNotFound
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
No valid container cross-references were found during inquiry processing OR the waybill was not found in the inquiry system
WHEN:
The system completes container cross-reference processing without finding valid entries
THEN:
- The container cross-reference status is set to not found
- The container status is set to not found
β Consolidated Acceptance Criteria
- The cargo bond type is IT and the special manifest original flag is set → the system should set IT special manifest found flag to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BondTypeIT(["Start Step"])
E_BondTypeIT(["End Step"])
N_BondTypeIT_Node0{"The cargo bond type is IT and the
special manifest original flag is
set"}:::decision N_BondTypeIT_Node0_action["The system should set IT special
manifest found flag to true"]:::main N_BondTypeIT_Node0 -- Yes --> N_BondTypeIT_Node0_action N_BondTypeIT_Node0_action --> E_BondTypeIT S_BondTypeIT --> N_BondTypeIT_Node0 N_BondTypeIT_Node0 -- No --> E_BondTypeIT
special manifest original flag is
set"}:::decision N_BondTypeIT_Node0_action["The system should set IT special
manifest found flag to true"]:::main N_BondTypeIT_Node0 -- Yes --> N_BondTypeIT_Node0_action N_BondTypeIT_Node0_action --> E_BondTypeIT S_BondTypeIT --> N_BondTypeIT_Node0 N_BondTypeIT_Node0 -- No --> E_BondTypeIT
File: GCX003.cbl
GIVEN:
A cargo record exists with bond type and special manifest flags
WHEN:
- The cargo bond type is it
- The special manifest original flag is set
THEN:
The system should set IT special manifest found flag to true
β Consolidated Acceptance Criteria
- The cargo bond type is US-Canada-US and the special TR flag is set → the system should set TR special manifest found flag to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BondTypeUSCANUS(["Start Step"])
E_BondTypeUSCANUS(["End Step"])
N_BondTypeUSCANUS_Node0{"The cargo bond type is US-Canada-US
and the special TR flag is set"}:::decision N_BondTypeUSCANUS_Node0_action["The system should set TR special
manifest found flag to true"]:::main N_BondTypeUSCANUS_Node0 -- Yes --> N_BondTypeUSCANUS_Node0_action N_BondTypeUSCANUS_Node0_action --> E_BondTypeUSCANUS S_BondTypeUSCANUS --> N_BondTypeUSCANUS_Node0 N_BondTypeUSCANUS_Node0 -- No --> E_BondTypeUSCANUS
and the special TR flag is set"}:::decision N_BondTypeUSCANUS_Node0_action["The system should set TR special
manifest found flag to true"]:::main N_BondTypeUSCANUS_Node0 -- Yes --> N_BondTypeUSCANUS_Node0_action N_BondTypeUSCANUS_Node0_action --> E_BondTypeUSCANUS S_BondTypeUSCANUS --> N_BondTypeUSCANUS_Node0 N_BondTypeUSCANUS_Node0 -- No --> E_BondTypeUSCANUS
File: GCX003.cbl
GIVEN:
A cargo record exists with bond type and special manifest flags
WHEN:
- The cargo bond type is us-canada-us
- The special tr flag is set
THEN:
The system should set TR special manifest found flag to true
β Consolidated Acceptance Criteria
- The cargo bond type is Export and the special 88 flag is set → the system should set US-MX 88 special manifest found flag to true
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_BondTypeExport(["Start Step"])
E_BondTypeExport(["End Step"])
N_BondTypeExport_Node0{"The cargo bond type is Export and
the special 88 flag is set"}:::decision N_BondTypeExport_Node0_action["The system should set US-MX 88
special manifest found flag to true"]:::main N_BondTypeExport_Node0 -- Yes --> N_BondTypeExport_Node0_action N_BondTypeExport_Node0_action --> E_BondTypeExport S_BondTypeExport --> N_BondTypeExport_Node0 N_BondTypeExport_Node0 -- No --> E_BondTypeExport
the special 88 flag is set"}:::decision N_BondTypeExport_Node0_action["The system should set US-MX 88
special manifest found flag to true"]:::main N_BondTypeExport_Node0 -- Yes --> N_BondTypeExport_Node0_action N_BondTypeExport_Node0_action --> E_BondTypeExport S_BondTypeExport --> N_BondTypeExport_Node0 N_BondTypeExport_Node0 -- No --> E_BondTypeExport
File: GCX003.cbl
GIVEN:
A cargo record exists with bond type and special manifest flags
WHEN:
- The cargo bond type is export
- The special 88 flag is set
THEN:
The system should set US-MX 88 special manifest found flag to true
β Consolidated Acceptance Criteria
- The request action is SEND and cargo is export type with no special manifest flag → the system should generate message 23, create report line, and set 88-TR detour spawn flag for GCX101 processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_Create88TRExportSpecialManifest(["Start Step"])
E_Create88TRExportSpecialManifest(["End Step"])
N_Create88TRExportSpecialManifest_Node0{"The request action is SEND and
cargo is export type with no special
manifest flag"}:::decision N_Create88TRExportSpecialManifest_Node0_action["The system should generate message
23, create report line, and set
88-TR detour spawn flag for GCX101
processing"]:::main N_Create88TRExportSpecialManifest_Node0 -- Yes --> N_Create88TRExportSpecialManifest_Node0_action N_Create88TRExportSpecialManifest_Node0_action --> E_Create88TRExportSpecialManifest S_Create88TRExportSpecialManifest --> N_Create88TRExportSpecialManifest_Node0 N_Create88TRExportSpecialManifest_Node0 -- No --> E_Create88TRExportSpecialManifest
cargo is export type with no special
manifest flag"}:::decision N_Create88TRExportSpecialManifest_Node0_action["The system should generate message
23, create report line, and set
88-TR detour spawn flag for GCX101
processing"]:::main N_Create88TRExportSpecialManifest_Node0 -- Yes --> N_Create88TRExportSpecialManifest_Node0_action N_Create88TRExportSpecialManifest_Node0_action --> E_Create88TRExportSpecialManifest S_Create88TRExportSpecialManifest --> N_Create88TRExportSpecialManifest_Node0 N_Create88TRExportSpecialManifest_Node0 -- No --> E_Create88TRExportSpecialManifest
File: GCX003.cbl
GIVEN:
Export cargo for US-Mexico route without existing special manifest and user is authorized
WHEN:
- The request action is send
- Cargo is export type with no special manifest flag
THEN:
The system should generate message 23, create report line, and set 88-TR detour spawn flag for GCX101 processing
β Consolidated Acceptance Criteria
- The system checks if the US CCN from the added cargo list is not blank or spaces → if US CCN exists, proceed with log message creation, otherwise skip logging process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CheckifUSCCNexistsforlogging(["Start Step"])
E_CheckifUSCCNexistsforlogging(["End Step"])
N_CheckifUSCCNexistsforlogging_Node0{"The system checks if the US CCN
from the added cargo list is not
blank or spaces"}:::decision N_CheckifUSCCNexistsforlogging_Node0_action["If US CCN exists, proceed with log
message creation, otherwise skip
logging process"]:::main N_CheckifUSCCNexistsforlogging_Node0 -- Yes --> N_CheckifUSCCNexistsforlogging_Node0_action N_CheckifUSCCNexistsforlogging_Node0_action --> E_CheckifUSCCNexistsforlogging S_CheckifUSCCNexistsforlogging --> N_CheckifUSCCNexistsforlogging_Node0 N_CheckifUSCCNexistsforlogging_Node0 -- No --> E_CheckifUSCCNexistsforlogging
from the added cargo list is not
blank or spaces"}:::decision N_CheckifUSCCNexistsforlogging_Node0_action["If US CCN exists, proceed with log
message creation, otherwise skip
logging process"]:::main N_CheckifUSCCNexistsforlogging_Node0 -- Yes --> N_CheckifUSCCNexistsforlogging_Node0_action N_CheckifUSCCNexistsforlogging_Node0_action --> E_CheckifUSCCNexistsforlogging S_CheckifUSCCNexistsforlogging --> N_CheckifUSCCNexistsforlogging_Node0 N_CheckifUSCCNexistsforlogging_Node0 -- No --> E_CheckifUSCCNexistsforlogging
File: GCX003.cbl
Exclusion / Alternative Path
GIVEN:
A cargo attachment or manifest creation activity needs to be logged
WHEN:
The system checks if the US CCN from the added cargo list is not blank or spaces
THEN:
If US CCN exists, proceed with log message creation, otherwise skip logging process
β Consolidated Acceptance Criteria
- The system initializes the log message structure → the GCX105-INPUT structure is cleared and ready for data population
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeLogMessageStructure(["Start Step"])
E_InitializeLogMessageStructure(["End Step"])
N_InitializeLogMessageStructure_Node0{"The system initializes the log
message structure"}:::decision N_InitializeLogMessageStructure_Node0_action["The GCX105-INPUT structure is
cleared and ready for data
population"]:::main N_InitializeLogMessageStructure_Node0 -- Yes --> N_InitializeLogMessageStructure_Node0_action N_InitializeLogMessageStructure_Node0_action --> E_InitializeLogMessageStructure S_InitializeLogMessageStructure --> N_InitializeLogMessageStructure_Node0 N_InitializeLogMessageStructure_Node0 -- No --> E_InitializeLogMessageStructure
message structure"}:::decision N_InitializeLogMessageStructure_Node0_action["The GCX105-INPUT structure is
cleared and ready for data
population"]:::main N_InitializeLogMessageStructure_Node0 -- Yes --> N_InitializeLogMessageStructure_Node0_action N_InitializeLogMessageStructure_Node0_action --> E_InitializeLogMessageStructure S_InitializeLogMessageStructure --> N_InitializeLogMessageStructure_Node0 N_InitializeLogMessageStructure_Node0 -- No --> E_InitializeLogMessageStructure
File: GCX003.cbl
GIVEN:
A valid US CCN exists for logging
WHEN:
The system initializes the log message structure
THEN:
- The gcx105-input structure is cleared
- Ready for data population
β Consolidated Acceptance Criteria
- The system formats the current date for logging → the GCX105-DATE is populated by concatenating CC-MACHINE-CENTURY and CC-MACHINE-DATE from CCCOM
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_FormatCurrentDatefromSystem(["Start Step"])
E_FormatCurrentDatefromSystem(["End Step"])
N_FormatCurrentDatefromSystem_Node0{"The system formats the current date
for logging"}:::decision N_FormatCurrentDatefromSystem_Node0_action["The GCX105-DATE is populated by
concatenating CC-MACHINE-CENTURY and
CC-MACHINE-DATE from CCCOM"]:::main N_FormatCurrentDatefromSystem_Node0 -- Yes --> N_FormatCurrentDatefromSystem_Node0_action N_FormatCurrentDatefromSystem_Node0_action --> E_FormatCurrentDatefromSystem S_FormatCurrentDatefromSystem --> N_FormatCurrentDatefromSystem_Node0 N_FormatCurrentDatefromSystem_Node0 -- No --> E_FormatCurrentDatefromSystem
for logging"}:::decision N_FormatCurrentDatefromSystem_Node0_action["The GCX105-DATE is populated by
concatenating CC-MACHINE-CENTURY and
CC-MACHINE-DATE from CCCOM"]:::main N_FormatCurrentDatefromSystem_Node0 -- Yes --> N_FormatCurrentDatefromSystem_Node0_action N_FormatCurrentDatefromSystem_Node0_action --> E_FormatCurrentDatefromSystem S_FormatCurrentDatefromSystem --> N_FormatCurrentDatefromSystem_Node0 N_FormatCurrentDatefromSystem_Node0 -- No --> E_FormatCurrentDatefromSystem
File: GCX003.cbl
GIVEN:
The user ACF2 ID is captured
WHEN:
The system formats the current date for logging
THEN:
- The gcx105-date is populated by concatenating cc-machine-century
- Cc-machine-date from cccom
β Consolidated Acceptance Criteria
- The system captures the current time → the GCX105-TIME is populated with CC-MACHINE-TIME from CCCOM
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CaptureCurrentTimefromSystem(["Start Step"])
E_CaptureCurrentTimefromSystem(["End Step"])
N_CaptureCurrentTimefromSystem_Node0{"The system captures the current
time"}:::decision N_CaptureCurrentTimefromSystem_Node0_action["The GCX105-TIME is populated with
CC-MACHINE-TIME from CCCOM"]:::main N_CaptureCurrentTimefromSystem_Node0 -- Yes --> N_CaptureCurrentTimefromSystem_Node0_action N_CaptureCurrentTimefromSystem_Node0_action --> E_CaptureCurrentTimefromSystem S_CaptureCurrentTimefromSystem --> N_CaptureCurrentTimefromSystem_Node0 N_CaptureCurrentTimefromSystem_Node0 -- No --> E_CaptureCurrentTimefromSystem
time"}:::decision N_CaptureCurrentTimefromSystem_Node0_action["The GCX105-TIME is populated with
CC-MACHINE-TIME from CCCOM"]:::main N_CaptureCurrentTimefromSystem_Node0 -- Yes --> N_CaptureCurrentTimefromSystem_Node0_action N_CaptureCurrentTimefromSystem_Node0_action --> E_CaptureCurrentTimefromSystem S_CaptureCurrentTimefromSystem --> N_CaptureCurrentTimefromSystem_Node0 N_CaptureCurrentTimefromSystem_Node0 -- No --> E_CaptureCurrentTimefromSystem
File: GCX003.cbl
GIVEN:
The current date is formatted
WHEN:
The system captures the current time
THEN:
The GCX105-TIME is populated with CC-MACHINE-TIME from CCCOM
β Consolidated Acceptance Criteria
- The system assigns the train or CCN identifier → the GCX105-TRAIN-OR-US-CCN is populated with ADDED-US-CCN from the cargo counter
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTrainorUSCCNIdentifier(["Start Step"])
E_SetTrainorUSCCNIdentifier(["End Step"])
N_SetTrainorUSCCNIdentifier_Node0{"The system assigns the train or CCN
identifier"}:::decision N_SetTrainorUSCCNIdentifier_Node0_action["The GCX105-TRAIN-OR-US-CCN is
populated with ADDED-US-CCN from the
cargo counter"]:::main N_SetTrainorUSCCNIdentifier_Node0 -- Yes --> N_SetTrainorUSCCNIdentifier_Node0_action N_SetTrainorUSCCNIdentifier_Node0_action --> E_SetTrainorUSCCNIdentifier S_SetTrainorUSCCNIdentifier --> N_SetTrainorUSCCNIdentifier_Node0 N_SetTrainorUSCCNIdentifier_Node0 -- No --> E_SetTrainorUSCCNIdentifier
identifier"}:::decision N_SetTrainorUSCCNIdentifier_Node0_action["The GCX105-TRAIN-OR-US-CCN is
populated with ADDED-US-CCN from the
cargo counter"]:::main N_SetTrainorUSCCNIdentifier_Node0 -- Yes --> N_SetTrainorUSCCNIdentifier_Node0_action N_SetTrainorUSCCNIdentifier_Node0_action --> E_SetTrainorUSCCNIdentifier S_SetTrainorUSCCNIdentifier --> N_SetTrainorUSCCNIdentifier_Node0 N_SetTrainorUSCCNIdentifier_Node0 -- No --> E_SetTrainorUSCCNIdentifier
File: GCX003.cbl
GIVEN:
The current time is captured
WHEN:
The system assigns the train or CCN identifier
THEN:
The GCX105-TRAIN-OR-US-CCN is populated with ADDED-US-CCN from the cargo counter
β Consolidated Acceptance Criteria
- The system sets the log message text → the GCX105-MESSAGE is populated with CAR-ADDED-LOG-MESSAGE
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetLogMessageText(["Start Step"])
E_SetLogMessageText(["End Step"])
N_SetLogMessageText_Node0{"The system sets the log message
text"}:::decision N_SetLogMessageText_Node0_action["The GCX105-MESSAGE is populated
with CAR-ADDED-LOG-MESSAGE"]:::main N_SetLogMessageText_Node0 -- Yes --> N_SetLogMessageText_Node0_action N_SetLogMessageText_Node0_action --> E_SetLogMessageText S_SetLogMessageText --> N_SetLogMessageText_Node0 N_SetLogMessageText_Node0 -- No --> E_SetLogMessageText
text"}:::decision N_SetLogMessageText_Node0_action["The GCX105-MESSAGE is populated
with CAR-ADDED-LOG-MESSAGE"]:::main N_SetLogMessageText_Node0 -- Yes --> N_SetLogMessageText_Node0_action N_SetLogMessageText_Node0_action --> E_SetLogMessageText S_SetLogMessageText --> N_SetLogMessageText_Node0 N_SetLogMessageText_Node0 -- No --> E_SetLogMessageText
File: GCX003.cbl
GIVEN:
The train or CCN identifier is assigned
WHEN:
The system sets the log message text
THEN:
The GCX105-MESSAGE is populated with CAR-ADDED-LOG-MESSAGE
β Consolidated Acceptance Criteria
- The system prepares the final message structure → the GCX105-INPUT is moved to GCT1051E-MSG
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveLogDatatoMessageStructure(["Start Step"])
E_MoveLogDatatoMessageStructure(["End Step"])
N_MoveLogDatatoMessageStructure_Node0{"The system prepares the final
message structure"}:::decision N_MoveLogDatatoMessageStructure_Node0_action["The GCX105-INPUT is moved to
GCT1051E-MSG"]:::main N_MoveLogDatatoMessageStructure_Node0 -- Yes --> N_MoveLogDatatoMessageStructure_Node0_action N_MoveLogDatatoMessageStructure_Node0_action --> E_MoveLogDatatoMessageStructure S_MoveLogDatatoMessageStructure --> N_MoveLogDatatoMessageStructure_Node0 N_MoveLogDatatoMessageStructure_Node0 -- No --> E_MoveLogDatatoMessageStructure
message structure"}:::decision N_MoveLogDatatoMessageStructure_Node0_action["The GCX105-INPUT is moved to
GCT1051E-MSG"]:::main N_MoveLogDatatoMessageStructure_Node0 -- Yes --> N_MoveLogDatatoMessageStructure_Node0_action N_MoveLogDatatoMessageStructure_Node0_action --> E_MoveLogDatatoMessageStructure S_MoveLogDatatoMessageStructure --> N_MoveLogDatatoMessageStructure_Node0 N_MoveLogDatatoMessageStructure_Node0 -- No --> E_MoveLogDatatoMessageStructure
File: GCX003.cbl
GIVEN:
The log message text is assigned
WHEN:
The system prepares the final message structure
THEN:
The GCX105-INPUT is moved to GCT1051E-MSG
β Consolidated Acceptance Criteria
- The system sends the log message → cIMS is called with CHNG function using ALT-PCB and GCT1051E structure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SendLogMessagetoAltPCB(["Start Step"])
E_SendLogMessagetoAltPCB(["End Step"])
N_SendLogMessagetoAltPCB_Node0{"The system sends the log message"}:::decision
N_SendLogMessagetoAltPCB_Node0_action["CIMS is called with CHNG function
using ALT-PCB and GCT1051E structure"]:::main N_SendLogMessagetoAltPCB_Node0 -- Yes --> N_SendLogMessagetoAltPCB_Node0_action N_SendLogMessagetoAltPCB_Node0_action --> E_SendLogMessagetoAltPCB S_SendLogMessagetoAltPCB --> N_SendLogMessagetoAltPCB_Node0 N_SendLogMessagetoAltPCB_Node0 -- No --> E_SendLogMessagetoAltPCB
using ALT-PCB and GCT1051E structure"]:::main N_SendLogMessagetoAltPCB_Node0 -- Yes --> N_SendLogMessagetoAltPCB_Node0_action N_SendLogMessagetoAltPCB_Node0_action --> E_SendLogMessagetoAltPCB S_SendLogMessagetoAltPCB --> N_SendLogMessagetoAltPCB_Node0 N_SendLogMessagetoAltPCB_Node0 -- No --> E_SendLogMessagetoAltPCB
File: GCX003.cbl
GIVEN:
The log data is transferred to the message structure
WHEN:
The system sends the log message
THEN:
- Cims is called with chng function using alt-pcb
- Gct1051e structure
β Consolidated Acceptance Criteria
- The system purges the message from queue → cIMS is called with PURG function using ALT-PCB to clear the message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_PurgeMessagefromQueue(["Start Step"])
E_PurgeMessagefromQueue(["End Step"])
N_PurgeMessagefromQueue_Node0{"The system purges the message from
queue"}:::decision N_PurgeMessagefromQueue_Node0_action["CIMS is called with PURG function
using ALT-PCB to clear the message"]:::main N_PurgeMessagefromQueue_Node0 -- Yes --> N_PurgeMessagefromQueue_Node0_action N_PurgeMessagefromQueue_Node0_action --> E_PurgeMessagefromQueue S_PurgeMessagefromQueue --> N_PurgeMessagefromQueue_Node0 N_PurgeMessagefromQueue_Node0 -- No --> E_PurgeMessagefromQueue
queue"}:::decision N_PurgeMessagefromQueue_Node0_action["CIMS is called with PURG function
using ALT-PCB to clear the message"]:::main N_PurgeMessagefromQueue_Node0 -- Yes --> N_PurgeMessagefromQueue_Node0_action N_PurgeMessagefromQueue_Node0_action --> E_PurgeMessagefromQueue S_PurgeMessagefromQueue --> N_PurgeMessagefromQueue_Node0 N_PurgeMessagefromQueue_Node0 -- No --> E_PurgeMessagefromQueue
File: GCX003.cbl
GIVEN:
The log message is written to the system
WHEN:
The system purges the message from queue
THEN:
CIMS is called with PURG function using ALT-PCB to clear the message
β Consolidated Acceptance Criteria
- The duplicate detection process is initiated → the scan counter is set to 1 and the scanning process begins for up to 700 report entries
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StartDuplicateEquipmentDetection(["Start Step"])
E_StartDuplicateEquipmentDetection(["End Step"])
N_StartDuplicateEquipmentDetection_Node0{"The duplicate detection process is
initiated"}:::decision N_StartDuplicateEquipmentDetection_Node0_action["The scan counter is set to 1 and
the scanning process begins for up
to 700 report entries"]:::main N_StartDuplicateEquipmentDetection_Node0 -- Yes --> N_StartDuplicateEquipmentDetection_Node0_action N_StartDuplicateEquipmentDetection_Node0_action --> E_StartDuplicateEquipmentDetection S_StartDuplicateEquipmentDetection --> N_StartDuplicateEquipmentDetection_Node0 N_StartDuplicateEquipmentDetection_Node0 -- No --> E_StartDuplicateEquipmentDetection
initiated"}:::decision N_StartDuplicateEquipmentDetection_Node0_action["The scan counter is set to 1 and
the scanning process begins for up
to 700 report entries"]:::main N_StartDuplicateEquipmentDetection_Node0 -- Yes --> N_StartDuplicateEquipmentDetection_Node0_action N_StartDuplicateEquipmentDetection_Node0_action --> E_StartDuplicateEquipmentDetection S_StartDuplicateEquipmentDetection --> N_StartDuplicateEquipmentDetection_Node0 N_StartDuplicateEquipmentDetection_Node0 -- No --> E_StartDuplicateEquipmentDetection
File: GCX003.cbl
GIVEN:
A report contains equipment entries that need to be scanned for duplicates
WHEN:
The duplicate detection process is initiated
THEN:
- The scan counter is set to 1
- The scanning process begins for up to 700 report entries
β Consolidated Acceptance Criteria
- The system checks if more entries need to be processed → continue scanning if scan counter is 700 or less, otherwise end the process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ScanCounter700(["Start Step"])
E_ScanCounter700(["End Step"])
N_ScanCounter700_Node0{"The system checks if more entries
need to be processed"}:::decision N_ScanCounter700_Node0_action["Continue scanning if scan counter
is 700 or less, otherwise end the
process"]:::main N_ScanCounter700_Node0 -- Yes --> N_ScanCounter700_Node0_action N_ScanCounter700_Node0_action --> E_ScanCounter700 S_ScanCounter700 --> N_ScanCounter700_Node0 N_ScanCounter700_Node0 -- No --> E_ScanCounter700
need to be processed"}:::decision N_ScanCounter700_Node0_action["Continue scanning if scan counter
is 700 or less, otherwise end the
process"]:::main N_ScanCounter700_Node0 -- Yes --> N_ScanCounter700_Node0_action N_ScanCounter700_Node0_action --> E_ScanCounter700 S_ScanCounter700 --> N_ScanCounter700_Node0 N_ScanCounter700_Node0 -- No --> E_ScanCounter700
File: GCX003.cbl
GIVEN:
The duplicate detection process is running with a current scan counter value
WHEN:
The system checks if more entries need to be processed
THEN:
Continue scanning if scan counter is 700 or less, otherwise end the process
β Consolidated Acceptance Criteria
- The system needs to examine an equipment entry → the equipment entry at the current scan position is retrieved for analysis
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_GetEquipmentEntryatCurrentPosition(["Start Step"])
E_GetEquipmentEntryatCurrentPosition(["End Step"])
N_GetEquipmentEntryatCurrentPosition_Node0{"The system needs to examine an
equipment entry"}:::decision N_GetEquipmentEntryatCurrentPosition_Node0_action["The equipment entry at the current
scan position is retrieved for
analysis"]:::main N_GetEquipmentEntryatCurrentPosition_Node0 -- Yes --> N_GetEquipmentEntryatCurrentPosition_Node0_action N_GetEquipmentEntryatCurrentPosition_Node0_action --> E_GetEquipmentEntryatCurrentPosition S_GetEquipmentEntryatCurrentPosition --> N_GetEquipmentEntryatCurrentPosition_Node0 N_GetEquipmentEntryatCurrentPosition_Node0 -- No --> E_GetEquipmentEntryatCurrentPosition
equipment entry"}:::decision N_GetEquipmentEntryatCurrentPosition_Node0_action["The equipment entry at the current
scan position is retrieved for
analysis"]:::main N_GetEquipmentEntryatCurrentPosition_Node0 -- Yes --> N_GetEquipmentEntryatCurrentPosition_Node0_action N_GetEquipmentEntryatCurrentPosition_Node0_action --> E_GetEquipmentEntryatCurrentPosition S_GetEquipmentEntryatCurrentPosition --> N_GetEquipmentEntryatCurrentPosition_Node0 N_GetEquipmentEntryatCurrentPosition_Node0 -- No --> E_GetEquipmentEntryatCurrentPosition
File: GCX003.cbl
GIVEN:
A valid scan counter position within the report range
WHEN:
The system needs to examine an equipment entry
THEN:
The equipment entry at the current scan position is retrieved for analysis
β Consolidated Acceptance Criteria
- The equipment ID is blank or the entry contains error messages (ERR>), warning messages (WRN>), or info messages (INF>) → skip this entry and move to the next scan position without duplicate processing
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentIDisBlankorErrorWarningInfoMessage(["Start Step"])
E_EquipmentIDisBlankorErrorWarningInfoMessage(["End Step"])
N_EquipmentIDisBlankorErrorWarningInfoMessage_Node0{"The equipment ID is blank or the
entry contains error messages ERR,
warning messages WRN, or info
messages INF"}:::decision N_EquipmentIDisBlankorErrorWarningInfoMessage_Node0_action["Skip this entry and move to the
next scan position without duplicate
processing"]:::exclusion N_EquipmentIDisBlankorErrorWarningInfoMessage_Node0 -- Yes -->|Alternative| N_EquipmentIDisBlankorErrorWarningInfoMessage_Node0_action N_EquipmentIDisBlankorErrorWarningInfoMessage_Node0_action --> E_EquipmentIDisBlankorErrorWarningInfoMessage S_EquipmentIDisBlankorErrorWarningInfoMessage --> N_EquipmentIDisBlankorErrorWarningInfoMessage_Node0 N_EquipmentIDisBlankorErrorWarningInfoMessage_Node0 -- No --> E_EquipmentIDisBlankorErrorWarningInfoMessage
entry contains error messages ERR,
warning messages WRN, or info
messages INF"}:::decision N_EquipmentIDisBlankorErrorWarningInfoMessage_Node0_action["Skip this entry and move to the
next scan position without duplicate
processing"]:::exclusion N_EquipmentIDisBlankorErrorWarningInfoMessage_Node0 -- Yes -->|Alternative| N_EquipmentIDisBlankorErrorWarningInfoMessage_Node0_action N_EquipmentIDisBlankorErrorWarningInfoMessage_Node0_action --> E_EquipmentIDisBlankorErrorWarningInfoMessage S_EquipmentIDisBlankorErrorWarningInfoMessage --> N_EquipmentIDisBlankorErrorWarningInfoMessage_Node0 N_EquipmentIDisBlankorErrorWarningInfoMessage_Node0 -- No --> E_EquipmentIDisBlankorErrorWarningInfoMessage
File: GCX003.cbl
GIVEN:
An equipment entry is being examined for duplicate detection
WHEN:
The equipment ID is blank or the entry contains error messages (ERR>), warning messages (WRN>), or info messages (INF>)
THEN:
- Skip this entry
- Move to the next scan position without duplicate processing
β Consolidated Acceptance Criteria
- The current equipment ID is compared with the previously held equipment ID → if the IDs are different, update the held ID; if the IDs are the same, mark as duplicate
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EquipmentIDDifferentfromPreviouslyHeldID(["Start Step"])
E_EquipmentIDDifferentfromPreviouslyHeldID(["End Step"])
N_EquipmentIDDifferentfromPreviouslyHeldID_Node0{"The current equipment ID is
compared with the previously held
equipment ID"}:::decision N_EquipmentIDDifferentfromPreviouslyHeldID_Node0_action["If the IDs are different, update
the held ID if the IDs are the same,
mark as duplicate"]:::main N_EquipmentIDDifferentfromPreviouslyHeldID_Node0 -- Yes --> N_EquipmentIDDifferentfromPreviouslyHeldID_Node0_action N_EquipmentIDDifferentfromPreviouslyHeldID_Node0_action --> E_EquipmentIDDifferentfromPreviouslyHeldID S_EquipmentIDDifferentfromPreviouslyHeldID --> N_EquipmentIDDifferentfromPreviouslyHeldID_Node0 N_EquipmentIDDifferentfromPreviouslyHeldID_Node0 -- No --> E_EquipmentIDDifferentfromPreviouslyHeldID
compared with the previously held
equipment ID"}:::decision N_EquipmentIDDifferentfromPreviouslyHeldID_Node0_action["If the IDs are different, update
the held ID if the IDs are the same,
mark as duplicate"]:::main N_EquipmentIDDifferentfromPreviouslyHeldID_Node0 -- Yes --> N_EquipmentIDDifferentfromPreviouslyHeldID_Node0_action N_EquipmentIDDifferentfromPreviouslyHeldID_Node0_action --> E_EquipmentIDDifferentfromPreviouslyHeldID S_EquipmentIDDifferentfromPreviouslyHeldID --> N_EquipmentIDDifferentfromPreviouslyHeldID_Node0 N_EquipmentIDDifferentfromPreviouslyHeldID_Node0 -- No --> E_EquipmentIDDifferentfromPreviouslyHeldID
File: GCX003.cbl
GIVEN:
A valid equipment entry with a non-blank equipment ID
WHEN:
The current equipment ID is compared with the previously held equipment ID
THEN:
If the IDs are different, update the held ID; if the IDs are the same, mark as duplicate
β Consolidated Acceptance Criteria
- A new unique equipment ID is encountered → update the held equipment ID with the current equipment ID for future duplicate comparisons
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UpdateHeldEquipmentIDwithCurrentID(["Start Step"])
E_UpdateHeldEquipmentIDwithCurrentID(["End Step"])
N_UpdateHeldEquipmentIDwithCurrentID_Node0{"A new unique equipment ID is
encountered"}:::decision N_UpdateHeldEquipmentIDwithCurrentID_Node0_action["Update the held equipment ID with
the current equipment ID for future
duplicate comparisons"]:::main N_UpdateHeldEquipmentIDwithCurrentID_Node0 -- Yes --> N_UpdateHeldEquipmentIDwithCurrentID_Node0_action N_UpdateHeldEquipmentIDwithCurrentID_Node0_action --> E_UpdateHeldEquipmentIDwithCurrentID S_UpdateHeldEquipmentIDwithCurrentID --> N_UpdateHeldEquipmentIDwithCurrentID_Node0 N_UpdateHeldEquipmentIDwithCurrentID_Node0 -- No --> E_UpdateHeldEquipmentIDwithCurrentID
encountered"}:::decision N_UpdateHeldEquipmentIDwithCurrentID_Node0_action["Update the held equipment ID with
the current equipment ID for future
duplicate comparisons"]:::main N_UpdateHeldEquipmentIDwithCurrentID_Node0 -- Yes --> N_UpdateHeldEquipmentIDwithCurrentID_Node0_action N_UpdateHeldEquipmentIDwithCurrentID_Node0_action --> E_UpdateHeldEquipmentIDwithCurrentID S_UpdateHeldEquipmentIDwithCurrentID --> N_UpdateHeldEquipmentIDwithCurrentID_Node0 N_UpdateHeldEquipmentIDwithCurrentID_Node0 -- No --> E_UpdateHeldEquipmentIDwithCurrentID
File: GCX003.cbl
GIVEN:
The current equipment ID is different from the previously held equipment ID
WHEN:
A new unique equipment ID is encountered
THEN:
Update the held equipment ID with the current equipment ID for future duplicate comparisons
β Consolidated Acceptance Criteria
- A duplicate equipment entry is detected → clear the equipment ID field to mark the entry as a duplicate while keeping the entry in the report
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MarkCurrentEquipmentEntryasDuplicatebyClearingID(["Start Step"])
E_MarkCurrentEquipmentEntryasDuplicatebyClearingID(["End Step"])
N_MarkCurrentEquipmentEntryasDuplicatebyClearingID_Node0{"A duplicate equipment entry is
detected"}:::decision N_MarkCurrentEquipmentEntryasDuplicatebyClearingID_Node0_action["Clear the equipment ID field to
mark the entry as a duplicate while
keeping the entry in the report"]:::main N_MarkCurrentEquipmentEntryasDuplicatebyClearingID_Node0 -- Yes --> N_MarkCurrentEquipmentEntryasDuplicatebyClearingID_Node0_action N_MarkCurrentEquipmentEntryasDuplicatebyClearingID_Node0_action --> E_MarkCurrentEquipmentEntryasDuplicatebyClearingID S_MarkCurrentEquipmentEntryasDuplicatebyClearingID --> N_MarkCurrentEquipmentEntryasDuplicatebyClearingID_Node0 N_MarkCurrentEquipmentEntryasDuplicatebyClearingID_Node0 -- No --> E_MarkCurrentEquipmentEntryasDuplicatebyClearingID
detected"}:::decision N_MarkCurrentEquipmentEntryasDuplicatebyClearingID_Node0_action["Clear the equipment ID field to
mark the entry as a duplicate while
keeping the entry in the report"]:::main N_MarkCurrentEquipmentEntryasDuplicatebyClearingID_Node0 -- Yes --> N_MarkCurrentEquipmentEntryasDuplicatebyClearingID_Node0_action N_MarkCurrentEquipmentEntryasDuplicatebyClearingID_Node0_action --> E_MarkCurrentEquipmentEntryasDuplicatebyClearingID S_MarkCurrentEquipmentEntryasDuplicatebyClearingID --> N_MarkCurrentEquipmentEntryasDuplicatebyClearingID_Node0 N_MarkCurrentEquipmentEntryasDuplicatebyClearingID_Node0 -- No --> E_MarkCurrentEquipmentEntryasDuplicatebyClearingID
File: GCX003.cbl
GIVEN:
The current equipment ID matches the previously held equipment ID
WHEN:
A duplicate equipment entry is detected
THEN:
Clear the equipment ID field to mark the entry as a duplicate while keeping the entry in the report
β Consolidated Acceptance Criteria
- The current entry processing is complete → increment the scan counter by 1 to move to the next equipment entry position
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementScanCounter(["Start Step"])
E_IncrementScanCounter(["End Step"])
N_IncrementScanCounter_Node0{"The current entry processing is
complete"}:::decision N_IncrementScanCounter_Node0_action["Increment the scan counter by 1 to
move to the next equipment entry
position"]:::main N_IncrementScanCounter_Node0 -- Yes --> N_IncrementScanCounter_Node0_action N_IncrementScanCounter_Node0_action --> E_IncrementScanCounter S_IncrementScanCounter --> N_IncrementScanCounter_Node0 N_IncrementScanCounter_Node0 -- No --> E_IncrementScanCounter
complete"}:::decision N_IncrementScanCounter_Node0_action["Increment the scan counter by 1 to
move to the next equipment entry
position"]:::main N_IncrementScanCounter_Node0 -- Yes --> N_IncrementScanCounter_Node0_action N_IncrementScanCounter_Node0_action --> E_IncrementScanCounter S_IncrementScanCounter --> N_IncrementScanCounter_Node0 N_IncrementScanCounter_Node0 -- No --> E_IncrementScanCounter
File: GCX003.cbl
GIVEN:
An equipment entry has been processed for duplicate detection
WHEN:
The current entry processing is complete
THEN:
Increment the scan counter by 1 to move to the next equipment entry position
β Consolidated Acceptance Criteria
- The scan counter exceeds 700 or all entries have been processed → complete the duplicate detection process and return control to the calling procedure
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_EndDuplicateDetectionProcess(["Start Step"])
E_EndDuplicateDetectionProcess(["End Step"])
N_EndDuplicateDetectionProcess_Node0{"The scan counter exceeds 700 or all
entries have been processed"}:::decision N_EndDuplicateDetectionProcess_Node0_action["Complete the duplicate detection
process and return control to the
calling procedure"]:::main N_EndDuplicateDetectionProcess_Node0 -- Yes --> N_EndDuplicateDetectionProcess_Node0_action N_EndDuplicateDetectionProcess_Node0_action --> E_EndDuplicateDetectionProcess S_EndDuplicateDetectionProcess --> N_EndDuplicateDetectionProcess_Node0 N_EndDuplicateDetectionProcess_Node0 -- No --> E_EndDuplicateDetectionProcess
entries have been processed"}:::decision N_EndDuplicateDetectionProcess_Node0_action["Complete the duplicate detection
process and return control to the
calling procedure"]:::main N_EndDuplicateDetectionProcess_Node0 -- Yes --> N_EndDuplicateDetectionProcess_Node0_action N_EndDuplicateDetectionProcess_Node0_action --> E_EndDuplicateDetectionProcess S_EndDuplicateDetectionProcess --> N_EndDuplicateDetectionProcess_Node0 N_EndDuplicateDetectionProcess_Node0 -- No --> E_EndDuplicateDetectionProcess
File: GCX003.cbl
GIVEN:
All equipment entries up to position 700 have been scanned for duplicates
WHEN:
The scan counter exceeds 700 or all entries have been processed
THEN:
- Complete the duplicate detection process
- Return control to the calling procedure
β Consolidated Acceptance Criteria
- The system prepares to search the station reference table → the GCSTBRT key structure is cleared and initialized to spaces
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeGCSTBRTKeyStructure(["Start Step"])
E_InitializeGCSTBRTKeyStructure(["End Step"])
N_InitializeGCSTBRTKeyStructure_Node0{"The system prepares to search the
station reference table"}:::decision N_InitializeGCSTBRTKeyStructure_Node0_action["The GCSTBRT key structure is
cleared and initialized to spaces"]:::main N_InitializeGCSTBRTKeyStructure_Node0 -- Yes --> N_InitializeGCSTBRTKeyStructure_Node0_action N_InitializeGCSTBRTKeyStructure_Node0_action --> E_InitializeGCSTBRTKeyStructure S_InitializeGCSTBRTKeyStructure --> N_InitializeGCSTBRTKeyStructure_Node0 N_InitializeGCSTBRTKeyStructure_Node0 -- No --> E_InitializeGCSTBRTKeyStructure
station reference table"}:::decision N_InitializeGCSTBRTKeyStructure_Node0_action["The GCSTBRT key structure is
cleared and initialized to spaces"]:::main N_InitializeGCSTBRTKeyStructure_Node0 -- Yes --> N_InitializeGCSTBRTKeyStructure_Node0_action N_InitializeGCSTBRTKeyStructure_Node0_action --> E_InitializeGCSTBRTKeyStructure S_InitializeGCSTBRTKeyStructure --> N_InitializeGCSTBRTKeyStructure_Node0 N_InitializeGCSTBRTKeyStructure_Node0 -- No --> E_InitializeGCSTBRTKeyStructure
File: GCX003.cbl
GIVEN:
A station code lookup request is initiated
WHEN:
The system prepares to search the station reference table
THEN:
- The gcstbrt key structure is cleared
- Initialized to spaces
β Consolidated Acceptance Criteria
- The system determines the lookup table type → the table type is set to SC for station code lookup
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetTableTypetoSCStationCode(["Start Step"])
E_SetTableTypetoSCStationCode(["End Step"])
N_SetTableTypetoSCStationCode_Node0{"The system determines the lookup
table type"}:::decision N_SetTableTypetoSCStationCode_Node0_action["The table type is set to SC for
station code lookup"]:::main N_SetTableTypetoSCStationCode_Node0 -- Yes --> N_SetTableTypetoSCStationCode_Node0_action N_SetTableTypetoSCStationCode_Node0_action --> E_SetTableTypetoSCStationCode S_SetTableTypetoSCStationCode --> N_SetTableTypetoSCStationCode_Node0 N_SetTableTypetoSCStationCode_Node0 -- No --> E_SetTableTypetoSCStationCode
table type"}:::decision N_SetTableTypetoSCStationCode_Node0_action["The table type is set to SC for
station code lookup"]:::main N_SetTableTypetoSCStationCode_Node0 -- Yes --> N_SetTableTypetoSCStationCode_Node0_action N_SetTableTypetoSCStationCode_Node0_action --> E_SetTableTypetoSCStationCode S_SetTableTypetoSCStationCode --> N_SetTableTypetoSCStationCode_Node0 N_SetTableTypetoSCStationCode_Node0 -- No --> E_SetTableTypetoSCStationCode
File: GCX003.cbl
GIVEN:
A station code validation is required
WHEN:
The system determines the lookup table type
THEN:
The table type is set to SC for station code lookup
β Consolidated Acceptance Criteria
- The system prepares to validate the station code → the train origin code is moved to the station search key field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveStationCodetoSearchKey(["Start Step"])
E_MoveStationCodetoSearchKey(["End Step"])
N_MoveStationCodetoSearchKey_Node0{"The system prepares to validate the
station code"}:::decision N_MoveStationCodetoSearchKey_Node0_action["The train origin code is moved to
the station search key field"]:::main N_MoveStationCodetoSearchKey_Node0 -- Yes --> N_MoveStationCodetoSearchKey_Node0_action N_MoveStationCodetoSearchKey_Node0_action --> E_MoveStationCodetoSearchKey S_MoveStationCodetoSearchKey --> N_MoveStationCodetoSearchKey_Node0 N_MoveStationCodetoSearchKey_Node0 -- No --> E_MoveStationCodetoSearchKey
station code"}:::decision N_MoveStationCodetoSearchKey_Node0_action["The train origin code is moved to
the station search key field"]:::main N_MoveStationCodetoSearchKey_Node0 -- Yes --> N_MoveStationCodetoSearchKey_Node0_action N_MoveStationCodetoSearchKey_Node0_action --> E_MoveStationCodetoSearchKey S_MoveStationCodetoSearchKey --> N_MoveStationCodetoSearchKey_Node0 N_MoveStationCodetoSearchKey_Node0 -- No --> E_MoveStationCodetoSearchKey
File: GCX003.cbl
GIVEN:
A train origin station code exists in the request
WHEN:
The system prepares to validate the station code
THEN:
The train origin code is moved to the station search key field
β Consolidated Acceptance Criteria
- The system executes the table lookup operation → the GCCTBIO module is called to retrieve matching station data
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_CallGCCTBIOtoRetrieveStationData(["Start Step"])
E_CallGCCTBIOtoRetrieveStationData(["End Step"])
N_CallGCCTBIOtoRetrieveStationData_Node0{"The system executes the table
lookup operation"}:::decision N_CallGCCTBIOtoRetrieveStationData_Node0_action["The GCCTBIO module is called to
retrieve matching station data"]:::main N_CallGCCTBIOtoRetrieveStationData_Node0 -- Yes --> N_CallGCCTBIOtoRetrieveStationData_Node0_action N_CallGCCTBIOtoRetrieveStationData_Node0_action --> E_CallGCCTBIOtoRetrieveStationData S_CallGCCTBIOtoRetrieveStationData --> N_CallGCCTBIOtoRetrieveStationData_Node0 N_CallGCCTBIOtoRetrieveStationData_Node0 -- No --> E_CallGCCTBIOtoRetrieveStationData
lookup operation"}:::decision N_CallGCCTBIOtoRetrieveStationData_Node0_action["The GCCTBIO module is called to
retrieve matching station data"]:::main N_CallGCCTBIOtoRetrieveStationData_Node0 -- Yes --> N_CallGCCTBIOtoRetrieveStationData_Node0_action N_CallGCCTBIOtoRetrieveStationData_Node0_action --> E_CallGCCTBIOtoRetrieveStationData S_CallGCCTBIOtoRetrieveStationData --> N_CallGCCTBIOtoRetrieveStationData_Node0 N_CallGCCTBIOtoRetrieveStationData_Node0 -- No --> E_CallGCCTBIOtoRetrieveStationData
File: GCX003.cbl
GIVEN:
The station search key is populated with a station code
WHEN:
The system executes the table lookup operation
THEN:
The GCCTBIO module is called to retrieve matching station data
β Consolidated Acceptance Criteria
- The system checks the lookup results → the system determines if a matching station record was successfully found
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_StationRecordFound(["Start Step"])
E_StationRecordFound(["End Step"])
N_StationRecordFound_Node0{"The system checks the lookup
results"}:::decision N_StationRecordFound_Node0_action["The system determines if a matching
station record was successfully
found"]:::main N_StationRecordFound_Node0 -- Yes --> N_StationRecordFound_Node0_action N_StationRecordFound_Node0_action --> E_StationRecordFound S_StationRecordFound --> N_StationRecordFound_Node0 N_StationRecordFound_Node0 -- No --> E_StationRecordFound
results"}:::decision N_StationRecordFound_Node0_action["The system determines if a matching
station record was successfully
found"]:::main N_StationRecordFound_Node0 -- Yes --> N_StationRecordFound_Node0_action N_StationRecordFound_Node0_action --> E_StationRecordFound S_StationRecordFound --> N_StationRecordFound_Node0 N_StationRecordFound_Node0 -- No --> E_StationRecordFound
File: GCX003.cbl
GIVEN:
A station code table lookup has been executed
WHEN:
The system checks the lookup results
THEN:
The system determines if a matching station record was successfully found
β Consolidated Acceptance Criteria
- The system processes the retrieved station data → the station segment data is moved to the working storage area
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveStationSegmentDatatoWorkingStorage(["Start Step"])
E_MoveStationSegmentDatatoWorkingStorage(["End Step"])
N_MoveStationSegmentDatatoWorkingStorage_Node0{"The system processes the retrieved
station data"}:::decision N_MoveStationSegmentDatatoWorkingStorage_Node0_action["The station segment data is moved
to the working storage area"]:::main N_MoveStationSegmentDatatoWorkingStorage_Node0 -- Yes --> N_MoveStationSegmentDatatoWorkingStorage_Node0_action N_MoveStationSegmentDatatoWorkingStorage_Node0_action --> E_MoveStationSegmentDatatoWorkingStorage S_MoveStationSegmentDatatoWorkingStorage --> N_MoveStationSegmentDatatoWorkingStorage_Node0 N_MoveStationSegmentDatatoWorkingStorage_Node0 -- No --> E_MoveStationSegmentDatatoWorkingStorage
station data"}:::decision N_MoveStationSegmentDatatoWorkingStorage_Node0_action["The station segment data is moved
to the working storage area"]:::main N_MoveStationSegmentDatatoWorkingStorage_Node0 -- Yes --> N_MoveStationSegmentDatatoWorkingStorage_Node0_action N_MoveStationSegmentDatatoWorkingStorage_Node0_action --> E_MoveStationSegmentDatatoWorkingStorage S_MoveStationSegmentDatatoWorkingStorage --> N_MoveStationSegmentDatatoWorkingStorage_Node0 N_MoveStationSegmentDatatoWorkingStorage_Node0 -- No --> E_MoveStationSegmentDatatoWorkingStorage
File: GCX003.cbl
GIVEN:
A valid station record has been found in the table lookup
WHEN:
The system processes the retrieved station data
THEN:
The station segment data is moved to the working storage area
β Consolidated Acceptance Criteria
- The system processes station information → the station name is extracted from the station record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractStationName(["Start Step"])
E_ExtractStationName(["End Step"])
N_ExtractStationName_Node0{"The system processes station
information"}:::decision N_ExtractStationName_Node0_action["The station name is extracted from
the station record"]:::main N_ExtractStationName_Node0 -- Yes --> N_ExtractStationName_Node0_action N_ExtractStationName_Node0_action --> E_ExtractStationName S_ExtractStationName --> N_ExtractStationName_Node0 N_ExtractStationName_Node0 -- No --> E_ExtractStationName
information"}:::decision N_ExtractStationName_Node0_action["The station name is extracted from
the station record"]:::main N_ExtractStationName_Node0 -- Yes --> N_ExtractStationName_Node0_action N_ExtractStationName_Node0_action --> E_ExtractStationName S_ExtractStationName --> N_ExtractStationName_Node0 N_ExtractStationName_Node0 -- No --> E_ExtractStationName
File: GCX003.cbl
GIVEN:
Station segment data contains station details
WHEN:
The system processes station information
THEN:
The station name is extracted from the station record
β Consolidated Acceptance Criteria
- The system processes station geographic information → the time zone information is extracted for ETA calculations
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractTimeZoneInformation(["Start Step"])
E_ExtractTimeZoneInformation(["End Step"])
N_ExtractTimeZoneInformation_Node0{"The system processes station
geographic information"}:::decision N_ExtractTimeZoneInformation_Node0_action["The time zone information is
extracted for ETA calculations"]:::main N_ExtractTimeZoneInformation_Node0 -- Yes --> N_ExtractTimeZoneInformation_Node0_action N_ExtractTimeZoneInformation_Node0_action --> E_ExtractTimeZoneInformation S_ExtractTimeZoneInformation --> N_ExtractTimeZoneInformation_Node0 N_ExtractTimeZoneInformation_Node0 -- No --> E_ExtractTimeZoneInformation
geographic information"}:::decision N_ExtractTimeZoneInformation_Node0_action["The time zone information is
extracted for ETA calculations"]:::main N_ExtractTimeZoneInformation_Node0 -- Yes --> N_ExtractTimeZoneInformation_Node0_action N_ExtractTimeZoneInformation_Node0_action --> E_ExtractTimeZoneInformation S_ExtractTimeZoneInformation --> N_ExtractTimeZoneInformation_Node0 N_ExtractTimeZoneInformation_Node0 -- No --> E_ExtractTimeZoneInformation
File: GCX003.cbl
GIVEN:
Station record contains time zone data
WHEN:
The system processes station geographic information
THEN:
The time zone information is extracted for ETA calculations
β Consolidated Acceptance Criteria
- The system processes customs information → the FIRMS code is extracted from the station record
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ExtractFIRMSCode(["Start Step"])
E_ExtractFIRMSCode(["End Step"])
N_ExtractFIRMSCode_Node0{"The system processes customs
information"}:::decision N_ExtractFIRMSCode_Node0_action["The FIRMS code is extracted from
the station record"]:::main N_ExtractFIRMSCode_Node0 -- Yes --> N_ExtractFIRMSCode_Node0_action N_ExtractFIRMSCode_Node0_action --> E_ExtractFIRMSCode S_ExtractFIRMSCode --> N_ExtractFIRMSCode_Node0 N_ExtractFIRMSCode_Node0 -- No --> E_ExtractFIRMSCode
information"}:::decision N_ExtractFIRMSCode_Node0_action["The FIRMS code is extracted from
the station record"]:::main N_ExtractFIRMSCode_Node0 -- Yes --> N_ExtractFIRMSCode_Node0_action N_ExtractFIRMSCode_Node0_action --> E_ExtractFIRMSCode S_ExtractFIRMSCode --> N_ExtractFIRMSCode_Node0 N_ExtractFIRMSCode_Node0 -- No --> E_ExtractFIRMSCode
File: GCX003.cbl
GIVEN:
Station record contains customs-related codes
WHEN:
The system processes customs information
THEN:
The FIRMS code is extracted from the station record
β Consolidated Acceptance Criteria
- The system completes station validation → the station validation status is set to successful
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStationValidationSuccess(["Start Step"])
E_SetStationValidationSuccess(["End Step"])
N_SetStationValidationSuccess_Node0{"The system completes station
validation"}:::decision N_SetStationValidationSuccess_Node0_action["The station validation status is
set to successful"]:::main N_SetStationValidationSuccess_Node0 -- Yes --> N_SetStationValidationSuccess_Node0_action N_SetStationValidationSuccess_Node0_action --> E_SetStationValidationSuccess S_SetStationValidationSuccess --> N_SetStationValidationSuccess_Node0 N_SetStationValidationSuccess_Node0 -- No --> E_SetStationValidationSuccess
validation"}:::decision N_SetStationValidationSuccess_Node0_action["The station validation status is
set to successful"]:::main N_SetStationValidationSuccess_Node0 -- Yes --> N_SetStationValidationSuccess_Node0_action N_SetStationValidationSuccess_Node0_action --> E_SetStationValidationSuccess S_SetStationValidationSuccess --> N_SetStationValidationSuccess_Node0 N_SetStationValidationSuccess_Node0 -- No --> E_SetStationValidationSuccess
File: GCX003.cbl
GIVEN:
A valid US station code exists in the station record
WHEN:
The system completes station validation
THEN:
The station validation status is set to successful
β Consolidated Acceptance Criteria
- No matching station record is found in the reference table → a station not found error is set with message code 2
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetStationNotFoundError(["Start Step"])
E_SetStationNotFoundError(["End Step"])
N_SetStationNotFoundError_Node0{"No matching station record is found
in the reference table"}:::decision N_SetStationNotFoundError_Node0_action["A station not found error is set
with message code 2"]:::main N_SetStationNotFoundError_Node0 -- Yes --> N_SetStationNotFoundError_Node0_action N_SetStationNotFoundError_Node0_action --> E_SetStationNotFoundError S_SetStationNotFoundError --> N_SetStationNotFoundError_Node0 N_SetStationNotFoundError_Node0 -- No --> E_SetStationNotFoundError
in the reference table"}:::decision N_SetStationNotFoundError_Node0_action["A station not found error is set
with message code 2"]:::main N_SetStationNotFoundError_Node0 -- Yes --> N_SetStationNotFoundError_Node0_action N_SetStationNotFoundError_Node0_action --> E_SetStationNotFoundError S_SetStationNotFoundError --> N_SetStationNotFoundError_Node0 N_SetStationNotFoundError_Node0 -- No --> E_SetStationNotFoundError
File: GCX003.cbl
GIVEN:
A station code lookup has been performed
WHEN:
No matching station record is found in the reference table
THEN:
A station not found error is set with message code 2
β Consolidated Acceptance Criteria
- The system validates the US station code content → an invalid US station code error is set with message code 2
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SetInvalidUSStationCodeError(["Start Step"])
E_SetInvalidUSStationCodeError(["End Step"])
N_SetInvalidUSStationCodeError_Node0{"The system validates the US station
code content"}:::decision N_SetInvalidUSStationCodeError_Node0_action["An invalid US station code error is
set with message code 2"]:::main N_SetInvalidUSStationCodeError_Node0 -- Yes --> N_SetInvalidUSStationCodeError_Node0_action N_SetInvalidUSStationCodeError_Node0_action --> E_SetInvalidUSStationCodeError S_SetInvalidUSStationCodeError --> N_SetInvalidUSStationCodeError_Node0 N_SetInvalidUSStationCodeError_Node0 -- No --> E_SetInvalidUSStationCodeError
code content"}:::decision N_SetInvalidUSStationCodeError_Node0_action["An invalid US station code error is
set with message code 2"]:::main N_SetInvalidUSStationCodeError_Node0 -- Yes --> N_SetInvalidUSStationCodeError_Node0_action N_SetInvalidUSStationCodeError_Node0_action --> E_SetInvalidUSStationCodeError S_SetInvalidUSStationCodeError --> N_SetInvalidUSStationCodeError_Node0 N_SetInvalidUSStationCodeError_Node0 -- No --> E_SetInvalidUSStationCodeError
File: GCX003.cbl
GIVEN:
A station record has been found but the US station code is spaces or empty
WHEN:
The system validates the US station code content
THEN:
An invalid US station code error is set with message code 2
β Consolidated Acceptance Criteria
- The system finalizes the station lookup operation → the station information and validation status are returned to the calling process
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ReturnStationInformation(["Start Step"])
E_ReturnStationInformation(["End Step"])
N_ReturnStationInformation_Node0{"The system finalizes the station
lookup operation"}:::decision N_ReturnStationInformation_Node0_action["The station information and
validation status are returned to
the calling process"]:::main N_ReturnStationInformation_Node0 -- Yes --> N_ReturnStationInformation_Node0_action N_ReturnStationInformation_Node0_action --> E_ReturnStationInformation S_ReturnStationInformation --> N_ReturnStationInformation_Node0 N_ReturnStationInformation_Node0 -- No --> E_ReturnStationInformation
lookup operation"}:::decision N_ReturnStationInformation_Node0_action["The station information and
validation status are returned to
the calling process"]:::main N_ReturnStationInformation_Node0 -- Yes --> N_ReturnStationInformation_Node0_action N_ReturnStationInformation_Node0_action --> E_ReturnStationInformation S_ReturnStationInformation --> N_ReturnStationInformation_Node0 N_ReturnStationInformation_Node0 -- No --> E_ReturnStationInformation
File: GCX003.cbl
GIVEN:
Station validation processing has completed
WHEN:
The system finalizes the station lookup operation
THEN:
- The station information
- Validation status are returned to the calling process
GCCMQERR Sequence (US Train)
Objective: Orchestrates key processes including Error Code Lookup, Error Message Retrieval, Unknown Error Handling.
πΊοΈ High-Level Visual Map
flowchart TD
A[Start Error Processing]:::start
B[1:Error Code Lookup]:::process
C{Error Code Found?}:::decision
D[2:Error Message Retrieval]:::process
E[3:Unknown Error Handling]:::process
F[Return Message Text]:::final
ET[(Error Table)]:::datasource
A --> B
ET -.-> |Search Error Table| B
B --> C
C -->|Yes| D
C -->|No| E
D --> F
E --> F
classDef start fill:#67A353
classDef process fill:#08AAD2
classDef decision fill:#FFE347
classDef datasource fill:#2EA597
classDef final fill:#D13313
π Step-by-Step Logic Trace
β Consolidated Acceptance Criteria
- The system performs a sequential search through the error table starting from index 1 and incrementing by 1 → the search continues until either the input error number matches an error number in the table OR an empty entry (spaces) is encountered indicating end of table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ErrorCodeLookup(["Start Step"])
E_ErrorCodeLookup(["End Step"])
N_ErrorCodeLookup_Node0{"The system performs a sequential
search through the error table
starting from index 1 and
incrementing by 1"}:::decision N_ErrorCodeLookup_Node0_action["The search continues until either
the input error number matches an
error number in the table OR an
empty entry spaces is encountered
indicating end of table"]:::exclusion N_ErrorCodeLookup_Node0 -- Yes -->|Alternative| N_ErrorCodeLookup_Node0_action N_ErrorCodeLookup_Node0_action --> E_ErrorCodeLookup S_ErrorCodeLookup --> N_ErrorCodeLookup_Node0 N_ErrorCodeLookup_Node0 -- No --> E_ErrorCodeLookup
search through the error table
starting from index 1 and
incrementing by 1"}:::decision N_ErrorCodeLookup_Node0_action["The search continues until either
the input error number matches an
error number in the table OR an
empty entry spaces is encountered
indicating end of table"]:::exclusion N_ErrorCodeLookup_Node0 -- Yes -->|Alternative| N_ErrorCodeLookup_Node0_action N_ErrorCodeLookup_Node0_action --> E_ErrorCodeLookup S_ErrorCodeLookup --> N_ErrorCodeLookup_Node0 N_ErrorCodeLookup_Node0 -- No --> E_ErrorCodeLookup
File: GCCMQERR.cbl
GIVEN:
An input error number is provided and an error table exists with error numbers and corresponding text messages
WHEN:
- The system performs a sequential search through the error table starting from index 1
- Incrementing by 1
THEN:
The search continues until either the input error number matches an error number in the table OR an empty entry (spaces) is encountered indicating end of table
β Consolidated Acceptance Criteria
- The error number at the current index position matches the input error number → the system moves the corresponding error text from the table to the output message text field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_ErrorMessageRetrieval(["Start Step"])
E_ErrorMessageRetrieval(["End Step"])
N_ErrorMessageRetrieval_Node0{"The error number at the current
index position matches the input
error number"}:::decision N_ErrorMessageRetrieval_Node0_action["The system moves the corresponding
error text from the table to the
output message text field"]:::exclusion N_ErrorMessageRetrieval_Node0 -- Yes -->|Alternative| N_ErrorMessageRetrieval_Node0_action N_ErrorMessageRetrieval_Node0_action --> E_ErrorMessageRetrieval S_ErrorMessageRetrieval --> N_ErrorMessageRetrieval_Node0 N_ErrorMessageRetrieval_Node0 -- No --> E_ErrorMessageRetrieval
index position matches the input
error number"}:::decision N_ErrorMessageRetrieval_Node0_action["The system moves the corresponding
error text from the table to the
output message text field"]:::exclusion N_ErrorMessageRetrieval_Node0 -- Yes -->|Alternative| N_ErrorMessageRetrieval_Node0_action N_ErrorMessageRetrieval_Node0_action --> E_ErrorMessageRetrieval S_ErrorMessageRetrieval --> N_ErrorMessageRetrieval_Node0 N_ErrorMessageRetrieval_Node0 -- No --> E_ErrorMessageRetrieval
File: GCCMQERR.cbl
GIVEN:
The error table search has completed and the input error number was found in the table
WHEN:
The error number at the current index position matches the input error number
THEN:
The system moves the corresponding error text from the table to the output message text field
β Consolidated Acceptance Criteria
- The error number at the current index position does not match the input error number → the system moves the input error number to the unknown number field AND moves the unknown message to the output message text field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_UnknownErrorHandling(["Start Step"])
E_UnknownErrorHandling(["End Step"])
N_UnknownErrorHandling_Node0{"The error number at the current
index position does not match the
input error number"}:::decision N_UnknownErrorHandling_Node0_action["The system moves the input error
number to the unknown number field
AND moves the unknown message to the
output message text field"]:::exclusion N_UnknownErrorHandling_Node0 -- Yes -->|Alternative| N_UnknownErrorHandling_Node0_action N_UnknownErrorHandling_Node0_action --> E_UnknownErrorHandling S_UnknownErrorHandling --> N_UnknownErrorHandling_Node0 N_UnknownErrorHandling_Node0 -- No --> E_UnknownErrorHandling
index position does not match the
input error number"}:::decision N_UnknownErrorHandling_Node0_action["The system moves the input error
number to the unknown number field
AND moves the unknown message to the
output message text field"]:::exclusion N_UnknownErrorHandling_Node0 -- Yes -->|Alternative| N_UnknownErrorHandling_Node0_action N_UnknownErrorHandling_Node0_action --> E_UnknownErrorHandling S_UnknownErrorHandling --> N_UnknownErrorHandling_Node0 N_UnknownErrorHandling_Node0 -- No --> E_UnknownErrorHandling
File: GCCMQERR.cbl
Exclusion / Alternative Path
GIVEN:
The error table search has completed and the input error number was not found in the table
WHEN:
The error number at the current index position does not match the input error number
THEN:
- The system moves the input error number to the unknown number field
- Moves the unknown message to the output message text field
β Consolidated Acceptance Criteria
- The error lookup process begins → the search index is set to position 1 to start searching from the beginning of the error table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_InitializeSearchIndexto1(["Start Step"])
E_InitializeSearchIndexto1(["End Step"])
N_InitializeSearchIndexto1_Node0{"The error lookup process begins"}:::decision
N_InitializeSearchIndexto1_Node0_action["The search index is set to position
1 to start searching from the
beginning of the error table"]:::exclusion N_InitializeSearchIndexto1_Node0 -- Yes -->|Alternative| N_InitializeSearchIndexto1_Node0_action N_InitializeSearchIndexto1_Node0_action --> E_InitializeSearchIndexto1 S_InitializeSearchIndexto1 --> N_InitializeSearchIndexto1_Node0 N_InitializeSearchIndexto1_Node0 -- No --> E_InitializeSearchIndexto1
1 to start searching from the
beginning of the error table"]:::exclusion N_InitializeSearchIndexto1_Node0 -- Yes -->|Alternative| N_InitializeSearchIndexto1_Node0_action N_InitializeSearchIndexto1_Node0_action --> E_InitializeSearchIndexto1 S_InitializeSearchIndexto1 --> N_InitializeSearchIndexto1_Node0 N_InitializeSearchIndexto1_Node0 -- No --> E_InitializeSearchIndexto1
File: GCCMQERR.cbl
GIVEN:
An error number needs to be looked up in the error message table
WHEN:
The error lookup process begins
THEN:
The search index is set to position 1 to start searching from the beginning of the error table
β Consolidated Acceptance Criteria
- The error number at the current index is compared with the input error number → if the error numbers match exactly, the search is successful and the corresponding error message is identified
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_DoesErrorNumberMatchInput(["Start Step"])
E_DoesErrorNumberMatchInput(["End Step"])
N_DoesErrorNumberMatchInput_Node0{"The error number at the current
index is compared with the input
error number"}:::decision N_DoesErrorNumberMatchInput_Node0_action["If the error numbers match exactly,
the search is successful and the
corresponding error message is
identified"]:::exclusion N_DoesErrorNumberMatchInput_Node0 -- Yes -->|Alternative| N_DoesErrorNumberMatchInput_Node0_action N_DoesErrorNumberMatchInput_Node0_action --> E_DoesErrorNumberMatchInput S_DoesErrorNumberMatchInput --> N_DoesErrorNumberMatchInput_Node0 N_DoesErrorNumberMatchInput_Node0 -- No --> E_DoesErrorNumberMatchInput
index is compared with the input
error number"}:::decision N_DoesErrorNumberMatchInput_Node0_action["If the error numbers match exactly,
the search is successful and the
corresponding error message is
identified"]:::exclusion N_DoesErrorNumberMatchInput_Node0 -- Yes -->|Alternative| N_DoesErrorNumberMatchInput_Node0_action N_DoesErrorNumberMatchInput_Node0_action --> E_DoesErrorNumberMatchInput S_DoesErrorNumberMatchInput --> N_DoesErrorNumberMatchInput_Node0 N_DoesErrorNumberMatchInput_Node0 -- No --> E_DoesErrorNumberMatchInput
File: GCCMQERR.cbl
GIVEN:
The system is examining an error number at the current table position
WHEN:
The error number at the current index is compared with the input error number
THEN:
- If the error numbers match exactly, the search is successful
- The corresponding error message is identified
β Consolidated Acceptance Criteria
- The error number at the current index contains spaces or is empty → the search process recognizes that the end of the error table has been reached
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IsErrorNumberEmptySpaces(["Start Step"])
E_IsErrorNumberEmptySpaces(["End Step"])
N_IsErrorNumberEmptySpaces_Node0{"The error number at the current
index contains spaces or is empty"}:::decision N_IsErrorNumberEmptySpaces_Node0_action["The search process recognizes that
the end of the error table has been
reached"]:::exclusion N_IsErrorNumberEmptySpaces_Node0 -- Yes -->|Alternative| N_IsErrorNumberEmptySpaces_Node0_action N_IsErrorNumberEmptySpaces_Node0_action --> E_IsErrorNumberEmptySpaces S_IsErrorNumberEmptySpaces --> N_IsErrorNumberEmptySpaces_Node0 N_IsErrorNumberEmptySpaces_Node0 -- No --> E_IsErrorNumberEmptySpaces
index contains spaces or is empty"}:::decision N_IsErrorNumberEmptySpaces_Node0_action["The search process recognizes that
the end of the error table has been
reached"]:::exclusion N_IsErrorNumberEmptySpaces_Node0 -- Yes -->|Alternative| N_IsErrorNumberEmptySpaces_Node0_action N_IsErrorNumberEmptySpaces_Node0_action --> E_IsErrorNumberEmptySpaces S_IsErrorNumberEmptySpaces --> N_IsErrorNumberEmptySpaces_Node0 N_IsErrorNumberEmptySpaces_Node0 -- No --> E_IsErrorNumberEmptySpaces
File: GCCMQERR.cbl
GIVEN:
The system is examining an error number at the current table position and no match was found
WHEN:
The error number at the current index contains spaces or is empty
THEN:
The search process recognizes that the end of the error table has been reached
β Consolidated Acceptance Criteria
- The system needs to continue searching the error table → the search index is incremented by 1 to examine the next error number in the table
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_IncrementIndexby1(["Start Step"])
E_IncrementIndexby1(["End Step"])
N_IncrementIndexby1_Node0{"The system needs to continue
searching the error table"}:::decision N_IncrementIndexby1_Node0_action["The search index is incremented by
1 to examine the next error number
in the table"]:::exclusion N_IncrementIndexby1_Node0 -- Yes -->|Alternative| N_IncrementIndexby1_Node0_action N_IncrementIndexby1_Node0_action --> E_IncrementIndexby1 S_IncrementIndexby1 --> N_IncrementIndexby1_Node0 N_IncrementIndexby1_Node0 -- No --> E_IncrementIndexby1
searching the error table"}:::decision N_IncrementIndexby1_Node0_action["The search index is incremented by
1 to examine the next error number
in the table"]:::exclusion N_IncrementIndexby1_Node0 -- Yes -->|Alternative| N_IncrementIndexby1_Node0_action N_IncrementIndexby1_Node0_action --> E_IncrementIndexby1 S_IncrementIndexby1 --> N_IncrementIndexby1_Node0 N_IncrementIndexby1_Node0 -- No --> E_IncrementIndexby1
File: GCCMQERR.cbl
Exclusion / Alternative Path
GIVEN:
The current error number does not match the input and the end of table has not been reached
WHEN:
The system needs to continue searching the error table
THEN:
The search index is incremented by 1 to examine the next error number in the table
β Consolidated Acceptance Criteria
- The search process completes successfully → the corresponding error message text is moved to the output message field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchCompleteMatchFound(["Start Step"])
E_SearchCompleteMatchFound(["End Step"])
N_SearchCompleteMatchFound_Node0{"The search process completes
successfully"}:::decision N_SearchCompleteMatchFound_Node0_action["The corresponding error message
text is moved to the output message
field"]:::main N_SearchCompleteMatchFound_Node0 -- Yes --> N_SearchCompleteMatchFound_Node0_action N_SearchCompleteMatchFound_Node0_action --> E_SearchCompleteMatchFound S_SearchCompleteMatchFound --> N_SearchCompleteMatchFound_Node0 N_SearchCompleteMatchFound_Node0 -- No --> E_SearchCompleteMatchFound
successfully"}:::decision N_SearchCompleteMatchFound_Node0_action["The corresponding error message
text is moved to the output message
field"]:::main N_SearchCompleteMatchFound_Node0 -- Yes --> N_SearchCompleteMatchFound_Node0_action N_SearchCompleteMatchFound_Node0_action --> E_SearchCompleteMatchFound S_SearchCompleteMatchFound --> N_SearchCompleteMatchFound_Node0 N_SearchCompleteMatchFound_Node0 -- No --> E_SearchCompleteMatchFound
File: GCCMQERR.cbl
GIVEN:
A matching error number has been found in the error table
WHEN:
The search process completes successfully
THEN:
The corresponding error message text is moved to the output message field
β Consolidated Acceptance Criteria
- The search process completes without success → the input error number is stored in the unknown number field and a default unknown error message is moved to the output message field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_SearchCompleteEndofTableReached(["Start Step"])
E_SearchCompleteEndofTableReached(["End Step"])
N_SearchCompleteEndofTableReached_Node0{"The search process completes
without success"}:::decision N_SearchCompleteEndofTableReached_Node0_action["The input error number is stored in
the unknown number field and a
default unknown error message is
moved to the output message field"]:::main N_SearchCompleteEndofTableReached_Node0 -- Yes --> N_SearchCompleteEndofTableReached_Node0_action N_SearchCompleteEndofTableReached_Node0_action --> E_SearchCompleteEndofTableReached S_SearchCompleteEndofTableReached --> N_SearchCompleteEndofTableReached_Node0 N_SearchCompleteEndofTableReached_Node0 -- No --> E_SearchCompleteEndofTableReached
without success"}:::decision N_SearchCompleteEndofTableReached_Node0_action["The input error number is stored in
the unknown number field and a
default unknown error message is
moved to the output message field"]:::main N_SearchCompleteEndofTableReached_Node0 -- Yes --> N_SearchCompleteEndofTableReached_Node0_action N_SearchCompleteEndofTableReached_Node0_action --> E_SearchCompleteEndofTableReached S_SearchCompleteEndofTableReached --> N_SearchCompleteEndofTableReached_Node0 N_SearchCompleteEndofTableReached_Node0 -- No --> E_SearchCompleteEndofTableReached
File: GCCMQERR.cbl
GIVEN:
The end of the error table has been reached without finding a matching error number
WHEN:
The search process completes without success
THEN:
- The input error number is stored in the unknown number field
- A default unknown error message is moved to the output message field
β Consolidated Acceptance Criteria
- The error code at the current index position equals the input error number → the corresponding error message text at that same index position is moved to the output message field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_RetrieveErrorMessageTextfromTable(["Start Step"])
E_RetrieveErrorMessageTextfromTable(["End Step"])
N_RetrieveErrorMessageTextfromTable_Node0{"The error code at the current index
position equals the input error
number"}:::decision N_RetrieveErrorMessageTextfromTable_Node0_action["The corresponding error message
text at that same index position is
moved to the output message field"]:::exclusion N_RetrieveErrorMessageTextfromTable_Node0 -- Yes -->|Alternative| N_RetrieveErrorMessageTextfromTable_Node0_action N_RetrieveErrorMessageTextfromTable_Node0_action --> E_RetrieveErrorMessageTextfromTable S_RetrieveErrorMessageTextfromTable --> N_RetrieveErrorMessageTextfromTable_Node0 N_RetrieveErrorMessageTextfromTable_Node0 -- No --> E_RetrieveErrorMessageTextfromTable
position equals the input error
number"}:::decision N_RetrieveErrorMessageTextfromTable_Node0_action["The corresponding error message
text at that same index position is
moved to the output message field"]:::exclusion N_RetrieveErrorMessageTextfromTable_Node0 -- Yes -->|Alternative| N_RetrieveErrorMessageTextfromTable_Node0_action N_RetrieveErrorMessageTextfromTable_Node0_action --> E_RetrieveErrorMessageTextfromTable S_RetrieveErrorMessageTextfromTable --> N_RetrieveErrorMessageTextfromTable_Node0 N_RetrieveErrorMessageTextfromTable_Node0 -- No --> E_RetrieveErrorMessageTextfromTable
File: GCCMQERR.cbl
GIVEN:
An error code has been found in the error message table at a specific index position
WHEN:
The error code at the current index position equals the input error number
THEN:
The corresponding error message text at that same index position is moved to the output message field
β Consolidated Acceptance Criteria
- The system determines the error code is not found in the table → the input error number is moved to the unknown number field for inclusion in the default message
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveInputErrorNumbertoUnknownNumberField(["Start Step"])
E_MoveInputErrorNumbertoUnknownNumberField(["End Step"])
N_MoveInputErrorNumbertoUnknownNumberField_Node0{"The system determines the error
code is not found in the table"}:::decision N_MoveInputErrorNumbertoUnknownNumberField_Node0_action["The input error number is moved to
the unknown number field for
inclusion in the default message"]:::exclusion N_MoveInputErrorNumbertoUnknownNumberField_Node0 -- Yes -->|Alternative| N_MoveInputErrorNumbertoUnknownNumberField_Node0_action N_MoveInputErrorNumbertoUnknownNumberField_Node0_action --> E_MoveInputErrorNumbertoUnknownNumberField S_MoveInputErrorNumbertoUnknownNumberField --> N_MoveInputErrorNumbertoUnknownNumberField_Node0 N_MoveInputErrorNumbertoUnknownNumberField_Node0 -- No --> E_MoveInputErrorNumbertoUnknownNumberField
code is not found in the table"}:::decision N_MoveInputErrorNumbertoUnknownNumberField_Node0_action["The input error number is moved to
the unknown number field for
inclusion in the default message"]:::exclusion N_MoveInputErrorNumbertoUnknownNumberField_Node0 -- Yes -->|Alternative| N_MoveInputErrorNumbertoUnknownNumberField_Node0_action N_MoveInputErrorNumbertoUnknownNumberField_Node0_action --> E_MoveInputErrorNumbertoUnknownNumberField S_MoveInputErrorNumbertoUnknownNumberField --> N_MoveInputErrorNumbertoUnknownNumberField_Node0 N_MoveInputErrorNumbertoUnknownNumberField_Node0 -- No --> E_MoveInputErrorNumbertoUnknownNumberField
File: GCCMQERR.cbl
Exclusion / Alternative Path
GIVEN:
An error code has been searched in the error message table and ERROR-NUMBER (ERROR-INDEX) does not equal INPUT-ERROR-NUMBER
WHEN:
The system determines the error code is not found in the table
THEN:
The input error number is moved to the unknown number field for inclusion in the default message
β Consolidated Acceptance Criteria
- The system needs to provide an error message for an unrecognized error code → the unknown message template is moved to the output message text field
Step Micro-Flow Sequence
flowchart TD
classDef main fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
classDef exclusion fill:#fadbd8,stroke:#e74c3c,stroke-width:2px,color:#c0392b;
classDef decision fill:#e9f7ef,stroke:#27ae60,stroke-width:2px;
S_MoveUnknownMessageTemplatetoOutput(["Start Step"])
E_MoveUnknownMessageTemplatetoOutput(["End Step"])
N_MoveUnknownMessageTemplatetoOutput_Node0{"The system needs to provide an
error message for an unrecognized
error code"}:::decision N_MoveUnknownMessageTemplatetoOutput_Node0_action["The unknown message template is
moved to the output message text
field"]:::exclusion N_MoveUnknownMessageTemplatetoOutput_Node0 -- Yes -->|Alternative| N_MoveUnknownMessageTemplatetoOutput_Node0_action N_MoveUnknownMessageTemplatetoOutput_Node0_action --> E_MoveUnknownMessageTemplatetoOutput S_MoveUnknownMessageTemplatetoOutput --> N_MoveUnknownMessageTemplatetoOutput_Node0 N_MoveUnknownMessageTemplatetoOutput_Node0 -- No --> E_MoveUnknownMessageTemplatetoOutput
error message for an unrecognized
error code"}:::decision N_MoveUnknownMessageTemplatetoOutput_Node0_action["The unknown message template is
moved to the output message text
field"]:::exclusion N_MoveUnknownMessageTemplatetoOutput_Node0 -- Yes -->|Alternative| N_MoveUnknownMessageTemplatetoOutput_Node0_action N_MoveUnknownMessageTemplatetoOutput_Node0_action --> E_MoveUnknownMessageTemplatetoOutput S_MoveUnknownMessageTemplatetoOutput --> N_MoveUnknownMessageTemplatetoOutput_Node0 N_MoveUnknownMessageTemplatetoOutput_Node0 -- No --> E_MoveUnknownMessageTemplatetoOutput
File: GCCMQERR.cbl
Exclusion / Alternative Path
GIVEN:
An error code is not found in the error message table and the unknown number field has been populated
WHEN:
The system needs to provide an error message for an unrecognized error code
THEN:
The unknown message template is moved to the output message text field